Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

新しい暗号技術

41,331 views

Published on

セキュリティミニキャンプ(高校、大学生向け)での講義資料

Published in: Technology
  • Be the first to comment

新しい暗号技術

  1. 1. 新しい暗号技術 2013/11 セキュリティ(プレ)ミニキャンプ 光成滋生
  2. 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. 3. 目次  暗号  mod pの世界  巾乗の計算  離散対数問題  ElGamal暗号  Diffie-Hellman鍵共有  楕円曲線  楕円曲線上のDLP  新しい暗号  ペアリング IDベース暗号 短い署名  秘密の検索 2013/11 3 /58
  4. 4. 暗号(化)とは  私とあなたとのやりとりを他人が見ても、 その内容を知られないようにするやり方  ここでは特に 文をある方法に従って元がわからないものに置き換える方法 2013/11 4 /58
  5. 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. 6. 共通鍵暗号  秘密鍵暗号とも言われる  暗号化に必要な鍵と復号に必要な鍵が同じ暗号  暗号化されたあとの情報をできるだけランダムにする  AES, MISTY(三菱), Camellia(NTT)など  暗号強度  秘密鍵の長さが128bit 鍵の種類が 2128 = 3.4 ∗ 1038個 1秒間に1京(=1016 )回チェックしても全部調べるのに1000兆年  全数探索しなくてもよい方法が日々研究されている 弱点が見つかると「弱くなった」「破られた」と言われる 2013/11 6 /58
  7. 7. ネットショッピングで使うには  安全な共通鍵暗号があったとする  買い物で使うクレジット番号は暗号化して送りたい  AESで暗号化したとしてその秘密鍵はどうやって送ろうか その秘密鍵をもう一度暗号化? その暗号化に必要な鍵は???  二人の間で安全に秘密の数値を共有する必要がある  どうやって? 2013/11 7 /58
  8. 8. 時計の世界  アナログ時計の時刻は12時間たつと元に戻る  今10時。1時間後は11時。3時間後は1時。  12で割った余りだけを考える(時計は1~12の数値だが)  整数𝑎を整数𝑝で割った余りを𝑎 mod 𝑝と書く。  𝑎 = 𝑞𝑝 + 𝑟, (0 ≤ 𝑟 < 𝑛) となるように調節する 例  (10 + 1) mod 12 = 11  (10 + 3) mod 12 = 1  -19 mod 12 = 5 -19 = (-2) * 12 + 5 2013/11 8 /58
  9. 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
  10. 10. Diffie-Hellman鍵共有(1976年)  AさんとBさんの間で秘密の数字を共有したい  𝑔と𝑛を二人の間で決める(公開情報)  Aさんは数字𝑎を決めてK 𝐴 = 𝑔 𝑎 mod 𝑝 を求めて公開 𝑎は非公開(秘密鍵)  Bさんは数字𝑏を決めてK 𝐵 = 𝑔 𝑏 mod 𝑝を求めて公開 𝑏は非公開(秘密鍵) 𝑎  Aさんは𝑎と𝐾 𝐵 を使って(K 𝐵 ) =  Bさんは𝑏と𝐾 𝐴 から(K 𝐴 ) 𝑏 = 𝑔 𝑎 𝑎 𝐾𝐴 2013/11 𝑔 𝑏 𝑏 𝑎 = 𝑔 𝑎𝑏 を求める = 𝑔 𝑎𝑏 を求める 𝑏 𝐾𝐵 非公開 公開 10 /58
  11. 11. これで秘密に共有できるのか  𝑎が秘密でK 𝐴 = 𝑔 𝑎 mod 𝑝が公開  K 𝐴 から𝑎が求められるのではないか?  数学的にはもちろんyes  𝑔 𝑎 mod 𝑝が与えられたときに𝑎を具体的に求めよ  離散対数問題(DLP:Discrete Logarithm Problem)という  𝑝が十分大きい素数のときDLPは難しい  と信じられている 今のところ解いたという人はいない  10進数300桁以上のとき計算機で現実時間内に求められない  大きくてもDLPが易しい𝑝は存在するのでそれは除外する 2013/11 11 /58
  12. 12. Diffie-Hellman問題  素朴な疑問  𝑔, 𝑔 𝑎 , 𝑔 𝑏 が与えられたときに𝑎, 𝑏を求められなくても𝑔 𝑎𝑏 が求め られたりしないのか Diffie-Hellman(DH)問題と言われる  この問題もDLPと同じぐらい難しいと思われている DLPが解ければDH問題も解けるが、逆が真かは未解決  なので、今のところDiffie-Hellman鍵共有は安全 2013/11 12 /58
  13. 13. DH鍵共有の注意点  秘密に鍵共有はできるが途中経路での改竄には弱い  A, Bが本人であるかの認証機構が別途必要 A 𝐾𝐴 B 𝐾𝐴 𝐾𝐵 𝐾𝐵 正常時 A 𝑎 𝐾𝐴 𝑔𝑑 B 𝑏 悪者 𝐾 𝐴 でなく𝑔 𝑐 を渡す 𝐾 𝐵 でなく𝑔 𝑑 を渡す Aの秘密鍵=𝑔 𝑑𝑎 𝑔𝑐 𝐾𝐵 Bの秘密鍵=𝑔 𝑏𝑐 𝑔 𝑑𝑎 で暗号化されたものを復号 して𝑔 𝑏𝑐 で再暗号化して渡す 2013/11 13 /58
  14. 14. 巾乗の計算  𝑝が10進数300桁ってたとえば 179769313486231590772930519078902473361797697 894230657273430081157732675805500963132708477 322407536021120113879871393357658789768814416 622492847430639474124377767893424865485276302 219601246094119453082952085005768838150682342 462881473913110540827237163350510684586298239 947245938479716304835356329624224137859  素朴な疑問  2 𝑎 mod 𝑝 (aが10進数300桁)とかって計算できるの? 1回の掛け算を1nsec(=10−9 秒)でできたとしても2をa回かけるの は 10−9 ∗ 10300 = 3 ∗ 10283 年! 2013/11 14 /58
  15. 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. 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
  17. 17. 公開鍵暗号  共通鍵暗号は秘密鍵をどうやって渡すかが悩ましい  暗号化する鍵と復号する鍵を分けたらよいのでは?  公開鍵暗号  みなに教える公開鍵𝐾 𝑝𝑢𝑏 と誰にも教えない秘密鍵𝐾 𝑝𝑟𝑣 を使う 𝐾 𝑝𝑢𝑏 から𝐾 𝑝𝑟𝑣 を作れない  暗号化するときは𝐾 𝑝𝑢𝑏 を使う 𝑐 = 𝐸𝑛𝑐(𝑚, 𝐾 𝑝𝑢𝑏 )  復号するときは𝐾 𝑝𝑟𝑣 を使う 𝑚 = 𝐷𝑒𝑐(𝑐, 𝐾 𝑝𝑟𝑣 )  𝐾 𝑝𝑢𝑏 を知ってる人は誰でも暗号化できる  復号は𝐾 𝑝𝑟𝑣 を知ってる人しかできない 2013/11 17 /58
  18. 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. 19. ElGamal暗号(1984年)  gとpを固定し皆に公開する  xをランダムに選び𝑦 = 𝑔 𝑥 mod 𝑝とする  xが秘密鍵でyが公開鍵  mの暗号化  𝑟を乱数として𝐸𝑛𝑐 𝑚 = 𝑐1 , 𝑐2 = (𝑔 𝑟 , 𝑚 𝑦 𝑟 )  復号 x  𝐷𝑒𝑐 𝑐1 , 𝑐2 = 𝑐2 /𝑐1 = 𝑚𝑦 𝑟 /𝑔 𝑟𝑥 = 𝑚  𝑟が入っているので同じ𝑚を暗号化しても毎回異なる値になる 前回と同じものを暗号化したのかもわからない  これはDLPが難しいという仮定の元で安全  巾乗は簡単にできるけど逆が難しいという一方向性を使う 2013/11 19 /58
  20. 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. 21. 2次元の世界へ  𝐹 𝑝 の世界は1次元的  p進むと元に戻るのは円周上を うろうろしていることに相当 −𝑝 0 𝑝 2𝑝 𝑝=0  2次元にすると球面?  実はうまくいかない 2次元球面にはきれいな足し算の構造を入れられない 2013/11 21 /58
  22. 22. ドラクエ3の世界(1/3)  ぱっと見は普通の世界地図だが  右へ進むと左から出てくる  上に進むと下から出てくる  これはどんな形をしている? 2013/11 22 /58
  23. 23. ドラクエ3の世界(2/3)  ぱっと見は普通の世界地図だが  右へ進むと左から出てくる  上に進むと下から出てくる  上辺と下辺をくっつける 2013/11 23 /58
  24. 24. ドラクエ3の世界(3/3)  ぱっと見は普通の世界地図だが  右へ進むと左から出てくる  上に進むと下から出てくる  上辺と下辺をくっつける  左辺と右辺をくっつける  浮輪の形になる  球面ではない!(地球と違う世界) この世界には足し算の構造が入る 2013/11 24 /58
  25. 25. トーラス(浮輪の表面)  地図の上の足し算 𝑃 + 𝑄を 周りこませる 𝑒2 𝑃+ 𝑄 𝑄 𝑃+ 𝑄 地図からはみ出た 𝑃 𝑒1  トーラス𝐸上の点𝑃は𝑃 = 𝑎𝑒1 + 𝑏𝑒2 とかける  (𝑒1 , 𝑒2 )は基底ベクトル, 𝑎, 𝑏は整数  𝑎, 𝑏はそれぞれ有限体の世界で考える  二つの点𝑃, 𝑄の和𝑃 + 𝑄は矢印をつないだもの(ベクトルの和) ただし端まで行ったら反対から出てくる 浮輪の上をぐるぐる回る 2013/11 25 /58
  26. 26. 足し算ができるなら  ある点𝑃の𝑛倍も考えられる  𝑛𝑃 = 𝑃 + 𝑃 + … + 𝑃(𝑛回足す)  𝑛倍の計算は𝐹 𝑝 の巾乗の計算と同様に効率よく求められる  𝑛𝑃と𝑃が与えらえたときに𝑛は求められるのだろうか  No! 正確には𝑛が大きいととても難しい 例外的に簡単に求められる楕円曲線の形もある 2013/11 26 /58
  27. 27. 楕円曲線暗号(1985年)  楕円曲線(トーラス)上で組み立てられた暗号  複素数上の曲線なので実2次元  楕円離散対数問題(ECDLP:Elliptic Curve) 𝑃と𝑛𝑃が与えられたとき𝑛を求める問題  大きな素数上の楕円曲線についてECDLPは難しい  有限体と楕円曲線の対比  掛け算が足し算に変わった以外は形が似てる 有限体 離散対数問題 DH問題 2013/11 𝑔と𝑔 𝑎 から𝑎 𝑔と𝑔 𝑎 と𝑔 𝑏 から𝑔 𝑎𝑏 楕円曲線 𝑃と𝑎𝑃から𝑎 𝑃と𝑎𝑃と𝑏𝑃から𝑎𝑏𝑃 27 /58
  28. 28. 楕円ElGamal暗号  有限体上のElGamal暗号を楕円曲線上に焼き直す  𝐸と𝑃を固定し皆に公開する  𝑥をランダムに選び𝑄 = 𝑥𝑃とする  𝑥が秘密鍵で𝑄が公開鍵  𝑚の暗号化  𝑚を𝐸の点に写す  𝑟を乱数として𝐸𝑛𝑐 𝑚 = 𝑐1 , 𝑐2 = (𝑟𝑃, 𝑚 + 𝑟𝑄)  復号  𝐷𝑒𝑐 𝑐1 , 𝑐2 = 𝑐2 − 𝑥𝑐1 = 𝑚 + 𝑟𝑄 − 𝑟𝑥𝑃 = 𝑚  これはECDLPが難しいという仮定の元で安全 2013/11 28 /58
  29. 29. 楕円曲線暗号のメリット  安全性の比較  1024bitの有限体上の暗号≒160bitの楕円曲線暗号  同じぐらいの安全性を持つ有限体上の暗号に対して 小さい鍵サイズでよい (注意)演算対象が違うので単純に6分の1ではない  ICカードなどの中の小さいコンピュータでも計算しやすい 2013/11 29 /58
  30. 30. 加法群  "足し算"と引き算と単位元が定義されたものの集まり  整数の集合を抽象化したもの  足し算があると、整数倍を定義できる  楕円曲線では演算は点の足し算、単位元は原点  有限体では演算は数値の掛け算を"足し算"と思う 単位元は1  他の加法群を使って暗号を作ることも可能  超楕円曲線  アーベル多様体 etc それがうれしい(解きにくい・計算しやすい)かは別の問題 2013/11 30 /58
  31. 31. 公開鍵基盤(PKI)と認証局  Aさんの公開鍵は本当にAさんのものか  普段メールやwebなどでいつもやりとりするときに公開鍵を 添付していればだいたい安心 いろんな経路を全て乗っ取り改竄されるとはあまり想像できない  赤の他人(やショップ)と初めてやりとりするときはわからない  公開鍵証明書  Aさんの公開鍵がAさんのものであることを証明するもの  認証局  証明書の発行、登録、破棄などの管理する機構 VeriSign, Symantec  公開鍵基盤  認証局やその他の方法によって証明書を扱う枠組み ブラウザには最初からいくつかの証明書が入っている 2013/11 31 /58
  32. 32. 公開鍵、PKIへの攻撃  認証局(Comodo, DigiNotar)への攻撃(2011年)  偽の証明書を発行してしまう DIgiNotarは破綻  本物と区別つかないので盗聴など可能になってしまう ブラウザ側で特別な対応  弱い公開鍵  失効できない弱い(512bit RSA)鍵を発行 1999年に512bit RSAが解読されている  Microsoft Updateへのなりすまし(2012年)  Flameというマルウェア 2004, 2007年に攻撃されたMD5の脆弱性を利用? 2013/11 32 /58
  33. 33. ここまでのまとめ  有限体上の巾乗は易しいが、 何乗したらその値になるかを求めるのは難しい  この非対称性を用いて公開鍵暗号を作ることができる  同じ形をしているなら別に有限体じゃなくてもいい  楕円曲線を使うと楕円離散対数問題、楕円曲線暗号を作れる  鍵のサイズが小さいのでうれしい  公開鍵暗号はその公開鍵が本人のものであることを 別の手段で示す必要がある  公開鍵基盤 2013/11 33 /58
  34. 34. 新しい暗号  2000年以降に登場したいくつかの暗号を紹介  沢山あるのでほんの一部 2013/11 34 /58
  35. 35. ペアリング(1/2)  𝐸上の二つの点に対して対応する"面積"を与える関数  𝑃 = 𝑎𝑒1 + 𝑏𝑒2 , 𝑄 = 𝑐𝑒1 + 𝑑𝑒2 に対し 𝑒 𝑃, 𝑄 = 𝑔 𝑎𝑑−𝑏𝑐 𝑄 = (𝑐, 𝑑) 𝑒2 𝑒1 この平行四辺形の面積 (符号つき) 𝑃 = (𝑎, 𝑏) ここで𝑔 = 𝑒(𝑒1 , 𝑒2 )は有限体上のある特別な値  双線形性(面積はそれぞれの辺の長さに比例する)  𝑒 𝑃1 + 𝑃2 , 𝑄 = 𝑒 𝑃1 , 𝑄 𝑒 𝑃2 , 𝑄  𝑒 𝑃, 𝑄1 + 𝑄2 = 𝑒 𝑃, 𝑄1 𝑒 𝑃, 𝑄2 2013/11 35 /58
  36. 36. ペアリング(2/2)  何を手に入れたのか 𝑒 𝑎𝑃, 𝑏𝑄 = 𝑔 𝑎𝑏  𝑎𝑃や𝑏𝑄は楕円曲線上の点なのでDH問題の困難さから 𝑎𝑏𝑃や𝑎𝑏𝑄みたいなものは求められない  しかしペアリングにより有限体上でならそれと似た働 きをする𝑔 𝑎𝑏 を計算できている!  一度だけならDH問題を解ける手段を手に入れた  ペアリングを双線形写像ともいう 2013/11 36 /58
  37. 37. IDベース暗号  "公開鍵"を自分の好きなIDに選べる暗号  たとえば自分のメールアドレスを使う 公開鍵暗号は公開鍵と本人のマッチングが必要だった メールアドレスは改竄されるとそもそも届かない  代わりに鍵生成センターがいる 公開鍵暗号の代替になるわけではない  概念自体は昔(1980年代)からあった  しかしどうやって実現するのか悩ましい  多項式を使って作ったものは破られやすい 2013/11 37 /58
  38. 38. ペアリングによるIDベース暗号  鍵共有方法(1999年~)  鍵生成  各ユーザに対してメールアドレスを数値化する ASCIIコードなどを使って適切に約束を決める  生成局はアドレスから楕円曲線上の点へのハッシュ関数と整 数𝑠を一つ決める  ID 𝑢に対して𝐾 𝑢 = 𝑠𝐻 𝑢 を計算しユーザに渡す(秘密鍵)  AとBの秘密の通信  AはBのメールアドレス𝑢 𝐵 と自身の𝐾 𝐴 を使って 𝑠 𝐴 = 𝑒 𝐾 𝐴 , 𝐻 𝑢 𝐵 を計算する。  BはAのメールアドレス𝑢 𝐴 と自身の𝐾 𝐵 を使って 𝑠 𝐵 = 𝑒 𝐻 𝑢 𝐴 , 𝐾 𝐵 を計算する。  𝑠𝐴 = 𝑒 𝐻 𝑢𝐴 , 𝐻 𝑢 𝐵 2013/11 𝑠 = 𝑠 𝐵 なので秘密の鍵を共有できる 38 /58
  39. 39. 公開鍵暗号との違い  その人のメールアドレスを使って暗号化  本人に間違いがない(はず)  鍵生成局に強い権限  生成局はなんでも見えてしまう(全部盗聴できる)  生成局を分散化する手法  暗号化されたファイルを受信してから秘密鍵をもらう ことができる  受け取った人が、自身の秘密鍵をもっていなかったら鍵生成 局に聞いてもらえばよい(本人認証は別途必要)  注意  公開鍵暗号の代わりとなるものではない 2013/11 39 /58
  40. 40. IDベース暗号の応用  タイムリリース暗号  指定した時刻に復号できるようにする暗号  その時刻よりは前に復号できない  時報局による(署名つき)時報で復号 受信者 発信者 正しい時刻を 知らせる 情報 時刻を決め て暗号化 時報局 指定時刻以前 は読めない 情報 時間が来た ら読める 2013/11 40 /58
  41. 41. タイムリリース暗号  IDベース暗号でIDとして時刻を使う  時刻に対する秘密鍵 時刻の署名に使える  時報局がその時刻の署名として秘密鍵を公開  特長  暗号化したい人は鍵管理から開放される  応用例  会社のIR情報の提供 今日の3時になると読めるようになる 証券会社などへの事前提供による情報漏れの低減 2013/11 41 /58
  42. 42. 電子署名  ある文章を私が書いたものであることを保証する  ペアリングを使うとHash関数なしの短い署名を構成できる  鍵生成  点𝑃, 𝑄と乱数𝑥, 𝑦を決めて𝑅 = 𝑥𝑄, 𝑆 = 𝑦𝑄, 𝑔 = 𝑒(𝑃, 𝑄)とする  𝑄, 𝑅, 𝑆, 𝑔 が公開鍵 𝑃, 𝑥, 𝑦 が秘密鍵  文章𝑚に対する署名  𝑟をランダムに選び𝑠 = 1 𝑥+𝑚+𝑦𝑟 𝑃として 𝑠, 𝑟 を署名とする  検証  𝑠, 𝑟 に対して 𝑒 𝑠, 𝑅 + 𝑚𝑄 + 𝑟𝑆 = 𝑒 𝑠, 𝑥 + 𝑚 + 𝑦𝑟 𝑄 = 𝑔を確認する 2013/11 42 /58
  43. 43. クイズ  どれが一番難しい?  (A) 𝑃, 𝑎𝑃, 𝑏𝑃から𝑎𝑏𝑃  (B) 𝑃, 𝑎𝑃から𝑎2 𝑃  (C) 𝑃, 𝑎𝑃から 1 𝑎 𝑃 2013/11 43 /58
  44. 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. 45. 電子署名の安全性  DLPのイメージ  𝑃, 𝑎𝑃の線形和からその外に出られない  ならば「𝑃, 𝑎𝑃, 𝑎2 𝑃から1 𝑎 𝑃」はもとめられない?  「𝑃, 𝑎𝑃, 𝑎2 𝑃, 𝑎3 𝑃から1 𝑎 𝑃」も多分無理?  「𝑃, 𝑎𝑃, 𝑎2 𝑃, 𝑎3 𝑃, …が与えられたときに 1 ある𝑐 ≠ 0に対して 𝑃を求める問題」 𝑎+𝑐 が難しいということを安全性の根拠にしている 2013/11 45 /58
  46. 46. 安全性の根拠をどこにおくのか  できるだけ皆に調べられているものが望ましい  離散対数問題、DH問題が難しいという仮定だけが一番  複雑な機能を実現しようとするとそれよりもきつい仮定を置 くことがよくある あまりマイナーな仮定を置くのは好まれない 2013/11 46 /58
  47. 47. 他には  放送用暗号  ユーザにはそれぞれ別々の秘密鍵を配布したい 同じ鍵だと他人にコピーされてしまう  たとえばクレジットカード番号を鍵に埋めてしまうと抑制力が働く  コンテンツは一つの鍵で暗号化したい 巨大なデータをユーザごとに暗号化するには帯域が足りない  属性ベース暗号  IDベース暗号の拡張 社内秘の文章を読めるのは、部長以上の人、あるいは、特別開発 部の社員の一部だけ ○○という属性を持つ人だけが復号可能な暗号システム  関数型暗号  http://www.mitsubishielectric.co.jp/corporate/randd/spotlight/spotlight15.html  などなどなど 2013/11 47 /58
  48. 48. 秘密計算による化合物DBの検索(2011~)  薬などの化合物は原子の小さい固まり(=基)の集まり  フェニル基(C6H5-)、ヒドロキシ基(-OH)など  基は化合物の性質を決める要素の一つ  二つの化合物は似た基を多く持つと性質も似る傾向がある  新しい薬を作るときは既存の物との類似性を調べるのが重要  膨大な化合物の性質の辞書(データベース:DB)  特定の性質に特化した化合物のDBは売り物になる 2013/11 48 /58
  49. 49. ジレンマ  研究者(C:クライアント)  自分の研究分野に特化したDBが欲しい  何について研究しているかは教えたくない(企業秘密)  DB販売者(S:サーバ)  自社のDBを使って買ってほしい  "立ち読み"されるのは困る  要求  Cは自分の調べたい化合物をSに知られたくないが、Sの持つ DBの中にどれぐらい類似物があるか知りたい  SはCに類似物がいくつあるか以外のことは教えたくない 2013/11 49 /58
  50. 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. 51. ElGamal暗号再び  ElGamal暗号の弱点だった 𝐸𝑛𝑐 𝑚 𝐸𝑛𝑐 𝑚′ = 𝐸𝑛𝑐 𝑚𝑚′  暗号化したものの積が元の値の積を暗号化したものに等しい  この性質を乗法性準同型暗号という  ElGamal暗号をちょっとひねる  hをとり𝐸𝑛𝑐 𝑚 = 𝑐1 , 𝑐2 = (𝑔 𝑟 , ℎ 𝑚 𝑦 𝑟 )とすると ′ 𝑟 𝑟′ 𝑚+𝑚′ 𝑟+𝑟 ′ 𝐸𝑛𝑐 𝑚 𝐸𝑛𝑐 𝑚 = 𝑔 𝑔 , ℎ 𝑦 = 𝐸𝑛𝑐(𝑚 + 𝑚′ ) 𝑚はあまり大きくないという制約あり  この性質を加法性準同型暗号という 実現方法は他にもいくつか知られている  両方同時に満たす暗号を完全準同型暗号という  2009年に初めて構成される 実用的なものにするため改良研究がさかん 2013/11 51 /58
  52. 52. 共通部分を求める  今回は加法性準同型を使えばできる  クライアントは検索したい化合物𝑋 = (𝑥 𝑖 )に対して 𝑐 𝑖 = 𝐸𝑛𝑐(𝑥 𝑖 )を求めてサーバSに送る  Sは各化合物𝑌 = 𝑦 𝑖 について𝑦 𝑖 = 1となる𝑖について 𝐸𝑛𝑐 𝑥 𝑖 を足していく 𝑧= 𝐸𝑛𝑐 𝑥 𝑖 = 𝐸𝑛𝑐(𝑥 𝑖 = 𝑦 𝑖 = 1となる𝑖の個数) 𝑦 𝑖 =1 暗号化されているのでSはXのことは何もわからない  これでandの個数がでる  𝐸𝑛𝑐 𝑥 𝑖 より#𝑋もわかる。=> orの個数もわかる  (注意)実際にはこれに加えてデータの攪乱などの操作をする 2013/11 52 /58
  53. 53. 悪意あるクライアントに対する対策  サーバは𝑥 𝑖 = 0 𝑜𝑟 1と信じて𝐸𝑛𝑐(𝑥 𝑖 )を処理する  本当はどういう値かわからない  𝑥 𝑖 に極端に大きい値をいれて𝑦 𝑖 の情報を引き出そうとするかも  サーバは𝑥 𝑖 が0と1のどちらなのか分からない  しかし、それ以外の値を暗号化したものではない ということは知りたい 2013/11 53 /58
  54. 54. ゼロ知識証明  ある人が自分の持っているある命題が真であることを それ以外の知識を何も教えずに証明する手法  1985年に初めて定式化  様々なパターン  対話式ゼロ知識証明 何度かやりとりすることで相手に納得させる  素因数分解を知っている  離散対数問題の答えを知っている 納得はさせるがそれ以外の情報は与えない  非対話ゼロ知識証明 一度で相手に納得させる 2013/11 54 /58
  55. 55. 対話的ゼロ知識証明の例  離散対数の答えを知っていることを示す  私Aは「𝑦 = 𝑔 𝑥 mod 𝑝となる𝑥を知っている 𝑔, 𝑝, 𝑦は公開 」 ことを𝑥を教えることなく他人Bに証明したい  次の対話をする A(証明したい人) Step1 : 𝑟を選び𝑎 = 𝑔 𝑟 B(検証したい人) 𝑎を受け取る Step2 : 𝑏 = 0 𝑜𝑟 1 0か1を選び送る Step3 : 𝑐 = 𝑟 + 𝑏𝑥 𝑐を受け取る Step4:𝑔 𝑐 と𝑎𝑦 𝑏 が 等しいか確認 2013/11 55 /58
  56. 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. 57. まとめ  共通鍵暗号  暗号化鍵 = 復号鍵  公開鍵暗号  暗号化鍵 ≠ 復号鍵  2000年以降の暗号  ペアリングなどの数学的な道具立てを利用  時代の要請に応じた新しい概念、機能 2013/11 57 /58
  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

×