Más contenido relacionado La actualidad más candente (20) Más de MITSUNARI Shigeo (20) 新しい暗号技術2. 自己紹介
大学時代
京都大学数理解析研究所では代数幾何
コンピュータとは縁のない世界
暗号にも興味を持つ
mp3エンコーダ「午後のこ~だ」の開発(LGPL2)
就職後
IPAからの依頼で暗号解読プログラムの作成(2004年)
『機械学習の学習』(CCA-BY3)
2012年ジュンク堂のコンピュータ書籍売り上げ3位
http://compbook.g.hatena.ne.jp/compbook/20130110
暗号の高速な実装(2013/8の時点で世界最速)
The Realm of the Pairings(SAC2013)
http://sac2013.irmacs.sfu.ca/sched.html
2013/11
2 /58
3. 目次
暗号
mod pの世界
巾乗の計算
離散対数問題
ElGamal暗号
Diffie-Hellman鍵共有
楕円曲線
楕円曲線上のDLP
新しい暗号
ペアリング
IDベース暗号
短い署名
秘密の検索
2013/11
3 /58
5. 古代の方法
アルファベットを一文字後にずらす
Hello => Ifmmp
一文字前にずらす : IBM => HAL
"n文字ずらす"のnが秘密鍵
これは容易に破られてしまう
変換テーブルを作る
a
b
c
d
e
f
...
X
k
g
3
5
4
...
1対1である必要がある
これも統計情報を使うと容易に破られる
たとえば英語なら
一番多いアルファベットはe。qの後は大抵uなど
2013/11
5 /58
6. 共通鍵暗号
秘密鍵暗号とも言われる
暗号化に必要な鍵と復号に必要な鍵が同じ暗号
暗号化されたあとの情報をできるだけランダムにする
AES, MISTY(三菱), Camellia(NTT)など
暗号強度
秘密鍵の長さが128bit
鍵の種類が 2128 = 3.4 ∗ 1038個
1秒間に1京(=1016 )回チェックしても全部調べるのに1000兆年
全数探索しなくてもよい方法が日々研究されている
弱点が見つかると「弱くなった」「破られた」と言われる
2013/11
6 /58
9. 余りの世界
足し算と引き算
(a mod p) ± (b mod p) = (a ± b) mod p
余りを足したものは足したものの余り
掛け算も同様
余りを掛けたものは掛けたものの余り
巾乗も大きくなる前に余りをとることができる
例
210 = 1024 = 10(mod 13)
29 = 5だから210 = 5 ∗ 2 = 10(mod 13)
𝑎
2
3
4
5
6
7
8
9
10
11
12
2 𝑎 mod 13
2013/11
1
2
4
8
3
6
12
11
9
5
10
7
1
9 /58
11. これで秘密に共有できるのか
𝑎が秘密でK 𝐴 = 𝑔 𝑎 mod 𝑝が公開
K 𝐴 から𝑎が求められるのではないか?
数学的にはもちろんyes
𝑔 𝑎 mod 𝑝が与えられたときに𝑎を具体的に求めよ
離散対数問題(DLP:Discrete Logarithm Problem)という
𝑝が十分大きい素数のときDLPは難しい
と信じられている
今のところ解いたという人はいない
10進数300桁以上のとき計算機で現実時間内に求められない
大きくてもDLPが易しい𝑝は存在するのでそれは除外する
2013/11
11 /58
12. Diffie-Hellman問題
素朴な疑問
𝑔, 𝑔 𝑎 , 𝑔 𝑏 が与えられたときに𝑎, 𝑏を求められなくても𝑔 𝑎𝑏 が求め
られたりしないのか
Diffie-Hellman(DH)問題と言われる
この問題もDLPと同じぐらい難しいと思われている
DLPが解ければDH問題も解けるが、逆が真かは未解決
なので、今のところDiffie-Hellman鍵共有は安全
2013/11
12 /58
13. DH鍵共有の注意点
秘密に鍵共有はできるが途中経路での改竄には弱い
A, Bが本人であるかの認証機構が別途必要
A
𝐾𝐴
B
𝐾𝐴
𝐾𝐵
𝐾𝐵
正常時
A
𝑎
𝐾𝐴
𝑔𝑑
B
𝑏
悪者
𝐾 𝐴 でなく𝑔 𝑐 を渡す
𝐾 𝐵 でなく𝑔 𝑑 を渡す
Aの秘密鍵=𝑔 𝑑𝑎
𝑔𝑐
𝐾𝐵
Bの秘密鍵=𝑔 𝑏𝑐
𝑔 𝑑𝑎 で暗号化されたものを復号
して𝑔 𝑏𝑐 で再暗号化して渡す
2013/11
13 /58
15. うまい方法がある
2100 mod 1000000はいくつ?
2100 = ( 225 2 )2
225 = 2 ∗ 224 = 2 ∗ 23
8
= 2 ∗ (( 23 2 )2 )2
23 = 8
23 2 = 64
( 23 2 )2 = 4096
(( 23 2 )2 )2 =777216
225 = 554432
250 = 842624
2100 = 205376
9回の掛け算で計算できた
2013/11
15 /58
16. バイナリメソッド
gの2乗を繰り返したものを作る
𝑔, 𝑔2 , 𝑔4 , 𝑔8 , 𝑔16 , …
これは1024回すればよい
繰り返しの数(𝑛)
𝑔2
𝑛
0
2
3
4
...
1024
𝑔
𝑔2
𝑔4
𝑔8
...
𝑔2
1024
aを2進数展開してビットが立ってところを掛けていく
i番目のビット
1
2
3
4
...
1024
a=0b1...1011
∗ 𝑔
∗ 𝑔2
スキップ
∗ 𝑔8
...
𝑔2
1024
計算回数
高々(log 2 𝑎) ∗ 2 回の掛け算で𝑔 𝑎 を計算できる
十分高速に計算可能
2013/11
16 /58
18. 余りの世界再び
割り算はどうする
足し算、引き算、掛け算はよかった
2 * 7 = 14 = 1(mod 13)
2に7を掛けたら1になった。ということは7は2の逆数?
1/2 = 7(mod 13)と定義しよう
x
1
2
3
4
5
6
7
8
9
10
11
12
𝑥 −1
1
7
9
10
8
11
2
5
3
4
6
12
逆数がないときもある
p = 12のとき 2 * 6 = 0 mod 12
二つの数を掛けたら0になってしまった
pが素数なら0以外の数には必ず逆数がある
この世界を以後有限体𝐹 𝑝 と呼ぶ
2013/11
18 /58
19. ElGamal暗号(1984年)
gとpを固定し皆に公開する
xをランダムに選び𝑦 = 𝑔 𝑥 mod 𝑝とする
xが秘密鍵でyが公開鍵
mの暗号化
𝑟を乱数として𝐸𝑛𝑐 𝑚 = 𝑐1 , 𝑐2 = (𝑔 𝑟 , 𝑚 𝑦 𝑟 )
復号
x
𝐷𝑒𝑐 𝑐1 , 𝑐2 = 𝑐2 /𝑐1 = 𝑚𝑦 𝑟 /𝑔 𝑟𝑥 = 𝑚
𝑟が入っているので同じ𝑚を暗号化しても毎回異なる値になる
前回と同じものを暗号化したのかもわからない
これはDLPが難しいという仮定の元で安全
巾乗は簡単にできるけど逆が難しいという一方向性を使う
2013/11
19 /58
20. ElGamal暗号の弱点
復号はできないけれども値の変更は可能
中間者は𝐸𝑛𝑐 𝑚 = 𝑐1 , 𝑐2 を取得し 𝑐1 , 2𝑐2 を渡す
受信者が復号するとDec 𝑐1 , 2𝑐2 = 2𝑚となる
もし𝑚が商品の値段だったら2倍になってしまう!
𝐸𝑛𝑐(1000)
悪者
復号はできないが
′ ′
𝑐1 , 𝑐2 = (𝑐1 , 10𝑐2 )にする
′ ′
𝐷𝑒𝑐 𝑐1 , 𝑐2
= 10000
改竄されていないかのチェック機構が必要
Cramer-Shoup暗号(1998年)
ElGamal暗号にハッシュ関数を組み合わせたもの
2013/11
20 /58
21. 2次元の世界へ
𝐹 𝑝 の世界は1次元的
p進むと元に戻るのは円周上を
うろうろしていることに相当
−𝑝
0
𝑝
2𝑝
𝑝=0
2次元にすると球面?
実はうまくいかない
2次元球面にはきれいな足し算の構造を入れられない
2013/11
21 /58
25. トーラス(浮輪の表面)
地図の上の足し算
𝑃 + 𝑄を
周りこませる
𝑒2
𝑃+ 𝑄
𝑄
𝑃+ 𝑄
地図からはみ出た
𝑃
𝑒1
トーラス𝐸上の点𝑃は𝑃 = 𝑎𝑒1 + 𝑏𝑒2 とかける
(𝑒1 , 𝑒2 )は基底ベクトル, 𝑎, 𝑏は整数
𝑎, 𝑏はそれぞれ有限体の世界で考える
二つの点𝑃, 𝑄の和𝑃 + 𝑄は矢印をつないだもの(ベクトルの和)
ただし端まで行ったら反対から出てくる
浮輪の上をぐるぐる回る
2013/11
25 /58
26. 足し算ができるなら
ある点𝑃の𝑛倍も考えられる
𝑛𝑃 = 𝑃 + 𝑃 + … + 𝑃(𝑛回足す)
𝑛倍の計算は𝐹 𝑝 の巾乗の計算と同様に効率よく求められる
𝑛𝑃と𝑃が与えらえたときに𝑛は求められるのだろうか
No!
正確には𝑛が大きいととても難しい
例外的に簡単に求められる楕円曲線の形もある
2013/11
26 /58
32. 公開鍵、PKIへの攻撃
認証局(Comodo, DigiNotar)への攻撃(2011年)
偽の証明書を発行してしまう
DIgiNotarは破綻
本物と区別つかないので盗聴など可能になってしまう
ブラウザ側で特別な対応
弱い公開鍵
失効できない弱い(512bit RSA)鍵を発行
1999年に512bit RSAが解読されている
Microsoft Updateへのなりすまし(2012年)
Flameというマルウェア
2004, 2007年に攻撃されたMD5の脆弱性を利用?
2013/11
32 /58
35. ペアリング(1/2)
𝐸上の二つの点に対して対応する"面積"を与える関数
𝑃 = 𝑎𝑒1 + 𝑏𝑒2 , 𝑄 = 𝑐𝑒1 + 𝑑𝑒2 に対し
𝑒 𝑃, 𝑄 = 𝑔 𝑎𝑑−𝑏𝑐
𝑄 = (𝑐, 𝑑)
𝑒2
𝑒1
この平行四辺形の面積
(符号つき)
𝑃 = (𝑎, 𝑏)
ここで𝑔 = 𝑒(𝑒1 , 𝑒2 )は有限体上のある特別な値
双線形性(面積はそれぞれの辺の長さに比例する)
𝑒 𝑃1 + 𝑃2 , 𝑄 = 𝑒 𝑃1 , 𝑄 𝑒 𝑃2 , 𝑄
𝑒 𝑃, 𝑄1 + 𝑄2 = 𝑒 𝑃, 𝑄1 𝑒 𝑃, 𝑄2
2013/11
35 /58
36. ペアリング(2/2)
何を手に入れたのか
𝑒 𝑎𝑃, 𝑏𝑄 = 𝑔 𝑎𝑏
𝑎𝑃や𝑏𝑄は楕円曲線上の点なのでDH問題の困難さから
𝑎𝑏𝑃や𝑎𝑏𝑄みたいなものは求められない
しかしペアリングにより有限体上でならそれと似た働
きをする𝑔 𝑎𝑏 を計算できている!
一度だけならDH問題を解ける手段を手に入れた
ペアリングを双線形写像ともいう
2013/11
36 /58
38. ペアリングによるIDベース暗号
鍵共有方法(1999年~)
鍵生成
各ユーザに対してメールアドレスを数値化する
ASCIIコードなどを使って適切に約束を決める
生成局はアドレスから楕円曲線上の点へのハッシュ関数と整
数𝑠を一つ決める
ID 𝑢に対して𝐾 𝑢 = 𝑠𝐻 𝑢 を計算しユーザに渡す(秘密鍵)
AとBの秘密の通信
AはBのメールアドレス𝑢 𝐵 と自身の𝐾 𝐴 を使って
𝑠 𝐴 = 𝑒 𝐾 𝐴 , 𝐻 𝑢 𝐵 を計算する。
BはAのメールアドレス𝑢 𝐴 と自身の𝐾 𝐵 を使って
𝑠 𝐵 = 𝑒 𝐻 𝑢 𝐴 , 𝐾 𝐵 を計算する。
𝑠𝐴 = 𝑒 𝐻 𝑢𝐴 , 𝐻 𝑢 𝐵
2013/11
𝑠
= 𝑠 𝐵 なので秘密の鍵を共有できる
38 /58
42. 電子署名
ある文章を私が書いたものであることを保証する
ペアリングを使うとHash関数なしの短い署名を構成できる
鍵生成
点𝑃, 𝑄と乱数𝑥, 𝑦を決めて𝑅 = 𝑥𝑄, 𝑆 = 𝑦𝑄, 𝑔 = 𝑒(𝑃, 𝑄)とする
𝑄, 𝑅, 𝑆, 𝑔 が公開鍵 𝑃, 𝑥, 𝑦 が秘密鍵
文章𝑚に対する署名
𝑟をランダムに選び𝑠 =
1
𝑥+𝑚+𝑦𝑟
𝑃として 𝑠, 𝑟 を署名とする
検証
𝑠, 𝑟 に対して
𝑒 𝑠, 𝑅 + 𝑚𝑄 + 𝑟𝑆 = 𝑒 𝑠, 𝑥 + 𝑚 + 𝑦𝑟 𝑄 = 𝑔を確認する
2013/11
42 /58
44. 比較してみる
(A)ができるなら(B)は解ける
∵𝑃, 𝑎𝑃が与えらえたとする。𝑃, 𝑎𝑃, 𝑎𝑃として(A)を使うと
𝑎𝑎𝑃 = 𝑎2 𝑃が求める。
(B)ができるなら(A)は解ける
∵𝑃, 𝑎𝑃, 𝑏𝑃が与えらえたとする。
𝑎𝑃 + 𝑏𝑃 = 𝑎 + 𝑏 𝑃を求める。(B)を使うと
𝑎2 𝑃, 𝑏 2 𝑃, 𝑎 + 𝑏 2 𝑃が求まる。
𝑎 + 𝑏 2 𝑃 − 𝑎2 𝑃 − 𝑏 2 𝑃 = 2𝑎𝑏𝑃。よって𝑎𝑏𝑃が求まる。
というわけで(A)の難しさと(B)の難しさは同程度。
𝑃, 𝑎𝑃 の組を 𝑎𝑃, 𝑎−1 𝑎𝑃 と(B)=(C)もわかる。
つまり全て同じ難しさ
2013/11
44 /58
45. 電子署名の安全性
DLPのイメージ
𝑃, 𝑎𝑃の線形和からその外に出られない
ならば「𝑃, 𝑎𝑃, 𝑎2 𝑃から1 𝑎 𝑃」はもとめられない?
「𝑃, 𝑎𝑃, 𝑎2 𝑃, 𝑎3 𝑃から1 𝑎 𝑃」も多分無理?
「𝑃, 𝑎𝑃, 𝑎2 𝑃, 𝑎3 𝑃, …が与えられたときに
1
ある𝑐 ≠ 0に対して
𝑃を求める問題」
𝑎+𝑐
が難しいということを安全性の根拠にしている
2013/11
45 /58
47. 他には
放送用暗号
ユーザにはそれぞれ別々の秘密鍵を配布したい
同じ鍵だと他人にコピーされてしまう
たとえばクレジットカード番号を鍵に埋めてしまうと抑制力が働く
コンテンツは一つの鍵で暗号化したい
巨大なデータをユーザごとに暗号化するには帯域が足りない
属性ベース暗号
IDベース暗号の拡張
社内秘の文章を読めるのは、部長以上の人、あるいは、特別開発
部の社員の一部だけ
○○という属性を持つ人だけが復号可能な暗号システム
関数型暗号
http://www.mitsubishielectric.co.jp/corporate/randd/spotlight/spotlight15.html
などなどなど
2013/11
47 /58
49. ジレンマ
研究者(C:クライアント)
自分の研究分野に特化したDBが欲しい
何について研究しているかは教えたくない(企業秘密)
DB販売者(S:サーバ)
自社のDBを使って買ってほしい
"立ち読み"されるのは困る
要求
Cは自分の調べたい化合物をSに知られたくないが、Sの持つ
DBの中にどれぐらい類似物があるか知りたい
SはCに類似物がいくつあるか以外のことは教えたくない
2013/11
49 /58
50. 秘匿検索プロトコル
化合物の類似度
化合物Xを01の数値列として表す
たとえば𝐵 𝑖 基があればi番目が1, なければ0
C6H5-
N=
-OH
...
X
1
0
1
...
Y
0
1
1
...
Tversky指数(の簡単な形)
c(X, Y) = # (X and Y) / #(X or Y)
ここで#(何か)は何かのうち1になるものの個数とする
#(X or Y) = #X + #Y - #(X and Y)
完全一致すると1, 全部違うと0
2013/11
50 /58
51. ElGamal暗号再び
ElGamal暗号の弱点だった
𝐸𝑛𝑐 𝑚 𝐸𝑛𝑐 𝑚′ = 𝐸𝑛𝑐 𝑚𝑚′
暗号化したものの積が元の値の積を暗号化したものに等しい
この性質を乗法性準同型暗号という
ElGamal暗号をちょっとひねる
hをとり𝐸𝑛𝑐 𝑚 = 𝑐1 , 𝑐2 = (𝑔 𝑟 , ℎ 𝑚 𝑦 𝑟 )とすると
′
𝑟 𝑟′
𝑚+𝑚′ 𝑟+𝑟 ′
𝐸𝑛𝑐 𝑚 𝐸𝑛𝑐 𝑚 = 𝑔 𝑔 , ℎ
𝑦
= 𝐸𝑛𝑐(𝑚 + 𝑚′ )
𝑚はあまり大きくないという制約あり
この性質を加法性準同型暗号という
実現方法は他にもいくつか知られている
両方同時に満たす暗号を完全準同型暗号という
2009年に初めて構成される
実用的なものにするため改良研究がさかん
2013/11
51 /58
52. 共通部分を求める
今回は加法性準同型を使えばできる
クライアントは検索したい化合物𝑋 = (𝑥 𝑖 )に対して
𝑐 𝑖 = 𝐸𝑛𝑐(𝑥 𝑖 )を求めてサーバSに送る
Sは各化合物𝑌 = 𝑦 𝑖 について𝑦 𝑖 = 1となる𝑖について
𝐸𝑛𝑐 𝑥 𝑖 を足していく
𝑧=
𝐸𝑛𝑐 𝑥 𝑖 = 𝐸𝑛𝑐(𝑥 𝑖 = 𝑦 𝑖 = 1となる𝑖の個数)
𝑦 𝑖 =1
暗号化されているのでSはXのことは何もわからない
これでandの個数がでる
𝐸𝑛𝑐 𝑥 𝑖 より#𝑋もわかる。=> orの個数もわかる
(注意)実際にはこれに加えてデータの攪乱などの操作をする
2013/11
52 /58
53. 悪意あるクライアントに対する対策
サーバは𝑥 𝑖 = 0 𝑜𝑟 1と信じて𝐸𝑛𝑐(𝑥 𝑖 )を処理する
本当はどういう値かわからない
𝑥 𝑖 に極端に大きい値をいれて𝑦 𝑖 の情報を引き出そうとするかも
サーバは𝑥 𝑖 が0と1のどちらなのか分からない
しかし、それ以外の値を暗号化したものではない
ということは知りたい
2013/11
53 /58
55. 対話的ゼロ知識証明の例
離散対数の答えを知っていることを示す
私Aは「𝑦 = 𝑔 𝑥 mod 𝑝となる𝑥を知っている 𝑔, 𝑝, 𝑦は公開 」
ことを𝑥を教えることなく他人Bに証明したい
次の対話をする
A(証明したい人)
Step1 : 𝑟を選び𝑎 = 𝑔 𝑟
B(検証したい人)
𝑎を受け取る
Step2 : 𝑏 = 0 𝑜𝑟 1
0か1を選び送る
Step3 : 𝑐 = 𝑟 + 𝑏𝑥
𝑐を受け取る
Step4:𝑔 𝑐 と𝑎𝑦 𝑏 が
等しいか確認
2013/11
55 /58
56. AはBをだませるか
Aが実は𝑥を知らない場合
𝑏 = 0が来ると予想していれば
適当に𝑟を作って𝑎 = 𝑔 𝑟 を渡せばOK
しかし𝑏 = 1が来るとStep 3で𝑐 = 𝑟 + 𝑥を渡せない
𝑏 = 1が来ると予想していれば
𝑦 −1
𝑟 ′ を渡し、Step
𝑔
Step 1で適当に𝑟′を作って𝑎 =
3で𝑟 ′ を渡す
しかし𝑏 = 0が来るとStep 3で𝑐(= 𝑟 − 𝑥)を作れない
AがBをだませる確率
𝑥を知らずに当てずっぽうでStep 4をクリアする確率は1/2
このやりとりをN回連続すると
1
2
𝑁 の確率(Nが大きいと無理)
今回の例では非対話ゼロ知識証明を用いる
DLPとHash関数を組み合わせる(詳細は略:2013)
2013/11
56 /58
57. まとめ
共通鍵暗号
暗号化鍵 = 復号鍵
公開鍵暗号
暗号化鍵 ≠ 復号鍵
2000年以降の暗号
ペアリングなどの数学的な道具立てを利用
時代の要請に応じた新しい概念、機能
2013/11
57 /58
58. もっと知りたい人は
楕円曲線暗号入門(伊豆哲也)
http://researchmap.jp/mulzrkzae-42427/
PKIへの攻撃について
サイバー攻撃ツールとしての公開鍵証明書の役割(神田雅透)
http://www.jnsa.org/seminar/pki-day/2012/data/PM01_kanda.pdf
ペアリングに関する最近の研究動向(岡本栄司他)
https://www.jstage.jst.go.jp/article/essfr/1/1/1_1_1_51/_pdf
加法準同型暗号を用いたデータベースの秘匿検索(産総研)
http://www.nstac.go.jp/services/pdf/121116_6-1.pdf
ゼロ知識証明について
知識の証明と暗号技術(有田正剛)
http://www.iisec.ac.jp/proc/vol0001/iisec_proc_001_p033.pdf
2013/11
58 /58