22
下山 武司 富士通研究所 セキュアコンピューティング研究部 準同型暗号の実装とMontgomery, Karatsuba, FFTの性能 Copyright 2015 FUJITSU LABORATORIES LTD. x86_64勉強会 2015315日、秋葉原UDX10F

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

Embed Size (px)

Citation preview

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

下山 武司

富士通研究所

セキュアコンピューティング研究部

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

Copyright 2015 FUJITSU LABORATORIES LTD.

x86_64勉強会2015年3月15日、秋葉原UDX10F

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

準同型暗号

研究背景

クラウドやビッグデータ分析などの進展に伴い、機密データ利活用とプライバシー保護の両立が大きな課題

準同型暗号

暗号化したまま加算や乗算が可能な暗号技術

クラウドコンピューティング分野への適用が期待

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

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

適用例1:医療データ統計計算

医療や生化学データといった機密情報のデータ分析などの複数の企業にまたがった情報活用を促進

医療費/特定疾病/健診結果/生活習慣等の統計計算等

病院A 健保B

有り :1

無し :0

メタボの人は肝炎になりやすい

暗号化したデータを送信するだけで、分析結果が得られる。

暗号化したまま内積計算

復号

暗号化 暗号化

内積=肝炎かつメタボの人の数

病歴等が見える

希少データから個人特定の可能性

Copyright 2013 FUJITSU LABORATORIES LTD.3

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

適用例2:秘匿生体認証

生体認証特徴コード

手のひら静脈画像から2048ビットの特徴コードを抽出し照合する認証技術

簡単な比較計算により、高速照合が可能

一つの生体情報から複数の特徴コードを生成できるため、生体認証サービスごとに異なる特徴コードを登録することが可能

準同型暗号で秘匿しながら照合処理が可能

画像正規化(位置・変形補正)

特徴コード生成

変換条件

01010010・・・’0’と’1’に変換

照合用特徴コード(2048ビット)

手のひら静脈画像

特徴成分抽出

Copyright 2013 FUJITSU LABORATORIES LTD.4

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

準同型暗号方式の種類(3タイプ)

Copyright 2015 FUJITSU LABORATORIES LTD.

完全準同型(任意の暗号演算)

Somewhat準同型(限定回の

暗号加算・乗算)

加算準同型(暗号加算のみ)

(RSA, ElGamal, Paillier,Okamoto-Uchiyama, etc.)

機能性(適用例)

集計(電子投票)

統計計算など(医療データ統計分析

・生体認証)

高度な分析(スパムメール対策)

処理時間

機能性の向上に伴い、処理時間が大きく劣化

遅い(暗号化に数分~数十分)

速い

5

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

SHE準同型暗号

SHE (Somewhat Homomorphic Encryption) 暗号化したまま、限定された演算可能回数(N)のデータ操作可能な暗号

基本演算の違う方式が、これまでにいくつか提案されている

• BGN(N = 1) :ペアリングの計算

• 整数ベース :代数的整数の計算

• イデアル格子ベース :多倍長整数を法とした整数計算

• Ring-LWEベース :正標数係数多項式演算

Copyright 2015 FUJITSU LABORATORIES LTD.

本発表のターゲット

6

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

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

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

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

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

実装上の注意点

基本演算:正標数係数多項式の乗算剰余処理

多項式乗算: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

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

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の方が速そう

Page 11: 準同型暗号の実装とMontgomery, Karatsuba, 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

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

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)で処理

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

準同型暗号処理性能

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

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

イデアル格子準同型暗号スキームの構成

鍵生成

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

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

暗号化処理の実装について

基本演算は、多倍長整数の乗算剰余と加算

暗号化:平文 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

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

法dの例 (n=2048, 75776bit)

Copyright 2015 FUJITSU LABORATORIES LTD.16

