2005-06-23 SECUAD 6/23 secuad 第11章 残り 電子署名 改竄の検出と文書の発信者の特定を可能にする技術。 認証への応用も可能。 公開鍵の場合 前提 公開鍵は広く晒す 秘密鍵は本人のみが管理する 公開鍵による暗号 あるデータをプライベートキーで暗号化 対応する公開鍵を持つ人が複合化できる 公開鍵による署名 あるデータを公開鍵で暗号化 対応するプライベートキーで複合化できる 実際には、データそのものを暗号化すると大変なので、hash値に対する暗号化と複合化を行う。 検証する人 データのhash A 電子署名を送信者の公開鍵で複合化したデータのhash B こいつらが一致したらOKとみなす。 共通鍵の場合 MAC: Message Authentication Code MIC: Message Integrity Code よくない点 送信者、受信者が共通鍵を共有するので、受信側が内容改竄でき、完全性が保証されない。 共通鍵が漏洩するとそれで終わり。 よい点 公開鍵に比べて高速 p2pとかで使われるらしい。 HMAC (keyed Hash MAC)、CBC-MAC (Cipher Block Changing MAC) RFC2104 SSL/TLSの完全性検出に利用される。 使い分け 公開鍵: 否認防止、改竄検出 秘密鍵: 改竄検出、認証 形式 ASN.1 (Abstract Syntax Notation One) S/MIMEがこれらしい PGP形式 RFC2440 "OpenPGP Message Format" RFC3156 "MIME Security with OpenPGP" detach: 別ファイルにPGP署名をする。ソースコードとかの改竄検出。 attach: 同ファイルにPGP署名をする。 XML形式 XML Signature detached enveloping enveloped アルゴリズム RSA公開鍵暗号による電子署名 RSA 公開鍵によってデータのhash値を暗号化し、署名データとする。 MD2, MD5, SHA-1 DSA電子署名 (Digital Signature Algorism) Diff-Hellmanアルゴリズム 離散対数問題による公開鍵暗号 NIST (National Institute of Standard and Technology) FIPS PUB 186 (DSS: Digital Signature Standard) hashはSHA-1 楕円関数暗号を用いるのもありらしい。 ECDSA 多重署名 シリアル署名 入れ子状: あとから署名したものは直前までの署名全体を含む パラレル署名 データに対する署名。署名対象はデータに限定される。 Timestamp 電子署名の応用で、時刻情報を保証するための仕組み。 通常の電子署名 改竄防止、否認防止は大丈夫 存在証明(その時刻にデータが存在したこと)は保証できない simple方式 データをhash化したものに対する署名だが、Timestamp局(TSA: TimeStamp Authority)が署名する。 PKI client <-> TSA <- 時刻データ(正確な時計サーバ) signatureはhashとtime だから時計屋さんが騒がれている訳か...やっと理解した。 Link方式 公開鍵による署名ではない。 Timestamp要求のhashをリンクさせ、その前後関係を保証するモノ。 正確な時刻を保証するものではない。 リニアリンキングプロトコル 階層型リニアリンキングプロトコル 複数TSAによるリンキングプロトコル 長期保存 署名の有効期間 通常は1-3年程度。 秘密鍵の漏洩問題などのリスクのため。 現実世界のデータ保存 10年単位で必要。例えば、税金なら7年。 長期保存により、署名鍵の強度が下がる&アルゴリズムの弱体化のリスク 長期署名フォーマット全体に対してアーカイブtimestamp(ES-A) 法律 電子署名法 e文書法 利用 否認防止: Adobe Acorobatはシリアル署名をサポート。PDFファイルにX.509で署名できる。 改竄防止: MS Windowsのdriverに対する証明書、AcitveXに対する証明書 認証への応用: TLS/SSLのクライアント認証、802.1xのEAPの一部で使える 感想 Chapter11は長かったですが、長らく曖昧にしたままだった認証、署名、暗号化についてある程度纏めることができました。 公開鍵認証はいまいち混乱することが多いので、一度PGPなりS/MIMEなりを自分で使ってみればよいんですね。そうすれば実感として理解できるし。 そういえば、数年前に一時期、全てのメールをPGPで暗号化するのをデフォルトにしたことがあったっけ。やらなくなった理由は明確。grepとかで全文検索できないんですもの。orz 結局、通信経路を暗号化する方針にシフトして今に至る。おかげで、namazuが大活躍。:-)