情報セキュリティ: 2006年6月9日

q
q
情報セキュリティ
第9回:2007年6月15日(金)
q
q
本日学ぶこと

“信頼される第三者”を用いないセキュリティ
q
q


Diffie-Hellman鍵交換
PGP,GnuPG
Diffie-Hellman鍵交換により,認証局なしに鍵となる値を共
有できる.ただしman-in-the-middle攻撃に弱い.
PGPでは,誰をどの程度信頼するかは各ユーザが設定する.
2
Diffie-Hellman鍵交換

Whitfield DiffieとMartin Hellmanが1976年に考案した,
二者間で秘密の数値を共有するプロトコル
q


RSA暗号アルゴリズムの
発表(1978年)よりも早い
一人で実行する手順は
アルゴリズム
二人以上で実行する手
順はプロトコル
「鍵交換」と書かれるが,直接鍵を交換
してはいない.鍵の手掛かりとなる情報を交換することで,鍵
(秘密の数値)を求める.
頭文字をとって「DH」,「DH方式」などとも呼ばれる.
3
Diffie-Hellman鍵交換の処理と通信
Alice
Bob
GA % P
GB % P
公開値の
計算
公開値の
交換
公開値の
計算
乱数A
乱数B
共有鍵の
計算
共有鍵の
計算
GAB % P
共有する値
GAB % P
図の出典:『暗号技術入門―秘密の国のアリス』 p.281を改変
4
Diffie-Hellman鍵交換の数学的背景









公開情報:素数P,生成元G
GはPに依存する.
Aliceが秘密に持つ情報:A
Gは必ずしも素数ではない.
Bobが秘密に持つ情報:B
Alice→Bob:GA % P
Bob→Alice:GB % P
Aliceの鍵生成:(GB % P)A % P = GAB % P
Bobの鍵生成:(GA % P)B % P = GAB % P
AliceとBobの処理は,乱数生成・べき剰余のみなので,高速
P,G,GA % P,GB % Pを盗聴しても,そこからAやBを得る
ことはできない(離散対数問題を解くことと等価)なので安全
であると言える.
5
man-in-the-middle攻撃
カレーライス
ください
ハヤシライス
お願いします
(悪意ある)
ウエイター
客
カレーライス
どうぞ
料理人
ハヤシライス
できたよ
6
Diffie-Hellman鍵交換に
man-in-the-middle攻撃を適用すると(1)
Alice
Mallory
Bob
GA % P
GM % P
GB % P
公開値の
交換
公開値の
交換
公開値の
計算
公開値の
計算
公開値の
計算
乱数A
乱数M
乱数B
共有鍵の
計算
共有鍵の
計算
共有鍵の
計算
共有
GAM % P
GAM % P
GBM % P
共有
GBM % P
7
Diffie-Hellman鍵交換に
Man-in-the-middle攻撃を適用すると(2)








公開情報:素数P,生成元G
Alice,Bob,Malloryが秘密に持つ情報:A, B, M
[Alice] → GA % P → [Mallory] → GM % P → [Bob]
[Bob] → GB % P → [Mallory] → GM % P → [Alice]
Aliceの鍵生成:(GM % P)A % P = GAM % P
Bobの鍵生成:(GM % P)B % P = GBM % P
Malloryの鍵生成1:(GA % P)M % P = GAM % P
Malloryの鍵生成2:(GB % P)M % P = GBM % P
8
Diffie-Hellman鍵交換に
man-in-the-middle攻撃を適用すると(3)

AliceとMalloryはGAM % Pを共有し,
BobとMalloryはGBM % Pを共有する.
q

AliceとBobの間では情報を共有していないが,
Aliceは,BobとGAM % Pを共有していると思っている.
Aliceが,GAM % Pを鍵として暗号文を作り,Bobに送ったら,
Malloryはそれを受け取ってGAM % Pで復号し, GBM % Pで
暗号化したものをBobに渡す.
AliceとBobの間で秘密にしたい通信内容が,Mallory
にも知れてしまう!
Alice
α
E(GBM%P,α)
E(GAM%P,α)
α
Bob
Mallory
α
9
Diffie-Hellman鍵交換の補足

実用化されている「Diffie-Hellman鍵交換に基づく情報共有
法」では,man-in-the-middle攻撃の問題に対応している.
10
PGPとは



Pretty Good Privacy(たいへんよいプライバシー)の略
Philip Zimmermannが開発した暗号化ソフトウェア
できること
q
q
q

メールやファイルの暗号化と復号
通信の暗号化はできない
 ハイブリッド暗号
⇒SSH, SSL
 対称暗号
メールやファイルのディジタル署名とその検証
公開鍵,プライベート鍵の管理
GnuPG (Gnu Privacy Guard)は,OpenPGPという仕様に
基づいて作成されたフリーソフトウェア
11
PGPの鍵リング(key ring)

