SlideShare a Scribd company logo

準同型暗号の実装とMontgomery, Karatsuba, FFT の性能

富士通研究所 下山武司さんの代理アップロード

1 of 22
Download to read offline
下山 武司
富士通研究所
セキュアコンピューティング研究部
準同型暗号の実装とMontgomery,
Karatsuba, FFTの性能
Copyright 2015 FUJITSU LABORATORIES LTD.
x86_64勉強会
2015年3月15日、秋葉原UDX10F
準同型暗号
 研究背景
 クラウドやビッグデータ分析などの進展に伴い、機密データ利活用とプライバ
シー保護の両立が大きな課題
 準同型暗号
 暗号化したまま加算や乗算が可能な暗号技術
 クラウドコンピューティング分野への適用が期待
Copyright 2015 FUJITSU LABORATORIES LTD.
E:準同型暗号化関数
E(a+b) = E(a) + E(b)
E(a×b) = E(a)×E(b)85点→E(85)
E(85)
E(72)
E(89)
暗号化した
まま集計
E(246)
一度も元データに戻さず処理可能
⇒ データの機密性を保持したま
ま計算可能(クラウド上暗号化)
合計246点
復号
72点→E(72)
89点→E(89)
準同型暗号化
2
適用例1:医療データ統計計算
 医療や生化学データといった機密情報のデータ分析などの複数の
企業にまたがった情報活用を促進
 医療費/特定疾病/健診結果/生活習慣等の統計計算等
病院A 健保B
有り :1
無し :0
メタボの人は肝
炎になりやすい
暗号化したデータを送信するだけで、
分析結果が得られる。
暗号化
したまま
内積計算
復号
暗号化 暗号化
内積=肝炎かつメタボ
の人の数
病歴等が
見える
希少データから個
人特定の可能性
Copyright 2013 FUJITSU LABORATORIES LTD.3
適用例2:秘匿生体認証
 生体認証特徴コード
 手のひら静脈画像から2048ビットの特徴コードを抽出し照合する認証技術
 簡単な比較計算により、高速照合が可能
 一つの生体情報から複数の特徴コードを生成できるため、生体認証サービス
ごとに異なる特徴コードを登録することが可能
 準同型暗号で秘匿しながら照合処理が可能
画像正規化
(位置・変形補正)
特徴コード生成
変換条件
01010010・・・
’0’と’1’に変換
照合用特徴コード
(2048ビット)
手のひら静脈画像
特徴成分抽出
Copyright 2013 FUJITSU LABORATORIES LTD.4
準同型暗号方式の種類(3タイプ)
Copyright 2015 FUJITSU LABORATORIES LTD.
完全準同型
(任意の暗号演算)
Somewhat準同型
(限定回の
暗号加算・乗算)
加算準同型
(暗号加算のみ)
(RSA, ElGamal, Paillier,
Okamoto-Uchiyama, etc.)
機能性
(適用例)
集計
(電子投票)
統計計算など
(医療データ統計分析
・生体認証)
高度な分析
(スパムメール対策)
処理
時間
機能性の向上に
伴い、処理時間
が大きく劣化
遅い(暗号化に
数分~数十分)
速い
5
SHE準同型暗号
 SHE (Somewhat Homomorphic Encryption)
 暗号化したまま、限定された演算可能回数(N)のデータ操作可能な暗号
 基本演算の違う方式が、これまでにいくつか提案されている
• BGN(N = 1) :ペアリングの計算
• 整数ベース :代数的整数の計算
• イデアル格子ベース :多倍長整数を法とした整数計算
• Ring-LWEベース :正標数係数多項式演算
Copyright 2015 FUJITSU LABORATORIES LTD.
本発表のターゲット
6

Recommended

暗号文のままで計算しよう - 準同型暗号入門 -
暗号文のままで計算しよう - 準同型暗号入門 -暗号文のままで計算しよう - 準同型暗号入門 -
暗号文のままで計算しよう - 準同型暗号入門 -MITSUNARI Shigeo
 
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装MITSUNARI Shigeo
 
AVX-512(フォーマット)詳解
AVX-512(フォーマット)詳解AVX-512(フォーマット)詳解
AVX-512(フォーマット)詳解MITSUNARI Shigeo
 
組合せ最適化入門:線形計画から整数計画まで
組合せ最適化入門:線形計画から整数計画まで組合せ最適化入門:線形計画から整数計画まで
組合せ最適化入門:線形計画から整数計画までShunji Umetani
 
乱択データ構造の最新事情 -MinHash と HyperLogLog の最近の進歩-
乱択データ構造の最新事情 -MinHash と HyperLogLog の最近の進歩-乱択データ構造の最新事情 -MinHash と HyperLogLog の最近の進歩-
乱択データ構造の最新事情 -MinHash と HyperLogLog の最近の進歩-Takuya Akiba
 
Deeplearning輪読会
Deeplearning輪読会Deeplearning輪読会
Deeplearning輪読会正志 坪坂
 

More Related Content

What's hot

Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgenIntel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgenMITSUNARI Shigeo
 
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門Norishige Fukushima
 
いまさら聞けないarmを使ったNEONの基礎と活用事例
いまさら聞けないarmを使ったNEONの基礎と活用事例いまさら聞けないarmを使ったNEONの基礎と活用事例
いまさら聞けないarmを使ったNEONの基礎と活用事例Fixstars Corporation
 
色々なダイクストラ高速化
色々なダイクストラ高速化色々なダイクストラ高速化
色々なダイクストラ高速化yosupo
 
自動定理証明の紹介
自動定理証明の紹介自動定理証明の紹介
自動定理証明の紹介Masahiro Sakai
 
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門Fixstars Corporation
 
RSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjpRSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjpsonickun
 
楕円曲線入門 トーラスと楕円曲線のつながり
楕円曲線入門トーラスと楕円曲線のつながり楕円曲線入門トーラスと楕円曲線のつながり
楕円曲線入門 トーラスと楕円曲線のつながりMITSUNARI Shigeo
 
プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法Takuya Akiba
 
様々な全域木問題
様々な全域木問題様々な全域木問題
様々な全域木問題tmaehara
 
ウェーブレット木の世界
ウェーブレット木の世界ウェーブレット木の世界
ウェーブレット木の世界Preferred Networks
 
【基調講演】『深層学習の原理の理解に向けた理論の試み』 今泉 允聡(東大)
【基調講演】『深層学習の原理の理解に向けた理論の試み』 今泉 允聡(東大)【基調講演】『深層学習の原理の理解に向けた理論の試み』 今泉 允聡(東大)
【基調講演】『深層学習の原理の理解に向けた理論の試み』 今泉 允聡(東大)MLSE
 
指数時間アルゴリズム入門
指数時間アルゴリズム入門指数時間アルゴリズム入門
指数時間アルゴリズム入門Yoichi Iwata
 
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門競技プログラミングのためのC++入門
競技プログラミングのためのC++入門natrium11321
 
[DL輪読会]Focal Loss for Dense Object Detection
[DL輪読会]Focal Loss for Dense Object Detection[DL輪読会]Focal Loss for Dense Object Detection
[DL輪読会]Focal Loss for Dense Object DetectionDeep Learning JP
 
はじめてのKrylov部分空間法
はじめてのKrylov部分空間法はじめてのKrylov部分空間法
はじめてのKrylov部分空間法tmaehara
 
C++のライブラリを簡単に眺めてみよう
C++のライブラリを簡単に眺めてみようC++のライブラリを簡単に眺めてみよう
C++のライブラリを簡単に眺めてみようHiro H.
 

What's hot (20)

Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgenIntel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
 
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
 
楕円曲線と暗号
楕円曲線と暗号楕円曲線と暗号
楕円曲線と暗号
 
いまさら聞けないarmを使ったNEONの基礎と活用事例
いまさら聞けないarmを使ったNEONの基礎と活用事例いまさら聞けないarmを使ったNEONの基礎と活用事例
いまさら聞けないarmを使ったNEONの基礎と活用事例
 
色々なダイクストラ高速化
色々なダイクストラ高速化色々なダイクストラ高速化
色々なダイクストラ高速化
 
フラグを愛でる
フラグを愛でるフラグを愛でる
フラグを愛でる
 
自動定理証明の紹介
自動定理証明の紹介自動定理証明の紹介
自動定理証明の紹介
 
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門
 
RSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjpRSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjp
 
楕円曲線入門 トーラスと楕円曲線のつながり
楕円曲線入門トーラスと楕円曲線のつながり楕円曲線入門トーラスと楕円曲線のつながり
楕円曲線入門 トーラスと楕円曲線のつながり
 
双対性
双対性双対性
双対性
 
プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法
 
様々な全域木問題
様々な全域木問題様々な全域木問題
様々な全域木問題
 
ウェーブレット木の世界
ウェーブレット木の世界ウェーブレット木の世界
ウェーブレット木の世界
 
【基調講演】『深層学習の原理の理解に向けた理論の試み』 今泉 允聡(東大)
【基調講演】『深層学習の原理の理解に向けた理論の試み』 今泉 允聡(東大)【基調講演】『深層学習の原理の理解に向けた理論の試み』 今泉 允聡(東大)
【基調講演】『深層学習の原理の理解に向けた理論の試み』 今泉 允聡(東大)
 
指数時間アルゴリズム入門
指数時間アルゴリズム入門指数時間アルゴリズム入門
指数時間アルゴリズム入門
 
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
 
[DL輪読会]Focal Loss for Dense Object Detection
[DL輪読会]Focal Loss for Dense Object Detection[DL輪読会]Focal Loss for Dense Object Detection
[DL輪読会]Focal Loss for Dense Object Detection
 
