石井将大
2015年3月27日
暗号のソフトウェア実装
(対称ペアリングのSIMD実装,GPU並列実装)
サイボウズ・ラボユース成果発表会
サイボウズ・ラボユース成果発表会2015/03/27
自己紹介
2
• 石井将大(いしい まさひろ)
- 奈良先端科学技術大学院大学 (NAIST) 情報科学研究科 D2
- サイボウズ・ラボユース(第三期)
‣ メンター:光成さん
- 研究トピック
‣ ペアリング暗号,暗号アルゴリズムの高速実装 (CPU, GPU)
- INRIA / LORIA, CARAMEL project team 滞在 (Feb. 2014 - Jan. 2015)
‣ Mentor: Jérémie Detrey, Pierrick Gaudry
‣ ペアリングアルゴリズム開発,楕円曲線法実装
サイボウズ・ラボユース成果発表会2015/03/27
アウトライン
3
• ラボユースでの取り組み
- 乗算の高速化
- ペアリングのSIMD実装
- ペアリングのGPU並列実装
• 今後の研究・やりたいこと
サイボウズ・ラボユース成果発表会2015/03/27
登場人物・背景
4
• ペアリング暗号?
- 公開 暗号方式の一つ
‣ メジャーな公開 暗号方式
✓ RSA: 素因数分解
✓ 楕円曲線暗号:楕円曲線上の離散対数問題
- ペアリングそのもの
‣ (超)楕円曲線上に定義される双線形写像
• ターゲット
- ペアリング(対称ペアリング)
‣ シンプル・高速
‣ 現在,暗号としてほぼ使えない程脆弱化
T
e(xP, Q) = e(P, Q)x
= e(P, xQ)
e: E(Fpk )[r] E(Fpk )[r] µr Fpk
サイボウズ・ラボユース成果発表会2015/03/27 5
ペアリングの計算
• ペアリングは2元体 (binary field) の拡大体上に,

ある超楕円曲線を用いて定義される
• 上の算術
- 多項式基底による表現
‣ 多項式の加算・乗算
➡ XOR, ビットシフト
• 拡大体
- 基礎体 上の有限 (12) 次ベクトル空間
‣ 基礎体上の加算・乗算を何度も何度も行う
T
T : JacC(F2m ) JacC(F2m ) µr F212m
基礎体 拡大体
F2m
a =
m 1
i=0
aixi
, ai = 0 or 1
F2m
の元:(1011...001) と書ける (m-bit)F2m
T
基礎体上の乗算の高速化
サイボウズ・ラボユース成果発表会2015/03/27
上の乗算
6
F2487
• Left-to-right comb window method
- Comb method
‣ word sizeのshiftの有効性を利用.1 bit shiftはword size分に

抑えられる
- Window method
‣ 事前計算により,シフト幅がwindow size倍
a486 · · · · · · a64a63 · · · a1a0
b486 · · · · · · b64b63 · · · b1b0
a0(b486 · · · b1b0)
+)
a64(b486 · · · b1b0)
a1(b486 · · · b1b0)
...
a65(b486 · · · b1b0)
...
bit shifting
window method (window size: 3)
a486 · · · · · · a64a63 · · · a1a0
b486 · · · · · · b64b63 · · · b1b0
(a2a1a0)(b486 · · · b1b0)
(a66a65a64)(b486 · · · b1b0)
+) ...
事前計算として8回の乗算とその結果を格納
(akx2
+ ajx + ai)(b486x486
+ · · · + b1x + b0)
b
comb method (word size: 64)
サイボウズ・ラボユース成果発表会2015/03/27 7
• Intel Ivy BridgeアーキテクチャCPU (Core i7-3520M) 上のSIMD実装
- SSE2, 4.1, 4.2
- 128-bit整数演算命令が主
• 乗算手法
- shift addition
‣ 1bitずつ多項式をずらしながら加算.486回のshift
- comb method
‣ 1 bit shiftは128回
- window method
‣ comb methodと合わせてW-bit shiftはceil(128 / window size) 回
- loadによるshiftを用いたcomb method, window method
‣ uint8_tの配列にオペランドを格納し,適当なindexを指定してレジスタ
へ格納することにより8n-bit shiftを行う

