Generating Graphs Packed With Paths Philip Vejre 1 Mathias - - PowerPoint PPT Presentation

generating graphs packed with paths
SMART_READER_LITE
LIVE PREVIEW

Generating Graphs Packed With Paths Philip Vejre 1 Mathias - - PowerPoint PPT Presentation

Generating Graphs Packed With Paths Philip Vejre 1 Mathias Hall-Andersen 2 FSE 2019 1 DTU, Akamai Technologies 2 PLTC @ University of Copenhagen 1 Overview Motivation Linear Cryptanalysis & Graphs Subgraph Heuristics (for SPN) Plots &


slide-1
SLIDE 1

Generating Graphs Packed With Paths

Philip Vejre1 Mathias Hall-Andersen2 FSE 2019

1DTU, Akamai Technologies 2PLTC @ University of Copenhagen

1

slide-2
SLIDE 2

Overview

Motivation Linear Cryptanalysis & Graphs Subgraph Heuristics (for SPN) Plots & Results Future Work

2

slide-3
SLIDE 3

Motivation

slide-4
SLIDE 4

Differential and Linear Distinguishers

[BS90]

Px[Ek(x) + ∇ = Ek(x + ∆)]

[Mat93]

Px[α, x = β, Ek(x)]

3

slide-5
SLIDE 5

Differential and Linear Distinguishers

[BS90]

Px[Ek(x) + ∇ = Ek(x + ∆)]

[Mat93]

Px[α, x = β, Ek(x)]

3

slide-6
SLIDE 6

Differential and Linear Distinguishers

[BS90]

Px[Ek(x) + ∇ = Ek(x + ∆)]

[Mat93]

Px[α, x = β, Ek(x)]

3

slide-7
SLIDE 7

Differential and Linear Distinguishers

In this presentation, focus on linear cryptanalysis (differential largely analogous) [MY92], [Mat93]

Px[α, x = β, Ek(x)]

4

slide-8
SLIDE 8

Iterated Ciphers and Trails

Ek = E (r)

kr ◦ . . . ◦ E (2) k2 ◦ E (1) k1

5

slide-9
SLIDE 9

Iterated Ciphers and Trails

Ek = E (r)

kr ◦ . . . ◦ E (2) k2 ◦ E (1) k1

U = (α = u0, . . . , ur = β)

5

slide-10
SLIDE 10

Iterated Ciphers and Trails

Ek = E (r)

kr ◦ . . . ◦ E (2) k2 ◦ E (1) k1

U = (α = u0, . . . , ur = β) C ki

(ui,ui+1)(i) = 2 · Px∈Fn[ui, x = ui+1, E (i) ki (x)] − 1

5

slide-11
SLIDE 11

Hull

Correlation contribution for linear trail1:

C k

U = r

  • i=0

C ki

(ui,ui+1)(i)

1under ‘Markov cipher assumption’

6

slide-12
SLIDE 12

Hull

Correlation contribution for linear trail1:

C k

U = r

  • i=0

C ki

(ui,ui+1)(i)

C k

α,β =

  • U:(u0,ur)=(α,β)

C k

U

1under ‘Markov cipher assumption’

6

slide-13
SLIDE 13

Hull; Expected Linear Potential

For key-alternating ciphers (key-addition in the field):

∀k : (C k

U)2 = (CU)2 = r

  • i=0

(C k

(ui,ui+1)(i))2

7

slide-14
SLIDE 14

Hull; Expected Linear Potential

For key-alternating ciphers (key-addition in the field):

∀k : (C k

U)2 = (CU)2 = r

  • i=0

(C k

(ui,ui+1)(i))2

E[(Cα,β)2] ≈

  • U:(u0,ur)=(α,β)

(C k

U)2

7

slide-15
SLIDE 15

Hull; Expected Linear Potential

For key-alternating ciphers (key-addition in the field):

∀k : (C k

U)2 = (CU)2 = r

  • i=0

(C k

(ui,ui+1)(i))2

E[(Cα,β)2] ≈

  • U∈U,(u0,ur)=(α,β)

(C k

U)2

7

slide-16
SLIDE 16

Hull; Expected Linear Potential

For key-alternating ciphers (key-addition in the field):

∀k : (C k

U)2 = (CU)2 = r

  • i=0

(C k

(ui,ui+1)(i))2

E[(Cα,β)2] ≈

  • U∈U,(u0,ur)=(α,β)