はじめてのKrylov部分空間法
はじめてのKrylov部分空間法はじめてのKrylov部分空間法
はじめてのKrylov部分空間法
 
C++のライブラリを簡単に眺めてみよう
C++のライブラリを簡単に眺めてみようC++のライブラリを簡単に眺めてみよう
C++のライブラリを簡単に眺めてみよう
 

Viewers also liked

ブロックチェーン実証実験から得られた知見
ブロックチェーン実証実験から得られた知見ブロックチェーン実証実験から得られた知見
ブロックチェーン実証実験から得られた知見Hyperleger Tokyo Meetup
 
旅のことば 認知症とともによりよく生きるヒント
旅のことば 認知症とともによりよく生きるヒント旅のことば 認知症とともによりよく生きるヒント
旅のことば 認知症とともによりよく生きるヒントDementia Friendly Japan Initiative
 
Windows Azureで Webサーバーを再発明してみる
Windows AzureでWebサーバーを再発明してみるWindows AzureでWebサーバーを再発明してみる
Windows Azureで Webサーバーを再発明してみるSunao Tomita
 
2分で分かる富士通クラウドWebセミナー
2分で分かる富士通クラウドWebセミナー2分で分かる富士通クラウドWebセミナー
2分で分かる富士通クラウドWebセミナーFujitsu Limited
 
ブロックチェーン連続講義 第4回 暗号技術のリテラシー
ブロックチェーン連続講義 第4回 暗号技術のリテラシーブロックチェーン連続講義 第4回 暗号技術のリテラシー
ブロックチェーン連続講義 第4回 暗号技術のリテラシーKenji Saito
 
Agile Japan 2011 CMMI × Agile
Agile Japan  2011 CMMI × AgileAgile Japan  2011 CMMI × Agile
Agile Japan 2011 CMMI × AgileHIDEKAZU MATSUURA
 
Effective Modern C++勉強会#4 Item 17, 18資料
Effective Modern C++勉強会#4 Item 17, 18資料Effective Modern C++勉強会#4 Item 17, 18資料
Effective Modern C++勉強会#4 Item 17, 18資料Ryo Igarashi
 
C/C++プログラマのための開発ツール
C/C++プログラマのための開発ツールC/C++プログラマのための開発ツール
C/C++プログラマのための開発ツールMITSUNARI Shigeo
 
汎用性と高速性を目指したペアリング暗号ライブラリ mcl
汎用性と高速性を目指したペアリング暗号ライブラリ mcl汎用性と高速性を目指したペアリング暗号ライブラリ mcl
汎用性と高速性を目指したペアリング暗号ライブラリ mclMITSUNARI Shigeo
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説murachue
 
CTF超入門 (for 第12回セキュリティさくら)
CTF超入門 (for 第12回セキュリティさくら)CTF超入門 (for 第12回セキュリティさくら)
CTF超入門 (for 第12回セキュリティさくら)kikuchan98
 
GoogleのSHA-1のはなし
GoogleのSHA-1のはなしGoogleのSHA-1のはなし
GoogleのSHA-1のはなしMITSUNARI Shigeo
 

Viewers also liked (16)

ブロックチェーン実証実験から得られた知見
ブロックチェーン実証実験から得られた知見ブロックチェーン実証実験から得られた知見
ブロックチェーン実証実験から得られた知見
 
企業における共創の取り組み
企業における共創の取り組み企業における共創の取り組み
企業における共創の取り組み
 
旅のことば 認知症とともによりよく生きるヒント
旅のことば 認知症とともによりよく生きるヒント旅のことば 認知症とともによりよく生きるヒント
旅のことば 認知症とともによりよく生きるヒント
 
Windows Azureで Webサーバーを再発明してみる
Windows AzureでWebサーバーを再発明してみるWindows AzureでWebサーバーを再発明してみる
Windows Azureで Webサーバーを再発明してみる
 
OpenData_DataCurator_20140927
OpenData_DataCurator_20140927OpenData_DataCurator_20140927
OpenData_DataCurator_20140927
 
Helib
HelibHelib
Helib
 
2分で分かる富士通クラウドWebセミナー
2分で分かる富士通クラウドWebセミナー2分で分かる富士通クラウドWebセミナー
2分で分かる富士通クラウドWebセミナー
 
ブロックチェーン連続講義 第4回 暗号技術のリテラシー
ブロックチェーン連続講義 第4回 暗号技術のリテラシーブロックチェーン連続講義 第4回 暗号技術のリテラシー
ブロックチェーン連続講義 第4回 暗号技術のリテラシー
 
Homomorphic encryption
Homomorphic encryptionHomomorphic encryption
Homomorphic encryption
 
Agile Japan 2011 CMMI × Agile
Agile Japan  2011 CMMI × AgileAgile Japan  2011 CMMI × Agile
Agile Japan 2011 CMMI × Agile
 
Effective Modern C++勉強会#4 Item 17, 18資料
Effective Modern C++勉強会#4 Item 17, 18資料Effective Modern C++勉強会#4 Item 17, 18資料
Effective Modern C++勉強会#4 Item 17, 18資料
 
C/C++プログラマのための開発ツール
C/C++プログラマのための開発ツールC/C++プログラマのための開発ツール
C/C++プログラマのための開発ツール
 
汎用性と高速性を目指したペアリング暗号ライブラリ mcl
汎用性と高速性を目指したペアリング暗号ライブラリ mcl汎用性と高速性を目指したペアリング暗号ライブラリ mcl
汎用性と高速性を目指したペアリング暗号ライブラリ mcl
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説
 
CTF超入門 (for 第12回セキュリティさくら)
CTF超入門 (for 第12回セキュリティさくら)CTF超入門 (for 第12回セキュリティさくら)
CTF超入門 (for 第12回セキュリティさくら)
 
GoogleのSHA-1のはなし
GoogleのSHA-1のはなしGoogleのSHA-1のはなし
GoogleのSHA-1のはなし
 

Similar to 準同型暗号の実装とMontgomery, Karatsuba, FFT の性能

第11回 配信講義 計算科学技術特論B(2022)
第11回 配信講義 計算科学技術特論B(2022)第11回 配信講義 計算科学技術特論B(2022)
第11回 配信講義 計算科学技術特論B(2022)RCCSRENKEI
 
【関東GPGPU勉強会#4】GTX 1080でComputer Vision アルゴリズムを色々動かしてみる
【関東GPGPU勉強会#4】GTX 1080でComputer Visionアルゴリズムを色々動かしてみる【関東GPGPU勉強会#4】GTX 1080でComputer Visionアルゴリズムを色々動かしてみる
【関東GPGPU勉強会#4】GTX 1080でComputer Vision アルゴリズムを色々動かしてみるYasuhiro Yoshimura
 
PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編
PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編
PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編Yosuke Onoue
 
Halide による画像処理プログラミング入門
Halide による画像処理プログラミング入門Halide による画像処理プログラミング入門
Halide による画像処理プログラミング入門Fixstars Corporation
 
TPC-DSから学ぶPostgreSQLの弱点と今後の展望
TPC-DSから学ぶPostgreSQLの弱点と今後の展望TPC-DSから学ぶPostgreSQLの弱点と今後の展望
TPC-DSから学ぶPostgreSQLの弱点と今後の展望Kohei KaiGai
 
2015年度GPGPU実践プログラミング 第4回 GPUでの並列プログラミング(ベクトル和,移動平均,差分法)
2015年度GPGPU実践プログラミング 第4回 GPUでの並列プログラミング(ベクトル和,移動平均,差分法)2015年度GPGPU実践プログラミング 第4回 GPUでの並列プログラミング(ベクトル和,移動平均,差分法)
2015年度GPGPU実践プログラミング 第4回 GPUでの並列プログラミング(ベクトル和,移動平均,差分法)智啓 出川
 
Or seminar2011final
Or seminar2011finalOr seminar2011final
Or seminar2011finalMikio Kubo
 
PL/CUDA - Fusion of HPC Grade Power with In-Database Analytics
PL/CUDA - Fusion of HPC Grade Power with In-Database AnalyticsPL/CUDA - Fusion of HPC Grade Power with In-Database Analytics
PL/CUDA - Fusion of HPC Grade Power with In-Database AnalyticsKohei KaiGai
 
ビットコインで使われている暗号の基礎を学ぶ
ビットコインで使われている暗号の基礎を学ぶビットコインで使われている暗号の基礎を学ぶ
ビットコインで使われている暗号の基礎を学ぶYuto Takei
 
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013Ryo Sakamoto
 
GPGPU Seminar (GPU Accelerated Libraries, 2 of 3, cuSPARSE)
GPGPU Seminar (GPU Accelerated Libraries, 2 of 3, cuSPARSE) GPGPU Seminar (GPU Accelerated Libraries, 2 of 3, cuSPARSE)
GPGPU Seminar (GPU Accelerated Libraries, 2 of 3, cuSPARSE) 智啓 出川
 
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)Takeshi Yamamuro
 
プログラムを高速化する話Ⅱ 〜GPGPU編〜
プログラムを高速化する話Ⅱ 〜GPGPU編〜プログラムを高速化する話Ⅱ 〜GPGPU編〜
プログラムを高速化する話Ⅱ 〜GPGPU編〜京大 マイコンクラブ
 
2015年度GPGPU実践プログラミング 第10回 行列計算(行列-行列積の高度な最適化)
2015年度GPGPU実践プログラミング 第10回 行列計算(行列-行列積の高度な最適化)2015年度GPGPU実践プログラミング 第10回 行列計算(行列-行列積の高度な最適化)
2015年度GPGPU実践プログラミング 第10回 行列計算(行列-行列積の高度な最適化)智啓 出川
 
