情報セキュリティ



情報セキュリティ
第9回
2014年6月6日(金)

1/23

本日学ぶこと

本日の授業を通じて



信頼される第三者を用いないセキュリティについて学びます.
「Diffie-Hellman鍵交換」について,概要,考案されたときの安
全性の根拠,および中間者攻撃による脆弱性を理解します.
メールやファイルを暗号化するソフトウェアである「PGP」につい
て,その鍵管理・暗号化・復号の方法を学びます.
2
Diffie-Hellman鍵交換

DiffieとHellmanが1976年に考案した,
二者間で秘密の数値を共有するプロトコル



RSA暗号アルゴリズムの発表(1978年)よりも早い
「鍵交換」と書かれるが,鍵そのものは交換しない.
鍵の手掛かりとなる情報を交換することで,鍵(秘密の数値)
を求めている.
頭文字をとって「DH」,「DH方式」などとも呼ばれる.
3
Diffie-Hellman鍵交換の処理と通信
Alice
Bob
ga % p
gb % p
公開値の
計算
公開値の
交換
公開値の
計算
乱数a
乱数b
共有鍵の
計算
共有鍵の
計算
gab % p
共有する値
『新版暗号技術入門―秘密の国のアリス』 p.281を改変
gab % p
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
離散対数問題(一部復習)



入力:素数p,生成元g, 正整数y
出力: y = gz % pを満たす整数z (ただし1≦z<p)
総当り法で解を見つけるのは,多項式時間アルゴリズムで
はない.



z=1,2,... と解の候補を試すと,解が出るまでのべき剰余計算回
数の期待値は,おおよそ p/2.すなわち p に比例する.
離散対数問題の入力サイズは,p のビット長 |p|≒log2p によっ
て決まる.
よって,時間計算量は O(p) = O(2|p|) であり,多項式時間では
ない.
 「gがpの生成元である」の必要十分条件
 g % p,g2 % p,…,gp-2 % p がどれも異なる.
 g % p,g2 % p,…,gp-2 % p がいずれも1ではない.
 p-1の素因数であるすべてqに対して,g(p-1)/q % p ≠ 1
6
中間者攻撃
カレーライス
ください
ハヤシライス
お願いします
(悪意ある)
ウエイター
客
カレーライス
どうぞ

