より安全なアドオン体験を提供するため、拡張機能に署名を導入します

[これは Mozilla Add-ons Blog の記事 Introducing Extension Signing: A Safer Add-on Experience の翻訳です]

今年はアドオンの開発に関していくつか大きな変更が予定されています。いずれも安全性やパフォーマンスを向上させるために不可欠であると私たちが考えているものですが、ほとんどのアドオンに対応してもらう作業が必要となります。ここではまず、先行して実装される拡張機能のデジタル署名について説明し、その他の変更については後日別の記事で取り上げます。

Mozilla のアドオンプラットフォームは伝統的に開発者にとって非常にオープンなものとなっています。拡張機能を使えば Firefox の機能を革新的な方法で根本的に変えてしまえるだけでなく、Mozilla のアドオンサイトである AMO への登録も必須ではないため、開発者は自分たちのサイトでも自由にアドオンを配布することができます。これによって開発者は大きな権限と柔軟性を得られていますが、一方で Firefox ユーザに悪さをする人たちにも自由を与えすぎてしまっているのが現実です。

Web ページに広告を挿入したり、ソーシャルメディアサイトに悪質なスクリプトを埋め込んだりするような拡張機能と同じように、ユーザの同意なしにホームページや検索エンジンの設定を変えてしまう拡張機能が広く出回っています。そうした事態を食い止めるため、Mozilla ではすべてのアドオン作者が従うべき一連の アドオンガイドライン を策定するとともに、ブロックリスト機能 (行儀の悪い拡張機能の強制的な無効化) を通じた取り締まりを行っています。しかし、ガイドラインに違反している拡張機能のほとんどは AMO 以外で配布されているため、それらをすべて追跡することはますます困難になってきています。さらに、悪意を持った開発者は拡張機能の検出やブロックを回避する方法を生み出しており、対策は難しくなる一方です。

Mozilla はアドオンのエコシステムに対する責任を負っており、悪さをするアドオンによってユーザが不快な思いをするのを黙って見過ごすわけにはいきません。簡単な解決策は、Google が Chrome 向け拡張機能に課しているのと同じように、すべての開発者に AMO を通じた拡張機能の配布を義務付けることでしょう。しかし、インストールを Mozilla の配布チャンネルに限定することは余計な制約であると私たちは考えます。こうしたバランスを保つため、AMO を唯一のアドオン配布チャンネルとして強要せずにアドオンのエコシステム管理を強化できる、拡張機能の署名という解決策にたどり着きました。

その仕組みは次のようになります。

  • AMO に登録され、審査を通った拡張機能は、自動的に署名された上で配布されます。現在公開中の拡張機能についても、審査済みの最新版についてはすべて自動的に署名を行います。
  • AMO で配布されていない拡張機能についても、署名を行うために AMO へ登録してもらう必要があります。開発者にはアカウントを作成して拡張機能の情報を提供してもらいますが、その内容が公開されることはありません。それらのファイルは自動審査プロセスに掛けられ、すべてのチェックをパスしたら署名付きパッケージとして出力されます。自動テストをパスしなかった場合、開発者は審査チームによる目視審査を申請することもできます。本審査は、以下で詳しく説明しますが、AMO 非登録のアドオンでも申請可能です。
  • 一般には公開されず、組織の内部ネットワークのみで配布される拡張機能に関しては、3 つ目の選択肢があります。これについては近い将来詳しく説明できるかと思います。
  • 2 リリースサイクル (計 12 週間) の移行期間を設けます。その間は未署名の拡張機能を Firefox にインストールしようとしても単に警告が表示されるだけです。
  • 移行期間後は、未署名の拡張機能を Firefox のリリース版やベータ版にインストールすることは不可能となります。これを無効化する設定やコマンドラインオプションは一切提供されません。
  • 未署名拡張機能のインストールは、Nightly と Developer Edition、それに加えて主に開発者が拡張機能をテストできるように公開されるリリース版とベータ版の特別なノーブランド版では引き続き可能となります。