20190625 OpenACC 講習会 第3部
20190625 OpenACC 講習会 第3部20190625 OpenACC 講習会 第3部
20190625 OpenACC 講習会 第3部NVIDIA Japan
 
GPGPU Seminar (GPU Accelerated Libraries, 3 of 3, Thrust)
GPGPU Seminar (GPU Accelerated Libraries, 3 of 3, Thrust) GPGPU Seminar (GPU Accelerated Libraries, 3 of 3, Thrust)
GPGPU Seminar (GPU Accelerated Libraries, 3 of 3, Thrust) 智啓 出川
 
動的計画法の並列化
動的計画法の並列化動的計画法の並列化
動的計画法の並列化Proktmr
 

Similar to 準同型暗号の実装とMontgomery, Karatsuba, FFT の性能 (20)

画像処理の高性能計算
画像処理の高性能計算画像処理の高性能計算
画像処理の高性能計算
 
第11回 配信講義 計算科学技術特論B(2022)
第11回 配信講義 計算科学技術特論B(2022)第11回 配信講義 計算科学技術特論B(2022)
第11回 配信講義 計算科学技術特論B(2022)
 
【関東GPGPU勉強会#4】GTX 1080でComputer Vision アルゴリズムを色々動かしてみる
【関東GPGPU勉強会#4】GTX 1080でComputer Visionアルゴリズムを色々動かしてみる【関東GPGPU勉強会#4】GTX 1080でComputer Visionアルゴリズムを色々動かしてみる
【関東GPGPU勉強会#4】GTX 1080でComputer Vision アルゴリズムを色々動かしてみる
 
PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編
PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編
PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編
 
Halide による画像処理プログラミング入門
Halide による画像処理プログラミング入門Halide による画像処理プログラミング入門
Halide による画像処理プログラミング入門
 
Prosym2012
Prosym2012Prosym2012
Prosym2012
 
TVM の紹介
TVM の紹介TVM の紹介
TVM の紹介
 
TPC-DSから学ぶPostgreSQLの弱点と今後の展望
TPC-DSから学ぶPostgreSQLの弱点と今後の展望TPC-DSから学ぶPostgreSQLの弱点と今後の展望
TPC-DSから学ぶPostgreSQLの弱点と今後の展望
 
2015年度GPGPU実践プログラミング 第4回 GPUでの並列プログラミング(ベクトル和,移動平均,差分法)
2015年度GPGPU実践プログラミング 第4回 GPUでの並列プログラミング(ベクトル和,移動平均,差分法)2015年度GPGPU実践プログラミング 第4回 GPUでの並列プログラミング(ベクトル和,移動平均,差分法)
2015年度GPGPU実践プログラミング 第4回 GPUでの並列プログラミング(ベクトル和,移動平均,差分法)
 
Or seminar2011final
Or seminar2011finalOr seminar2011final
Or seminar2011final
 
PL/CUDA - Fusion of HPC Grade Power with In-Database Analytics
PL/CUDA - Fusion of HPC Grade Power with In-Database AnalyticsPL/CUDA - Fusion of HPC Grade Power with In-Database Analytics
PL/CUDA - Fusion of HPC Grade Power with In-Database Analytics
 
ビットコインで使われている暗号の基礎を学ぶ
ビットコインで使われている暗号の基礎を学ぶビットコインで使われている暗号の基礎を学ぶ
ビットコインで使われている暗号の基礎を学ぶ
 
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
 
GPGPU Seminar (GPU Accelerated Libraries, 2 of 3, cuSPARSE)
GPGPU Seminar (GPU Accelerated Libraries, 2 of 3, cuSPARSE) GPGPU Seminar (GPU Accelerated Libraries, 2 of 3, cuSPARSE)
GPGPU Seminar (GPU Accelerated Libraries, 2 of 3, cuSPARSE)
 
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
 
プログラムを高速化する話Ⅱ 〜GPGPU編〜
プログラムを高速化する話Ⅱ 〜GPGPU編〜プログラムを高速化する話Ⅱ 〜GPGPU編〜
プログラムを高速化する話Ⅱ 〜GPGPU編〜
 
2015年度GPGPU実践プログラミング 第10回 行列計算(行列-行列積の高度な最適化)
2015年度GPGPU実践プログラミング 第10回 行列計算(行列-行列積の高度な最適化)2015年度GPGPU実践プログラミング 第10回 行列計算(行列-行列積の高度な最適化)
2015年度GPGPU実践プログラミング 第10回 行列計算(行列-行列積の高度な最適化)
 
20190625 OpenACC 講習会 第3部
20190625 OpenACC 講習会 第3部20190625 OpenACC 講習会 第3部
20190625 OpenACC 講習会 第3部
 
GPGPU Seminar (GPU Accelerated Libraries, 3 of 3, Thrust)
GPGPU Seminar (GPU Accelerated Libraries, 3 of 3, Thrust) GPGPU Seminar (GPU Accelerated Libraries, 3 of 3, Thrust)
GPGPU Seminar (GPU Accelerated Libraries, 3 of 3, Thrust)
 
動的計画法の並列化
動的計画法の並列化動的計画法の並列化
動的計画法の並列化
 

More from MITSUNARI Shigeo

暗号技術の実装と数学
暗号技術の実装と数学暗号技術の実装と数学
暗号技術の実装と数学MITSUNARI Shigeo
 
範囲証明つき準同型暗号とその対話的プロトコル
範囲証明つき準同型暗号とその対話的プロトコル範囲証明つき準同型暗号とその対話的プロトコル
範囲証明つき準同型暗号とその対話的プロトコルMITSUNARI Shigeo
 
暗認本読書会13 advanced
暗認本読書会13 advanced暗認本読書会13 advanced
暗認本読書会13 advancedMITSUNARI Shigeo
 
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法MITSUNARI Shigeo
 
WebAssembly向け多倍長演算の実装
WebAssembly向け多倍長演算の実装WebAssembly向け多倍長演算の実装
WebAssembly向け多倍長演算の実装MITSUNARI Shigeo
 
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化MITSUNARI Shigeo
 
BLS署名の実装とその応用
BLS署名の実装とその応用BLS署名の実装とその応用
BLS署名の実装とその応用MITSUNARI Shigeo
 
LazyFP vulnerabilityの紹介
LazyFP vulnerabilityの紹介LazyFP vulnerabilityの紹介
LazyFP vulnerabilityの紹介MITSUNARI Shigeo
 
Intro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみたIntro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみたMITSUNARI Shigeo
 

More from MITSUNARI Shigeo (20)

暗号技術の実装と数学
暗号技術の実装と数学暗号技術の実装と数学
暗号技術の実装と数学
 
範囲証明つき準同型暗号とその対話的プロトコル
範囲証明つき準同型暗号とその対話的プロトコル範囲証明つき準同型暗号とその対話的プロトコル
範囲証明つき準同型暗号とその対話的プロトコル
 
暗認本読書会13 advanced
暗認本読書会13 advanced暗認本読書会13 advanced
暗認本読書会13 advanced
 
暗認本読書会12
暗認本読書会12暗認本読書会12
暗認本読書会12
 
暗認本読書会11
暗認本読書会11暗認本読書会11
暗認本読書会11
 
暗認本読書会10
暗認本読書会10暗認本読書会10
暗認本読書会10
 
暗認本読書会9
暗認本読書会9暗認本読書会9
暗認本読書会9
 
暗認本読書会8
暗認本読書会8暗認本読書会8
暗認本読書会8
 
暗認本読書会7
暗認本読書会7暗認本読書会7
暗認本読書会7
 
暗認本読書会6
暗認本読書会6暗認本読書会6
暗認本読書会6
 
暗認本読書会5
暗認本読書会5暗認本読書会5
暗認本読書会5
 
暗認本読書会4
暗認本読書会4暗認本読書会4
暗認本読書会4
 
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
 
私とOSSの25年
私とOSSの25年私とOSSの25年
私とOSSの25年
 
WebAssembly向け多倍長演算の実装
WebAssembly向け多倍長演算の実装WebAssembly向け多倍長演算の実装
WebAssembly向け多倍長演算の実装
 
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化
 
HPC Phys-20201203
HPC Phys-20201203HPC Phys-20201203
HPC Phys-20201203
 
BLS署名の実装とその応用
BLS署名の実装とその応用BLS署名の実装とその応用
BLS署名の実装とその応用
 
LazyFP vulnerabilityの紹介
LazyFP vulnerabilityの紹介LazyFP vulnerabilityの紹介
LazyFP vulnerabilityの紹介
 
Intro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみたIntro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみた
 

Recently uploaded

20240227_IoTLT_vol108____kitazaki_v1.pdf
20240227_IoTLT_vol108____kitazaki_v1.pdf20240227_IoTLT_vol108____kitazaki_v1.pdf
20240227_IoTLT_vol108____kitazaki_v1.pdfAyachika Kitazaki
 
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
20240227 完全に理解した LT 「mise いいよ mise」 / morishin
20240227 完全に理解した LT 「mise いいよ mise」 / morishin20240227 完全に理解した LT 「mise いいよ mise」 / morishin
20240227 完全に理解した LT 「mise いいよ mise」 / morishinMakoto Mori
 
Kubernetes環境のアプリケーションバックアップソフトウェアKasten K10ご紹介
Kubernetes環境のアプリケーションバックアップソフトウェアKasten K10ご紹介Kubernetes環境のアプリケーションバックアップソフトウェアKasten K10ご紹介
Kubernetes環境のアプリケーションバックアップソフトウェアKasten K10ご紹介FumieNakayama
 