料理人
ハヤシライス
できたよ
Diffie-Hellman鍵交換は
中間者攻撃に対する脆弱性を有する
7
Diffie-Hellman鍵交換に中間者攻撃を適用すると(1)
Alice
ga % p
Mallory
公開値の
交換
gm % p
Bob
公開値の
交換
gb % p
公開値の
計算
公開値の
計算
公開値の
計算
乱数a
乱数m
乱数b
共有鍵の
計算
共有鍵の
計算
共有鍵の
計算
共有
gam % p
gam % p
gbm % p
共有
gbm % p
8
Diffie-Hellman鍵交換に中間者攻撃を適用すると(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
9
Diffie-Hellman鍵交換に中間者攻撃を適用すると(3)

AliceとMalloryはgam % pを共有し,
BobとMalloryはgbm % pを共有する.


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
α
10
Diffie-Hellman鍵交換の補足

実用化されている「Diffie-Hellman鍵交換に基づく情報共有
法」では,中間者攻撃の問題に対応している(RFC 2631).
11
PGPとは



Pretty Good Privacy(たいへんよいプライバシー)の略
Philip Zimmermannが開発した暗号化ソフトウェア
できること





メールやファイルの暗号化と復号
通信の暗号化は
 ハイブリッド暗号
できない
 対称暗号
メールやファイルのディジタル署名とその検証
公開鍵,プライベート鍵の管理
認証局はなく,信頼の網(web of trust)モデルで運用
GnuPG (Gnu Privacy Guard)は,OpenPGP (RFC 4880)
という仕様に基づいて作成されたフリーソフトウェア
12
PGPの鍵リング(key ring)

各利用者が鍵を管理



それぞれの鍵は,作成者も鍵長も暗号アルゴリズムも様々
[email protected]の鍵は,誰でも生成可能
GnuPGでは,~/.gnupg 以下のファイル
13
GnuPGで行う操作(1)

自分の鍵(公開鍵&プライベート鍵)





パスフレーズを鍵とした
対称暗号により
ファイル化されている
鍵ペア生成
失効証明書(破棄証明書)の作成
公開鍵暗号による復号
署名(ファイル,他人の鍵)
他人の鍵(公開鍵)





インポート
署名
信頼度設定
公開鍵暗号による暗号化
署名の検証
公開鍵を使う前に,
自分の鍵で署名
しなければならない
14
GnuPGで行う操作(2)

鍵リング





鍵の書き出し(テキスト化)
鍵のインポート・削除
鍵一覧・fingerprint
公開鍵サーバへ鍵を送受信
その他


公開鍵サーバで鍵の検索
対称暗号による暗号化と復号(鍵としてパスフレーズを与える)
15
PGPのインポート(import)

鍵を鍵リングに取り込むこと




鍵の入手方法は…



主に他人の公開鍵
自分の鍵(公開鍵&プライベート鍵)は,
鍵ペア生成で自動的にインポートされる
失効証明書(破棄証明書)をインポートすることも
本人,または信頼できる人からファイルで
インターネットで,公開鍵サーバ(keyserver)から
インポートの後は?


まず①正当性を確認,②自分の鍵で署名,③信頼度設定
そうすれば,暗号化や,署名の検証ができる.
16
公開鍵をインポートしたら

他人の公開鍵をインポートしただけでは



その鍵が正当なものかわからない.
その鍵で暗号化・署名の検証などをしてはいけない.
正当性の確認:所有する鍵のfingerprint(指紋)を求め,
別に公開されているfingerprintと照合する.

「Takehiko Murakawa <[email protected]>」
(ID: 3BDCC722)のfingerprintは
CB1A 7259 2F70 D731 E633 0AA3 983E 47FB 3BDC C722


自分のプライベート鍵で「鍵に署名」をつけると,自分はその
鍵を信頼したことになる.
信頼度(所有者信頼)は,第三者がその鍵を信頼するための
情報

信頼度情報を,公開鍵サーバに送ることができる.
17
鍵の破棄

他人の鍵は?


鍵リングから鍵を削除するコマンドを実行する
自分の鍵は?


鍵ペア生成後すぐ,失効証明書を作成しておく
不要になったほかに,漏洩(compromise)の疑惑があれば,
失効証明書を鍵リングにインポートしたのち,
公開鍵サーバに送信すればよい.
(鍵リングからの削除はしない.)
18
PGPの処理~鍵生成


暗号化方式,ビット長,鍵の有効期間,名前,メールアドレス,
パスフレーズ(2回)を入力する.
鍵ペアと鍵IDは,乱数を用いて生成される.

マウスを動かしていると,より良質の乱数ができる.
19
PGPの処理~公開鍵暗号で暗号化




ハイブリッド暗号(第8回授業)を用いる.
メッセージを直接暗号化するための鍵(セッション鍵)を生成
する.
メッセージは暗号化の前に圧縮する.
メールで送る場合,最後にバイナリデータをテキスト化
(Armor,RFC 4880)する.
『新版暗号技術入門―秘密の国のアリス』 p.324
20
PGPの処理~公開鍵暗号で復号



ハイブリッド暗号の逆順となる.
復号鍵は,計算機内では対称暗号で暗号化して保存されて
いる.これを利用可能にするため,ユーザがパスフレーズを
入力する.
したがって,1回の復号の中に,




復号鍵を取り出すための復号(対称暗号)
セッション鍵を取り出すための復号(公開鍵暗号)
メッセージを取り出すための復号(対称暗号)
が行われる.
『新版暗号技術入門―秘密の国のアリス』 p.326
21
PGPの処理~対称暗号で暗号化・復号


暗号化・復号したいファイル名を入力に与える.
実行中にパスフレーズを入力する.


暗号化では2回,復号では1回
鍵生成時や,公開鍵暗号での復号時に入力する値とは異なる.
そもそも,鍵生成や鍵のインポートをしなくても,対称暗号は使
用可能
22
本日のまとめテスト
① 以下の下線部を訂正しなさい.
 Diffie-Hellman鍵交換の安全性の根拠は,中間者攻撃の困難
性による.
② あなたがメールを安全(セキュア)にやりとりしたいとき,
「通信を暗号化する」と「それぞれのメールを暗号化する」の
うちどちらがよいか,理由とともに答えなさい.


「両方」は禁止
授業メモに記入して提出すること.
23 E