(CU)2

Problem: Current methods usually linear in the number of trails

7

slide-17
SLIDE 17

Linear Cryptanalysis & Graphs

slide-18
SLIDE 18

Multistage Graph

α0 α1 α2 α3 u0 u1 u2 u3 v0 v1 v2 v3 β0 β1 β2 β3 E (1)

k1

E (2)

k2

E (3)

k3 8

slide-19
SLIDE 19

Nodes and Parities

α0 α1 α2 α3 u0 u1 u2 u3 v0 v1 v2 v3 β0 β1 β2 β3 E (1)

k1

E (2)

k2

E (3)

k3

Nodes α ∈ Fn represent parities α∗ for linear cryptanalysis: α∗ : v → v, α

9

slide-20
SLIDE 20

Edges and Approximations

α0 α1 α2 α3 u0 u1 u2 u3 v0 v1 v2 v3 β0 β1 β2 β3 E (1)

k1

E (2)

k2

E (3)

k3

l(u → v) = (C k

(u,v))2 10

slide-21
SLIDE 21

Paths and Trails

α0 α1 α2 α3 u0 u1 u2 u3 v0 v1 v2 v3 β0 β1 β2 β3 E (1)

k1

E (2)

k2

E (3)

k3

l(v0 vr) =

r−1

  • i=0

l(vi → vi+1)

11

slide-22
SLIDE 22

Hulls as Sets of Paths

α0 α1 α2 α3 u0 u1 u2 u3 v0 v1 v2 v3 β0 β1 β2 β3 E (1)

k1

E (2)

k2

E (3)

k3

wGE(α ♦ β) =

  • l(α β) =
  • v

wGE(α ♦ v) · l(v → β)

12

slide-23
SLIDE 23

Hulls as Sets of Paths

α0 α1 α2 α3 u0 u1 u2 u3 v0 v1 v2 v3 β0 β1 β2 β3 E (1)

k1

E (2)

k2

E (3)

k3

wGE(α ♦ β) =

  • l(α β) =
  • v

wGE(α ♦ v) · l(v → β)

13

slide-24
SLIDE 24

Hulls as Sets of Paths

α0 α1 α2 α3 u0 u1 u2 u3 v0 v1 v2 v3 β0 β1 β2 β3 E (1)

k1

E (2)

k2

E (3)

k3

wGE(α ♦ β) =

  • l(α β) =
  • v

wGE(α ♦ v) · l(v → β)

13

slide-25
SLIDE 25

Hulls as Sets of Paths

α0 α1 α2 α3 u0 u1 u2 u3 v0 v1 v2 v3 β0 β1 β2 β3 E (1)

k1

E (2)

k2

E (3)

k3

wGE(α ♦ β) =

  • l(α β) =
  • v

wGE(α ♦ v) · l(v → β)

13

slide-26
SLIDE 26

Suitable Subgraphs The full graph GE is too large. (exponential in the block-size)

14

slide-27
SLIDE 27

Can we find suitable ¯ GE ⊂ GE, that contains the good trails? i.e. maxα,β w ¯

GE(α

♦ β) is large.

15

slide-28
SLIDE 28

Subgraph Heuristics (for SPN)

slide-29
SLIDE 29

Overall Method

  • 1. Pick disjoint ‘families’ of edges

16

slide-30
SLIDE 30

Overall Method

  • 1. Pick disjoint ‘families’ of edges
  • 2. Prune the families an ‘approximate’ graph

16

slide-31
SLIDE 31

Overall Method

  • 1. Pick disjoint ‘families’ of edges
  • 2. Prune the families an ‘approximate’ graph
  • 3. Expand the families to a full graph

16

slide-32
SLIDE 32

Overall Method

  • 1. Pick disjoint ‘families’ of edges
  • 2. Prune the families an ‘approximate’ graph
  • 3. Expand the families to a full graph
  • 4. Remove unneeded vertices & edges in resulting graph

16

slide-33
SLIDE 33

Pruning

Strip

l(v → u) = 0

17

slide-34
SLIDE 34

Pruning

Prune

18

slide-35
SLIDE 35

S-Box Patterns / Families of edges

Example: 16-bit SPN, with four identical 4-bit S-Boxes.

19

slide-36
SLIDE 36

S-Box Patterns / Families of edges

Example: 16-bit SPN, with four identical 4-bit S-Boxes. C 2(0x3, 0xd) = 2−2 C 2(0x7, 0x4) = 2−2