00001_test_automation_portfolio_20240227
00001_test_automation_portfolio_2024022700001_test_automation_portfolio_20240227
00001_test_automation_portfolio_20240227ssuserf8ea02
 
scikit-learn以外の分類器でpipelineを作ってみた! いずみん
scikit-learn以外の分類器でpipelineを作ってみた! いずみんscikit-learn以外の分類器でpipelineを作ってみた! いずみん
scikit-learn以外の分類器でpipelineを作ってみた! いずみんtoshinori622
 
BusTimeTable by Edge Runtime - 公共交通オープンデータ最前線2024 -
BusTimeTable by Edge Runtime - 公共交通オープンデータ最前線2024 -BusTimeTable by Edge Runtime - 公共交通オープンデータ最前線2024 -
BusTimeTable by Edge Runtime - 公共交通オープンデータ最前線2024 -yuutahatano
 

Recently uploaded (7)

20240227_IoTLT_vol108____kitazaki_v1.pdf
20240227_IoTLT_vol108____kitazaki_v1.pdf20240227_IoTLT_vol108____kitazaki_v1.pdf
20240227_IoTLT_vol108____kitazaki_v1.pdf
 
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
 
20240227 完全に理解した LT 「mise いいよ mise」 / morishin
20240227 完全に理解した LT 「mise いいよ mise」 / morishin20240227 完全に理解した LT 「mise いいよ mise」 / morishin
20240227 完全に理解した LT 「mise いいよ mise」 / morishin
 
Kubernetes環境のアプリケーションバックアップソフトウェアKasten K10ご紹介
Kubernetes環境のアプリケーションバックアップソフトウェアKasten K10ご紹介Kubernetes環境のアプリケーションバックアップソフトウェアKasten K10ご紹介
Kubernetes環境のアプリケーションバックアップソフトウェアKasten K10ご紹介
 
00001_test_automation_portfolio_20240227
00001_test_automation_portfolio_2024022700001_test_automation_portfolio_20240227
00001_test_automation_portfolio_20240227
 
scikit-learn以外の分類器でpipelineを作ってみた! いずみん
scikit-learn以外の分類器でpipelineを作ってみた! いずみんscikit-learn以外の分類器でpipelineを作ってみた! いずみん
scikit-learn以外の分類器でpipelineを作ってみた! いずみん
 
BusTimeTable by Edge Runtime - 公共交通オープンデータ最前線2024 -
BusTimeTable by Edge Runtime - 公共交通オープンデータ最前線2024 -BusTimeTable by Edge Runtime - 公共交通オープンデータ最前線2024 -
BusTimeTable by Edge Runtime - 公共交通オープンデータ最前線2024 -
 