Add-ons SDK でビルドされた拡張機能を含め、すべての Firefox 向け拡張機能がこの変更による影響を受けます。テーマやスペルチェック辞書など その他の種類のアドオン に署名は必要なく、これまで通りインストール、使用できます。署名の検証は Firefox に限られ、現時点でこの機能を Thunderbird や SeaMonkey に実装する予定はありません。

開発者への影響

AMO にアドオンを登録している開発者には今後、Developer Edition、Nightly あるいはいずれかのノーブランド版でテストを行ってもらう必要があります。審査通過時に拡張機能が自動的に署名されることを除けば、登録、審査プロセスの他の部分に変更はありません。

その他の開発者にとって、これはより大きな変更となるでしょう。開発版を使ったテストに関しては、AMO アドオン開発者と同じ選択肢があります。一方でリリース版については、署名のために AMO へ拡張機能ファイルをアップロードするという必須手順が導入されます。多くの場合、この手順は自動化されると思いますが、拡張機能がテストをパスしなかった場合、目視によるコード審査を申請する選択肢が与えられます。

(Web 上の通常のインストール手順ではなくアプリケーションのインストーラを使って) 外部から拡張機能をインストールしている開発者の場合、審査の敷居はより高くなり、(AMO のコンテンツ制限以外は) AMO 上の本審査済みアドオンと同等になるでしょう。こうした手法は、Firefox 向けに独自の拡張機能を提供しているウイルス対策ソフトなど、拡張機能を同梱したアプリケーションによって広く採用されています。

デジタル署名によってもたらされる重要な変更点のひとつは、拡張機能インストール体験の刷新と改善です。本審査基準を満たした拡張機能は、AMO に登録されているかどうかにかかわらず、インストール手順がよりスムーズで分かりやすくなります。この仕組みの初期モックアップを以下に示します。

Installation flow

今のところ、遅くとも今年の第 2 四半期にあたる移行期間中にはこのシステムを実現させる予定です。そのため、拡張機能の未署名警告はおそらく Firefox 39 で実装されます。

ディスカッション

この記事 [原文] へのコメントを歓迎しますが、ここで説明した計画のメリットについて詳しく議論したければ Add-ons User Experience メーリングリスト に参加してください。プロジェクトの関係者は常に目を通していて、何か懸念点について書かれた投稿があれば返信します。

5 件のコメント

  1. nsh1960 :

    質問があります。
    現時点で更新がストップしている古いadd-onほか拡張は最新のFirefox上では今後利用できなくなりますか?
    せめて使い倒すためのWizard級のバッドノウハウがあればいいのですが。

  2. Piro :

    >現時点で更新がストップしている古いadd-onほか拡張は最新のFirefox上では今後利用できなくなりますか?

    Mozilla Add-onsのWebサイト上に掲載されていて現在もダウンロード可能な物は、自動的に署名されてインストール可能になる模様です。
    AMOに掲載されていない物については、自分でXPIを展開→IDを書き換える→AMOに自分のアカウントを作成してファイルをアップロード→書名済みファイルをダウンロード という手順を経るか、もしくは書名チェック機能が含まれない開発者向けのノーブランド版Firefox(おそらく名前は「Firefox」にならず、アイコンも狐の付かない物になるでしょう)を使う必要がある模様です。
    他にも想定されるいくつかのパターンについて現時点で分かっている情報を以下にまとめてみましたので、宜しければご参照下さい。
    http://piro.sakura.ne.jp/latest/blosxom/mozilla/xul/2015-02-12_signed.htm

  3. Pingback from 赤心慶福 — Signing an extension on :

    […] より安全なアドオン体験を提供するため、拡張機能に署名を導入します https://dev.mozilla.jp/2015/02/extension-signing-safer-experience/ […]

  4. Pingback from もじら組 on :

    […] *1 : https://blog.mozilla.org/addons/2015/02/10/extension-signing-safer-experience/ *2 : https://dev.mozilla.jp/2015/02/extension-signing-safer-experience/ […]

  5. Pingback from 赤心慶福 — be a developer #2 on :

    […] Firefox の署名周り。公式のドキュメントとしては https://dev.mozilla.jp/2015/02/extension-signing-safer-experience/ […]