[sylpheed-jp:11392] SylpheedダウンロードのPGP署名について

Hideki Yamane henrich @ iijmio-mail.jp
2017年 10月 24日 (火) 20:34:40 JST


 やまねです。

 https://sylpheed.sraoss.jp/ja/download.html でのPGP署名が
 気になったので、GnuPG作者の一人、新部さんに相談しました。

 結論を言うと
 ・配布用の鍵を作ってそれで運用
 ・配布用鍵は2048bit以上 RSA利用を推奨
 ・Web of Trustを辿れるように配布用の鍵については山本さんの個人鍵で署名
  しておく
 ・サイトについてもPGP署名の説明をできれば増やす
 という形にしてもらうのが良いかと思います。


 以下、新部さんから頂いた助言です。

-----------------------------------------------------------------------------
>  現在Debianでは、2048bit未満のGPG鍵を使わないようにしているかと思います
>  が、1024bitの鍵はもう良くないよ、という根拠となる話はどこにあったか
>  ご存知ですか?

いわゆる「2010年問題」と呼ばれた話かと思いますが、NISTの勧告の以下の文
書によるものだと思います。

https://csrc.nist.gov/publications/detail/sp/800-131/archive/2010-06-16

これは 2015年に改訂されてます(移行期間が過ぎたので)。

https://csrc.nist.gov/publications/detail/sp/800-131a/rev-1/final

>  sylpheedの配布にPGP署名がついたのですが、鍵が期限切れで1024bit DSA鍵
>  だったので、upstreamにどういう風に話をして、どう更新してもらうのが
>  良いかと思いまして...(期限を延長してkeyserverに上げなおしてもらう?
>  それとも新しい鍵で配布してもらう?)

新しい鍵を作って新しい鍵の電子署名が妥当だと思います。

現在、DSA の 1024-bit 以下の鍵長のものは、あんまり推奨できません。


詳しく言うと、複雑です。 長くなりますので必要が無ければ読み飛ばしてください。

(1) OpenSSH の場合は、おそらく保守が面倒だからだと思いますが、DSAのアル
    ゴリズム自体が非推奨となったと思います。(だいたい全否定)

(2) OpenPGP の場合は DSAのアルゴリズム自体は使えます。非推奨ではありません。

(3) 注意点として電子署名のために DSA とともに使うハッシュ関数の問題があります。

(4) OpenPGP では DSA の利用は全否定はしてません。

    DSAの電子署名のアルゴリズムを 1024-bit で使っても、SHA1 を避けて
    SHA2 を使うことにすれば、現在でも使えないことはありません。

    1024-bit の DSAの場合、入力の有効な長さが 160-bit なので、歴史的には
    SHA1が使われます(OpenPGP の古い標準の RFC2440)。

    2048-bit 以上の DSA の場合はSHA2が使われます。

    新しい標準のRFC4880に基づいて、1024-bit の DSAの場合でもわざわざ
    SHA2 を使うようにすれば、使えます。


(5) 鍵長の運用は、あくまでも慣習であって、2010年の勧告の後 7年経った現在
の時点で、1024-bit(SHA2をあえて使う)の DSAや、1024-bit の RSA の暗号アル
ゴリズム自体が破られた、ということは、まだありません。

(個別の実装の脆弱性により、暗号が破られるということは、別に 1024-bit に
限らず、いつも脆弱性報告があり、修正があります。)

----------------------------------------------------------------
すみません。先ほどのメールは具体的な電子署名の運用を見ないで回答してまし
た。

二点問題があると思います。

* 電子署名が実質的に電子署名としての意味がない、という話

電子署名が意味を持つのは、使われている鍵があらかじめ検証されているとき、
その場合だけです。

Sylpheed の「ダウンロード」のページでおかれている電子署名は
5024337CC00C2E26 の山本さん個人の鍵と思われるもので署名されているだけで、
わたくしが見た範囲では、鍵に対する言及はなにもありません。

この状況では、署名の確認は、hash の値が正しいくらいの意味しかなくて、ダ
ウンロードの際に(CRLF変換などで)壊れたのではないようだ、ということが確認
できる程度でしょう。(外部から見たら今と区別がつけられない形態で、偽のリ
リースをすることができる、ということについて検討することをおすすめします。)

たとえば、リリースの 際には常にリリース鍵のフィンガープリントと入手先を
説明したメールを送ったり(メールは個人の電子鍵で署名)、HTTPSで保護されて
いるダウンロードサイトでも鍵を開示したり、潜在的にリリースを受けとるであ
ろう方に別の(物理的)チャネルでも確認出来るようにパンフレットや名刺に鍵の
フィンガープリントを常に載せる、などの運用をすることが望まれます。

よくある慣習では、開発者個人の鍵ではなく、独立のリリース鍵を運用します。
(その独立のリリース鍵は開発者の個人の鍵で署名します。)


* 署名自体の問題

最近のものを二つみました。

(1) 
https://sylpheed.sraoss.jp/sylpheed/v3.6/sylpheed-3.6.0.tar.bz2.asc

(2)
https://sylpheed.sraoss.jp/sylpheed/v3.6/sylpheed-3.6.0.tar.gz.asc

確認するのに、これに対する gpg --list-packet の出力ですが、それぞれ、

# off=0 ctb=88 tag=2 hlen=2 plen=70
:signature packet: algo 17, keyid 5024337CC00C2E26
	version 4, created 1498713528, md5len 0, sigclass 0x00
	digest algo 2, begin of digest d1 1b
	hashed subpkt 2 len 4 (sig created 2017-06-29)
	subpkt 16 len 8 (issuer key ID 5024337CC00C2E26)
	data: [158 bits]
	data: [159 bits]

# off=0 ctb=88 tag=2 hlen=2 plen=70
:signature packet: algo 17, keyid 5024337CC00C2E26
	version 4, created 1498713525, md5len 0, sigclass 0x00
	digest algo 2, begin of digest b0 c8
	hashed subpkt 2 len 4 (sig created 2017-06-29)
	subpkt 16 len 8 (issuer key ID 5024337CC00C2E26)
	data: [159 bits]
	data: [158 bits]

となってます。

digest algo 2 ですが、SHA1 のハッシュに対する DSA のアルゴリズムで署名を
生成したものになってます。ですので、他のアルゴリズムを使っている場合に比
べて、署名の検証が有効に働かない危険性が高いと言えます。

2017年の今年に、SHA1 の collision attack の実際の例が示されました。(異な
る入力に対して同一の出力となるものを得ることが、実例で示されました。)

これは、preimage attack とは異なるので、ただちに、たとえば、リリースさ
れている tar.bz2 を(悪意で)置き換えて、同一の電子署名が有効となって、
検証がすり抜けられる、というわけではありません、けれども。
----------------------------------------------------------------

-- 
Regards,

 Hideki Yamane     henrich @ debian.org/iijmio-mail.jp


Sylpheed-jp メーリングリストの案内