Home > Latest topics

Latest topics > XML署名とハッシュを使って安全な方法でアドオンを更新できるようにする

宣伝。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。 以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能! シス管系女子って何!? - 「シス管系女子」特設サイト

XML署名とハッシュを使って安全な方法でアドオンを更新できるようにする - Sep 21, 2007

Firefox 3からは、安全な方法での自動更新に対応していないアドオンはインストールできなくなるようだ、ということを先日書いた。そっちのエントリに詳しいことを書いたんだけど、要約すると、「安全な方法での自動更新を提供する」方法には以下の3つのパターンがある。

  1. Mozilla Add-onsにアドオンを登録し、そちらの自動更新の仕組みを利用する。
  2. HTTPSで通信できるサーバを自分で用意して、そこで自動更新の情報を含んだRDFデータソースとXPIパッケージを公開する。
  3. 自動更新の情報を含んだRDFデータソースに、XPIパッケージのハッシュ値を記述した上で、XML署名を施す

くでんさんの報じる所によると、このうち3番目の方法をものすごく簡単に実行できるようになる開発者向けのツール「McCoy(マッコイ)」が公開されたそうで、早速自分も使ってみたところ、本当に簡単だった(手順としては。作業はなんだかんだで手間取ったけど……)。なので、せっかく須藤さんにCOZMIXNGのアカウントを作ってもらったけど、今後はこの方法を使っていこうと思う。

自分が躓いたポイントをメモしておこう……

  • 今アドオンを公開してる人は、1:まずinstall.rdfを編集(em:updateKeyとem:updateURLを変更)して、XPIパッケージを作り直す。2:そのXPIパッケージのハッシュを得る。3:更新通知のデータソースにXPIパッケージのハッシュを記入する。4:更新通知のデータソースにMcCoyでXML署名を施す。……という順で作業することになる。
  • McCoyで生成した公開鍵は、更新情報通知用のRDFデータソースではなくアドオンのinstall.rdfの方に書く。僕は説明をちゃんと読んでなくて最初更新通知のデータソースの方に書いてしまったので、XPIパッケージから何から全部作り直す羽目になってしまった……
  • em:updateHashの値は、SHA-1ハッシュなのであれば sha1:0123456789...という風に書く。頭に付けるのは、SHA-1:でもsha-1:でもsha:でもなく、sha1:。この事を知らなかったので無駄に何度も作業をやり直す羽目になってしまった。
  • McCoyでXML署名を施したRDFデータソースは内容がグチャグチャにされる(RDFデータソースとしては何ら情報は失われていないけれども、タグや属性の書き方、インデントなどは、MozillaがRDFデータソースを自動生成するときのパターンに統一されてしまう)。テキストエディタで手作業編集してるような人とか、スクリプトなどを使って文字列としてRDFデータソースを編集してるような人は、XML署名された後のデータソースを編集できなくなってしまうかもしれない。なので、元のRDFデータソースは保存しておいて、公開用のRDFデータソースとして一つコピーを作成し、そっちにXML署名を施すようにすること。

McCoyはXULRunnerベースなので、僕でも改造できそうな感じだ。ステップ数が増えて、手作業だとミスが今まで以上に多発しそうなので、いずれはこのあたりの一連の操作を半自動化できるようにしてみたい。

追記。せっかくだからMDCのMcCoy関係の文書をモリモリと翻訳してみた。install.rdfの説明の未訳部分とかも。

分類:Mozilla > XUL, , , , , , 時刻:20:35 | Comments/Trackbacks (9) | Edit

Comments/Trackbacks

まだ首相はあの人だっけ

よく考えたら、HTTPSを使う方法だと万が一ですがWebアプリケーションの脆弱性とかをつかれてWebサイトそのものが乗っ取られてアドオンパッケージとinstall.rdfを書き換えられる可能性があるので、それよりはローカルの秘密鍵がバレない限りだいじょうぶな公開鍵暗号方式を使うほうが安全性は高いかもしれないですね。Webサイトを乗っ取られてアドオンパッケージとinstall.rdfを書き換えられたとしてもその状態だと正常に自動更新が働かなくなるわけですから。

