Upload
mitsunari-shigeo
View
1.237
Download
1
Embed Size (px)
Citation preview
下山 武司
富士通研究所
セキュアコンピューティング研究部
準同型暗号の実装と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
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
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
実装上の注意点
基本演算:正標数係数多項式の乗算剰余処理
多項式乗算: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
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
FFT801次 (61bit prime)
1563次 (73bit prime)
多項式の次数
正標数係数多項式乗算
cloc
k cy
cle
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の方が速そう
実装上の細かい点
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×b2. 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), %raxmulq (b)movq %rax, %rcxmovq %rdx, %rbximulq (m), %raxmulq (p)add (-1), %rcxadc %rdx, %rbxmovq %rbx, (ret)
※左コードは16clock程度(同様にp < 295では36clock程度)
Montgomery乗算(p<263)のコード例
11
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)で処理
準同型暗号処理性能
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 [email protected] in [1], [1] Naehrig, et.al., “Can homomorphic encryption be practical?”, CCSW2011
13
イデアル格子準同型暗号スキームの構成
鍵生成
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
0100
1
nr
rd
B
021
201
110
vvv
vvvvvv
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
暗号化処理の実装について
基本演算は、多倍長整数の乗算剰余と加算
暗号化:平文 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
法dの例 (n=2048, 75776bit)
Copyright 2015 FUJITSU LABORATORIES LTD.16
d=7f020536b6a58c9f478c20df108eec7328aed49a067532eea47bf81dcb2b6d9ebcd2f9a6aaeebdade4035e019e004b735af841b6f2d94d9e9adc1a61a0e98f861baff730f3fae3bf90249c6921cbb23c1bbe4ff1336d90c4a68572b9064a0240083da473263963cf7797ce119970de7d925c6402acd76643c478b7b21c9b9c8306883b2778d27992711c83c8db21a5cacee6b7aa99ef43a196831d93e544d05b48fbbaddc8d58d5a5ef19b6bf18e54847330160dc39f61cd8f002092e48b0399690a009418abcd6d348082eec04c031e165d35ecdcd9f40980eebde9fd6c647422577b54e47906c0db7b03a5320eb498449b938064146475652650e05fb9e653b0a9e15db5c18440f925d6553f897944ea781a0e93b926c66f336eb10ca81fadcbde8d66d3afb355ebdd038a3a3df36cbe8349be47c54aec9857720f03da02feb750e9c3ddd27f88e1052afe5aa437a1c95f53dc202982ef754cc54698cca4d24caeb997bfd39b0e1e3e7b5480d38cfa1ac3c19d5882dd349f4b198ab81b208f9f0417c25af0c426e32f6f77d703eb3c88e9e678b008ee78617a6c5109ea54ebd958e60328b9306da3641434d65ecdcd72d1c00b97f7f992ba8ef83b8782497bb255723e8ab4346ad6c9e7c59e9a2c151849a95fad7a3ae64ecd46a423cef00960d9bf2dd97b8df2c10a398be0da4154020eafcf8505cab63fb56cf8f38326baa9555b1b7928b13c0d1a8bbf7ea28518dc591f3f403fa93371e91f130f896edf8fcb49b28cb312663cc0ea0533cfba065b53a0043a46cdea4176887fd891c33f5d61b7eac56cd625fc58e6d7871458ea65a37f045c7e328de6c80630a68b2570695936648a17d8c84dbc0844c97bca86f62eda3d3108affe901a45e9b318570d3ab67919dfaca129538798631e648b8940a1a508ba0c13b73462c6cc750eab7e0373255f18ac0bfe3fe6a9951b9835112ea6b99f9d8a6f51d236c1b73d55fa526d665be43a74ee01083d9173fc0f8658242d2627b7a36d83af350dbdcb75be27afffbbd594e2d4d39fe42accc7304861dfb5ac15216a96506f6c03a69f57ad2fa536ea02de3c320bb7035e00f516a5819bca88a51fb2d8332489474c60112ff64b99ea0e54906829576c08860cd78b6b1e837d1dff922b64c0fcdbcca8e2479e68123f6b6fd0a28ef875b94f8de8471959a926461b401c83f56ad416de0fb31924b375a63e01a8ad150a8368a6de88537640b7401f8888c1117f9822c1eef6e6c20cb7ab5744d9ae7f808cfe74276d62b0997b0d28f1a58c2a5a550082afc80db797e89cc35841a568cab30f674ccf1faedab2964c6ee66dfd83bb346c0218d0395c1716565d704dd3d40545696ab6dbda51d2331a3a1ec03cdd7fc6e7ad014910b2b1bbde74141dfbcd3c9ca6483bef73a1d72d6edbfd780834657bd7ed213c0ce8a4e53a106cc0cfbf4a5bd2c001e127723d6bb86621ceb4525138f56bf141b39138c405393037752dddd0c559477bf92a4cf4fbed5f92e2382aa9126ef70816c094b5bb65217d702e72b6806ca917e94d9da283016eb3657aba0adf5e14c5d135b72d7dddb6f4ecebef38f8d331a89565155045802f651e8ef6039ae967c612fe758c94b0502552aad7dc54565445113f02c321b5d65279f70fdcdd2b497ff66d340010eeb23eb583a0fc404b7d22646de3095259cdac3a6ce9f3c08bc1e5274d58c996ccb2d19cd0b49475046b9663c907652ded3897224f89c868e0bcc28b2258cc351e240932d7cbce5176b214de31e9bf5f323299630d4b1e460c73896c2b06459558947230e9c775d59e1da9efc675521efe843046d39843d3c7d713fce461f73630926be30f9eab2967579083c600b5fcaf2daf15e76089bad02a352e20a51d0a41f40567851485ad1cd190b07efd91c64946695372c279b7eca987181cf277b98d6a5be4b159415900a4886fbe085dba038a48ff756d6be421728cd36487602b13aa8fb1d88af8a0257f184e2c09a412be2b662f2c4e319e8a3777526e0e1c1de9f82f145c4d3e5af9698c39997cd3e6526a747157a6a6cc1078ffdb75d7d6027058c0bb6ae1bb1fecb7d88369317fcd145e28201c79a8cf7330478131d021c062253ddd23a57e2bab8b6405d4ffb54e3e620a2ac759638993e75cd05c3f08d432f75efd597026e2dad056b35fe12f123fc2243043f5518c0442c1379c68dd911976b3d09874d8e2eb59e9fba3a103942812c4ff82c7be03b2dc2f81b26e7d54901ee920354fffd0c744670b05e9a19b986bd22a1f80e07adaab3e4ccc233c71b1924f8438bd04b842a59b018bdee152ca25d8b0db86e9d05977111da724c5cb3c6725af5b1a4ee4f94b825e6c939da041da102ec3f84cf522241a2e56ea54cc1cd9ac417a9ea0bc45ddb49af5a0dd700e7ef1b8d91dc9d4faf352c57e372ad8dd21cb2ed58527c44f61ef8737b1c07ba3e7b4ea0d4cb17396cce950d6a0ee735552e12aa88b82491aeac6105857a535de1ff8a7b3bb9e19b260f1d7e212b14ef8b55c44cf0c7948eff571f99712cc0b0e313d8e7d4c826becf60bdb25851186c5103f5d4f26b9c6891df0631fc4f40b22b547e3ee596fe92f8e47a1b972f5cb7bf507c554df24421a7a36c636b4c06cc3b9eff8f93edf3aa8583558b4d716fe8a507b8e2fc01af93899e900099f76b4a67eb1b7ae69783aa04270016d697b9b255b03a1f812bf18ccb22d3738b0c860ac7b84f5b165689076b98a3a43b4dad1682e31c7230d905e2e2a2657806dd6d1fba78e1f61210dff99ca68892f14cbe4b510d823e1e00ca642025f4a8bfd25b8d511d07eecb0809a21d00c60c6b089199b1679b00129c1a9c92b5f151d1382e6e27e081378b5efc9249b6b99005c0e4e30bbb6ac87b17294af4254f5dad9d052c3a167441107c301bc78e205ba95d1cae862d411981e92226bc73baf7ea63d575fd936a96c81564ac8626ea396060b1bb425f7474a14a9dd5548e840151fe5ced7ce755c1964b58dff368bad519162abe49a25adfd95e08350989a0dd700e06e5318652f5ea25fbb45ba8c8fd738d566662a900a85841734de53c9dd487f89d91a97057eadac020e914d46e32ebf9a41c9f3f986a18e0fc6ba6c03cfb1d8222da1b8a3f881a4e7248ed30f95efc5cf78b8555cf577001ebaccb371b33a973d3c316b55d497a028be03f0eb4f4a4f59daf6ab29e832ed220d7ef7ad860ff3d11650285d8f86b42557b0b86a6a84da2cdd157b31c74bba8271c93fce75a03dea1c93b42847877b126f260a69973b57a93ef848dc10a26032e55dd723e98f97c6edd54108f19901aff366acca14bd4e8d7dca0212e66f288be4c0585543284bb2f072445b5b87bf57bab0eed0325fe050e0402ea3d89fe39121bdbc9244540a704ed9882a32193f0822251f616612796a58386fa4b8ec0d1b714adb890e0b1cc798808cdd1254135266d0a556934d9610785c630ff57924ec09a2adfa2d8171169daaadc7f3bf693d7ac67381c5f07eac3e58ad585305504ad367fafe9ef94f61c14e05c9eff73d043808f0082f2f21ed6e2162403667d636623760b74f63ee4eba20555d0ba47784b6db14f69ed50e448af4596ba557b1faafee357efafd61a64883807be90e44e70e34bade7bac6901b172d8571ba092056051566aaafbfc7558d27dadf05316a137f734fe3e69bb8b2e280429460eed3c1c70a2e5e4f15e5b7ab6953101b93147baf55a176a97ed1db6c22b4cc7af00206362ccced0fde1789f7f11b5d9a1fae93a2232fdc7b1ed895f022f33ff7d58024a9f82482c5a4cf3d2460d5245a7d0509fb7d813adf4feaae058c663c9ae5c8d0d33996766bfb47d95c57cd7d17a793656ccd79c31412460e2ec0e1a1f4c281036f0d909232f63143a83aac2a13992b0bdc37e31052868472b8f7720f2fdf2208a6dc2fa7430a234f9e7a2415b5b1bcb14840b79766a3ba3cc1ecbe401a9ce2da7f1cb218faa21f7d4f671e002883ee79b6de9c526b8238e29d61fbdad9c93c320ae2f90539dfee2e58f4c52690e8d73a3aa1376ac4ea7d059a5add5aa72f42121c0e8320d97517d706d93e38f54dac676c96f4de9565f2ccf2e7bffbe4bcd443be925cdb604e4d02a38cd1c801f758cfb499e1384f09a8c4e8dde4de61bb6c353afaed98a2b135b0b9ec30177e51833f8a258336a5ba0518ecdba04debb15089f3861deaa03ee7008e7b540962c623cace77041269251b86eefe1ec5c018116ae046457b0f074147c829264ccbd072942dfe39b935d36c8d8f6be51a0f223e9fc70899de83d95dfdc0e36a72db3d29471cd45674d5acb11e38bd8ae27aa535ae4d4c56d930d68dd7c3f602ff6ce38ebcd411c6d2d094023dd0d33dc028350ed0c73410ad820f8afce48018b0195df47b7aa96bcd6a36bc511a7a80bb5261254a470897b2fba8dc85e070d95196e54872c1f8428751c4cfc4bfcd5f232fd1f55265fa7945978075cb26e0111463783ad2c5017ecd4eee85398b1b0a936d37cf921160cff01ccd867cc52cc90b0722e59d0b258bd0473102c73c391a3131d3499c0a3afde637930e21c7307fa43f15892d7f0b7087396533abaf4bf2edcbb2dcc0809a59330fb7a6a9dab83fc7b67f13537c5aaf7b4930c7660a49ae81e414f5c39d4b2984fe12ca3af61a369856592e2de5f23864e59c3365123448bd4089836759380a31ba245eb80db627947c1555806da37dc5bc1c612465e7930b4cd0944cb0fc6b1ae9209106db3afe3ba0ca1267c03b19bbc72811461211f999238f3ed828a165b7700dd1b8f9ed139019e166c8b40013b2161fe55ec106000bc80ed12a5a2ece2fc4c8ab0ca36edadc472e51edddc4a223a9de098eaede6aaf002dd7ccffe101e7ab8822da39cfdc41e9cc4a1073f363283468288662347b0c8964d178905d26eeaae55c3a6f4b3c692bbece0ff8f10e0496540d5467d4f9bd62d6e28f8108823106eeec0842f3664437bf526befcff5b8d4342a82df73b1e29f57ae0258170fb4a3819be5e8f4c105c5fd4e0f90a14bd2714f4f9d9cf0b0a82d30a47eccfe2cc5ef330732cd5773ceec6a066b4457602d43bcdbf6fec972fadf861fc7d278431317009a7c9ae285237cc9a2a1cf11cdaed6174f9ba4b8836a42a46b57422af4afbf6020b2e78a736a6a10eb4d5cf2863fdf5071639c8204b71646cd09d17c3af1dc6045a895f030aa7d91b7c01de26aa8301e9fc1ea0ecc19ab36bc24e0e6f95b9c911e6461155c0806824f64b16428544e02778a7050e7f1035c0929dbf8f0266781e555d660e8a28568e89f330ecdbe1ec0431b018ee04c92b47a4746b86ccd514a4e79aab84db386a7491ccf2fefbb7b722b60a368bfb8c4ff7abeca755872b7241f0ca3863fdbbee35162eefc05d103501353f9796b7e91e5b4f3b934d8b6c04f465bea8689c355e2951e8c298ba98e9ffb0adfafcb70c8ebd794371f141224507f3c26cac9487a2ab7c464be55d44ceeb890204c328bd690e01b3f5ae45441f71f35793f147dea822e4b0696c2b2dd6c912b69b2cbd4c5c9c13e9cc10218327bb326d475424d22a23b67cf65d5d949f5127fb34441403cfba7bbddc3781600ce1001bec57cb1dd513902a1dbf7bc7015887fd31f37339ad6d87138d30aa3bf6b8f6236f0a2eb429c743d6046372f79eba1404d364f52ed94a05666bbc75462022033455d40e58fd3426ef93a67333a88e12a8a29cfe0b7843456714e1c8719c08cd2f5f8d770b40fa7dd66a43aeba1d0c07f31f4889ef4ae4822035d638b72692e8da446d29426a60fd41a71105fc14a5dbef6ff4a5361f36a4c5ecf6889c1033850b4592c9d50139ff2e78ac43baaf1b81e519d08538d122ea7247b03ffe9aa3dd1011cac3492cdf3994cdd908b103cb3ac28ca4e79af0552140e4418a584d87ef87e1a6dc211dd7f4bd1cf2a7058edc8a8b73871ae3308fb198944883e4fbe7acfb2c0a9b12514392292229e6967452e8c2ccdd35d05652a95a56ecb69d3bd8f9b26c2c05c004722516c0ec9ff512bbf6e8eb2f568333b1ccb043c3016629a094f93fd300867232fc580d33cefafba39f3899d66f283e83d22ca6d82bbc8f0506d5b9ed175851d49a9bdbafd7d595f23739d3744ee841e2f52f87d88cb6f14507059d735f51ddacd57f15f69701b00fb1ad8e484c7d915c91002d6ba5f79a42d5fc24aa37f6fa17c2d097635d86cc3be5220bc716e906a4dc5e2cb8775b3bd795c55b6666b819606e8cc178ad40d2ad9c8ba64ceb3ac7262d9eb9e1851b011fa2005568058f78a57f6ea0366264ce571fb6611b6a95200a1f96cf2ada7cde4b9ed013d1285813158118b3c58eb57abca551cfc18a203682c01d7fbf657930f17651b29fea03603207efaf990d1d95bdeb3e9b2e6afec10c4e7dbd33a580ecbc1b9e95c689af0f5428e460f6b9d3b5e502d959dd84b6571d683ea584501a7d4b3f09c92e571b5163e9b03e4977faa3302d181dd1ff8201813f6d13d86c75c9930235b984aa9f4cfee2dcf3cc892024e27d4a007358fd8f93224fb50e066d08d90e96d1ae54037e846cdbb2b5085e6b82b06d5ca0b5b300ec163b8b07090c609e681e9304d4bd5f266e35bfe452c8a0e7454fe6662ab8d0aa670cc7eeee20571cba73686f1871e73bbd58e16ed141c15ff3e2594d92f8652944976f0ab90def266b50a69fdc2e86a7908f5c0b4f5b15975c07056e31eddfe0023543f78021051c57c20a9e95cfb239e7e03d1ebaa52dc69d4c5cccf109fc87496f3051da810d84d753f872a0d1813940317262fa3a10ca5b9188ea5c70fe58a7b1e698c329ba1c9e5da859c7aac9a97926101907135473deec535dec8329aec3ef0bce0309a3afb509acf3f8c2552b35f36c3d984cd9ea675fe4527ea413a2e15afaf508f14a8d68114e219dd95fe254634bede77d961536175e42017354e146f9432e13f77d7322ff43d32b5b4da5fe110603546eed12ba9987a79204febad14baeb624cd2d271a39e84b4f5a07eb133a83368e4630fe585b1a6f0982e0f5280a4116bc4970d154ed78d89d7d4bd6397cc3974a8e95475c372645cc4585196aab097ae5cd706a75ca27396668b19e9e503186a23bcdfe546884cb9d669cbb6d97b7208a9acbfa765f64cfb26247f2a3b748c86f4c5dd5f360933846c10fa7dafd38e14ade5ba16def8b3647c9d2d793e8499be1a8583bca751a33deeac19595e63fb694a9e8f8e8717421837dedab441fa8f573c3b1da4d4581bd80205cc9266e6529de4aef88dfe42ef1d3789659a3a90bbe8be1be0426976ef260a747b71d196c5fb2dcefff1972a3d6f37576013d35ece98e332bb83e464dc263ff0d50bfb859dbac58833d1a033e58653cc45f13508bf035714b275f93b61a4075e5c08859732812ab7b2526c5d79c6a549cce969f2edb4cd33cfe8d8111b3e906fe923b20230f51f79fac3a19ec20d5c6bfe573ad36c0dbe419db092542268fd3e7a94e61e413b8ad66b349c2da405b1fadb6dbe2fa1ab8ed86050c137de5069a62832533e84ede32a5abda79594384bf45acf5953bf17b16d8f4780cc53adf7062383ed379243e0b2277ac6cd22a7dffecedd15e3002625e78527ff7fa221c833f4494905bebf6312f2e78c8df1b7c9abb004b023c27ba71f998669c1cbda2ada1b94c3b92462cdf43bdfb22a1bc19fe2f75546ff071ee25b072072964e699cadc4e122dddc3128f6d6828d2bc2ec41292ca977bfb78629023a5de377763458c63fd8dff7d3cb6f7b0c1138326763d2a72f6cf8b2e0b0b08dbdad76acc3e12377264690ceaae0fcf06ad719a443e9a6fbef2e5afbc8ed45cb8e47f420a9a8233629686be4e0a4c4713a4944c40a96af462b8909c6560437935ac2db464e15f8dae7e368017b9c442bf23fa2413533adc47be9f327e7483e879bc66f1c7c80d07cbf312152ad1d370adf8d84b41354af1993ad1a1b295d9c852ddd7887819b909b3af95b3709f9a39a593afe202782b857f3033e3848ee8a18fb9ec911e39828475a95f47f5976cf181f14422529dcc8eb0b1e331813ffb1d0fcff618a1098556f52e7204124127d82cc8bf2d8e22b2463f2c1e957f299318009e8dd6a9abb6b477683eae294ca449f3b4e746797d34834fb8a28cce2cf2915a46044d3b8d1647ad83e2a2595c9913eb423c90833623b33cd0530f5abf7fbcd4d092464ef45472b15d125bbba62b791ce4208930a5383a8007398b1c2d8aa88c4688146eecdcd2119182de81642d558e2d9bb1e000355bc011df26640df5fd2f5fa978d873803ee31608d8f0a13daaee51339c433516f5b2646b943f2d9994556a4907f71fa9b9b1bd409e27c74d652ce368727f6654564bc05e641b92882c37d52951c868aed090d4a30fc1127da5a3057632c698d05dd554c25faf37c2d97fe9090480c0eef7bd3655e8385b04fda6c17881bcf93e4ab5e2e03750051e6a841f0c20ae15d44d421329e14ee699c03134f2b80d1e2ee585993d88cdfeee4ba9e1c0933bf1600c00b9ab32bc229b8701574a79a229385ed8349285c28317542d46c00bbdad413461a25ca49934f351593e42fc9dc3a50791ad472a55f41c1fd810b9a8b65f5c15db4ac9c6556be149fde8f618c8aad1ea8517063c05a7d5d0421bb3c0b38508ed039e319990c4767aeca873c0cf56fcfe30f956610a57c804553863edf76844690295d6a63798cf0786f0fb8194f6a649e91b309de7ebad468a40600f790b5b37336c7d28ae898f3059073405956550dffd562d4a5b4a1ed434bf5e617be6e533a950856be57adcffe18c6e66b85cfa169e588a8e836b7b3e2854b3cd5960be8efd0d70fae654c126afa664c89933b9f068206636eec2fc6d23bd65321885315258c3df6e479630f82cf70c86abdebaae0b7b1833df48ad32e135f0c3e7fa0d8601a3ecc6c71ed285a58b8128f113b1a32bb6494e1486f5e4b5858dc593824a412c3bff2c3e62b0a1e2cefa4bb1295cc7a2ae05a95d768b844376d709c02211aa1059025e758b51145873065066b126ffb296cae8ee28a9a3d033480687587d7b170c550b9c05b1598c6027c5f51e712976351de0b1b7ecd4816dd6b067dc9481d17c8e2ab86a646ab807ed6606f9546ab9572e9fa06f9e9ffda409439db319da3f592215a9d754adeab38ded79880a652e28589b0cdae98dcc093a22e77a6ce7996046b27e735401eabb1a5e3c5498f492c16b8a17cf13ed358a393617edde94b11601065ec4e8515543df10b3fb14823bab3b37567f11e3f118f8614083a8f83f0901d4799796c3466233ab61d815f1fafaaf1ce196bcff490750bc860ecbd1b9addd43228b4ea5c3d14a1dbc3333820b65c08223d94840a57582c6dd3166c227f9f8c225489809430115a473674a6137e51ed4982e00de6aa450eb50d32d53cbb33e3534e030be0584bae021fc43ca09f044435e5af2e0d9f14ae03680371a01194263aecb97166418a8cfb30ad1ce5a94fb5eccc43dc9f5a72ae432b1026f6f9959e0bfbee1ac077847f8cf8232cad19066c1860e1f26b61507b21545d11baa900e344120b80141b6f6667eaf295d31e501df2cbf36412e8e4c549e2ed2cfc017adf89b3ec509bd080274d9114b2439b0f66fe63f7e16b8f31a04759496e4eedcccac750dad79bfccf27522aed53c614becb85572bb93b9a1da7229397a0f5dc49cbe477487753ea50a2ecfb5ee841220330af70cf6aa1c9c2e5df69ab1c6552737ed6528202999525dfafe5ca637fe1cca3d43f03922d5bcd24f9f500f87f90592e20e8f86a6a0ea0341122f01f48ba24346440712598030a2c7611789a8ed417dd5eb96bdb9f20f7c453ca6c8274dc2b2d0f0810d5b89fe1233b1c998fe92915f3a9432c465ea492e70f6d6bfd11e76832bc51abf2ac8369e8bc308ed8d04cd8b26af4841b925771a891f667c3ff844b6de11c50c2851531c56ab8ea513bb7c0d642dc231ac2c0cf7537b35b3b7d3b78f74fcc531958511e4bb68996024a0c1fc770232169b66884117b3687adcff31f098be07e0f2c7c50eefe7d524d7502ecf3e5dc2f402ada2cb5347a91e6c7a8d998e72be6ffc2cb7de96de228c921bb42421fed267447dea3f41a31b39924a7ba6c149b90793bc835c5a29ec63a128661fd84f2605e69958e1e33adbd2203c7374892c3f522832b49802b4480c29963c691b6d545cbb4b52f6f124835d37940186dc83c156580d07c286548756d39ddd721a0f45bab43f817c6df85bafeab7126fb20e3ae6338eca88987f3a94d88a28f0561166b6744b8cb535282ade71ab67e1895ace02376dda76166f2a2c2815d0e0165b0fa050544175c59b44e0015b3472216bacd347e20df32d5ab44e75edaa01a20bc0387af471861624989089b2cc87e8053506a9796aa423e1304acb036578283eb0bc75e6a4e6a1531e5add6f1d7db84d12a9655e54986048932d0314a78854f423341df6e6e528d8fd215f9e166a5e9844cc4cdb93ddf12d76bd27b6b71714d14ea2bb66a9aa68ec1f5231cd72309abdcb36c0d126f7ba2ccf78f4d277028e46194374e470f61c99352c9c3ae2e33868a7ea16be02d129879986b0b47354354bddedad8de1990b0ea8a4152cf2de1702c55737fc12606cdbcb9ea57a24767deacd6b29bc5d52229526af5e2c2ea3f431af4714b540f27c1d2a0f20a38cdebee4284e83d50903c4630f454af30041c64ae99a59ff3f7ce7f7eec471890ba70ba0cacf7896aa73fa5c0fbeab90617ae599fade82a3e159407cdb5bb73e49a324594e49dafc2e2659209d8be616cc0e65158fdad9c36e0de1d4e8d074d8f46abd9cdd03ac49c8ad9f627e7026458dbbe3fe76099b3fcbca7f598024b2ba4f564b9003114fc1fbd02d2ed157721d912b7e5f83bc93952824d255d8d877f2f17b82e326a5a13c6f5d4ad380ea3d6cda5e2e0af8485f2cc41e8fa559256b22eb92468462e450730719cfc737c223f789ab04da036ccc3144f30cef97e9d8c30cda713f3831c0119b258ffc2750d0f465aed6b089a9165e81c9ab24344809aa51ed381605495b3f355025b28555863c8b4b427281bf1f46f14e932b83c1280f31a05bbbb2394193d87750199b916c39d5a96dad9153486646cc3de3813a694c5222ceeed5830ad4b042993a2c3746fc6012d9950b4aafaef5668af2433ba3698461a10cbda5cd1f698ef4c2d6dde545e0c7dc5fbf4c9e4d416be1f89e199659193c26e69e03c956a73af059256860a96c4fd1f8f26e6581916806ac47e31c5e336c3e334ac88b960b06d6d0eca8fe5791bd967c594f96d327205da337e92eee0267b3c0cf61181f92ffdcfa9b64815ff326a06844afa08bbb119c48786190b068998a071a7dd293f8c2b3b59d11d866681811441f8310bd5d6b538b9ff49f12982f95d07ad33d1ce61149a80022210359610deab5bffde318f7450f1b43c4314e61ea14cea7caf8c3b4ba641a48f761facf7ca9b203af57dc120a3175377306d70ca96c2085693361a0e81867bd2fae3ee2e89e6c95e515227903426a8b3f6d84ee0e17aea5bb261bfce6405ded542f6e7e6c45d07b2ad30f0013ed1a49635d179d56f4f67cd164265ad8e1e2391b70ef711af9dc06aff5fd30af83ee3e6f4dcde78bebe701f517287006af33a72e535a8477710214acf1e388a2fb6c3d0299a5a4513883e990e8df8642b00648c8f4595fc8ce1dca289efcf82ed3f8e38f7b2e179773b9699974f22fb76d99b0b4c0ad46e90e81958cc6220189e1aa0d2132c7079cf2a2abab28294958e2756c2257ac955241bf3b80449bf956c855426b95ff5bfeca33829d83475fcaf0c65d49d539ddc03eaab13e8b7854c56e4b0e5b74d7e2d75b95aac7d29255ebc6a596d62da8302fa105264335143745a228552edd8ef7c447dc40e178b11fe02c1de46185300006edbf02042a6c7eafbe42c46d4bf1e1563a02f748fc0876333b50d6d9e95d303c245aaeae2d0452badb41352967c5459ffac18c95999a45e58f2077cd1e41ea9d2fb781f92b5d14547de3ebe8ca859c0dd63e0a5fc38d065de0e903d17c0b07790d3f1ccc2346ca0d43bfcd9d2bf12ce496adddfdb914897b2b0d6f859b252c8ea34d3926655a75a4a3b58d7cc7fc201db3244afc4534bfdffc1f521f3bbeeede21b733e7e38282f5dce518549e41c14b466d0e118f7d3543cab26b75c7895762dc1dab83a6d26f166657810d95b3edfc5169b0325fb4b58f7f48d89460034ac76448f3ba65c5fc2584d3368863a474f47266aa97eb86707a761cc6b8a07e2b70c134c8ea26616f3ccded9f85cdc05f3b1ecbe43506f66ea14e5d3e46d30ac4f0635328292861035d32c1a78b98775effef7293a4508fd48ed1464b158399024426275b7ba8df8bc6668713bef3a9e1349b99347c9aa77670d42daa3fcbfafa06563ec83e39c288205b47d5dc4255bf467a8b7d7db98254c91e3e9fb3b81598c52f563d735b46d509de1b9d6a7d33a08753677be0af44ea70958d57970c474787601c51deb985d3c7466cf95402a78fdabea06838a0d90772bc6eb4486bfd9631d1ea9717ddd0bf53e4f4b45e4e46387a5992afc836bd8971dda33d36291310dabc6408db8b999e9ab55b82ac56de49e82d3349ca876fcddf48d5bbcfed6f92077ac8eeba511809ac15800001
再度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)
cloc
k cy
cle
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
実装上の細かい点
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
準同型暗号処理性能
イデアル格子ベース
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
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
考察とまとめ
多項式と整数のKaratsuba, FFTを比較
(正標数)多項式: 801次(61ビット)、1563次(73ビット)で逆転
整数:約2000万ビット(約650万桁)程度で逆転
二種類の準同型暗号Ring-LWE版とイデアル格子版を比較
暗号化・復号・秘匿内積の処理性能は数倍以内
• 漸近的にはRing-LWE版の方が高速
暗号文サイズは、イデアル格子の方が小さく、約1/3程度
鍵スケジュール部の処理は、Ring-LWEの方が圧倒的(3桁)に速い
Copyright 2015 FUJITSU LABORATORIES LTD.21
Copyright 2015 FUJITSU LABORATORIES LTD.Copyright 2010 FUJITSU LIMITED2222