Slide dist

26
Minalpher Ivy Bridge/Haswell NTT 2015 3 15 @ x86/x64 7 Copyright 2015 c NTT – p. 1/26

Transcript of Slide dist

Page 1: Slide dist

改ざん検知暗号Minalpherの設計とIvy Bridge/Haswellでの最適化

青木和麻呂

NTTセキュアプラットフォーム研究所

2015年 3月 15日@ x86/x64最適化勉強会 7

Copyright 2015 c©NTTセキュアプラットフォーム研究所 – p. 1/26

Page 2: Slide dist

自己紹介NTT研究所に勤めてまる 20年です

学生時代から暗号一筋です

Camelliaとかいう暗号設計にも関わりました

プログラムを速くするのが好きです

Copyright 2015 c©NTTセキュアプラットフォーム研究所 – p. 2/26

Page 3: Slide dist

発表内容Minalpherとは

改ざん検知暗号

x86 64アーキテクチャ

実装法比較

結果

まとめ

Copyright 2015 c©NTTセキュアプラットフォーム研究所 – p. 3/26

Page 4: Slide dist

MinalpherとはAuthenticated Encryption with Associated

Data (AEAD)

CAESAR competitionへ応募

詳細はこのあとで

Copyright 2015 c©NTTセキュアプラットフォーム研究所 – p. 4/26

Page 5: Slide dist

AE(AD)

authenticated encrypytion…認証暗号、認証付暗号、改ざん検知暗号

狭義の「暗号」は守秘機能のみ。改ざん防止機能ありと勘違い (?)

暗号に改ざん検知機能も欲しい。従来は「暗号+MAC」で実現。

「暗号&MAC」「暗号 thenMAC」「MACthen

暗号」で安全性が異なる。組合せも重要。

「完パケ」化→改ざん検知暗号

Copyright 2015 c©NTTセキュアプラットフォーム研究所 – p. 5/26

Page 6: Slide dist

現在の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

Page 7: Slide dist

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

Page 8: Slide dist

Minalpher再びNTT +三菱電機 +福井大学の研究者で設計。

暗号利用モードやブロック暗号だけでなく全部を設計。

誤利用耐性がある。Nonce Repetition (送信者側の問題)

Release of Unverified Plaintext (受信者側の問題)

Copyright 2015 c©NTTセキュアプラットフォーム研究所 – p. 8/26

Page 9: Slide dist

実装面からの設計方針組み込み環境で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

Page 10: Slide dist

モード部構成OCB + PMAC

ブロック暗号部分はEven-Mansour

Even-Mansourの鍵は、いわゆるoffset

(2iLの類)

Copyright 2015 c©NTTセキュアプラットフォーム研究所 – p. 10/26

Page 11: Slide dist

モード部 (次スライドで拡大版)

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

Page 12: Slide dist

モード部 (下半分は次スライド)

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

Page 13: Slide dist

tag

C[1] C[m−1] C[m]

P

ψ1

P

ψm−1

P

ψm′

Copyright 2015 c©NTTセキュアプラットフォーム研究所 – p. 13/26

Page 14: Slide dist

プリミティブ部概要256ビット入力、256ビット出力の置換

4-bit sboxを使ったSPN

17.5段

Copyright 2015 c©NTTセキュアプラットフォーム研究所 – p. 14/26

Page 15: Slide dist

プリミティブ段関数

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

Page 16: Slide dist

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

Page 17: Slide dist

段関数実装法考察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

Page 18: Slide dist

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

Page 19: Slide dist

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

Page 20: Slide dist

段関数実装に必要な命令

SN pshufbで計算

SR pshufbで計算

XM ◦ SM データ移動とpxor

MC データ移動とpxorで計算

定数加算 pxorで計算

Copyright 2015 c©NTTセキュアプラットフォーム研究所 – p. 20/26

Page 21: Slide dist

Haswellでのデータ移動考察

2ブロック同時実装 MC中の左右データ入れ換えが不要に

4ブロック同時実装 XM ◦ SM のシフトが不要に

32ブロック同時実装 SRがデータ位置の読み換えに

Copyright 2015 c©NTTセキュアプラットフォーム研究所 – p. 21/26

Page 22: Slide dist

Haswell理想スケジューリングでの性能

並列計算ブロック数 cpb

1 5.625

2 4.875

4 4.5

32 2.4375

※P ◦ P 相当の演算

Copyright 2015 c©NTTセキュアプラットフォーム研究所 – p. 22/26

Page 23: Slide dist

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

Page 24: Slide dist

モード部の最適化いわゆるoffset updateについては、いわゆる 2倍算が必要。2倍算をSIMD的にまとめて行なったデータを準備しておくことにより、毎回のupdateは 3命令で実行できる。

tag値計算のためのPMAC的排他的論理和について、nibble⇔byte変換は、1ブロックにつき 1回の排他的論理和に置き換え可能。

Copyright 2015 c©NTTセキュアプラットフォーム研究所 – p. 24/26

Page 25: Slide dist

結果 (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

Page 26: Slide dist

まとめと今後の課題最近の x86 64アーキテクチャでのMinalpher実装性能の解析

5.7 cpb @ Haswell (漸近性能)

x86 64アーキテクチャをもっと調べて、さらなる最適化

Copyright 2015 c©NTTセキュアプラットフォーム研究所 – p. 26/26