Commented by くでん at 2007/09/25 (Tue) 23:43:58

次の首相

TBをfukudaとhukudaどっちで受け付ければいいか悩ましいです。
asouなら迷わないで済んだのに!
いっそのこと「総裁選で負けた候補」としてみようか(難問だ

Commented by Piro at 2007/09/26 (Wed) 01:26:21

ミステイク

×install.rdf -> ○update.rdfでした……
というかつっこむのはそっちですか。
まぁ、普通はhじゃなくてfを使いますよね。

Commented by くでん at 2007/09/27 (Thu) 07:02:26

公開鍵を直接使う署名方式だと

> それよりはローカルの秘密鍵がバレない限りだいじょうぶな公開鍵暗号方式
> を使うほうが安全性は高いかもしれないですね。

ただ今回の署名方式では、原理的に秘密鍵は公開鍵から総当り攻撃で導き出せるため、ずっと同じ秘密鍵を使い続けるわけにはいかない、というジレンマが。
とはいえこの先5~10年は安心と思いますけどね。

Commented by takeshi at 2007/09/28 (Fri) 05:53:18

[mozilla][extension][study]第八回Mozilla拡張機能勉強会

12月22日の第八回Mozilla拡張機能勉強会 Wikiに参加してきた。以下覚え書き。 mozilla Japanのエントランスに飾られていた、緑のgoo版Firefox?のクリスマスツリー。 電車の中で無線LANカードと名刺を忘れたことに気がつく。 参加予定者数が22名程と多いので、有線が確保で

Trackback from 「 Firefox ×?=!」を考えてみる、ブログ。 at 2007/12/26 (Wed) 00:01:35

SHA-1ハッシュ

自分も遅ればせながらMcCoyを使った電子署名をやろうとしています。
基本的なことかもしれませんが、SHA-1ハッシュはどうやって作成するんでしょうか?

Commented by Gomita at 2008/05/03 (Sat) 11:48:02

SHA-1ハッシュ

ファイルのハッシュを生成するユーティリティとしては、くでんさんの記事で紹介されているbkhasheskやMDHashToolなどがあります。
http://www14.ocn.ne.jp/~bkclass/bkhashes.html
http://mdhashtool.mozdev.org/
ちなみに自分はビルド用バッチファイルの中で、Cygwinのsha1sumコマンドを使っています。

Commented by Piro at 2008/05/03 (Sat) 21:36:13

SHA-1ハッシュ

ありがとうございます。
てこずりましたが、なんとか自動更新ができるようになりました。
しかしバージョンアップのたびにMcCoy立ち上げて手作業で署名を付加するのは面倒ですね。
すべてコマンドラインで処理できればいいんですが…。

Commented by Gomita at 2008/05/04 (Sun) 02:35:57

McCoy を使ったアドオンの安全な更新方法の提供

Firefox 3 では、安全な更新方法が提供されていないアドオン、つまりインストールマニフェスト中の em:updateURL の値が https ではなく http プロトコルであるようなアドオンは、デフォルトで...

Trackback from SCRAPBLOG at 2008/05/04 (Sun) 09:22:48

TrackBack ping me at


の末尾に2020年11月30日時点の日本の首相のファミリーネーム(ローマ字で回答)を繋げて下さい。例えば「noda」なら、「2007-09-21_mccoy.trackbacknoda」です。これは機械的なトラックバックスパムを防止するための措置です。

Post a comment

writeback message: Ready to post a comment.

2020年11月30日時点の日本の首相のファミリーネーム(ひらがなで回答)

Powered by blosxom 2.0 + starter kit
Home

カテゴリ一覧

過去の記事

1999.2~2005.8

最近のコメント

最近のつぶやき