19

slide-37
SLIDE 37

S-Box Patterns / Families of edges

Example: 16-bit SPN, with four identical 4-bit S-Boxes. C 2(0x3, 0xd) = 2−2 C 2(0x7, 0x4) = 2−2 p = (1, 2−2, 1, 2−2)

19

slide-38
SLIDE 38

S-Box Patterns / Families of edges

Example: 16-bit SPN, with four identical 4-bit S-Boxes. C 2(0x3, 0xd) = 2−2 C 2(0x7, 0x4) = 2−2 p = (1, 2−2, 1, 2−2) Ex(p) = {(0x0303, 0x0d0d), (0x0307, 0x0d04), (0x0703, 0x040d), (0x0707, 0x0404)}

19

slide-39
SLIDE 39

S-Box Patterns / Families of edges

Ex(p) = {(0x0303, 0x0d0d), (0x0307, 0x0d04), (0x0703, 0x040d), (0x0707, 0x0404)} Exin(p) = {0x0303, 0x0307, 0x0703, 0x0707} Exout(p) = {0x0d0d, 0x0d04, 0x040d, 0x0404}

20

slide-40
SLIDE 40

Graph Defined By S-Box Pattern Set

Given a set of S-Box patterns P, the graph defined by P: E = Ex(P) =

  • p∈P

Ex(p) V = Exin(P) ∪ Exout(P)

21

slide-41
SLIDE 41

Graph Defined By S-Box Pattern Set

Let P be a set of S-Box patterns defining our subgraph.

22

slide-42
SLIDE 42

Graph Defined By S-Box Pattern Set

Let P be a set of S-Box patterns defining our subgraph. For intermediate stages: v / ∈ Exin(P) ∩ Exout(P) = ⇒ v is pruned

22

slide-43
SLIDE 43

Graph Compression

Problem: Ex(P) too large to store explicitly (|Ex(P)| ≫ |P|)

23

slide-44
SLIDE 44

Graph Compression

Problem: Ex(P) too large to store explicitly (|Ex(P)| ≫ |P|) Idea: Can we prune P before expanding?

23

slide-45
SLIDE 45

Graph Compression

Problem: Ex(P) too large to store explicitly (|Ex(P)| ≫ |P|) Idea: Can we prune P before expanding? Generate an approximation of ¯ GE = Ex(P), by applying a compression function gj : Fn → Fn/j to every vertex. u → v ∈ ¯ GE = ⇒ ˆ gj(u) → ˆ gj(v) ∈ ˆ gj( ¯ GE)

23

slide-46
SLIDE 46

Graph Compression

Iteratively refine the compression:

  • 1. Generate a set of patterns P.
  • 2. Pick a j > 1 such that j is a power of two:

2.1 Generate the graph ˆ gj( ¯ GE) from P and prune. 2.2 Remove dead patterns from P according to ˆ gj( ¯ GE). 2.3 If j = 2 then stop. Otherwise set j = j/2 and repeat.

24

slide-47
SLIDE 47

Vertex Anchoring

S0 S1 S2 S3 S4 S5 S6 S7

25

slide-48
SLIDE 48

Vertex Anchoring

Pruned middle rounds S0 S1 S2 S3 S4 S5 S6 S7

26

slide-49
SLIDE 49

Vertex Anchoring

Pruned middle rounds S0 S1 S2 S3 S4 S5 S6 S7

27

slide-50
SLIDE 50

Plots & Results

slide-51
SLIDE 51

https://gitlab.com/psve/cryptagraph

28

slide-52
SLIDE 52

Plots of subgraphs (for small parameters)

29

slide-53
SLIDE 53

PRESENT [BKL+07]

30

slide-54
SLIDE 54

GIFT [BPP+17]

31

slide-55
SLIDE 55

Linear Results

Cipher (Total rounds, block size)

Rounds |A| a |α ♦ β| ELP Tg Ts

AES [oST01] (10, 128)

3 229.9 224.0 21 2−53.36 0.0 0.0 4 238.8 224.0 24 2−147.88 2.5 20.0

EPCBC-48 [YKPH11] (32, 48)

15 † [Bul13] 226.1 – 231.3 2−43.74 0.0 0.4 16 † [Bul13] 226.1 – 234.0 2−46.77 0.0 0.4

EPCBC-96 [YKPH11] (32, 96)

