2008情報科学概論

情報科学概論
公開鍵暗号の話:
RSA暗号の仕組み
Lecture 11
田中美栄子
公開鍵とは?
• 暗号とは、使用者自身が知っていて、他人に
は知られないもの (暗証番号など)
• 「銀行対ユーザ」ならば秘密にしておける
• 情報通信の場合、相手ごとに暗証番号を作っ
ていては手間がかかり大変
• そこで一人一人が自分用の公開鍵と秘密鍵
のセットを持ち、秘密鍵は秘匿するが、公開
鍵は公開する、というのが公開鍵暗号方式
インターネットでやりとりするデータは容易に
『盗み見』したり、『改ざん』できる。
防ぐことは困難なので
暗号化して送りましょう。
2015/10/1
まず、予備知識から・・・
平文・・・・・暗号化する前のそのままの文章
復号化・・・暗号化した文章をもとにもどすこと
鍵・・・・・・・平文を暗号化したり、復号化したり
できるもの。
(秘密鍵は共通鍵とも呼ばれてる)
2015/10/1
その1
共通鍵暗号方式
2015/10/1
共通鍵暗号方式ver.
送信者
受信者
②暗号化
①平文
暗号文
秘
③復号化
送信
④平文
暗号文
秘
欠点: 秘密鍵を共有する手間がかかる
2015/10/1
その2
公開鍵暗号方式
2015/10/1
まず、予備知識から・・・
公開鍵・・・・・ネット上に公開している鍵
暗号は作れるが復号はできない。
2015/10/1
公開鍵暗号方式ver.
①公開鍵を送る
送信者
受信者
公
送信
平文
暗号文
②公開鍵で暗号化
暗号文
秘
平文
③秘密鍵で復号化
欠点: 受信者が、本人かどうかの確証が取れない
2015/10/1
その3
デジタル証明書
2015/10/1
デジタル証明書
• なりすましを防ぐ方法として有効。
• 公開鍵といっしょに、認証局(CA)が発行した
デジタル証明書を送信し、本物を証明
• SSLによる通信中にブラウザのアイコンを
クリックして表示することができる。
2015/10/1
その4
セッション鍵暗号方式
(SSL)
2015/10/1
SSL(セッション鍵暗号方式)
• いままでのスキルを組み合わせた形
• 次の点を確認することで判断
– URLの先頭が「https://」になっている
2015/10/1
送信者(Webブラウザ)
受信者(Webサーバー)
①暗号通信要求
③自身の共通鍵
(秘密鍵)を生成
共
④自身の
共通鍵を
公開鍵で
暗号化
②公開鍵を送信
⑤暗号化した
共通鍵を送信
公
デジタル
証明書
⑥秘密鍵で
復号
秘
⑦共通鍵を
使ってやりとり
2015/10/1
その5
デジタル署名
2015/10/1
デジタル署名
• 送信者が正しい
• 伝送経路上でデータが改ざんされていない
– 上記の2点を
確認できる
まず、予備知識から・・・
ハッシュ化・・・・・誰にも読めない形にすること。
もう元には戻せない。
ハッシュ値・・・・・ハッシュ化されたもの。
メッセージダイジェスト・・・・・ハッシュ値の別名
2015/10/1
デジタル署名ver.
④公開鍵を送る
送信者
受信者
公
ハッシュ化
平文
平文
ハッシュ化
送信
⑥比較
①ハッシュ値
秘 ②暗号化
③デジタル
署名
2015/10/1
メッセージ
ダイジェスト
⑤復号化
デジタル署名
メッセージ
ダイジェスト
RSA方式のイメージ)
公
e
C=X mod N
実際は公開鍵や秘密鍵は
ただの数字であり,
数式処理だけで暗号化,
複合化を行っている
秘
d
C mod L = X
(ed + ml)mod N = 1
RSA暗号方式の仕組み
• Rivest,Shamir, Adelman 3名が1978年に発表
• ユーザ(i)は公開鍵(e,ni)と秘密鍵diを持つ。これら
はユーザごとに異なる。
• ユーザ(i)に暗号文を送りたい人はiの(e, ni)を用い
て暗号化する
• 受け取ったユーザ(i)は自分の秘密鍵diで解読する。
この鍵diが他の人に知られない限り秘密は保たれる。
(e,ni)とdiは数学的に関連しているが、 (e,ni)からdi
を算出するには計算量が多すぎて短時間では不可
能である。
RSA暗号の弱み
• 公開鍵niは大きな2素数pとqの積として作り、
同時にpとqから秘密鍵diを作って使用する
• 公開された鍵(e,ni)を因数分解できる人がい
れば、原理的にdiを算出できるが、因数分解
に時間がかかるため安全性が保たれる
• 非常に高速なコンピュータを用いて因数分解
するか、因数分解の高速なアルゴリズムがわ
かればこの暗号は破られる(WAR GAMEと
いう映画では因数分解で暗号解読を試みる)
RSA方式の使い方
• 送りたい信号を2進表現したものをXとする
• 暗号化した信号Cは C=Xe mod n で作成
• 復号化は X=Cd mod n でできる
(mod nとはnを法とした表現、つまりnで割った
剰余のこと)
例:仮にn=35として(そんなに小さい訳ないが)
信号X=2を送るとする。もしe=11ならば送る
べき信号Cは C=211 mod 35 =18 となる
RSA暗号の仕組み
正の整数e,d,nは次の関係を持つようにする
1) まずn=pq となる2素数pとqからp-1とq-1を
作りこれらの最小公倍数をLとする。
2) そしてeは Max{p,q}<e<Lで、eとLは互い
に素な整数にする。
3)正の整数dを適当なyを用いてed+Ly=1とな
るよう選ぶ.
例:n=35ならL=12だから、eは7より大きく12よ
り小さくLとは互いに素な、e=11が適合する
秘密鍵dを持っているのは本人だけ
• 公開鍵(e,n)を公開しておいても,秘密鍵dを
知らない人には解読できない
• 本人はdを持っているから解読できる
• しかしnを因数分解できる人がいればLを算出
し、ed+Ly=1からdを算出できてしまう
• 例の場合n=35でL=12とわかればd=11がす
ぐわかる
• C=18を解読するにはこれのd乗(mod 35)を
計算するだけで良い
暗号解読の例
• 1811 (mod 35)が本当にX=2に戻るのか試してみよう
• 1811 (mod 35) = 181+2+8 (mod 35) = 18*182 (mod 35)
*188 (mod 35)と3つに分解し、 182 (mod 35)=324 (mod
35)=9なので 8乗の項以外は
18*9(mod35)=162(mod35)=22 となる
•
そして8乗するには2乗したものを更に2乗し、それを更に2
乗すればよいことに気がつくと、 188 (mod 35)はまず2乗し
てmod35をとると9になるのでこれを更に2乗してmod35をと
ると81(mod35)で11となり、これを更に2乗してmod35をとる
ことにより16となる
• 両方併せて22*16(mod35)=352(mod35)=2となり、X=2
が得られる