d=7f020536b6a58c9f478c20df108eec7328aed49a067532eea47bf81dcb2b6d9ebcd2f9a6aaeebdade4035e019e004b735af841b6f2d94d9e9adc1a61a0e98f861baff730f3fae3bf90249c6921cbb23c1bbe4ff1336d90c4a68572b9064a0240083da473263963cf7797ce119970de7d925c6402acd76643c478b7b21c9b9c8306883b2778d27992711c83c8db21a5cacee6b7aa99ef43a196831d93e544d05b48fbbaddc8d58d5a5ef19b6bf18e54847330160dc39f61cd8f002092e48b0399690a009418abcd6d348082eec04c031e165d35ecdcd9f40980eebde9fd6c647422577b54e47906c0db7b03a5320eb498449b938064146475652650e05fb9e653b0a9e15db5c18440f925d6553f897944ea781a0e93b926c66f336eb10ca81fadcbde8d66d3afb355ebdd038a3a3df36cbe8349be47c54aec9857720f03da02feb750e9c3ddd27f88e1052afe5aa437a1c95f53dc202982ef754cc54698cca4d24caeb997bfd39b0e1e3e7b5480d38cfa1ac3c19d5882dd349f4b198ab81b208f9f0417c25af0c426e32f6f77d703eb3c88e9e678b008ee78617a6c5109ea54ebd958e60328b9306da3641434d65ecdcd72d1c00b97f7f992ba8ef83b8782497bb255723e8ab4346ad6c9e7c59e9a2c151849a95fad7a3ae64ecd46a423cef00960d9bf2dd97b8df2c10a398be0da4154020eafcf8505cab63fb56cf8f38326baa9555b1b7928b13c0d1a8bbf7ea28518dc591f3f403fa93371e91f130f896edf8fcb49b28cb312663cc0ea0533cfba065b53a0043a46cdea4176887fd891c33f5d61b7eac56cd625fc58e6d7871458ea65a37f045c7e328de6c80630a68b2570695936648a17d8c84dbc0844c97bca86f62eda3d3108affe901a45e9b318570d3ab67919dfaca129538798631e648b8940a1a508ba0c13b73462c6cc750eab7e0373255f18ac0bfe3fe6a9951b9835112ea6b99f9d8a6f51d236c1b73d55fa526d665be43a74ee01083d9173fc0f8658242d2627b7a36d83af350dbdcb75be27afffbbd594e2d4d39fe42accc7304861dfb5ac15216a96506f6c03a69f57ad2fa536ea02de3c320bb7035e00f516a5819bca88a51fb2d8332489474c60112ff64b99ea0e54906829576c08860cd78b6b1e837d1dff922b64c0fcdbcca8e2479e68123f6b6fd0a28ef875b94f8de8471959a926461b401c83f56ad416de0fb31924b375a63e01a8ad150a8368a6de88537640b7401f8888c1117f9822c1eef6e6c20cb7ab5744d9ae7f808cfe74276d62b0997b0d28f1a58c2a5a550082afc80db797e89cc35841a568cab30f674ccf1faedab2964c6ee66dfd83bb346c0218d0395c1716565d704dd3d40545696ab6dbda51d2331a3a1ec03cdd7fc6e7ad014910b2b1bbde74141dfbcd3c9ca6483bef73a1d72d6edbfd780834657bd7ed213c0ce8a4e53a106cc0cfbf4a5bd2c001e127723d6bb86621ceb4525138f56bf141b39138c405393037752dddd0c559477bf92a4cf4fbed5f92e2382aa9126ef70816c094b5bb65217d702e72b6806ca917e94d9da283016eb3657aba0adf5e14c5d135b72d7dddb6f4ecebef38f8d331a89565155045802f651e8ef6039ae967c612fe758c94b0502552aad7dc54565445113f02c321b5d65279f70fdcdd2b497ff66d340010eeb23eb583a0fc404b7d22646de3095259cdac3a6ce9f3c08bc1e5274d58c996ccb2d19cd0b49475046b9663c907652ded3897224f89c868e0bcc28b2258cc351e240932d7cbce5176b214de31e9bf5f323299630d4b1e460c73896c2b06459558947230e9c775d59e1da9efc675521efe843046d39843d3c7d713fce461f73630926be30f9eab2967579083c600b5fcaf2daf15e76089bad02a352e20a51d0a41f40567851485ad1cd190b07efd91c64946695372c279b7eca987181cf277b98d6a5be4b159415900a4886fbe085dba038a48ff756d6be421728cd36487602b13aa8fb1d88af8a0257f184e2c09a412be2b662f2c4e319e8a3777526e0e1c1de9f82f145c4d3e5af9698c39997cd3e6526a747157a6a6cc1078ffdb75d7d6027058c0bb6ae1bb1fecb7d88369317fcd145e28201c79a8cf7330478131d021c062253ddd23a57e2bab8b6405d4ffb54e3e620a2ac759638993e75cd05c3f08d432f75efd597026e2dad056b35fe12f123fc2243043f5518c0442c1379c68dd911976b3d09874d8e2eb59e9fba3a103942812c4ff82c7be03b2dc2f81b26e7d54901ee920354fffd0c744670b05e9a19b986bd22a1f80e07adaab3e4ccc233c71b1924f8438bd04b842a59b018bdee152ca25d8b0db86e9d05977111da724c5cb3c6725af5b1a4ee4f94b825e6c939da041da102ec3f84cf522241a2e56ea54cc1cd9ac417a9ea0bc45ddb49af5a0dd700e7ef1b8d91dc9d4faf352c57e372ad8dd21cb2ed58527c44f61ef8737b1c07ba3e7b4ea0d4cb17396cce950d6a0ee735552e12aa88b82491aeac6105857a535de1ff8a7b3bb9e19b260f1d7e212b14ef8b55c44cf0c7948eff571f99712cc0b0e313d8e7d4c826becf60bdb25851186c5103f5d4f26b9c6891df0631fc4f40b22b547e3ee596fe92f8e47a1b972f5cb7bf507c554df24421a7a36c636b4c06cc3b9eff8f93edf3aa8583558b4d716fe8a507b8e2fc01af93899e900099f76b4a67eb1b7ae69783aa04270016d697b9b255b03a1f812bf18ccb22d3738b0c860ac7b84f5b165689076b98a3a43b4dad1682e31c7230d905e2e2a2657806dd6d1fba78e1f61210dff99ca68892f14cbe4b510d823e1e00ca642025f4a8bfd25b8d511d07eecb0809a21d00c60c6b089199b1679b00129c1a9c92b5f151d1382e6e27e081378b5efc9249b6b99005c0e4e30bbb6ac87b17294af4254f5dad9d052c3a167441107c301bc78e205ba95d1cae862d411981e92226bc73baf7ea63d575fd936a96c81564ac8626ea396060b1bb425f7474a14a9dd5548e840151fe5ced7ce755c1964b58dff368bad519162abe49a25adfd95e08350989a0dd700e06e5318652f5ea25fbb45ba8c8fd738d566662a900a85841734de53c9dd487f89d91a97057eadac020e914d46e32ebf9a41c9f3f986a18e0fc6ba6c03cfb1d8222da1b8a3f881a4e7248ed30f95efc5cf78b8555cf577001ebaccb371b33a973d3c316b55d497a028be03f0eb4f4a4f59daf6ab29e832ed220d7ef7ad860ff3d11650285d8f86b42557b0b86a6a84da2cdd157b31c74bba8271c93fce75a03dea1c93b42847877b126f260a69973b57a93ef848dc10a26032e55dd723e98f97c6edd54108f19901aff366acca14bd4e8d7dca0212e66f288be4c0585543284bb2f072445b5b87bf57bab0eed0325fe050e0402ea3d89fe39121bdbc9244540a704ed9882a32193f0822251f616612796a58386fa4b8ec0d1b714adb890e0b1cc798808cdd1254135266d0a556934d9610785c630ff57924ec09a2adfa2d8171169daaadc7f3bf693d7ac67381c5f07eac3e58ad585305504ad367fafe9ef94f61c14e05c9eff73d043808f0082f2f21ed6e2162403667d636623760b74f63ee4eba20555d0ba47784b6db14f69ed50e448af4596ba557b1faafee357efafd61a64883807be90e44e70e34bade7bac6901b172d8571ba092056051566aaafbfc7558d27dadf05316a137f734fe3e69bb8b2e280429460eed3c1c70a2e5e4f15e5b7ab6953101b93147baf55a176a97ed1db6c22b4cc7af00206362ccced0fde1789f7f11b5d9a1fae93a2232fdc7b1ed895f022f33ff7d58024a9f82482c5a4cf3d2460d5245a7d0509fb7d813adf4feaae058c663c9ae5c8d0d33996766bfb47d95c57cd7d17a793656ccd79c31412460e2ec0e1a1f4c281036f0d909232f63143a83aac2a13992b0bdc37e31052868472b8f7720f2fdf2208a6dc2fa7430a234f9e7a2415b5b1bcb14840b79766a3ba3cc1ecbe401a9ce2da7f1cb218faa21f7d4f671e002883ee79b6de9c526b8238e29d61fbdad9c93c320ae2f90539dfee2e58f4c52690e8d73a3aa1376ac4ea7d059a5add5aa72f42121c0e8320d97517d706d93e38f54dac676c96f4de9565f2ccf2e7bffbe4bcd443be925cdb604e4d02a38cd1c801f758cfb499e1384f09a8c4e8dde4de61bb6c353afaed98a2b135b0b9ec30177e51833f8a258336a5ba0518ecdba04debb15089f3861deaa03ee7008e7b540962c623cace77041269251b86eefe1ec5c018116ae046457b0f074147c829264ccbd072942dfe39b935d36c8d8f6be51a0f223e9fc70899de83d95dfdc0e36a72db3d29471cd45674d5acb11e38bd8ae27aa535ae4d4c56d930d68dd7c3f602ff6ce38ebcd411c6d2d094023dd0d33dc028350ed0c73410ad820f8afce48018b0195df47b7aa96bcd6a36bc511a7a80bb5261254a470897b2fba8dc85e070d95196e54872c1f8428751c4cfc4bfcd5f232fd1f55265fa7945978075cb26e0111463783ad2c5017ecd4eee85398b1b0a936d37cf921160cff01ccd867cc52cc90b0722e59d0b258bd0473102c73c391a3131d3499c0a3afde637930e21c7307fa43f15892d7f0b7087396533abaf4bf2edcbb2dcc0809a59330fb7a6a9dab83fc7b67f13537c5aaf7b4930c7660a49ae81e414f5c39d4b2984fe12ca3af61a369856592e2de5f23864e59c3365123448bd4089836759380a31ba245eb80db627947c1555806da37dc5bc1c612465e7930b4cd0944cb0fc6b1ae9209106db3afe3ba0ca1267c03b19bbc72811461211f999238f3ed828a165b7700dd1b8f9ed139019e166c8b40013b2161fe55ec106000bc80ed12a5a2ece2fc4c8ab0ca36edadc472e51edddc4a223a9de098eaede6aaf002dd7ccffe101e7ab8822da39cfdc41e9cc4a1073f363283468288662347b0c8964d178905d26eeaae55c3a6f4b3c692bbece0ff8f10e0496540d5467d4f9bd62d6e28f8108823106eeec0842f3664437bf526befcff5b8d4342a82df73b1e29f57ae0258170fb4a3819be5e8f4c105c5fd4e0f90a14bd2714f4f9d9cf0b0a82d30a47eccfe2cc5ef330732cd5773ceec6a066b4457602d43bcdbf6fec972fadf861fc7d278431317009a7c9ae285237cc9a2a1cf11cdaed6174f9ba4b8836a42a46b57422af4afbf6020b2e78a736a6a10eb4d5cf2863fdf5071639c8204b71646cd09d17c3af1dc6045a895f030aa7d91b7c01de26aa8301e9fc1ea0ecc19ab36bc24e0e6f95b9c911e6461155c0806824f64b16428544e02778a7050e7f1035c0929dbf8f0266781e555d660e8a28568e89f330ecdbe1ec0431b018ee04c92b47a4746b86ccd514a4e79aab84db386a7491ccf2fefbb7b722b60a368bfb8c4ff7abeca755872b7241f0ca3863fdbbee35162eefc05d103501353f9796b7e91e5b4f3b934d8b6c04f465bea8689c355e2951e8c298ba98e9ffb0adfafcb70c8ebd794371f141224507f3c26cac9487a2ab7c464be55d44ceeb890204c328bd690e01b3f5ae45441f71f35793f147dea822e4b0696c2b2dd6c912b69b2cbd4c5c9c13e9cc10218327bb326d475424d22a23b67cf65d5d949f5127fb34441403cfba7bbddc3781600ce1001bec57cb1dd513902a1dbf7bc7015887fd31f37339ad6d87138d30aa3bf6b8f6236f0a2eb429c743d6046372f79eba1404d364f52ed94a05666bbc75462022033455d40e58fd3426ef93a67333a88e12a8a29cfe0b7843456714e1c8719c08cd2f5f8d770b40fa7dd66a43aeba1d0c07f31f4889ef4ae4822035d638b72692e8da446d29426a60fd41a71105fc14a5dbef6ff4a5361f36a4c5ecf6889c1033850b4592c9d50139ff2e78ac43baaf1b81e519d08538d122ea7247b03ffe9aa3dd1011cac3492cdf3994cdd908b103cb3ac28ca4e79af0552140e4418a584d87ef87e1a6dc211dd7f4bd1cf2a7058edc8a8b73871ae3308fb198944883e4fbe7acfb2c0a9b12514392292229e6967452e8c2ccdd35d05652a95a56ecb69d3bd8f9b26c2c05c004722516c0ec9ff512bbf6e8eb2f568333b1ccb043c3016629a094f93fd300867232fc580d33cefafba39f3899d66f283e83d22ca6d82bbc8f0506d5b9ed175851d49a9bdbafd7d595f23739d3744ee841e2f52f87d88cb6f14507059d735f51ddacd57f15f69701b00fb1ad8e484c7d915c91002d6ba5f79a42d5fc24aa37f6fa17c2d097635d86cc3be5220bc716e906a4dc5e2cb8775b3bd795c55b6666b819606e8cc178ad40d2ad9c8ba64ceb3ac7262d9eb9e1851b011fa2005568058f78a57f6ea0366264ce571fb6611b6a95200a1f96cf2ada7cde4b9ed013d1285813158118b3c58eb57abca551cfc18a203682c01d7fbf657930f17651b29fea03603207efaf990d1d95bdeb3e9b2e6afec10c4e7dbd33a580ecbc1b9e95c689af0f5428e460f6b9d3b5e502d959dd84b6571d683ea584501a7d4b3f09c92e571b5163e9b03e4977faa3302d181dd1ff8201813f6d13d86c75c9930235b984aa9f4cfee2dcf3cc892024e27d4a007358fd8f93224fb50e066d08d90e96d1ae54037e846cdbb2b5085e6b82b06d5ca0b5b300ec163b8b07090c609e681e9304d4bd5f266e35bfe452c8a0e7454fe6662ab8d0aa670cc7eeee20571cba73686f1871e73bbd58e16ed141c15ff3e2594d92f8652944976f0ab90def266b50a69fdc2e86a7908f5c0b4f5b15975c07056e31eddfe0023543f78021051c57c20a9e95cfb239e7e03d1ebaa52dc69d4c5cccf109fc87496f3051da810d84d753f872a0d1813940317262fa3a10ca5b9188ea5c70fe58a7b1e698c329ba1c9e5da859c7aac9a97926101907135473deec535dec8329aec3ef0bce0309a3afb509acf3f8c2552b35f36c3d984cd9ea675fe4527ea413a2e15afaf508f14a8d68114e219dd95fe254634bede77d961536175e42017354e146f9432e13f77d7322ff43d32b5b4da5fe110603546eed12ba9987a79204febad14baeb624cd2d271a39e84b4f5a07eb133a83368e4630fe585b1a6f0982e0f5280a4116bc4970d154ed78d89d7d4bd6397cc3974a8e95475c372645cc4585196aab097ae5cd706a75ca27396668b19e9e503186a23bcdfe546884cb9d669cbb6d97b7208a9acbfa765f64cfb26247f2a3b748c86f4c5dd5f360933846c10fa7dafd38e14ade5ba16def8b3647c9d2d793e8499be1a8583bca751a33deeac19595e63fb694a9e8f8e8717421837dedab441fa8f573c3b1da4d4581bd80205cc9266e6529de4aef88dfe42ef1d3789659a3a90bbe8be1be0426976ef260a747b71d196c5fb2dcefff1972a3d6f37576013d35ece98e332bb83e464dc263ff0d50bfb859dbac58833d1a033e58653cc45f13508bf035714b275f93b61a4075e5c08859732812ab7b2526c5d79c6a549cce969f2edb4cd33cfe8d8111b3e906fe923b20230f51f79fac3a19ec20d5c6bfe573ad36c0dbe419db092542268fd3e7a94e61e413b8ad66b349c2da405b1fadb6dbe2fa1ab8ed86050c137de5069a62832533e84ede32a5abda79594384bf45acf5953bf17b16d8f4780cc53adf7062383ed379243e0b2277ac6cd22a7dffecedd15e3002625e78527ff7fa221c833f4494905bebf6312f2e78c8df1b7c9abb004b023c27ba71f998669c1cbda2ada1b94c3b92462cdf43bdfb22a1bc19fe2f75546ff071ee25b072072964e699cadc4e122dddc3128f6d6828d2bc2ec41292ca977bfb78629023a5de377763458c63fd8dff7d3cb6f7b0c1138326763d2a72f6cf8b2e0b0b08dbdad76acc3e12377264690ceaae0fcf06ad719a443e9a6fbef2e5afbc8ed45cb8e47f420a9a8233629686be4e0a4c4713a4944c40a96af462b8909c6560437935ac2db464e15f8dae7e368017b9c442bf23fa2413533adc47be9f327e7483e879bc66f1c7c80d07cbf312152ad1d370adf8d84b41354af1993ad1a1b295d9c852ddd7887819b909b3af95b3709f9a39a593afe202782b857f3033e3848ee8a18fb9ec911e39828475a95f47f5976cf181f14422529dcc8eb0b1e331813ffb1d0fcff618a1098556f52e7204124127d82cc8bf2d8e22b2463f2c1e957f299318009e8dd6a9abb6b477683eae294ca449f3b4e746797d34834fb8a28cce2cf2915a46044d3b8d1647ad83e2a2595c9913eb423c90833623b33cd0530f5abf7fbcd4d092464ef45472b15d125bbba62b791ce4208930a5383a8007398b1c2d8aa88c4688146eecdcd2119182de81642d558e2d9bb1e000355bc011df26640df5fd2f5fa978d873803ee31608d8f0a13daaee51339c433516f5b2646b943f2d9994556a4907f71fa9b9b1bd409e27c74d652ce368727f6654564bc05e641b92882c37d52951c868aed090d4a30fc1127da5a3057632c698d05dd554c25faf37c2d97fe9090480c0eef7bd3655e8385b04fda6c17881bcf93e4ab5e2e03750051e6a841f0c20ae15d44d421329e14ee699c03134f2b80d1e2ee585993d88cdfeee4ba9e1c0933bf1600c00b9ab32bc229b8701574a79a229385ed8349285c28317542d46c00bbdad413461a25ca49934f351593e42fc9dc3a50791ad472a55f41c1fd810b9a8b65f5c15db4ac9c6556be149fde8f618c8aad1ea8517063c05a7d5d0421bb3c0b38508ed039e319990c4767aeca873c0cf56fcfe30f956610a57c804553863edf76844690295d6a63798cf0786f0fb8194f6a649e91b309de7ebad468a40600f790b5b37336c7d28ae898f3059073405956550dffd562d4a5b4a1ed434bf5e617be6e533a950856be57adcffe18c6e66b85cfa169e588a8e836b7b3e2854b3cd5960be8efd0d70fae654c126afa664c89933b9f068206636eec2fc6d23bd65321885315258c3df6e479630f82cf70c86abdebaae0b7b1833df48ad32e135f0c3e7fa0d8601a3ecc6c71ed285a58b8128f113b1a32bb6494e1486f5e4b5858dc593824a412c3bff2c3e62b0a1e2cefa4bb1295cc7a2ae05a95d768b844376d709c02211aa1059025e758b51145873065066b126ffb296cae8ee28a9a3d033480687587d7b170c550b9c05b1598c6027c5f51e712976351de0b1b7ecd4816dd6b067dc9481d17c8e2ab86a646ab807ed6606f9546ab9572e9fa06f9e9ffda409439db319da3f592215a9d754adeab38ded79880a652e28589b0cdae98dcc093a22e77a6ce7996046b27e735401eabb1a5e3c5498f492c16b8a17cf13ed358a393617edde94b11601065ec4e8515543df10b3fb14823bab3b37567f11e3f118f8614083a8f83f0901d4799796c3466233ab61d815f1fafaaf1ce196bcff490750bc860ecbd1b9addd43228b4ea5c3d14a1dbc3333820b65c08223d94840a57582c6dd3166c227f9f8c225489809430115a473674a6137e51ed4982e00de6aa450eb50d32d53cbb33e3534e030be0584bae021fc43ca09f044435e5af2e0d9f14ae03680371a01194263aecb97166418a8cfb30ad1ce5a94fb5eccc43dc9f5a72ae432b1026f6f9959e0bfbee1ac077847f8cf8232cad19066c1860e1f26b61507b21545d11baa900e344120b80141b6f6667eaf295d31e501df2cbf36412e8e4c549e2ed2cfc017adf89b3ec509bd080274d9114b2439b0f66fe63f7e16b8f31a04759496e4eedcccac750dad79bfccf27522aed53c614becb85572bb93b9a1da7229397a0f5dc49cbe477487753ea50a2ecfb5ee841220330af70cf6aa1c9c2e5df69ab1c6552737ed6528202999525dfafe5ca637fe1cca3d43f03922d5bcd24f9f500f87f90592e20e8f86a6a0ea0341122f01f48ba24346440712598030a2c7611789a8ed417dd5eb96bdb9f20f7c453ca6c8274dc2b2d0f0810d5b89fe1233b1c998fe92915f3a9432c465ea492e70f6d6bfd11e76832bc51abf2ac8369e8bc308ed8d04cd8b26af4841b925771a891f667c3ff844b6de11c50c2851531c56ab8ea513bb7c0d642dc231ac2c0cf7537b35b3b7d3b78f74fcc531958511e4bb68996024a0c1fc770232169b66884117b3687adcff31f098be07e0f2c7c50eefe7d524d7502ecf3e5dc2f402ada2cb5347a91e6c7a8d998e72be6ffc2cb7de96de228c921bb42421fed267447dea3f41a31b39924a7ba6c149b90793bc835c5a29ec63a128661fd84f2605e69958e1e33adbd2203c7374892c3f522832b49802b4480c29963c691b6d545cbb4b52f6f124835d37940186dc83c156580d07c286548756d39ddd721a0f45bab43f817c6df85bafeab7126fb20e3ae6338eca88987f3a94d88a28f0561166b6744b8cb535282ade71ab67e1895ace02376dda76166f2a2c2815d0e0165b0fa050544175c59b44e0015b3472216bacd347e20df32d5ab44e75edaa01a20bc0387af471861624989089b2cc87e8053506a9796aa423e1304acb036578283eb0bc75e6a4e6a1531e5add6f1d7db84d12a9655e54986048932d0314a78854f423341df6e6e528d8fd215f9e166a5e9844cc4cdb93ddf12d76bd27b6b71714d14ea2bb66a9aa68ec1f5231cd72309abdcb36c0d126f7ba2ccf78f4d277028e46194374e470f61c99352c9c3ae2e33868a7ea16be02d129879986b0b47354354bddedad8de1990b0ea8a4152cf2de1702c55737fc12606cdbcb9ea57a24767deacd6b29bc5d52229526af5e2c2ea3f431af4714b540f27c1d2a0f20a38cdebee4284e83d50903c4630f454af30041c64ae99a59ff3f7ce7f7eec471890ba70ba0cacf7896aa73fa5c0fbeab90617ae599fade82a3e159407cdb5bb73e49a324594e49dafc2e2659209d8be616cc0e65158fdad9c36e0de1d4e8d074d8f46abd9cdd03ac49c8ad9f627e7026458dbbe3fe76099b3fcbca7f598024b2ba4f564b9003114fc1fbd02d2ed157721d912b7e5f83bc93952824d255d8d877f2f17b82e326a5a13c6f5d4ad380ea3d6cda5e2e0af8485f2cc41e8fa559256b22eb92468462e450730719cfc737c223f789ab04da036ccc3144f30cef97e9d8c30cda713f3831c0119b258ffc2750d0f465aed6b089a9165e81c9ab24344809aa51ed381605495b3f355025b28555863c8b4b427281bf1f46f14e932b83c1280f31a05bbbb2394193d87750199b916c39d5a96dad9153486646cc3de3813a694c5222ceeed5830ad4b042993a2c3746fc6012d9950b4aafaef5668af2433ba3698461a10cbda5cd1f698ef4c2d6dde545e0c7dc5fbf4c9e4d416be1f89e199659193c26e69e03c956a73af059256860a96c4fd1f8f26e6581916806ac47e31c5e336c3e334ac88b960b06d6d0eca8fe5791bd967c594f96d327205da337e92eee0267b3c0cf61181f92ffdcfa9b64815ff326a06844afa08bbb119c48786190b068998a071a7dd293f8c2b3b59d11d866681811441f8310bd5d6b538b9ff49f12982f95d07ad33d1ce61149a80022210359610deab5bffde318f7450f1b43c4314e61ea14cea7caf8c3b4ba641a48f761facf7ca9b203af57dc120a3175377306d70ca96c2085693361a0e81867bd2fae3ee2e89e6c95e515227903426a8b3f6d84ee0e17aea5bb261bfce6405ded542f6e7e6c45d07b2ad30f0013ed1a49635d179d56f4f67cd164265ad8e1e2391b70ef711af9dc06aff5fd30af83ee3e6f4dcde78bebe701f517287006af33a72e535a8477710214acf1e388a2fb6c3d0299a5a4513883e990e8df8642b00648c8f4595fc8ce1dca289efcf82ed3f8e38f7b2e179773b9699974f22fb76d99b0b4c0ad46e90e81958cc6220189e1aa0d2132c7079cf2a2abab28294958e2756c2257ac955241bf3b80449bf956c855426b95ff5bfeca33829d83475fcaf0c65d49d539ddc03eaab13e8b7854c56e4b0e5b74d7e2d75b95aac7d29255ebc6a596d62da8302fa105264335143745a228552edd8ef7c447dc40e178b11fe02c1de46185300006edbf02042a6c7eafbe42c46d4bf1e1563a02f748fc0876333b50d6d9e95d303c245aaeae2d0452badb41352967c5459ffac18c95999a45e58f2077cd1e41ea9d2fb781f92b5d14547de3ebe8ca859c0dd63e0a5fc38d065de0e903d17c0b07790d3f1ccc2346ca0d43bfcd9d2bf12ce496adddfdb914897b2b0d6f859b252c8ea34d3926655a75a4a3b58d7cc7fc201db3244afc4534bfdffc1f521f3bbeeede21b733e7e38282f5dce518549e41c14b466d0e118f7d3543cab26b75c7895762dc1dab83a6d26f166657810d95b3edfc5169b0325fb4b58f7f48d89460034ac76448f3ba65c5fc2584d3368863a474f47266aa97eb86707a761cc6b8a07e2b70c134c8ea26616f3ccded9f85cdc05f3b1ecbe43506f66ea14e5d3e46d30ac4f0635328292861035d32c1a78b98775effef7293a4508fd48ed1464b158399024426275b7ba8df8bc6668713bef3a9e1349b99347c9aa77670d42daa3fcbfafa06563ec83e39c288205b47d5dc4255bf467a8b7d7db98254c91e3e9fb3b81598c52f563d735b46d509de1b9d6a7d33a08753677be0af44ea70958d57970c474787601c51deb985d3c7466cf95402a78fdabea06838a0d90772bc6eb4486bfd9631d1ea9717ddd0bf53e4f4b45e4e46387a5992afc836bd8971dda33d36291310dabc6408db8b999e9ab55b82ac56de49e82d3349ca876fcddf48d5bbcfed6f92077ac8eeba511809ac15800001

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

再度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

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

実装上の細かい点

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

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

準同型暗号処理性能

イデアル格子ベース

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

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

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

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

考察とまとめ

多項式と整数のKaratsuba, FFTを比較

(正標数)多項式: 801次(61ビット)、1563次(73ビット)で逆転

整数:約2000万ビット(約650万桁)程度で逆転

二種類の準同型暗号Ring-LWE版とイデアル格子版を比較

暗号化・復号・秘匿内積の処理性能は数倍以内

• 漸近的にはRing-LWE版の方が高速

暗号文サイズは、イデアル格子の方が小さく、約1/3程度

鍵スケジュール部の処理は、Ring-LWEの方が圧倒的(3桁)に速い

Copyright 2015 FUJITSU LABORATORIES LTD.21

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

Copyright 2015 FUJITSU LABORATORIES LTD.Copyright 2010 FUJITSU LIMITED2222