1 bit shiftは8回,或いはwindow methodと連携してceil(8 / W) - 1 回
の乗算の高速化(シフト演算の削減)F2487
サイボウズ・ラボユース成果発表会2015/03/27 8
結果(SIMD実装)
OS Windows 8.1
CPU Intel Core i7-3520M, 2.90GHz, 2 cores
Memory DDR3-1333, 5.60 GB
Compiler Visual C++ 2013 Preview, gcc 4.8.2
SIMD instruction SSE2, 4.1, 4.2
methods of multiplication VC++ gcc
comb method 160 150
comb method with load shift 131 104
window method (window size: 6) 50 41
window method with load shift
(window size: 4) 49 33
timings of pairing (ms)T (m = 487)
• 先行研究の最新結果(対称ペアリング)
‣ 16.4 million clock cycles (Core 2 processor), m=439
‣ 2.75 million clock cycles (Core i5 32nm processor), m=367
まだ遅い
サイボウズ・ラボユース成果発表会2015/03/27
複数ペアリングのGPU並列実装
9
• GPGPU: GPUを用いた汎用系算の並列化,その技術
- シミュレーション,暗号解読,暗号実装
• CUDA: NVIDIAが提供する開発環境
• 複数ペアリングの並列実装
- ペアリング等暗号関数単体のGPUによる並列化は基本的に非効率
- 関数型暗号等のプロトコルは多くのペアリング計算が必要
- 各ペアリングを独立に並列計算し,それらの体上の演算も並列化(二重)
‣ 乗算はLeft-to-right comb window methodによる
- 国際会議へ投稿:

“Parallel GPU Implementation of Pairing over Fields of Characteristic
Two” (ICNCS2014)
T
サイボウズ・ラボユース成果発表会2015/03/27 10
基礎体のサイズに対する計算時間の比較
• Total time in the case of is seem to have more
effect on parallelization compared to the case of
0
10
20
30
40
50
60
0 200 400 600 800 1000 1200
totaltime(sec)
number of pairings
extension degree m=487
GPU, stw-basis
GPU, s0w-basis
CPU, stw-basis
CPU, s0w-basis
0
50
100
150
200
250
300
350
0 200 400 600 800 1000 1200
totaltime(sec) number of pairings
extension degree m=967
GPU, stw-basis
GPU, s0w-basis
CPU, stw-basis
CPU, s0w-basis
m = 487 m = 967
CPU CPU
GPU
GPU
Total time to compute multiple pairingsT
m = 487
m = 967
サイボウズ・ラボユース成果発表会2015/03/27 11
GPU並列実装によるscalability
• The timing per pairing goes down as increasing number of pairings
• The timing per pairing over is less than the estimation
- The order of growth in algorithm for pairing is roughly
0
100
200
300
400
500
600
700
800
900
1000
200 400 600 800 1000 1200
computationtimeperpairing(ms)
number of pairings
32
m=487, stw-basis
m=487, s0w-basis
m=967, stw-basis
m=967, s0w-basis
total time (m=487, stw-basis) multiplied by (967/487)3
(967/487)3
7.83
T
F2967
O(m3
)
サイボウズ・ラボユース成果発表会2015/03/27
脆弱化・次世代セキュリティレベル
12
• セキュリティレベルの低下
- 小標数の体におけるDLPを解くアルゴリズムに

大きなブレークスルー [Jou13, BGJT14]
‣対称ペアリングのセキュリティレベルが致命的に下がり実質使用不可
[Jou13] A. Joux: A New Index Calculus Algorithm with Complexity L(1/4 + o(1)) in Very Small Characteristic, 2013
[BGJT14] R. Barbulescu, P. Gaudry, A. Joux, and E. Thomé: A Heuristic Quasi-Polynomial Algorithm for Discrete Logarithm in Finite Fields of Small Characteristic
楕円曲線上のDLP 有限体上のDLP
e: E(Fpk )[r] E(Fpk )[r] µr Fpk
各セキュレティレベルにおける 長の比較
セキュリティレベル Factoring Modulus DL Key DL Group Elliptic Curve
80 (Legacy) 1248 1248 160 160
128 (2011 - 2030) 3248 3248 256 256
192 (>> 2030) 7936 7936 384 384
256 (>>> 2030) 15424 15424 512 512
ECRYPT II and NIST Recommendations on “Keylength”: http://www.keylength.com
サイボウズ・ラボユース成果発表会2015/03/27
今後
13
• 自身の研究目的
- 種数2の超楕円曲線を用いた次世代のセキュリティレベル (> 192-bit) の

安全かつ高速なペアリングの構成(> 500-bitサイズの素体等)
‣ ペアリングに適した曲線の決定,ペアリングアルゴリズムの改良
‣ CPU, GPUの高速実装検証によるセキュリティパラメタの決定
• Challenges
- Haswell CPUによる最適SIMD実装
- Super-optimalなWeilペアリングの構成
- (複数)ペアリングのPTXコードによるGPU並列実装最適化
‣ CUDA上のJITアセンブラ的なものを作ってみたい...

サイボウズ・ラボユース成果発表会資料