暗号文のままで計算しよう - 準同型暗号入門 -

99
-1

Published on

introduction to homomorphic encryption

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
99
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

暗号文のままで計算しよう - 準同型暗号入門 -

  1. 1. 暗号文のままで計算しよう 準同型暗号入門 第6回プログラマのための数学勉強会 2016/3/19 光成滋生
  2. 2. • 準同型暗号とは何か • 加法準同型暗号のデモ • 楕円ElGamal暗号 • 完全準同型暗号 • その原理の雰囲気の紹介 • 『クラウドを支えるこれからの暗号技術』 • 公開鍵暗号の最先端応用技術・理論 • 準同型暗号が載ってる和書は現時点で本書のみ • 数学成分高め • https://herumi.github.io/ango/ 概要 2/39
  3. 3. • 光成滋生(@herumi) • @IT連載記事「クラウド時代の暗号化技術論」 • http://www.atmarkit.co.jp/ait/series/1990/ • CODE BLUE2015 • Excelのパスワード暗号化にあったバグの話 • http://www.slideshare.net/herumi/ms-office-54510219 • 属性ベース暗号の実装でIEEE trans. on Computers 2014採録 • 『パターン認識と機械学習の学習』(PRML副読本) • Toypcryptの解読で経産省の情報化月間推進会議議長表彰 • IPA未踏スーパークリエータ • 午後のこ~だ 自己紹介 3/39
  4. 4. • cybozu.com • グループウェアのクラウドサービス( 1万3000社以上) • 自前インフラ • We are hiring! • アーキテクチャ刷新プロジェクト「Neco」の紹介 • http://blog.cybozu.io/entry/2016/03/11/080000 • チームワークあふれる社会を創る • http://cybozu.co.jp/company/job/recruitment/ • 3/30 第5期サイボウズ・ラボユース成果報告会 • 学生のオープンソースソフトウェアの開発をサポート • https://atnd.org/events/75830 会社の紹介 4/39
  5. 5. • 準同型暗号の動機 • 準同型暗号とは何か • 加法準同型暗号のデモ 目次 5/39
  6. 6. • 暗号文から平文の情報が得られない • ごちゃごちゃにかき混ぜる • ホワイトノイズと区別できない • 圧縮もできない • 何もできない 暗号化 秘密の文章 暗号化 6/39
  7. 7. • クライアントで暗号化すると • クラウドは単なるデータ置き場 • 検索も計算も何もできない • クラウドのCPUパワーを活かせない • 暗号化したまま処理したい! クラウドにおけるモチベーション 7/39
  8. 8. • 暗号化したまま計算できる暗号方式 • ひっくり返したコップの中のボールが移動する テーブルマジックみたいなの 準同型暗号(Homomorphic Encryption) 8/39
  9. 9. • 暗号化された身長・体重の平均値をクラウド上で計算 • 暗号化された2個のベクトルの近さ(内積)を計算 • マッチング, 集合演算, ロジスティック回帰 etc. • 各社・組織注力してるジャンル • http://www.hitachi.co.jp/rd/portal/contents/story/searchable_encryption/ • http://www.nict.go.jp/press/2016/01/14-1.html • http://pr.fujitsu.com/jp/news/2016/02/15.html 準同型暗号があると 9/39
  10. 10. 楕円ElGamalを用いた加法準同型暗号の デモ 10/39
  11. 11. • 楕円ElGamalを用いた加法準同型暗号 • ここの「楕円」は「楕円曲線」 言葉の説明 11/39
  12. 12. • 楕円 • 曲線 楕円曲線とは ではない でもない 12/39
  13. 13. • 浮輪の表面(トーラス) • 複素数的な意味で曲線(1次元)なので実数的には2次元 • この上で計算(足し算)する • どうやって? 楕円曲線とは 13/39
  14. 14. • 長方形になる 楕円曲線を切り開くと 14/39
  15. 15. • 長方形上の2個のベクトルを足す • 𝑂, 𝑃, 𝑄, 𝑃 + 𝑄が平行四辺形になる • 足してはみ出たら反対側に回り込む 楕円曲線上の足し算 𝑃 𝑂 𝑄 𝑃 + 𝑄 𝑃 + 𝑄 15/39
  16. 16. • ベクトルの向きを反対にしたら−𝑃 楕円曲線上の引き算 𝑃 𝑂 −𝑃 −𝑃 16/39
  17. 17. • 一歩が𝑃のベクトルを延ばし続ける • 端に来ても反対側から出て延ばし続ける 点を何倍にもする 𝑃 𝑂 2𝑃 3𝑃 4𝑃5𝑃 10100 𝑃 4𝑃 17/39
  18. 18. • 点𝑃を𝑛倍するのは簡単だが、 𝑛倍された点𝑛𝑃から𝑛を求めるのは難しい • 楕円離散対数問題(ECDLP)が困難であるという 楕円曲線の重要な性質 𝑥, 𝑃 𝑄 = 𝑥𝑃 容易 困難 18/39
  19. 19. • パラメータ設定 • 楕円曲線上の点𝑃と秘密の整数𝑥をとり𝑄 = 𝑥𝑃とする • 秘密鍵 : 𝑥 • 公開鍵 : (𝑃, 𝑄) • 他人は𝑃と𝑄から𝑥は求められない(ECDLPが困難) 楕円ElGamal暗号(1/3) 19/39
  20. 20. • 暗号化 • メッセージ𝑀(楕円曲線の点)に対して乱数𝑟を選ぶ • 公開鍵 𝑃, 𝑄 に対して 𝐸𝑛𝑐 𝑀 = 𝑟𝑃, 𝑀 + 𝑟𝑄 • 他人は𝑟𝑃から𝑟を求められない 楕円ElGamal暗号(2/3) 20/39
  21. 21. • 復号 • 暗号文𝑐 = (𝐶1, 𝐶2)に対して秘密鍵𝑥を使って 𝐷𝑒𝑐 𝑐 = 𝐶2 − 𝑥𝐶1 • 元に戻ることの確認 • 𝑄 = 𝑥𝑃 • 𝐸𝑛𝑐 𝑀 = 𝐶1, 𝐶2 = (𝑟𝑃, 𝑀 + 𝑟𝑄)なので 𝐷𝑒𝑐 𝐸𝑛𝑐 𝑀 = 𝑀 + 𝑟𝑄 − 𝑥 𝑟𝑃 = 𝑀 + 𝑟𝑥𝑃 − 𝑥𝑟𝑃 = 𝑀 楕円ElGamal暗号(3/3) 21/39
  22. 22. • 楕円曲線って「𝑦2 = 𝑥3 + 𝑎𝑥 + 𝑏」じゃないの? • トーラスと𝑦2 = 𝑥3 + 𝑎𝑥 + 𝑏には深遠な関係がある • 楕円曲線入門「トーラスと楕円曲線のつながり」 • http://www.slideshare.net/herumi/ss-58815597 • https://twitter.com/herumi/status/703839001107533824 補足 𝑃 𝑄 𝑃 + 𝑄 22/39
  23. 23. • 楕円ElGamal暗号を用いた加法準同型暗号 • 残りは「加法準同型暗号」 • 暗号化したまま足し算ができる暗号 • どうやって? ここまで 23/39
  24. 24. • 二つの暗号文を用意する • 𝐸𝑛𝑐 𝑀1 = 𝑟1 𝑃, 𝑀1 + 𝑟1 𝑄 • 𝐸𝑛𝑐 𝑀2 = (𝑟2 𝑃, 𝑀2 + 𝑟2 𝑄) • 成分ごとに足してみる • 𝐸𝑛𝑐 𝑀1 + 𝐸𝑛𝑐 𝑀2 = ( 𝑟1 + 𝑟2 𝑃, 𝑀1 + 𝑀2 + 𝑟1 + 𝑟2 𝑄) • 𝑟′ = 𝑟1 + 𝑟2とすると • 𝐸𝑛𝑐 𝑀1 + 𝐸𝑛𝑐 𝑀2 = (𝑟′ 𝑃, 𝑀1 + 𝑀2 + 𝑟′ 𝑄) • 𝑀1 + 𝑀2を暗号化したものと同じ形! • 𝐸𝑛𝑐 𝑀1 + 𝐸𝑛𝑐 𝑀2 = 𝐸𝑛𝑐(𝑀1 + 𝑀2) • この性質を加法準同型という 暗号文を足してみる 24/39
  25. 25. • 楕円曲線ライブラリ(開発中) • https://github.com/herumi/mcl • 先ほどのデモのコード • https://github.com/herumi/add_he 実装 25/39
  26. 26. • かなり頑張ってます(for Win/Linux/Mac) • Xbyak(C++による自作x86/x64 JITアセンブラ)による最適化 • https://github.com/herumi/xbyak • 注意)C++のコードであってinlineアセンブラではない • ペアリング暗号の世界最速実装 • https://github.com/herumi/ate-pairing 実装 26/39
  27. 27. • x64以外はLLVM IR(LLVMのアセンブラ)で記述 • 32/64ビットARMでも動く(はず) • 単純なコードは手書きアセンブラの速度に匹敵 • 複雑なcarry演算を伴うものはまだ手書きが強い LLVM 27/39
  28. 28. • 完全準同型暗号とは何か • 完全準同型暗号の原理の雰囲気 • ブートストラップ 目次 28/39
  29. 29. • 何が完全? • 数学には同型という言葉があるがそれとは違う • 「準同型」は数学用語 • 「完全」は暗号?用語 • 数学用語なら環準同型 • 足し算だけ、掛け算だけができる暗号は 2000年までに構成されていた • 足し算と掛け算の両方ができる暗号が長年の夢 • 2009年Gentryが達成 • ただし当初は1bitの平文の暗号文が1GBぐらい • 現在さかんに改良されている 完全準同型暗号(Fully HE) 29/39
  30. 30. • 0と1の世界で足し算はxor, 掛け算はandに相当 • 足し算(xor) • 掛け算(and) • 両方できると任意の関数を構成できる(完全) • 関数𝑓に対して𝑓 𝐸𝑛𝑐 𝑚 = 𝐸𝑛𝑐(𝑓 𝑚 ) 0と1 + 0 1 0 0 1 1 1 0 × 0 1 0 0 0 1 0 1 30/39
  31. 31. • 𝑛 × 𝑚行列𝐴, 𝑚次元ベクトル𝑏が与えられたときに 𝐴𝑠 = 𝑏となる𝑛次元ベクトル𝑠を求めよ • これは容易 ざっくりとした原理の説明 𝑛 𝐴𝑚 𝑠 = 𝑏𝑛 𝑚 31/39
  32. 32. • 小さい値のノイズ𝑒が入ると • 𝐴, 𝑏が与えられたときに𝐴𝑠 + 𝑒 = 𝑏となる𝑠, 𝑒を求めよ • とても難しい • 秘密の値を知ってる人は𝑒を除去できるが 他人はできない LWE(Learning with Errors)問題 𝑛 𝐴𝑚 𝑠 = 𝑏𝑛 𝑚+ 𝑒 32/39
  33. 33. • 暗号文は「平文𝑚の情報」+「小さいノイズ」の形 • 「平文𝑚の情報」は𝑚そのものではないが詳細は略 • 楕円曲線は使わない • 秘密鍵を知っている人は𝑚を取り出せるが他人は無理 • LWE問題が根拠 • ノイズを除去する方法も今回は省略 • 2個の暗号文を考える • 𝑐1 = 𝑚1 + 𝑒1, 𝑐2 = 𝑚2 + 𝑒2 準同型の雰囲気(注意:原理ではない) 𝑚1 𝑒1 𝑚2 𝑒2 33/39
  34. 34. • 2個の暗号文を足してみる • 𝑐1 = 𝑚1 + 𝑒1, 𝑐2 = 𝑚2 + 𝑒2 • 足すと: 𝑐1 + 𝑐2 = 𝑚1 + 𝑚2 + (𝑒1 + 𝑒2) • これは「𝑚1 + 𝑚2の情報」+「ノイズ」の形 • 暗号文から𝑚1 + 𝑚2を取り出せる • 加法準同型! 加法準同型 𝑚1 𝑚2 𝑒1 + 𝑒2 34/39
  35. 35. • 2個の暗号文を掛けてみる • 𝑐1 = 𝑚1 + 𝑒1, 𝑐2 = 𝑚2 + 𝑒2 • 𝑐1 𝑐2 = 𝑚1 + 𝑒1 𝑚2 + 𝑒2 = 𝑚1 𝑚2 + 𝑚1 𝑒2 + 𝑚2 𝑒1 + 𝑒1 𝑒2 = 𝑚1 𝑚2 + 𝑒′ • 𝑒1, 𝑒2が𝑚1, 𝑚2に比べて十分小さければ 𝑒′ = 𝑚1 𝑒2 + 𝑚2 𝑒1 + 𝑒1 𝑒2は𝑚1 𝑚2に比べて小さい • 𝑐1 𝑐2は「𝑚1 𝑚2の情報」+「ノイズ」の形 • 暗号文から𝑚1 𝑚2を取り出せる • 乗法準同型! • 加法と乗法の両方ができるので完全準同型暗号 乗法準同型 35/39
  36. 36. • これって何度もやってるとノイズが増えない? • yes • 「小さいノイズ」ではなくなって復号に失敗する • 演算回数に上限がある • 特に掛け算が辛い • Somewhat HE(ちょっとだけ完全準同型?)と言う • ただしSHEでも十分役に立つケースは多い • 例:ベクトルの内積𝑎1 𝑏1 + 𝑎2 𝑏2 + ⋯ + 𝑎 𝑛 𝑏 𝑛 • 掛け算一度だけの後、足すだけなのでノイズは増えにくい 疑問 36/39 𝑒 範囲を越えると 復号できない 𝑚
  37. 37. • SHEからFHEへ • 回数制限のないHEの構成手法 • ノイズのある暗号文を 「暗号化したまま復号する回路」に入れて きれいな暗号文にする • おまえは何を言っているんだ • http://people.csail.mit.edu/shaih/pubs/3.FHE.pdf p.7より引用 ブートストラップ(1/2) 𝐸𝑛𝑐 𝑚 + 𝑒 𝐸𝑛𝑐 𝑚 37/39
  38. 38. • ノイズが増えてきた暗号文をc = 𝐸𝑛𝑐 𝑚 + 𝑒とする • 秘密鍵𝑠を使って復号すると𝐷𝑒𝑐 𝑠, 𝑐 = 𝑚 • ここで𝑓𝑐 𝑥 = 𝐷𝑒𝑐(𝑥, 𝑐)としてみる • 𝑓𝑐は𝑠を入れると𝑚がでる関数 : 𝑓𝑐 𝑠 = 𝐷𝑒𝑐 𝑠, 𝑐 = 𝑚 • 𝑓𝑐をSHEを使って実装する:𝑓𝑐 • 𝑓𝑐は「暗号化したまま復号する」関数 • 𝑓𝑐に「秘密鍵𝑠の暗号文」𝐸𝑛𝑐(𝑠)を入れると 𝑓𝑐 𝐸𝑛𝑐 𝑠 = 𝐸𝑛𝑐 𝑓𝑐 𝑠 = 𝐸𝑛𝑐(𝑚) • ノイズが無くなった! • ブートストラップで回数制限を取り除ける→完全準同型へ • 暗号化したままAESを計算する実装もある • おまえは何を(略 ブートストラップ(2/2) 38/39
  39. 39. • 準同型暗号を使うと暗号化したまま計算できる • 加法準同型暗号の一つに楕円ElGamal暗号があり 十分実用的 • 完全準同型は現在活発に研究されている • 一部制限のあるSHEの様々な応用が提案されている まとめ 39/39

×