情報セキュリティ 第06回
大久保誠也 静岡県立大学経営情報学部
2/51
はじめに
一方向関数とハッシュ値
公開鍵暗号と認証
演習:ハッシュ値
はじめに
3/51
今回の内容
基礎技術:
秘密鍵暗号方式
暗号化
ブロック暗号とストリーム暗号
公開鍵暗号方式
暗号化と認証
ハッシュ値と一方向関数
乱数
実際の実装:
RSA
暗号の仕組み 4/51一方向関数と メッセージダイジェスト
5/51
こういう場合はどうする?
Hello World
Hellow World
Bob
送信Hellow World
ファイルをダウンロードしてき たけど、正しくダウンロードで
きたかなぁ なんとかして
検証したい
6/51
一方向関数とは
ある関数f が、
任意のx が与えられたとき、f(x)の値を求めること
は簡単、
任意のy
が与えられたとき、y=f(x)
となるx
を求 めることは難しいとき、この関数は一方向関数であるという。
元の値 計算結果
簡単
難解
7/51
メッセージダイジェストとは
ファイルの中身に対応して生成した固定長のbit列
フィンガープリント、ファイルの指紋、ハッシュ値とも
異なる中身の場合、同じメッセージダイジェストになる 可能性は低い(ゼロではない)。
一方向関数である。
暗号と違い、復号はできない。eee0ca57643e4b59 815847fdd152cd5c
This is a pen.
平文
フィンガープリント
639c7143c6937907 ef3bfbed7501d898
This is a book.
8/51
メッセージダイジェストの利用 (1)
文章のテキストファイルから生成できるビット列 平文 フィンガープリント
異なる平文が、同じ指紋を生成する確率は低い。平文
A
フィンガー プリント
A
平文
B
フィンガー プリント
B
違う指紋に
平文と指紋を受け取り、比較することで、平文が正し いか否かを判定できる。9/51
メッセージダイジェストの利用(2)
Hello World
Bob
1)送信
メッセージ ダイジェスト
B Hellow
World
Hellow
World メッセージ
ダイジェスト A メッセージ
ダイジェスト A メッセージ
ダイジェスト
A
3)比較したら
違う値に!
失敗している!
2)メッセージ
ダイジェストを 計算10/51
メッセージダイジェストの利用(3)
多くのサイトで、ファイルの検証用にMD5値が置かれ ています。http://www.tnlab.inf.uec.ac.jp/daihinmin/announce/180525.html
11/51
メッセージダイジェストの利用 (4)
httpsでも使用されています。
Firefox
では、httpsでの通信 を行っているサイトで、1.
上の青い部分を押す。2.
詳細を表示を押す。3.
証明書を表示を押す ことで確認できます。12/51
メッセージダイジェストの利用 (5)
UNIXのパスワード認証は、実際にはパスワードは
保存されていません。
保存されているのは、パスワードのハッシュ値を保 存しています。
パスワードを入力すると、1.
入力されたパスワードのハッシュ値を計算。2.
保存してあるハッシュ値と一致するか検証。3.
一致していたら認証を通過。となります。
ようするに、ハッシュ値が同じになるパスワードなら、パスワードが異なっていても、認証を通ります。
13/51
広く使われている メッセージダイジェスト
メッセージダイジェストの代表的なものとして、MD5やSHA等があります。
メッセージダイジェストは、いろいろなところで使用さ れています。 OpenOffice.org
のような、ファイルのダウンロード の検証のため。 WindowsやUNIXにおけるパスワード認証。
https
等の暗号化プロトコル。
メールの暗号化プロトコルであるPGP
。
メールの認証プロトコルであるapop
。14/51
メッセージダイジェストの利用 (6)
ニュースにも(それらしきものが)登場します。15/51
強衝突耐性と弱衝突耐性
弱衝突耐性: x
が与えられたとき、f(x) = f(y)
なるy (
ただしy
≠x)
を発見することは難しい。
強衝突耐性: f(x) = f(y)
なるx
とy (
ただしx
≠y)
を発見すること は難しい。 MD5は強衝突耐性は無いことが知られている。
16/51
認証
17/51
復習:公開鍵暗号の鍵 (1)
暗号化と復号では、異なる鍵を使用する。公開鍵で暗号化し、秘密鍵で復号する。
秘密鍵は第三者に渡してはいけない。
処理が重いため、基本的に小さい平文を暗号化する。公 秘
平文 暗号文 暗号文 平文
18/51
公開鍵暗号の鍵 (2)
提案されている実現方法は、秘密鍵で暗号化し、公 開鍵で復号できる公開鍵暗号方式が多い。
この性質は、「認証」を実現する際に利用されている。
前回のRSA暗号も、この性質を備えている。秘 公
平文 暗号文 暗号文 平文
19/51
直感的なイメージ (1)
Hello World
Hello World Hello
World 送信
Bob
Alice
Hello World
送信
このファイル、本当に
Alice
か ら送られてきたのかなぁ...20/51
公開鍵暗号方式と認証
「Aliceの公開鍵」で復号できる暗号文なら、その暗号 文は「Aliceの秘密鍵」で作成したに違いない。
「Alice
の秘密鍵」で暗号化できるのは、秘密鍵を持っている
Alice
だけ。「Aliceの公開鍵」で復号できるものは、
Aliceのファイルに違いない!
21/51 hogehoge
Alice
Bob
②
送信あsdふぁsd Jlkjぇwkf
③
暗号文を「Alice
の公開鍵」で 復号hogehoge
あsdふぁsd Jlkjぇwkf
①
平文を「Aliceの秘密鍵」で 暗号化
直感的なイメージ(2)
Aliceの公開鍵で復号できた!
暗号文を作れるのは
Alice
だ けだから、このファイルはAliceのだ!
公
秘
22/51 公
hogehoge
Mallory
Bob
②
送信Asdfasdfasdf adfasdf
③
暗号文を「Alice
の公開鍵」で 復号sdlakfjl Hoaslkjlsalf;j;
Asdfasdfasdf adfasdf
①
平文を「Malloryの秘密鍵」で 暗号化
直感的なイメージ(3)
Aliceの公開鍵で復号に失敗!
このファイルは、
Alice
のもので はない!?Aliceを語って
送信だ!秘
23/51
復習: RSA 暗号の鍵
秘密鍵
素数p
素数q
(p 1)(q 1)
と素かつ(p 1)(q 1)
より小さい、適当な正の整数
e
公開鍵 n=p q
ed mod (p 1)(q 1)= 1
となるようなd
24/51
復習: RSA 暗号の暗号化と復号
平文
を暗号化して暗号文C
を作成する場合。 C=M
dmod n
ここで d
とn
は公開鍵であることに注意。
暗号文C
を復号する場合。 M=C
emod n
ここで e
は秘密鍵、nは公開鍵であることに注意。
公開鍵n
が因数分解できてp
とq
がわかると、p,q,d
から秘密鍵e
もばれてしまう!25/51
復習: RSA 暗号の理屈
C
emod n
は本当に元の平文M
に戻るのか?n C
emod
M
オイラーの定理よりp
とq
が素数ならばn M
(p1)(q1)1mod
edの決め方から
n M
edmod
数式を展開
n n
M
dmod )
emod
(
C
の作り方より26/51
認証の暗号化と復号
平文
を暗号化して暗号文C
を作成する場合。 C=M
emod n
ここでe
は秘密鍵、n
は公開鍵であることに注意。
暗号文Cを復号する場合。 M=C
dmod n
ここで d
とn
は公開鍵であることに注意。27/51
今回の場合
C
dmod n は本当に元の平文Mに戻るのか?
n C
dmod
M M
(p1)(q1)1mod n
ここから先は元と一緒n M
edmod
数式を展開
n n
M
emod )
dmod
(
C
の作り方より28/51
なりすましの防止と 電子署名
29/51
認証と秘密鍵
なりすましを防止するには、どうすればよいか?
→ ようするに、相手が本当に本人か確認したい!
認証・署名
実世界では、印鑑やサイン、パスワードで本人確認。
本人確認は、「本人しか持っていない情報を持ってい るか」で確認する。
秘密鍵は「本人しか持っていない情報」
30/51
なりすまし防止の アイディア (1)
公
Bob
AliceからBobにファイルを送るので、
BobはAliceからのファイルかを
検証したいAliceの
Alice
秘
平文
31/51
なりすまし防止の アイディア (2)
送信
公 Aliceの Aliceの
Bob
Alice
① Aliceの公開鍵を
事前に渡しておく 秘
平文
公 Aliceの
32/51
なりすまし防止の アイディア (3)
秘
平文
フィンガー プリント
公 Aliceの Aliceの
Bob
Alice
② ハッシュ値 を計算
① 公開鍵を 事前に渡しておく
33/51
なりすまし防止の アイディア(4)
秘
平文
フィンガー プリント
公 Aliceの Aliceの
Bob
Alice
② ハッシュ値 を計算
フィンガー プリント 公暗
③ 秘密鍵で 暗号化
① 公開鍵を
事前に渡しておく 34/51
なりすまし防止の アイディア(5)
秘
平文
フィンガー プリント
Aliceの Aliceの
Bob
Alice
② ハッシュ値 を計算
フィンガー プリント 公暗
③ 秘密鍵で 暗号化
① 公開鍵を 事前に渡しておく
送信
送信
平文
フィンガー プリント
公 公暗
④ 送信
④ 送信
35/51
なりすまし防止の アイディア (6)
秘
平文
フィンガー プリント
Aliceの Aliceの
Bob
Alice
② ハッシュ値 を計算
フィンガー プリント 公暗
③ 秘密鍵で 暗号化
① 公開鍵を 事前に渡しておく
送信
送信
平文
フィンガー プリント
公 公暗
④ 送信
④ 送信
フィンガー
プリント ⑤ 復号する Aliceからの
メールか 検証しよう……
36/51
なりすまし防止の アイディア (7)
秘
平文
フィンガー プリント
Aliceの Aliceの
Bob
Alice
② ハッシュ値 を計算
フィンガー プリント 公暗
③ 秘密鍵で 暗号化
① 公開鍵を 事前に渡しておく
送信
送信
平文
フィンガー プリント
公 公暗
④ 送信
④ 送信
フィンガー
プリント ⑤ 復号する フィンガー
プリント
⑥ ハッシュ値を計算 Aliceからの
メールか 検証しよう……
37/51
なりすまし防止の アイディア (8)
秘
平文
フィンガー プリント
Aliceの Aliceの
Bob
Alice
② ハッシュ値 を計算
フィンガー プリント 公暗
③ 秘密鍵で 暗号化
① 公開鍵を 事前に渡しておく
送信
送信
平文
フィンガー プリント
公 公暗
④ 送信
④ 送信
フィンガー
プリント ⑤ 復号する フィンガー
プリント
⑥ ハッシュ値を計算
⑦ 比較して同じなら
Aliceからの
メールだ!Aliceからの メールか 検証しよう……
38/51 フィンガー
プリント フィンガー プリント
なりすまされた場合 (1)
平文
暗
公 Eveの
Bob
Aliceからの メールか 検証しよう……
なりすまし
Eve
パス+フレーズ
① 公開鍵を 事前に渡しておく
EveがAliceの名前を騙って、
Bob
にファイルを送る。BobはAliceのファイルか検証したい
39/51 フィンガー
プリント
フィンガー プリント フィンガー
プリント フィンガー プリント
なりすまされた場合(2)
平文
暗
送信
送信
平文
異なる 何か
暗 公
Aliceの Eveの
Bob
Aliceからの メールか 検証しよう……
Aliceの公開鍵で
元に戻せない!。Aliceからの
メールじゃない!なりすまし
Eve
40/51 フィンガー
プリント
フィンガー プリント フィンガー
プリント フィンガー プリント
なりすまされた場合(3)
平文
暗
送信
送信
平文
異なる 何か
暗 公
Aliceの Eveの
Bob
Aliceからの メールか 検証しよう……
Alice
の公開鍵で 元に戻せない!。Aliceからの
メールじゃない!なりすまし
Eve
Eveは Alice
の秘密鍵を知らないので、
Aliceの公開鍵で
復号できる 暗号化済み指紋を作れない。
41/51 フィンガー
プリント フィンガー プリント
改竄された場合 (1)
平文
暗
送信
送信
公 Aliceの
Bob
Aliceからの メールか 検証しよう……
送信中に、
データが変わって しまった!
秘 Aliceの
Alice
42/51異なる フィンガー
プリント
フィンガー プリント フィンガー
プリント フィンガー プリント
改竄された場合 (2)
平文
暗
送信
送信
異なる 平文
フィンガー プリント
暗 公
Aliceの
Bob
Aliceからの メールか 検証しよう……
Aliceの公開鍵で
元に戻せない!。正常に通信できて ない!
秘 Aliceの
Alice
43/51 異なる
フィンガー プリント
フィンガー プリント フィンガー
プリント フィンガー プリント
改竄された場合 (3)
平文
暗
送信
送信
平文
フィンガー プリント
暗 公
Aliceの
Bob
Aliceからの メールか 検証しよう……
Aliceの公開鍵で
元に戻せない!。正常に通信でき ていない!
秘 Aliceの
Alice
指紋の値が異なるので、
正常に通信できていないことが わかる。
44/51
なりすまし防止の手順
以下のような流れで行われる。1. Aliceは平文のフィンガープリントを作成する。
2. AliceはAliceの公開鍵暗号の秘密鍵とパスフレーズ
でフィンガープリントを暗号化3. Aliceは、平文と3で生成したものを、Bobにメール 4. Bobは、Aliceの公開鍵暗号の公開鍵でAliceから送
られた『暗号化されたフィンガープリント』を復号する。
5. Bobは、『Aliceから送られてきた平文
』から作ったフィ ンガープリントと、4のフィンガープリントを比較する。45/51
何が守れているのか
盗聴について:
対処されていない。
なりすましについて:
対処されている。
ただし、改竄と区別は付かない。
改竄について:
対処されている。
ただし、なりすましと区別は付かない。
さらに暗号技術等と組み合わせる必要がある
46/51
次のステップ
暗号技術で盗聴に、認証技術でなりすましや改竄を 防止することができる。
説明のあちこちにある「公開鍵を事前に渡しておく」
の具体的な方法が、今のところノータッチ。
偽物の公開鍵を掴まされたりしないか?
直に会えば確実だけど、相手が地球の裏側に居 たりするなら、どうするの?暗号技術と認証技術を組み合わせれば、
これらすべてに対処できる(はず)!
47/51
演習:一方向関数とハッシュ値
48/51
Windows 10 でのハッシュ値 (1)
Windows では、certutil
というコマンドでハッシュ値を 求めることができます。1.
コマンドプロンプトを起動します。(検索で
cmd
を検索して、実行する)2. certutil
のヘルプを表示します。上記の
%>はプロンプトです。手で入力する必要は
ないです。恐らく、デフォルトではドライブ名と> が出 ていると思います。
%/> certutil –?
%/> certutil –?
49/51
Windows 10 でのハッシュ値 (2)
3.
ハッシュ値を求めるには、次のようにします。md5, sha1, sha256 というのは、ハッシュ関数の名
前です。%/> certutil –hashfile ファイル名 md5
%/> certutil –hashfile ファイル名 md5
%/> certutil –hashfile ファイル名 sha1
%/> certutil –hashfile ファイル名 sha1
%/> certutil –hashfile ファイル名 sha256
%/> certutil –hashfile ファイル名 sha256
50/51
Linux でのハッシュ値
1.
ハッシュ値を求めるには、次のようにします。md5, sha1, sha256 というのは、ハッシュ関数の名
前です。%/> md5sum ファイル名
%/> md5sum ファイル名
%/> sha1sum ファイル名
%/> sha1sum ファイル名
%/> sha256sum ファイル名
%/> sha256sum ファイル名
51/51
Mac でのハッシュ値
1.
ハッシュ値を求めるには、次のようにします。md5, sha1, sha256 というのは、ハッシュ関数の名
前です。%/> md5 ファイル名
%/> md5 ファイル名
%/> shasum -a 1 ファイル名
%/> shasum -a 1 ファイル名
%/> shasum -a 256 ファイル名
%/> shasum -a 256 ファイル名
52/51
課題でやること(1)
1.
教材のpdfファイルのいくつかに対して、各種ハッシュ 値を求めてください。 各結果をテキストファイルもしくはWordファイルにま とめ、経情グループウェアから提出しなさい。
53/51
課題でやること (2)
以下をレポートにまとめて提出。
Amazon等で、曰く「セキュアなログイン」等を利用し
ているとき、“自分が、なぜ安全だと思って通信して
いるのか”を書く。
調べ物の課題ではなく、“
今までの自分がどう 思っていたか”を書く。 ファイル名は学籍番号の末尾にhをつけたものとする。
グループ名は『R3_情報セキュリティ』です。