各利用者が鍵を管理
q
q
q
それぞれの鍵は,作成者も鍵長も暗号アルゴリズムも様々
[email protected]の鍵は,だれでも生成可能
GnuPGでは,~/.gnupg 以下のファイル
12
GnuPGで行う操作(1)

自分の鍵(公開鍵&プライベート鍵)
q
q
q
q

鍵ペア生成
破棄証明書の作成
公開鍵暗号による復号
署名(ファイル,他人の鍵)
他人の鍵(公開鍵)
q
q
q
q
q
インポート
署名
信頼度設定
公開鍵暗号による暗号化
署名の検証
13
GnuPGで行う操作(2)

鍵リング
q
q
q
q

鍵の書き出し(テキスト化)
鍵のインポート・削除
鍵一覧・fingerprint
公開鍵サーバへ鍵を送受信
その他
q
q
公開鍵サーバで鍵の検索
対称暗号による暗号化と復号(鍵としてパスフレーズを与える)
14
PGPのインポート(import)

鍵を鍵リングに取り込むこと
q
q
q

鍵の入手方法は…
q
q

主に他人の公開鍵
自分の鍵(公開鍵&プライベート鍵)は,
鍵ペア生成で自動的にインポートされる
破棄証明書をインポートすることも
本人,または信頼できる人からファイルで
インターネットで,公開鍵サーバ(keyserver)から
インポートの後は?
q
q
まず①正当性を確認,②自分の鍵で署名,③信頼度設定
そうすれば,暗号化や,署名の検証ができる.
15
公開鍵をインポートしたら

他人の公開鍵をインポートしただけでは
q
q

その鍵が正当なものかわからない.
その鍵で暗号化・署名の検証などをしてはいけない.
正当性の確認:所有する鍵のfingerprint(指紋)を求め,
別に公開されているfingerprintと照合する.
q
「Takehiko Murakawa <[email protected]>」
(ID: 3A423EBE)のfingerprintは
564B 8D8E C58A 0D78 8294 F3E9 0D23 DE18 3A42 3EBE


自分のプライベート鍵で「鍵に署名」をつけると,自分はその
鍵を信頼したことになる.
信頼度(所有者信頼)は,第三者がその鍵を信頼するための
情報
q
信頼度情報を,公開鍵サーバに送ることができる.
16
鍵の破棄


鍵リングから鍵を削除するコマンドを実行する
自分の鍵は?
q
q
鍵ペア生成後すぐ,破棄証明書を作成しておく
不要になったほかに,漏洩(compromise)の疑惑があれば,
破棄証明書を鍵束にインポートしたのち,
公開鍵サーバに送信すればよい.
(鍵リングからの削除はしないほうがよい.)
17
PGPの処理~鍵生成


暗号化方式,ビット長,鍵の有効期間,名前,メールアドレス,
パスフレーズ(2回)を入力する.
鍵ペアと鍵IDは,乱数を用いて生成される.
q
マウスを動かしていると,より良質の乱数ができる.
18
PGPの処理~公開鍵暗号で暗号化




ハイブリッド暗号(前回授業)を行う.
メッセージを直接暗号化するための鍵(セッション鍵)を生成
する.
メッセージは暗号化の前に圧縮する.
メールで送る場合,最後にバイナリデータをテキスト化
(Armor)する.
19
PGPの処理~公開鍵暗号で復号



ハイブリッド暗号の逆順となる.
復号鍵は,計算機内では対称暗号で暗号化して保存されて
いる.これを利用可能にするため,ユーザがパスフレーズを
入力する.
したがって,1回の復号の中に,
q
q
q

復号鍵を取り出すための復号(対称暗号)
セッション鍵を取り出すための復号(公開鍵暗号)
メッセージを取り出すための復号(対称暗号)
が行われる.
20
PGPの処理~対称暗号で暗号化・復号


暗号化・復号したいファイル名を入力に与える.
実行中にパスフレーズを入力する.
q
q
暗号化では2回,復号では1回
鍵生成時や,公開鍵暗号での復号時に入力する値とは異なる.
そもそも,鍵生成や鍵のインポートをしなくても,対称暗号は使
用可能
21
PGPを手っ取り早く使いたいなら

Windows
q

Linux
q

GnuPG Win32版 + WinPT
gpgコマンド
メールクライアント
q
q
Firefox + FireGPG + GMail
Thunderbird + enigmail
22
PGPで暗号化メールを送ってみたい人へ

メールを 「Takehiko Murakawa
<[email protected]>」 (ID: 3A423EBE)の
鍵で暗号化して送ってかまいません.
q
q
q
q
うまく復号できたら,その内容に返信します.
復号できなかったら,その旨返信します.
ディジタル署名はつけないでください.
第2回レポートの答案を暗号化して送らないでください.
23