31 227.6 – 263.6 2−94.47 0.0 0.4 32 227.6 – 263.6 2−97.59 0.0 0.4

Fly [KG16] (20, 64)

8 232.5 – 26.5 2−54.83 0.1 6.0 9 232.5 – 26.1 2−63.00 0.2 8.8

GIFT-64 [BPP+17] (28, 64)

11 231.8 – 25.1 2−55.00 0.1 8.0 12 232.7 – 23.6 2−64.00 0.2 41.5

Khazad [BR00] (8, 64)

2 218.3 225.0 20 2−37.97 0.0 0.0 3 230.1 225.0 20 2−68.01 0.2 0.2

KLEIN [GNL11] (12, 64)

5 230.8 217.0 20 2−46.0 0.0 0.0 6 239.6 216.9 20 2−66.0 0.3 0.0

LED [GPPR11] (32, 64)

4 224.7 225 22 2−48.68 0.0 0.9

MANTIS7 [BJK+16] (2 · 8, 64)

2 · 4 234.3 224.0 215.0 2−49.05 0.1 0.0

Midori64 [BBI+15] (16, 64)

6 244.3 – 219.0 2−53.02 25.9 0.8 7 246.5 – 221.9 2−62.88 53.1 5.5

present [BKL+07] (31, 64)

23 † [Ohk09] 231.1 – 255.0 2−61.00 0.1 6.8 24 † [Ohk09] 231.1 – 257.9 2−63.61 0.1 6.9 25 † [Ohk09] 231.1 – 260.7 2−66.21 0.1 6.9

PRIDE [ADK+14] (20, 64)

15 227.1 – 20 2−58.00 0.0 0.0 16 237.4 – 23 2−63.99 1.8 0.0

PRINCE [BCG+12] (2 · 6, 64)

2 · 3 218.1 – 22.0 2−54.00 0.0 0.0 2 · 4 238.3 – 26.8 2−63.82 2.1 0.4

PUFFIN [CHW08] (32, 64)

32 226.8 – 2112.4 2−51.90 0.0 0.0

QARMA [Ava17] (2 · 8, 64)

2 · 3 224.8 224.0 25.0 2−53.71 0.0 0.0

RECTANGLE [ZBL+14] (25, 64)

12 † [ZBL+14] 231.1 – 215.0 2−52.27 0.1 21.1 13 † [ZBL+14] 231.1 – 215.9 2−58.14 0.1 25.9 14 † [ZBL+14] 231.1 – 218.3 2−62.98 0.1 31.1

SKINNY-64 [BJK+16] (32, 64)

8 241.4 223.7 234.4 2−50.46 0.7 50.7 9 241.4 223.9 231.3 2−69.83 0.4 8.9

32

slide-56
SLIDE 56

Differential Results

Cipher (Total rounds, block size)

Rounds |D| a |∆ ♦ ∇| EDP Tg Ts

AES [oST01] (10, 128)

3 218.7 224.0 20 2−54.00 0.0 0.0 4 236.9 224.0 20 2−150.00 0.7 0.3

EPCBC-48 [YKPH11] (32, 48)

13 228.4 – 221.2 2−43.86 0.1 13.7 14 228.4 – 220.4 2−47.65 0.1 14.0

EPCBC-96 [YKPH11] (32, 96)

20 232.8 – 216.9 2−92.73 1.1 21.6 21 232.8 – 219.9 2−97.78 1.1 22.6

Fly [KG16] (20, 64)

8 231.6 – 24.9 2−55.76 0.1 2.6 9 233.2 – 27.3 2−63.35 0.2 17.8

GIFT-64 [BPP+17] (28, 64)

12 † [ZDY18] 222.4 – 23.3 2−56.57 0.0 0.0 13 222.4 – 23.6 2−60.42 0.0 0.0

Khazad [BR00] (8, 64)

2 225.8 224.8 20 2−45.42 0.0 0.0 3 225.8 225.0 20 2−81.66 0.0 0.0

KLEIN [GNL11] (12, 64)

5 230.8 217.0 21.0 2−45.91 0.0 0.0 6 239.7 224.0 21.0 2−69.00 0.3 6.4

LED [GPPR11] (32, 64)

4 237.7 224.0 21 2−49.42 0.5 0.1

MANTIS7 [BJK+16] (2 · 8, 64)

2 · 4 237.7 – 218.6 2−47.98 0.9 0.1