準同型暗号の実装とMontgomery, Karatsuba, FFT の性能

  • 2. 準同型暗号  研究背景  クラウドやビッグデータ分析などの進展に伴い、機密データ利活用とプライバ シー保護の両立が大きな課題  準同型暗号  暗号化したまま加算や乗算が可能な暗号技術  クラウドコンピューティング分野への適用が期待 Copyright 2015 FUJITSU LABORATORIES LTD. E:準同型暗号化関数 E(a+b) = E(a) + E(b) E(a×b) = E(a)×E(b)85点→E(85) E(85) E(72) E(89) 暗号化した まま集計 E(246) 一度も元データに戻さず処理可能 ⇒ データの機密性を保持したま ま計算可能(クラウド上暗号化) 合計246点 復号 72点→E(72) 89点→E(89) 準同型暗号化 2
  • 3. 適用例1:医療データ統計計算  医療や生化学データといった機密情報のデータ分析などの複数の 企業にまたがった情報活用を促進  医療費/特定疾病/健診結果/生活習慣等の統計計算等 病院A 健保B 有り :1 無し :0 メタボの人は肝 炎になりやすい 暗号化したデータを送信するだけで、 分析結果が得られる。 暗号化 したまま 内積計算 復号 暗号化 暗号化 内積=肝炎かつメタボ の人の数 病歴等が 見える 希少データから個 人特定の可能性 Copyright 2013 FUJITSU LABORATORIES LTD.3
  • 4. 適用例2:秘匿生体認証  生体認証特徴コード  手のひら静脈画像から2048ビットの特徴コードを抽出し照合する認証技術  簡単な比較計算により、高速照合が可能  一つの生体情報から複数の特徴コードを生成できるため、生体認証サービス ごとに異なる特徴コードを登録することが可能  準同型暗号で秘匿しながら照合処理が可能 画像正規化 (位置・変形補正) 特徴コード生成 変換条件 01010010・・・ ’0’と’1’に変換 照合用特徴コード (2048ビット) 手のひら静脈画像 特徴成分抽出 Copyright 2013 FUJITSU LABORATORIES LTD.4
  • 5. 準同型暗号方式の種類(3タイプ) Copyright 2015 FUJITSU LABORATORIES LTD. 完全準同型 (任意の暗号演算) Somewhat準同型 (限定回の 暗号加算・乗算) 加算準同型 (暗号加算のみ) (RSA, ElGamal, Paillier, Okamoto-Uchiyama, etc.) 機能性 (適用例) 集計 (電子投票) 統計計算など (医療データ統計分析 ・生体認証) 高度な分析 (スパムメール対策) 処理 時間 機能性の向上に 伴い、処理時間 が大きく劣化 遅い(暗号化に 数分~数十分) 速い 5
  • 6. SHE準同型暗号  SHE (Somewhat Homomorphic Encryption)  暗号化したまま、限定された演算可能回数(N)のデータ操作可能な暗号  基本演算の違う方式が、これまでにいくつか提案されている • BGN(N = 1) :ペアリングの計算 • 整数ベース :代数的整数の計算 • イデアル格子ベース :多倍長整数を法とした整数計算 • Ring-LWEベース :正標数係数多項式演算 Copyright 2015 FUJITSU LABORATORIES LTD. 本発表のターゲット 6
  • 7. Ring-LWEベース準同型暗号方式  鍵・パラメータ生成  Rq=GF(q)[x]/(xn+1), 秘密鍵sk1=s, 公開鍵pk1 = (a0, a1) • a0 = -(a1s + te) in Rq, s, a1, e: 鍵生成時の乱数 in Rq, • t:平文空間の法、q:係数体の位数  暗号化  平文 m の暗号文を Epk(m) = (c0, c1) (n-1次多項式の組) • c0 = a0u + tg + m (in Rq), c1 = a1u + tf (in Rq) • u, g, f: 暗号化時の乱数  暗号文処理  平文m, m’に対する暗号文の準同型乗算処理 • Epk(m×m’)= (c0, c1)*(c’0, c’1) = (c0 c’0 , c’0 c1 +c1 c’0 ,c’1c’1 ) (in Rq) • Epk(m+m’)= (c0, c1)+(c’0, c’1) = (c0 + c’0 ,c’1 + c’1 ) (in Rq)  復号  暗号文Epk(m) = (c0, c1, c2 ) に対する復号処理 • Decs(c0, c1, c2) = c0 +c1s+c2s2 (mod Rt) (in Rq) 多項式の乗算 正標数(mod q)係数の多項式 7
  • 8. Ring-LWE準同型暗号の実装  実装上の基本パラメータ  Rq=GF(q)[x]/(xn+1) • n : 剰余多項式の次数 • q : 係数の剰余(素数)  複数パラメータを実装  n=2048, q: 61-bit 素数, (27*(256) + 1)  n=4096, q: 65-bit 素数, (31*(260) + 1)  n=8192, q: 69-bit 素数, (9*(265) + 1)  n=16384, q: 73-bit 素数, (31*(268) + 1) ※nが4096以上の場合は、q の大きさが 64bit を超えている(;_;) ※qが小さいと復号処理に失敗するので、仕方がない。 ※素数qは、GF(q)上の2冪乗根(FFTで必要)が計算しやすい値としている。 Copyright 2015 FUJITSU LABORATORIES LTD.8
  • 9. 実装上の注意点  基本演算:正標数係数多項式の乗算剰余処理  多項式乗算:FFT or Karatsuba  係数乗算剰余:Montgomery乗算  mod xn+1 : 係数をずらして引くだけ  実装上の工夫  乗算処理回数の削減(乗算3回→乗算1+事前計算) • 2a×b + a×c1 + b×c2 → 1/2((2a + c2)×(2b + c1) – c1×c2)  実装パラメータ・コードの最適化 • パラメータのMontgomery化 • 係数は“mul” (64bit*64bit)とKaratsubaの併用で 96bit*96bit 乗算処理 • ガウス乱数を一様乱数の平均値で代用 • その他、もろもろ  サボった点 • メモリアクセス速度の最適化は未実施  では、多項式FFT or Karatsubaはどちらが早い? Copyright 2015 FUJITSU LABORATORIES LTD.9
  • 10. KaratsubaとFFTを実装してみた Copyright 2015 FUJITSU LABORATORIES LTD.10 1.E+00 1.E+01 1.E+02 1.E+03 1.E+04 1.E+05 1.E+06 1.E+07 1.E+08 1.E+09 1 4 16 64 256 1024 4096 16384 FFT 73bit FFT 61bit Karatsuba 73bit Karatsuba 61bit Karatsuba FFT 801次 (61bit prime) 1563次 (73bit prime) 多項式の次数 正標数係数多項式乗算 clockcycle Intel Xeon X3480, 3.07GHz, 16GB memory, x86_64 asm, gcc on Cent OS 6.1 ※傾き Karatsuba: 1.6279, FFT:1.0662, (理論値は各々1.584, 1.0) 今回扱う範囲では FFTの方が速そう
  • 11. 実装上の細かい点  Montgomery乗算 (乗算剰余)  bビット素数p, に対し、a×b/R mod p, (R =2b)を乗算3回で行う計算法 • (x,y に対して xy mod p を計算する際、a = xR, b = yRとし ab/R=(xy)Rを計算) • m = -p-1 mod R (事前計算) 1. T=a×b 2. U=T×m mod R, (Rは2巾なので mod Rは簡単) 3. (T+U×p)/R を出力 (カッコ内は必ずRで割り切れるのでシフトのみ) • x86_64実装でのちょっとした工夫 • 3.の乗算下位は不要。1.の下位ワードと(-1)との加算によるcarry registerで代用 • 3.の加算結果がピッタリ上位registerに来るように入力を調整、シフト不要 Copyright 2015 FUJITSU LABORATORIES LTD. movq (a), %rax mulq (b) movq %rax, %rcx movq %rdx, %rbx imulq (m), %rax mulq (p) add (-1), %rcx adc %rdx, %rbx movq %rbx, (ret) ※左コードは16clock程度 (同様にp < 295では36clock程度) Montgomery乗算(p<263)のコード例 11
  • 12. FFT変換処理のMontgomery化 Copyright 2015 FUJITSU LABORATORIES LTD.12 Input f[]; Output g[]; for (i=0; i<n; i++) { v[i] = f[i]; } for (k=(n>>1), kk=0; k>=1; (k=k>>1), kk++) { for (j =0; j<k; j++) { u = 1; for (i=0; i<n; i+=(k<<1)) { x = v[i+j]; y = v[i+j+k]; s = u*y mod q; t[i] = x + s mod q; t[i+k] = x – s mod q; u = u * w[kk] mod q; } for (i = 0; i< (n>>1); i+=k ) { v[i+j] = t[i<<1]; v[i+j+(n>>1)] = t[(i<<1)+k]; } } } for (i=0; i<n; i++) { g[i] = v[i]; } Montgomery空間 (x→xR)で処理
  • 13. 準同型暗号処理性能  Ring-LWEベース パラメータ(n,q,t) 鍵生成 乗算 暗号化 秘匿内積 復号 (2048,61-bit prime, 211) 3.50ms 1.56ms 3.65ms (31.2KB) 5.31ms (46.8KB) 3.47ms (4096,65-bit prime, 212) 11.74ms 11.09ms 23.03ms (66.6KB) 34.34ms (99.8KB) 22.17ms (8192,69-bit prime, 213) 24.82ms 23.17ms 48.07ms (141.3KB) 71.25ms (212.0KB) 46.35ms (16384,73bit prime, 214) 54.50ms 51.97ms 107.25ms (299.0KB) 159.45ms (448.5KB) 103.94ms CPU: Intel Xeon X3480 at 3.07 GHz, 16 GBmem 実装完了。これって速いのか?遅いのか? 別の準同型暗号 (イデアル格子版)と比較してみる Copyright 2015 FUJITSU LABORATORIES LTD. ※ 秘匿乗算 0.19秒(n=2048) ,0.95秒(n=4096) by Magma, Core2 duo@2.1GHz in [1], [1] Naehrig, et.al., “Can homomorphic encryption be practical?”, CCSW2011 13
  • 14. イデアル格子準同型暗号スキームの構成  鍵生成  n: 格子次元, t: ビット長(鍵生成パラメータ)  公開鍵pk = (d, r), 秘密鍵sk = wi (V×W =W×V= dを満たすWの1成分) • vi: t-ビット乱数, d: 行列Vのdeterminant Copyright 2015 FUJITSU LABORATORIES LTD.               10 01 00 1     n r r d B                  021 201 110 vvv vvv vvv V nn n     HNF変換 公開鍵  暗号化  平文情報(整数): b → 暗号文:b + s・Σui・ri mod d  復号  暗号文: c → (c・sk mod d) mod s  暗号操作  暗号加算:c1 + c2 mod d, 暗号乗算: c1×c2 mod d ノイズ(ui:乱数)平文空間サイズ 逆変換は困難 14
  • 15. 暗号化処理の実装について  基本演算は、多倍長整数の乗算剰余と加算  暗号化:平文 b → 暗号文c = b + s・Σui・ri mod d  暗号操作:加算 c1+c2 mod d、乗算 c1×c2 mod d  復号:暗号文 c → 平文 b = (c×sk mod d) mod s  法 d の大きさについて • (n,t)=(2048,37)→ d: 75776ビット • (n,t)=(4096,37)→ d:151182ビット • (n,t)=(8192,41) → d:335827ビット • (n,t)=(16384,45)→d:737280ビット  実装の肝は、超巨大な整数演算!  乗算剰余 : Montgomery 乗算  多倍長乗算 : Karatsuba ※FFTは?Karatsubaと、どちらが速い?両方実装して比較しよう! Copyright 2015 FUJITSU LABORATORIES LTD. 超巨大! 15
  • 16. 法dの例 (n=2048, 75776bit) Copyright 2015 FUJITSU LABORATORIES LTD.16 d= 7f020536b6a58c9f478c20df108eec7328aed49a067532eea47bf81dcb2b6d9ebcd2f9a6aaeebdade4035e019e004b735af841b6f2d94d9e9adc1a61a0e98f861baff730f3fae3bf90249c6921cbb23c1bbe4ff1336d90c4a68572b9064a0240083da473263963cf7797ce119970de7d925c6402acd76643c478b7b21 c9b9c8306883b2778d27992711c83c8db21a5cacee6b7aa99ef43a196831d93e544d05b48fbbaddc8d58d5a5ef19b6bf18e54847330160dc39f61cd8f002092e48b0399690a009418abcd6d348082eec04c031e165d35ecdcd9f40980eebde9fd6c647422577b54e47906c0db7b03a5320eb498449b9380641464 75652650e05fb9e653b0a9e15db5c18440f925d6553f897944ea781a0e93b926c66f336eb10ca81fadcbde8d66d3afb355ebdd038a3a3df36cbe8349be47c54aec9857720f03da02feb750e9c3ddd27f88e1052afe5aa437a1c95f53dc202982ef754cc54698cca4d24caeb997bfd39b0e1e3e7b5480d38cfa1ac3c19 d5882dd349f4b198ab81b208f9f0417c25af0c426e32f6f77d703eb3c88e9e678b008ee78617a6c5109ea54ebd958e60328b9306da3641434d65ecdcd72d1c00b97f7f992ba8ef83b8782497bb255723e8ab4346ad6c9e7c59e9a2c151849a95fad7a3ae64ecd46a423cef00960d9bf2dd97b8df2c10a398be0da41 54020eafcf8505cab63fb56cf8f38326baa9555b1b7928b13c0d1a8bbf7ea28518dc591f3f403fa93371e91f130f896edf8fcb49b28cb312663cc0ea0533cfba065b53a0043a46cdea4176887fd891c33f5d61b7eac56cd625fc58e6d7871458ea65a37f045c7e328de6c80630a68b2570695936648a17d8c84dbc0844 c97bca86f62eda3d3108affe901a45e9b318570d3ab67919dfaca129538798631e648b8940a1a508ba0c13b73462c6cc750eab7e0373255f18ac0bfe3fe6a9951b9835112ea6b99f9d8a6f51d236c1b73d55fa526d665be43a74ee01083d9173fc0f8658242d2627b7a36d83af350dbdcb75be27afffbbd594e2d4d39 fe42accc7304861dfb5ac15216a96506f6c03a69f57ad2fa536ea02de3c320bb7035e00f516a5819bca88a51fb2d8332489474c60112ff64b99ea0e54906829576c08860cd78b6b1e837d1dff922b64c0fcdbcca8e2479e68123f6b6fd0a28ef875b94f8de8471959a926461b401c83f56ad416de0fb31924b375a63e0 1a8ad150a8368a6de88537640b7401f8888c1117f9822c1eef6e6c20cb7ab5744d9ae7f808cfe74276d62b0997b0d28f1a58c2a5a550082afc80db797e89cc35841a568cab30f674ccf1faedab2964c6ee66dfd83bb346c0218d0395c1716565d704dd3d40545696ab6dbda51d2331a3a1ec03cdd7fc6e7ad014910 b2b1bbde74141dfbcd3c9ca6483bef73a1d72d6edbfd780834657bd7ed213c0ce8a4e53a106cc0cfbf4a5bd2c001e127723d6bb86621ceb4525138f56bf141b39138c405393037752dddd0c559477bf92a4cf4fbed5f92e2382aa9126ef70816c094b5bb65217d702e72b6806ca917e94d9da283016eb3657aba0ad f5e14c5d135b72d7dddb6f4ecebef38f8d331a89565155045802f651e8ef6039ae967c612fe758c94b0502552aad7dc54565445113f02c321b5d65279f70fdcdd2b497ff66d340010eeb23eb583a0fc404b7d22646de3095259cdac3a6ce9f3c08bc1e5274d58c996ccb2d19cd0b49475046b9663c907652ded38972 24f89c868e0bcc28b2258cc351e240932d7cbce5176b214de31e9bf5f323299630d4b1e460c73896c2b06459558947230e9c775d59e1da9efc675521efe843046d39843d3c7d713fce461f73630926be30f9eab2967579083c600b5fcaf2daf15e76089bad02a352e20a51d0a41f40567851485ad1cd190b07efd91c 64946695372c279b7eca987181cf277b98d6a5be4b159415900a4886fbe085dba038a48ff756d6be421728cd36487602b13aa8fb1d88af8a0257f184e2c09a412be2b662f2c4e319e8a3777526e0e1c1de9f82f145c4d3e5af9698c39997cd3e6526a747157a6a6cc1078ffdb75d7d6027058c0bb6ae1bb1fecb7d88 369317fcd145e28201c79a8cf7330478131d021c062253ddd23a57e2bab8b6405d4ffb54e3e620a2ac759638993e75cd05c3f08d432f75efd597026e2dad056b35fe12f123fc2243043f5518c0442c1379c68dd911976b3d09874d8e2eb59e9fba3a103942812c4ff82c7be03b2dc2f81b26e7d54901ee920354fffd0c 744670b05e9a19b986bd22a1f80e07adaab3e4ccc233c71b1924f8438bd04b842a59b018bdee152ca25d8b0db86e9d05977111da724c5cb3c6725af5b1a4ee4f94b825e6c939da041da102ec3f84cf522241a2e56ea54cc1cd9ac417a9ea0bc45ddb49af5a0dd700e7ef1b8d91dc9d4faf352c57e372ad8dd21cb2 ed58527c44f61ef8737b1c07ba3e7b4ea0d4cb17396cce950d6a0ee735552e12aa88b82491aeac6105857a535de1ff8a7b3bb9e19b260f1d7e212b14ef8b55c44cf0c7948eff571f99712cc0b0e313d8e7d4c826becf60bdb25851186c5103f5d4f26b9c6891df0631fc4f40b22b547e3ee596fe92f8e47a1b972f5cb7b f507c554df24421a7a36c636b4c06cc3b9eff8f93edf3aa8583558b4d716fe8a507b8e2fc01af93899e900099f76b4a67eb1b7ae69783aa04270016d697b9b255b03a1f812bf18ccb22d3738b0c860ac7b84f5b165689076b98a3a43b4dad1682e31c7230d905e2e2a2657806dd6d1fba78e1f61210dff99ca68892f14 cbe4b510d823e1e00ca642025f4a8bfd25b8d511d07eecb0809a21d00c60c6b089199b1679b00129c1a9c92b5f151d1382e6e27e081378b5efc9249b6b99005c0e4e30bbb6ac87b17294af4254f5dad9d052c3a167441107c301bc78e205ba95d1cae862d411981e92226bc73baf7ea63d575fd936a96c81564ac 8626ea396060b1bb425f7474a14a9dd5548e840151fe5ced7ce755c1964b58dff368bad519162abe49a25adfd95e08350989a0dd700e06e5318652f5ea25fbb45ba8c8fd738d566662a900a85841734de53c9dd487f89d91a97057eadac020e914d46e32ebf9a41c9f3f986a18e0fc6ba6c03cfb1d8222da1b8a3f88 1a4e7248ed30f95efc5cf78b8555cf577001ebaccb371b33a973d3c316b55d497a028be03f0eb4f4a4f59daf6ab29e832ed220d7ef7ad860ff3d11650285d8f86b42557b0b86a6a84da2cdd157b31c74bba8271c93fce75a03dea1c93b42847877b126f260a69973b57a93ef848dc10a26032e55dd723e98f97c6edd5 4108f19901aff366acca14bd4e8d7dca0212e66f288be4c0585543284bb2f072445b5b87bf57bab0eed0325fe050e0402ea3d89fe39121bdbc9244540a704ed9882a32193f0822251f616612796a58386fa4b8ec0d1b714adb890e0b1cc798808cdd1254135266d0a556934d9610785c630ff57924ec09a2adfa2d81 71169daaadc7f3bf693d7ac67381c5f07eac3e58ad585305504ad367fafe9ef94f61c14e05c9eff73d043808f0082f2f21ed6e2162403667d636623760b74f63ee4eba20555d0ba47784b6db14f69ed50e448af4596ba557b1faafee357efafd61a64883807be90e44e70e34bade7bac6901b172d8571ba09205605156 6aaafbfc7558d27dadf05316a137f734fe3e69bb8b2e280429460eed3c1c70a2e5e4f15e5b7ab6953101b93147baf55a176a97ed1db6c22b4cc7af00206362ccced0fde1789f7f11b5d9a1fae93a2232fdc7b1ed895f022f33ff7d58024a9f82482c5a4cf3d2460d5245a7d0509fb7d813adf4feaae058c663c9ae5c8d0d 33996766bfb47d95c57cd7d17a793656ccd79c31412460e2ec0e1a1f4c281036f0d909232f63143a83aac2a13992b0bdc37e31052868472b8f7720f2fdf2208a6dc2fa7430a234f9e7a2415b5b1bcb14840b79766a3ba3cc1ecbe401a9ce2da7f1cb218faa21f7d4f671e002883ee79b6de9c526b8238e29d61fbdad9 c93c320ae2f90539dfee2e58f4c52690e8d73a3aa1376ac4ea7d059a5add5aa72f42121c0e8320d97517d706d93e38f54dac676c96f4de9565f2ccf2e7bffbe4bcd443be925cdb604e4d02a38cd1c801f758cfb499e1384f09a8c4e8dde4de61bb6c353afaed98a2b135b0b9ec30177e51833f8a258336a5ba0518ecd ba04debb15089f3861deaa03ee7008e7b540962c623cace77041269251b86eefe1ec5c018116ae046457b0f074147c829264ccbd072942dfe39b935d36c8d8f6be51a0f223e9fc70899de83d95dfdc0e36a72db3d29471cd45674d5acb11e38bd8ae27aa535ae4d4c56d930d68dd7c3f602ff6ce38ebcd411c6d2d0 94023dd0d33dc028350ed0c73410ad820f8afce48018b0195df47b7aa96bcd6a36bc511a7a80bb5261254a470897b2fba8dc85e070d95196e54872c1f8428751c4cfc4bfcd5f232fd1f55265fa7945978075cb26e0111463783ad2c5017ecd4eee85398b1b0a936d37cf921160cff01ccd867cc52cc90b0722e59d0b2 58bd0473102c73c391a3131d3499c0a3afde637930e21c7307fa43f15892d7f0b7087396533abaf4bf2edcbb2dcc0809a59330fb7a6a9dab83fc7b67f13537c5aaf7b4930c7660a49ae81e414f5c39d4b2984fe12ca3af61a369856592e2de5f23864e59c3365123448bd4089836759380a31ba245eb80db627947c1 555806da37dc5bc1c612465e7930b4cd0944cb0fc6b1ae9209106db3afe3ba0ca1267c03b19bbc72811461211f999238f3ed828a165b7700dd1b8f9ed139019e166c8b40013b2161fe55ec106000bc80ed12a5a2ece2fc4c8ab0ca36edadc472e51edddc4a223a9de098eaede6aaf002dd7ccffe101e7ab8822da3 9cfdc41e9cc4a1073f363283468288662347b0c8964d178905d26eeaae55c3a6f4b3c692bbece0ff8f10e0496540d5467d4f9bd62d6e28f8108823106eeec0842f3664437bf526befcff5b8d4342a82df73b1e29f57ae0258170fb4a3819be5e8f4c105c5fd4e0f90a14bd2714f4f9d9cf0b0a82d30a47eccfe2cc5ef3307 32cd5773ceec6a066b4457602d43bcdbf6fec972fadf861fc7d278431317009a7c9ae285237cc9a2a1cf11cdaed6174f9ba4b8836a42a46b57422af4afbf6020b2e78a736a6a10eb4d5cf2863fdf5071639c8204b71646cd09d17c3af1dc6045a895f030aa7d91b7c01de26aa8301e9fc1ea0ecc19ab36bc24e0e6f95b 9c911e6461155c0806824f64b16428544e02778a7050e7f1035c0929dbf8f0266781e555d660e8a28568e89f330ecdbe1ec0431b018ee04c92b47a4746b86ccd514a4e79aab84db386a7491ccf2fefbb7b722b60a368bfb8c4ff7abeca755872b7241f0ca3863fdbbee35162eefc05d103501353f9796b7e91e5b4f3b 934d8b6c04f465bea8689c355e2951e8c298ba98e9ffb0adfafcb70c8ebd794371f141224507f3c26cac9487a2ab7c464be55d44ceeb890204c328bd690e01b3f5ae45441f71f35793f147dea822e4b0696c2b2dd6c912b69b2cbd4c5c9c13e9cc10218327bb326d475424d22a23b67cf65d5d949f5127fb34441403c fba7bbddc3781600ce1001bec57cb1dd513902a1dbf7bc7015887fd31f37339ad6d87138d30aa3bf6b8f6236f0a2eb429c743d6046372f79eba1404d364f52ed94a05666bbc75462022033455d40e58fd3426ef93a67333a88e12a8a29cfe0b7843456714e1c8719c08cd2f5f8d770b40fa7dd66a43aeba1d0c07f31f 4889ef4ae4822035d638b72692e8da446d29426a60fd41a71105fc14a5dbef6ff4a5361f36a4c5ecf6889c1033850b4592c9d50139ff2e78ac43baaf1b81e519d08538d122ea7247b03ffe9aa3dd1011cac3492cdf3994cdd908b103cb3ac28ca4e79af0552140e4418a584d87ef87e1a6dc211dd7f4bd1cf2a7058edc 8a8b73871ae3308fb198944883e4fbe7acfb2c0a9b12514392292229e6967452e8c2ccdd35d05652a95a56ecb69d3bd8f9b26c2c05c004722516c0ec9ff512bbf6e8eb2f568333b1ccb043c3016629a094f93fd300867232fc580d33cefafba39f3899d66f283e83d22ca6d82bbc8f0506d5b9ed175851d49a9bdbafd7 d595f23739d3744ee841e2f52f87d88cb6f14507059d735f51ddacd57f15f69701b00fb1ad8e484c7d915c91002d6ba5f79a42d5fc24aa37f6fa17c2d097635d86cc3be5220bc716e906a4dc5e2cb8775b3bd795c55b6666b819606e8cc178ad40d2ad9c8ba64ceb3ac7262d9eb9e1851b011fa2005568058f78a57f6 ea0366264ce571fb6611b6a95200a1f96cf2ada7cde4b9ed013d1285813158118b3c58eb57abca551cfc18a203682c01d7fbf657930f17651b29fea03603207efaf990d1d95bdeb3e9b2e6afec10c4e7dbd33a580ecbc1b9e95c689af0f5428e460f6b9d3b5e502d959dd84b6571d683ea584501a7d4b3f09c92e571 b5163e9b03e4977faa3302d181dd1ff8201813f6d13d86c75c9930235b984aa9f4cfee2dcf3cc892024e27d4a007358fd8f93224fb50e066d08d90e96d1ae54037e846cdbb2b5085e6b82b06d5ca0b5b300ec163b8b07090c609e681e9304d4bd5f266e35bfe452c8a0e7454fe6662ab8d0aa670cc7eeee20571cba 73686f1871e73bbd58e16ed141c15ff3e2594d92f8652944976f0ab90def266b50a69fdc2e86a7908f5c0b4f5b15975c07056e31eddfe0023543f78021051c57c20a9e95cfb239e7e03d1ebaa52dc69d4c5cccf109fc87496f3051da810d84d753f872a0d1813940317262fa3a10ca5b9188ea5c70fe58a7b1e698c329 ba1c9e5da859c7aac9a97926101907135473deec535dec8329aec3ef0bce0309a3afb509acf3f8c2552b35f36c3d984cd9ea675fe4527ea413a2e15afaf508f14a8d68114e219dd95fe254634bede77d961536175e42017354e146f9432e13f77d7322ff43d32b5b4da5fe110603546eed12ba9987a79204febad14ba eb624cd2d271a39e84b4f5a07eb133a83368e4630fe585b1a6f0982e0f5280a4116bc4970d154ed78d89d7d4bd6397cc3974a8e95475c372645cc4585196aab097ae5cd706a75ca27396668b19e9e503186a23bcdfe546884cb9d669cbb6d97b7208a9acbfa765f64cfb26247f2a3b748c86f4c5dd5f360933846c1 0fa7dafd38e14ade5ba16def8b3647c9d2d793e8499be1a8583bca751a33deeac19595e63fb694a9e8f8e8717421837dedab441fa8f573c3b1da4d4581bd80205cc9266e6529de4aef88dfe42ef1d3789659a3a90bbe8be1be0426976ef260a747b71d196c5fb2dcefff1972a3d6f37576013d35ece98e332bb83e46 4dc263ff0d50bfb859dbac58833d1a033e58653cc45f13508bf035714b275f93b61a4075e5c08859732812ab7b2526c5d79c6a549cce969f2edb4cd33cfe8d8111b3e906fe923b20230f51f79fac3a19ec20d5c6bfe573ad36c0dbe419db092542268fd3e7a94e61e413b8ad66b349c2da405b1fadb6dbe2fa1ab8ed8 6050c137de5069a62832533e84ede32a5abda79594384bf45acf5953bf17b16d8f4780cc53adf7062383ed379243e0b2277ac6cd22a7dffecedd15e3002625e78527ff7fa221c833f4494905bebf6312f2e78c8df1b7c9abb004b023c27ba71f998669c1cbda2ada1b94c3b92462cdf43bdfb22a1bc19fe2f75546ff071e e25b072072964e699cadc4e122dddc3128f6d6828d2bc2ec41292ca977bfb78629023a5de377763458c63fd8dff7d3cb6f7b0c1138326763d2a72f6cf8b2e0b0b08dbdad76acc3e12377264690ceaae0fcf06ad719a443e9a6fbef2e5afbc8ed45cb8e47f420a9a8233629686be4e0a4c4713a4944c40a96af462b890 9c6560437935ac2db464e15f8dae7e368017b9c442bf23fa2413533adc47be9f327e7483e879bc66f1c7c80d07cbf312152ad1d370adf8d84b41354af1993ad1a1b295d9c852ddd7887819b909b3af95b3709f9a39a593afe202782b857f3033e3848ee8a18fb9ec911e39828475a95f47f5976cf181f14422529dcc8 eb0b1e331813ffb1d0fcff618a1098556f52e7204124127d82cc8bf2d8e22b2463f2c1e957f299318009e8dd6a9abb6b477683eae294ca449f3b4e746797d34834fb8a28cce2cf2915a46044d3b8d1647ad83e2a2595c9913eb423c90833623b33cd0530f5abf7fbcd4d092464ef45472b15d125bbba62b791ce42089 30a5383a8007398b1c2d8aa88c4688146eecdcd2119182de81642d558e2d9bb1e000355bc011df26640df5fd2f5fa978d873803ee31608d8f0a13daaee51339c433516f5b2646b943f2d9994556a4907f71fa9b9b1bd409e27c74d652ce368727f6654564bc05e641b92882c37d52951c868aed090d4a30fc1127da 5a3057632c698d05dd554c25faf37c2d97fe9090480c0eef7bd3655e8385b04fda6c17881bcf93e4ab5e2e03750051e6a841f0c20ae15d44d421329e14ee699c03134f2b80d1e2ee585993d88cdfeee4ba9e1c0933bf1600c00b9ab32bc229b8701574a79a229385ed8349285c28317542d46c00bbdad413461a25 ca49934f351593e42fc9dc3a50791ad472a55f41c1fd810b9a8b65f5c15db4ac9c6556be149fde8f618c8aad1ea8517063c05a7d5d0421bb3c0b38508ed039e319990c4767aeca873c0cf56fcfe30f956610a57c804553863edf76844690295d6a63798cf0786f0fb8194f6a649e91b309de7ebad468a40600f790b5b3 7336c7d28ae898f3059073405956550dffd562d4a5b4a1ed434bf5e617be6e533a950856be57adcffe18c6e66b85cfa169e588a8e836b7b3e2854b3cd5960be8efd0d70fae654c126afa664c89933b9f068206636eec2fc6d23bd65321885315258c3df6e479630f82cf70c86abdebaae0b7b1833df48ad32e135f0c3 e7fa0d8601a3ecc6c71ed285a58b8128f113b1a32bb6494e1486f5e4b5858dc593824a412c3bff2c3e62b0a1e2cefa4bb1295cc7a2ae05a95d768b844376d709c02211aa1059025e758b51145873065066b126ffb296cae8ee28a9a3d033480687587d7b170c550b9c05b1598c6027c5f51e712976351de0b1b7ec d4816dd6b067dc9481d17c8e2ab86a646ab807ed6606f9546ab9572e9fa06f9e9ffda409439db319da3f592215a9d754adeab38ded79880a652e28589b0cdae98dcc093a22e77a6ce7996046b27e735401eabb1a5e3c5498f492c16b8a17cf13ed358a393617edde94b11601065ec4e8515543df10b3fb14823bab 3b37567f11e3f118f8614083a8f83f0901d4799796c3466233ab61d815f1fafaaf1ce196bcff490750bc860ecbd1b9addd43228b4ea5c3d14a1dbc3333820b65c08223d94840a57582c6dd3166c227f9f8c225489809430115a473674a6137e51ed4982e00de6aa450eb50d32d53cbb33e3534e030be0584bae021fc 43ca09f044435e5af2e0d9f14ae03680371a01194263aecb97166418a8cfb30ad1ce5a94fb5eccc43dc9f5a72ae432b1026f6f9959e0bfbee1ac077847f8cf8232cad19066c1860e1f26b61507b21545d11baa900e344120b80141b6f6667eaf295d31e501df2cbf36412e8e4c549e2ed2cfc017adf89b3ec509bd0802 74d9114b2439b0f66fe63f7e16b8f31a04759496e4eedcccac750dad79bfccf27522aed53c614becb85572bb93b9a1da7229397a0f5dc49cbe477487753ea50a2ecfb5ee841220330af70cf6aa1c9c2e5df69ab1c6552737ed6528202999525dfafe5ca637fe1cca3d43f03922d5bcd24f9f500f87f90592e20e8f86a6a 0ea0341122f01f48ba24346440712598030a2c7611789a8ed417dd5eb96bdb9f20f7c453ca6c8274dc2b2d0f0810d5b89fe1233b1c998fe92915f3a9432c465ea492e70f6d6bfd11e76832bc51abf2ac8369e8bc308ed8d04cd8b26af4841b925771a891f667c3ff844b6de11c50c2851531c56ab8ea513bb7c0d642d c231ac2c0cf7537b35b3b7d3b78f74fcc531958511e4bb68996024a0c1fc770232169b66884117b3687adcff31f098be07e0f2c7c50eefe7d524d7502ecf3e5dc2f402ada2cb5347a91e6c7a8d998e72be6ffc2cb7de96de228c921bb42421fed267447dea3f41a31b39924a7ba6c149b90793bc835c5a29ec63a1286 61fd84f2605e69958e1e33adbd2203c7374892c3f522832b49802b4480c29963c691b6d545cbb4b52f6f124835d37940186dc83c156580d07c286548756d39ddd721a0f45bab43f817c6df85bafeab7126fb20e3ae6338eca88987f3a94d88a28f0561166b6744b8cb535282ade71ab67e1895ace02376dda76166f 2a2c2815d0e0165b0fa050544175c59b44e0015b3472216bacd347e20df32d5ab44e75edaa01a20bc0387af471861624989089b2cc87e8053506a9796aa423e1304acb036578283eb0bc75e6a4e6a1531e5add6f1d7db84d12a9655e54986048932d0314a78854f423341df6e6e528d8fd215f9e166a5e9844cc4 cdb93ddf12d76bd27b6b71714d14ea2bb66a9aa68ec1f5231cd72309abdcb36c0d126f7ba2ccf78f4d277028e46194374e470f61c99352c9c3ae2e33868a7ea16be02d129879986b0b47354354bddedad8de1990b0ea8a4152cf2de1702c55737fc12606cdbcb9ea57a24767deacd6b29bc5d52229526af5e2c2ea 3f431af4714b540f27c1d2a0f20a38cdebee4284e83d50903c4630f454af30041c64ae99a59ff3f7ce7f7eec471890ba70ba0cacf7896aa73fa5c0fbeab90617ae599fade82a3e159407cdb5bb73e49a324594e49dafc2e2659209d8be616cc0e65158fdad9c36e0de1d4e8d074d8f46abd9cdd03ac49c8ad9f627e702 6458dbbe3fe76099b3fcbca7f598024b2ba4f564b9003114fc1fbd02d2ed157721d912b7e5f83bc93952824d255d8d877f2f17b82e326a5a13c6f5d4ad380ea3d6cda5e2e0af8485f2cc41e8fa559256b22eb92468462e450730719cfc737c223f789ab04da036ccc3144f30cef97e9d8c30cda713f3831c0119b258ffc 2750d0f465aed6b089a9165e81c9ab24344809aa51ed381605495b3f355025b28555863c8b4b427281bf1f46f14e932b83c1280f31a05bbbb2394193d87750199b916c39d5a96dad9153486646cc3de3813a694c5222ceeed5830ad4b042993a2c3746fc6012d9950b4aafaef5668af2433ba3698461a10cbda5cd 1f698ef4c2d6dde545e0c7dc5fbf4c9e4d416be1f89e199659193c26e69e03c956a73af059256860a96c4fd1f8f26e6581916806ac47e31c5e336c3e334ac88b960b06d6d0eca8fe5791bd967c594f96d327205da337e92eee0267b3c0cf61181f92ffdcfa9b64815ff326a06844afa08bbb119c48786190b068998a071 a7dd293f8c2b3b59d11d866681811441f8310bd5d6b538b9ff49f12982f95d07ad33d1ce61149a80022210359610deab5bffde318f7450f1b43c4314e61ea14cea7caf8c3b4ba641a48f761facf7ca9b203af57dc120a3175377306d70ca96c2085693361a0e81867bd2fae3ee2e89e6c95e515227903426a8b3f6d84 ee0e17aea5bb261bfce6405ded542f6e7e6c45d07b2ad30f0013ed1a49635d179d56f4f67cd164265ad8e1e2391b70ef711af9dc06aff5fd30af83ee3e6f4dcde78bebe701f517287006af33a72e535a8477710214acf1e388a2fb6c3d0299a5a4513883e990e8df8642b00648c8f4595fc8ce1dca289efcf82ed3f8e38f 7b2e179773b9699974f22fb76d99b0b4c0ad46e90e81958cc6220189e1aa0d2132c7079cf2a2abab28294958e2756c2257ac955241bf3b80449bf956c855426b95ff5bfeca33829d83475fcaf0c65d49d539ddc03eaab13e8b7854c56e4b0e5b74d7e2d75b95aac7d29255ebc6a596d62da8302fa1052643351437 45a228552edd8ef7c447dc40e178b11fe02c1de46185300006edbf02042a6c7eafbe42c46d4bf1e1563a02f748fc0876333b50d6d9e95d303c245aaeae2d0452badb41352967c5459ffac18c95999a45e58f2077cd1e41ea9d2fb781f92b5d14547de3ebe8ca859c0dd63e0a5fc38d065de0e903d17c0b07790d3f1c cc2346ca0d43bfcd9d2bf12ce496adddfdb914897b2b0d6f859b252c8ea34d3926655a75a4a3b58d7cc7fc201db3244afc4534bfdffc1f521f3bbeeede21b733e7e38282f5dce518549e41c14b466d0e118f7d3543cab26b75c7895762dc1dab83a6d26f166657810d95b3edfc5169b0325fb4b58f7f48d89460034ac7 6448f3ba65c5fc2584d3368863a474f47266aa97eb86707a761cc6b8a07e2b70c134c8ea26616f3ccded9f85cdc05f3b1ecbe43506f66ea14e5d3e46d30ac4f0635328292861035d32c1a78b98775effef7293a4508fd48ed1464b158399024426275b7ba8df8bc6668713bef3a9e1349b99347c9aa77670d42daa3fc bfafa06563ec83e39c288205b47d5dc4255bf467a8b7d7db98254c91e3e9fb3b81598c52f563d735b46d509de1b9d6a7d33a08753677be0af44ea70958d57970c474787601c51deb985d3c7466cf95402a78fdabea06838a0d90772bc6eb4486bfd9631d1ea9717ddd0bf53e4f4b45e4e46387a5992afc836bd8971 dda33d36291310dabc6408db8b999e9ab55b82ac56de49e82d3349ca876fcddf48d5bbcfed6f92077ac8eeba511809ac15800001
  • 17. 再度KaratsubaとFFTの両方を実装してみた Copyright 2015 FUJITSU LABORATORIES LTD.17 n×nビット多倍長整数乗算(固定ビット長)の処理時間 Intel Xeon X3480, 3.07GHz, 16GB memory, x86_64 asm, gcc on Cent OS 6.1 n bit 今回扱う範囲では、 FFTは追いつかなそう。 ※傾き Normal : 2.066, Karatsuba: 1.616, FFT:1.145, (理論値は各々2.0, 1.584, 1.0) clockcycle 1.E+00 1.E+01 1.E+02 1.E+03 1.E+04 1.E+05 1.E+06 1.E+07 1.E+08 1.E+09 1.E+10 1.E+11 16 128 1024 8192 65536 524288 4194304 33554432 FFT Karatsuba Normal 21638213bit 327bit
  • 18. 実装上の細かい点  Karatsuba  係数は整数演算でOK • 正標数係数多項式演算より圧倒的に高速  FFT  正標数係数多項式のFFTを利用  係数は63ビット素数を法とした剰余演算  整数の桁上がり制御にCRT(Chinese Remainder Theorem)を使用 • (63ビットFFT+CRT処理)×T回時間 < 63×Tビット係数FFT処理時間 • CRTの実装にはGarner’sアルゴリズム(前処理による高速化)を利用  n次多項式で演算可能な最大整数は62×(n/2) ビット Copyright 2015 FUJITSU LABORATORIES LTD. 次数 最大bit長 処理clock数 2 62 4802 4 124 12818 8 248 31948 16 496 75146 32 992 170240 64 1984 380742 18
  • 19. 準同型暗号処理性能  イデアル格子ベース Copyright 2013 FUJITSU LABORATORIES LTD. パラメータ (n, t) 鍵生成 (一括) 暗号化 秘匿内積 復号 暗号文 サイズ (2048, 37) 590 ms 6.33 ms 4.99 ms 2.53 ms 9.5 KB (4096, 37) 2250 ms 24.43 ms 14.91 ms 7.49 ms 19 KB (8192, 41) 8910 ms 105.92 ms 54.58 ms 27.36 ms 38 KB (16384, 45) 34610 ms 488.88 ms 217.65ms 108.96 ms 76 KB CPU: Intel Xeon X3480 at 3.07 GHz, 16 GBmem 先ほどの準同型暗号 (Ring-LWE版)と比較すると 19
  • 20.  Ring-LWE版  (暗号文:正標数係数多項式)  イデアル格子版  (暗号文:多倍長整数) パラメータ(n,q,t) 鍵生成 乗算 暗号化 秘匿内積 復号 暗号文サイズ (2048,61, 211) 3.50ms 1.56ms 3.65ms 5.31ms 3.47ms 31.2KB (4096,65, 212) 11.74ms 11.09ms 23.03ms 34.34ms 22.17ms 66.6KB (8192,69, 213) 24.82ms 23.17ms 48.07ms 71.25ms 46.35ms 141.3KB (16384,73, 214) 54.50ms 51.97ms 107.25ms 159.45ms 103.94ms 299.0KB パラメータ(n, t) 鍵生成 乗算 暗号化 秘匿内積 復号 暗号文サイズ (2048, 37) 590 ms 2.46 ms 6.33 ms 4.99 ms 2.53 ms 9.5 KB (4096, 37) 2250 ms 7.40 ms 24.43 ms 14.91 ms 7.49 ms 19.0 KB (8192, 41) 8910 ms 27.18 ms 105.92 ms 54.58 ms 27.36 ms 42.1 KB (16384, 45) 34610 ms 108.63 ms 488.88 ms 217.65ms 108.96 ms 92.4 KB 準同型暗号処理性能比較 約三桁の差! 処理性能は数倍以内 漸近的にはRing-LWEの方が高速 暗号文は イデアル格子 が小さい Copyright 2015 FUJITSU LABORATORIES LTD. 勝ち 負け 大敗 20
  • 21. 考察とまとめ  多項式と整数のKaratsuba, FFTを比較  (正標数)多項式: 801次(61ビット)、1563次(73ビット)で逆転  整数:約2000万ビット(約650万桁)程度で逆転  二種類の準同型暗号Ring-LWE版とイデアル格子版を比較  暗号化・復号・秘匿内積の処理性能は数倍以内 • 漸近的にはRing-LWE版の方が高速  暗号文サイズは、イデアル格子の方が小さく、約1/3程度  鍵スケジュール部の処理は、Ring-LWEの方が圧倒的(3桁)に速い Copyright 2015 FUJITSU LABORATORIES LTD.21
  • 22. Copyright 2015 FUJITSU LABORATORIES LTD.Copyright 2010 FUJITSU LIMITED2222