The Ascend Secure Processor
Christopher Fletcher MIT
1
The Ascend Secure Processor Christopher Fletcher MIT 1 Joint work - - PowerPoint PPT Presentation
The Ascend Secure Processor Christopher Fletcher MIT 1 Joint work with Srini Devadas, Marten van Dijk Ling Ren, Albert Kwon, Xiangyao Yu Elaine Shi & Emil Stefanov David Wentzlaff & Princeton Team (Mike, Tri, Jonathan,
1
2
MEE
3
Memory controller
4
This talk
5
[Xu et al.’15]
[Zhuang et al.’04]
[Islam et al.’12]
6
7
On-chip
A = [ (op1, address1, data1), (op2, address2, data2), … ] A’ = [ (op1’, address1’, data1’), (op2’, address2’, data2’), … ]
then ORAM(A) ≈ ORAM(A’)
8
ORAM Controller (on-chip) “The ORAM”
Chip pins Read/writes
9
PosMap
10
B, 3
Encrypted Not Encrypted Empty space = dummy encryptions
dummy dummy dummy dummy dummy
Chip pins
11
PosMap
12
A, 2
B, 3 A, 4 B, 3
dummy dummy dummy dummy dummy
Stash
dummy dummy
13
PosMap
B, 3
dummy dummy dummy dummy dummy
14
B, 3
15
On-chip Map
Map’ Smaller Small enough On-chip
16
17
18
1 2 3 4
19
20
First ORAM in silicon MIT Team
21
PosMap Off-chip Path 1 2 3 4
Stash
22
PosMap Off-chip Path 1 2 3 4
Stash
23
def evict(Pathblock, Pathevict, occ): t1 = Pathblock ⊕ Pathevict t2 = bit_reverse( ( (t1 Ʌ – t1) – 1) Ʌ occ ) ret bit_reverse( t2 Ʌ – t2 )
evict() circuit
Pathblock, Pathevict, occ
≈ greatest common prefix
~
Can be pipelined
24
25
ORAM
Cache miss Overlay Hash tree
26
27
ORAM logic SHA-3 Test harness
28
P’ P P’’
Block (A, D) Block A’’ Block A’’’
A’
PosMap ORAM 2 PosMap ORAM 1 Data ORAM On-chip PosMap (root of trust)
Counter
Want: Path P = PosMap[A] Algorithm: Given A: derive A’, A’’, A’’’ P’ = PRF(A’ || PosMap[A’] = Counter) P’’ = PRF(A’’ || ORAMAccess(A’’, P’)) P = PRF(A’’’ || ORAMAccess(A’’’, P’’)) Data = ORAMAccess(A, P)
Block A’’
Counter for A’’’ + 1 Counter for A’’’
A’’’
A’’’+1 MACK(Counter|| A’’ || data)
Integrity checks
Problem: |C| > |P| More schemes to get |C| < |P|
30
Subtree size = row size
31
32
33
Encryption Stash Recursion, PLB, Integrity
Tile 0 Tile 1 Tile 2 Tile 3 Tile 4 Tile 5 Tile 6 Tile 7 Tile 8 Tile 9 Tile 10 Tile 11 Tile 12 Tile 13 Tile 14 Tile 15 Tile 16 Tile 17 Tile 18 Tile 19 Tile 20 Tile 21 Tile 22 Tile 23 Tile 24 ORAM PLL
34
460M transistors
AES rounds Stash evict() Hash unit
1 11
tpcc ycsb astar bzip2 gcc gob h264 libq mcf
perl sjeng avg
Slowdown (X)
2 DRAM channels, In-order core, 2-level cache hierarchy, 1 MByte last-level cache ORAM = 1208 cycles / tree lookup
35
Slowdown vs. insecure
36
37