Midori64 [BBI+15] (16, 64)

6 242.2 223.9 219.6 2−52.37 1.6 1.0 7 242.2 223.9 222.8 2−61.22 1.0 0.9

present [BKL+07] (31, 64)

15 230.3 – 227.2 2−58.00 0.1 16.2 16 † [Abd12] 230.3 – 228.9 2−61.80 0.1 18.0 17 230.3 – 232.9 2−63.52 0.1 18.8

PRIDE [ADK+14] (20, 64)

15 235.9 223.6 25.0 2−58.00 0.5 36.5 16 235.9 223.6 217.4 2−63.99 0.5 44.1

PRINCE [BCG+12] (2 · 6, 64)

2 · 3 † [CFG+14] 214.0 219 21 2−55.91 0.0 0.0 2 · 4 238.7 – 29.0 2−67.32 3.0 1.0

PUFFIN [CHW08] (32, 64)

32 226.0 – 263.7 2−59.63 0.0 0.0

QARMA [Ava17] (2 · 8, 64)

2 · 3 224.8 226.0 27.3 2−56.47 0.1 0.0

RECTANGLE [ZBL+14] (25, 64)

13 † [ZBL+14] 231.1 – 215.3 2−55.64 0.1 32.2 14 † [ZBL+14] 231.1 – 215.9 2−60.64 0.1 41.3 15 † [ZBL+14] 231.1 – 218.2 2−65.64 0.1 50.2

SKINNY-64 [BJK+16] (32, 64)

8 239.4 224.0 231.0 2−50.72 0.2 15.0 9 241.7 223.8 231.2 2−69.64 0.4 6.4

33

slide-57
SLIDE 57

Cipher(Total rounds, block size)

Rounds |A| a |α ♦ β| ELP Tg Ts

EPCBC-48 [YKPH11] (32, 48)

15 † [Bul13] 226.1 – 231.3 2−43.74 0.0 0.4 16 † [Bul13] 226.1 – 234.0 2−46.77 0.0 0.4

EPCBC-96 [YKPH11] (32, 96)

31 227.6 – 263.6 2−94.47 0.0 0.4 32 227.6 – 263.6 2−97.59 0.0 0.4

present [BKL+07] (31, 64)

23 † [Ohk09] 231.1 – 255.0 2−61.00 0.1 6.8 24 † [Ohk09] 231.1 – 257.9 2−63.61 0.1 6.9 25 † [Ohk09] 231.1 – 260.7 2−66.21 0.1 6.9

PUFFIN [CHW08] (32, 64)

32 226.8 – 2112.4 2−51.90 0.0 0.0

RECTANGLE [ZBL+14] (25, 64)

12 † [ZBL+14] 231.1 – 215.0 2−52.27 0.1 21.1 13 † [ZBL+14] 231.1 – 215.9 2−58.14 0.1 25.9 14 † [ZBL+14] 231.1 – 218.3 2−62.98 0.1 31.1

Cipher(Total rounds, block size)

Rounds |D| a |∆ ♦ ∇| EDP Tg Ts

EPCBC-48 [YKPH11] (32, 48)

13 228.4 – 221.2 2−43.86 0.1 13.7 14 228.4 – 220.4 2−47.65 0.1 14.0

EPCBC-96 [YKPH11] (32, 96)

20 232.8 – 216.9 2−92.73 1.1 21.6 21 232.8 – 219.9 2−97.78 1.1 22.6

present [BKL+07] (31, 64)

15 230.3 – 227.2 2−58.00 0.1 16.2 16 † [Abd12] 230.3 – 228.9 2−61.80 0.1 18.0 17 230.3 – 232.9 2−63.52 0.1 18.8

PUFFIN [CHW08] (32, 64)

32 226.0 – 263.7 2−59.63 0.0 0.0

RECTANGLE [ZBL+14] (25, 64)

13 † [ZBL+14] 231.1 – 215.3 2−55.64 0.1 32.2 14 † [ZBL+14] 231.1 – 215.9 2−60.64 0.1 41.3 15 † [ZBL+14] 231.1 – 218.2 2−65.64 0.1 50.2

34

slide-58
SLIDE 58

Future Work

slide-59
SLIDE 59

Support for ARX ciphers.

35

slide-60
SLIDE 60

Support for ARX ciphers. Better heuristics for Feistel networks.

35

slide-61
SLIDE 61

https://gitlab.com/psve/cryptagraph

36