改ざん検知暗号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
(2i
Lの類)
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:
1101
1110
0111
1011
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 p1
1 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: sbox
Ri: SRi
Ci: ⊕RC
Xij: XM
Mij: MC
Mi: 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

Slide dist