改ざん検知暗号minalpherの設計とivy bridge/haswellでの最適化
TRANSCRIPT
改ざん検知暗号Minalpherの設計とIvy Bridge/Haswellでの最適化
青木和麻呂
NTTセキュアプラットフォーム研究所
2015年 3月 15日@ x86/x64最適化勉強会 7
Copyright 2015 c©NTTセキュアプラットフォーム研究所 – p. 1/26
自己紹介NTT研究所に勤めてまる 20年です
学生時代から暗号一筋です
Camelliaとかいう暗号設計にも関わりました
プログラムを速くするのが好きです
Copyright 2015 c©NTTセキュアプラットフォーム研究所 – p. 2/26
発表内容Minalpherとは
改ざん検知暗号
x86 64アーキテクチャ
実装法比較
結果
まとめ
Copyright 2015 c©NTTセキュアプラットフォーム研究所 – p. 3/26
MinalpherとはAuthenticated Encryption with Associated
Data (AEAD)
CAESAR competitionへ応募
詳細はこのあとで
Copyright 2015 c©NTTセキュアプラットフォーム研究所 – p. 4/26
AE(AD)
authenticated encrypytion…認証暗号、認証付暗号、改ざん検知暗号
狭義の「暗号」は守秘機能のみ。改ざん防止機能ありと勘違い (?)
暗号に改ざん検知機能も欲しい。従来は「暗号+MAC」で実現。
「暗号&MAC」「暗号 thenMAC」「MACthen
暗号」で安全性が異なる。組合せも重要。
「完パケ」化→改ざん検知暗号
Copyright 2015 c©NTTセキュアプラットフォーム研究所 – p. 5/26
現在のAE
汎用結合: Enc-then-MAC
暗号利用モード: AES-GCM, AES-CCM,
ChaCha20 + Poly1305
TLS1.2から利用可。TLS1.3からはAE
必須。
AES-GCMはデータの上限が 64GB。弱鍵の問題もある。→CAESAR competition
Copyright 2015 c©NTTセキュアプラットフォーム研究所 – p. 6/26
CAESAR competition
「AES-GCMを越えるもの」を期待して始まった暗号技術評価プロジェクト
57応募方式。日本の組織が混じる応募は4方式。
既に 9方式が取り下げ。20程度の方式に安全性上の問題あり。
2014/ 3/15 応募締切り2015/ 3/15 2R候補発表2017/12/15 推薦方式発表
Copyright 2015 c©NTTセキュアプラットフォーム研究所 – p. 7/26
Minalpher再びNTT +三菱電機 +福井大学の研究者で設計。
暗号利用モードやブロック暗号だけでなく全部を設計。
誤利用耐性がある。Nonce Repetition (送信者側の問題)
Release of Unverified Plaintext (受信者側の問題)
Copyright 2015 c©NTTセキュアプラットフォーム研究所 – p. 8/26
実装面からの設計方針組み込み環境でROM容量少なく→ 4-bit
sbox (total 8B)
単位実行時間あたりたくさん混じって欲しい (x64)
256-bit XOR→ 256論理命令64-bit加算→およそ 384論理命令64-bit乗算→およそ 20000論理命令32×4-bit gather→≈512命令
pshufbで 4-bit gather (sbox)を使いたい!
Copyright 2015 c©NTTセキュアプラットフォーム研究所 – p. 9/26
モード部構成OCB + PMAC
ブロック暗号部分はEven-Mansour
Even-Mansourの鍵は、いわゆるoffset
(2iLの類)
Copyright 2015 c©NTTセキュアプラットフォーム研究所 – p. 10/26
モード部 (次スライドで拡大版)
P
ϕ1
M[1]
tag
C[1]
P
ϕm−1
M[m−1]
P
ϕm
M[m]
C[m−1] C[m]
P
ψ1
P
ψm−1
P
ψm′
Copyright 2015 c©NTTセキュアプラットフォーム研究所 – p. 11/26
モード部 (下半分は次スライド)
P
ϕ1
M[1]
C[1]
P
ϕm−1
M[m−1]
P
ϕm
M[m]
C[m−1] C[m]
P
ψ1
P
ψm−1
Copyright 2015 c©NTTセキュアプラットフォーム研究所 – p. 12/26
tag
C[1] C[m−1] C[m]
P
ψ1
P
ψm−1
P
ψm′
Copyright 2015 c©NTTセキュアプラットフォーム研究所 – p. 13/26
プリミティブ部概要256ビット入力、256ビット出力の置換
4-bit sboxを使ったSPN
17.5段
Copyright 2015 c©NTTセキュアプラットフォーム研究所 – p. 14/26
プリミティブ段関数
Ai
Bi
Ai-1
SN
SN
MC
MC
SR
SR-1
Ai-1
Bi-1
SN
Bi-1
SN
Ai-1
SR
Bi-1
SR
Ai-1
SM
Bi-1
SM
Ai-1
MC
Bi-1
MC
Ai-1
XM
Bi-1
XM
S T M XiXi-1
XiXi-1
E(i-1)
RCi-1
MC:
[
1101111001111011
]
SR:行中のnibble入れ換え
Copyright 2015 c©NTTセキュアプラットフォーム研究所 – p. 15/26
x86_64アーキテクチャ
世代 Bridge well
有効命令セット AVX AVX2
一般レジスタ ALU×3 ALU×4
SIMDレジスタ ALU×3 ALU×3
load 2 2
AVX SIMD整数命令は 128ビットxmm
AVX2 SIMD整数命令は 256ビットymm
Copyright 2015 c©NTTセキュアプラットフォーム研究所 – p. 16/26
段関数実装法考察SPNではT表実装が有効4 × 32ビット表の場合、load 64回∴最低でも 32 clock cycleは必要
SIMDのpshufb実装xmmレジスタではpshufb 4回ymmレジスタではpshufb 2回∴2 clock cycleで処理
⇒ pshufb実装を採用
Copyright 2015 c©NTTセキュアプラットフォーム研究所 – p. 17/26
pshufb実装pshufbで複数の 4-bit sboxを並列に引ける。
vpshufb xmm2, xmm0, xmm1
S(x) 0 4 8 F 1 5 E 9 2 7 A C B D 6 3 xmm0
input 0 0 1 3 C F D 2 3 D 6 E A A 3 6 xmm1
output 0 0 4 F B 3 D 8 F D E 6 A A F E xmm2
Hamburg, “Accelerating AES with Vector Permute Instructions,” CHES 2009
Copyright 2015 c©NTTセキュアプラットフォーム研究所 – p. 18/26
SIMD演算器とport
演算器 Ivy Bridge Haswell
SIMD Shuffle p1, p5 p5
SIMD Shift p1, p5 p0
SIMD Logical p0, p1, p5 p0, p1, p5
Copyright 2015 c©NTTセキュアプラットフォーム研究所 – p. 19/26
段関数実装に必要な命令
SN pshufbで計算
SR pshufbで計算
XM ◦ SM データ移動とpxor
MC データ移動とpxorで計算
定数加算 pxorで計算
Copyright 2015 c©NTTセキュアプラットフォーム研究所 – p. 20/26
Haswellでのデータ移動考察
2ブロック同時実装 MC中の左右データ入れ換えが不要に
4ブロック同時実装 XM ◦ SM のシフトが不要に
32ブロック同時実装 SRがデータ位置の読み換えに
Copyright 2015 c©NTTセキュアプラットフォーム研究所 – p. 21/26
Haswell理想スケジューリングでの性能
並列計算ブロック数 cpb
1 5.625
2 4.875
4 4.5
32 2.4375
※P ◦ P 相当の演算
Copyright 2015 c©NTTセキュアプラットフォーム研究所 – p. 22/26
Haswell 4-block実装実行段 次段
p5 p0 p1 p0 p11 S0 C3
2 R0 X37
3 S1 C0 M23
4 R1 M1 M0
5 S4 C1 M3
6 R4
7 S5 X04
8 R5
9 S2 X15 M45
10 R2 M01
11 S6 C2
12 R6
13 S7 X26 M6
14 R7 M2
15 S3 M67 M7
16 R3 M4 M5
Si: sboxRi: SRiCi: ⊕RCXij: XMMij: MCMi: MC
Copyright 2015 c©NTTセキュアプラットフォーム研究所 – p. 23/26
モード部の最適化いわゆるoffset updateについては、いわゆる 2倍算が必要。2倍算をSIMD的にまとめて行なったデータを準備しておくことにより、毎回のupdateは 3命令で実行できる。
tag値計算のためのPMAC的排他的論理和について、nibble⇔byte変換は、1ブロックにつき 1回の排他的論理和に置き換え可能。
Copyright 2015 c©NTTセキュアプラットフォーム研究所 – p. 24/26
結果 (cpb)
µ メッセージ長 (byte)
arch ‖ 31 63 1K-1 8K-1 64K-1
Ivy 1 25.21 19.58 14.40 14.05 14.05
Bridge 2 26.97 17.97 9.63 8.94 8.85
Has 1 25.47 19.66 14.00 13.69 13.65
-well 2 26.12 16.97 8.80 8.30 8.23
4 26.85 17.27 6.33 5.76 5.69
Copyright 2015 c©NTTセキュアプラットフォーム研究所 – p. 25/26
まとめと今後の課題最近の x86 64アーキテクチャでのMinalpher実装性能の解析
5.7 cpb @ Haswell (漸近性能)
x86 64アーキテクチャをもっと調べて、さらなる最適化
Copyright 2015 c©NTTセキュアプラットフォーム研究所 – p. 26/26