Notary: A Device for Secure Transaction Approval
Anish Athalye Adam Belay Frans Kaashoek Robert Morris Nickolai Zeldovich MIT CSAIL
1
Notary: A Device for Secure Transaction Approval Anish Athalye - - PowerPoint PPT Presentation
Notary: A Device for Secure Transaction Approval Anish Athalye Adam Belay Frans Kaashoek Robert Morris Nickolai Zeldovich MIT CSAIL 1 How to securely approve transactions? Users perform sensitjve transactjonal operatjons Bank
Anish Athalye Adam Belay Frans Kaashoek Robert Morris Nickolai Zeldovich MIT CSAIL
1
2
Approval agent on smartphone
3
TX Sign(TX) Display Buons
Ledger wallet
4
Ledger app store: 50+ third-party agents
5
Ledger app store: 50+ third-party agents
5
6
7
8
Agent SoC Kernel SoC Runs third-party code No OS, full access to hardware Manages storage, agent switching User I/O Reset buon Storage uart rst USB
Notary separatjon architecture
9
Agent SoC Kernel SoC Runs third-party code No OS, full access to hardware Manages storage, agent switching User I/O Reset buon Storage uart rst USB
Kernel SoC
9
Agent SoC Kernel SoC Runs third-party code No OS, full access to hardware Manages storage, agent switching User I/O Reset buon Storage uart rst USB
Agent SoC
9
Agent SoC Kernel SoC Runs third-party code No OS, full access to hardware Manages storage, agent switching User I/O Reset buon Storage uart rst USB
Connected only by UART (and reset wire)
9
Agent SoC Kernel SoC Runs third-party code No OS, full access to hardware Manages storage, agent switching User I/O Reset buon Storage uart rst USB
Kernel resets Agent SoC
9
Agent SoC Kernel SoC Runs third-party code No OS, full access to hardware Manages storage, agent switching User I/O Reset buon Storage uart rst USB
launch(): load agent code + data
9
Agent SoC Kernel SoC Runs third-party code No OS, full access to hardware Manages storage, agent switching User I/O Reset buon Storage uart rst USB
Agent runs on Agent SoC, independently of Kernel SoC
9
Agent SoC Kernel SoC Runs third-party code No OS, full access to hardware Manages storage, agent switching User I/O Reset buon Storage uart rst USB
exit(state): save state and terminate
9
Agent A runs switch Agent B runs me
10
steal A's secrets? Agent A runs switch Agent B runs me
10
steal A's secrets? Agent A runs switch Agent B runs me
10
11
World 0 (secret = 0) World 1 (secret = 1)
11
World 0 (secret = 0) World 1 (secret = 1) Agent A runs
11
World 0 (secret = 0) World 1 (secret = 1) Agent A runs Determinisc start
11
World 0 (secret = 0) World 1 (secret = 1) Agent A runs Determinisc start Agent B runs
11
Determinisc start
11
12
13
CPU (PicoRV32) ROM (1 KB) RAM (128 KB) UART UART GPIO SPI clk rst
start code (clears state)
14
RTL (e.g. Verilog): all digital state is explicit
15
16
/* no reset code */
16
/* no reset code */
16
nop nop nop
16
nop nop nop
16
nop nop nop /* clear registers */ li x1, 0 /* ... */ li x31, 0
16
nop nop nop /* clear registers */ li x1, 0 /* ... */ li x31, 0
16
nop nop nop /* clear registers */ li x1, 0 /* ... */ li x31, 0 /* clear buffer */ sw zero, 0(zero)
16
nop nop nop /* clear registers */ li x1, 0 /* ... */ li x31, 0 /* clear buffer */ sw zero, 0(zero)
16
nop nop nop /* clear registers */ li x1, 0 /* ... */ li x31, 0 /* clear buffer */ sw zero, 0(zero) /* clear ram */ la t0, _sram_start la t1, _sram_end loop: sw zero, 0(t0) addi t0, t0, 4 bne t0, t1, loop
16
nop nop nop /* clear registers */ li x1, 0 /* ... */ li x31, 0 /* clear buffer */ sw zero, 0(zero) /* clear ram */ la t0, _sram_start la t1, _sram_end loop: sw zero, 0(t0) addi t0, t0, 4 bne t0, t1, loop
16
nop nop nop /* clear registers */ li x1, 0 /* ... */ li x31, 0 /* clear buffer */ sw zero, 0(zero) /* clear ram */ la t0, _sram_start la t1, _sram_end loop: sw zero, 0(t0) addi t0, t0, 4 bne t0, t1, loop /* clear uart control register */ la t0, _uart0 sw zero, 0(t0)
16
nop nop nop /* clear registers */ li x1, 0 /* ... */ li x31, 0 /* clear buffer */ sw zero, 0(zero) /* clear ram */ la t0, _sram_start la t1, _sram_end loop: sw zero, 0(t0) addi t0, t0, 4 bne t0, t1, loop /* clear uart control register */ la t0, _uart0 sw zero, 0(t0)
16
Notary prototype
17
Bitcoin app (lefu) and agent (right)
18
Web app (lefu) and agent (right)
19
(see paper)
20
(see paper)
21
22