• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
新しい暗号技術
 

新しい暗号技術

on

  • 37,029 views

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

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

Statistics

Views

Total Views
37,029
Views on SlideShare
34,951
Embed Views
2,078

Actions

Likes
147
Downloads
251
Comments
0

11 Embeds 2,078

https://twitter.com 1301
https://bozuman.cybozu.com 542
https://bozuman.s.cybozu.com 137
https://cybozulive.com 52
http://s.deeeki.com 26
http://tweetedtimes.com 8
http://b.hatena.ne.jp 4
http://nuevospowerpoints.blogspot.com 3
https://www.chatwork.com 2
http://nuevospowerpoints.blogspot.com.es 2
http://news.google.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    新しい暗号技術 新しい暗号技術 Presentation Transcript

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