Prototype Verification System Rick Erkens May 24th, 2017 Rick Erkens May 24th, 2017 Prototype Verification System
Background • John Rushby, Stanford Research Institute • Patrick Lincoln, Sam Owre, Natarajan Shankar, Ashish Tiwari • Emacs user interface • Google Scholar: 1907 citations • Described as a research prototype Rick Erkens May 24th, 2017 Prototype Verification System
System • Written in Common Lisp • Automation • NASA library: https://github.com/nasa/pvslib Rick Erkens May 24th, 2017 Prototype Verification System
Logic • Classical higher order logic • Dependent types Rick Erkens May 24th, 2017 Prototype Verification System
On partiality “ PVS and B-method handle partiality right ” Rick Erkens May 24th, 2017 Prototype Verification System
On partiality “ PVS and B-method handle partiality right ” - Freek Wiedijk, three weeks ago Rick Erkens May 24th, 2017 Prototype Verification System
On partiality “ PVS and B-method handle partiality right ” - Freek Wiedijk, three weeks ago nonzero: NONEMPTY_TYPE = {i:int | r /= 0\}} div: [int, nonzero -> int] Rick Erkens May 24th, 2017 Prototype Verification System
Some projects Collins AAMP5 avionics processor • Microarchitecture • 108 out of 209 instructions • 500,000 transistors • Three-stage pipeline • Stack architecture • Autonomous subunits Rick Erkens May 24th, 2017 Prototype Verification System
Some projects Verification of Biphase Mark Protocol, 2004 • Frits Vaandrager and Adriaan de Groot • Clock tolerances found with Uppaal • Verification with PVS Rick Erkens May 24th, 2017 Prototype Verification System
Demo: sum of squares n i 2 = n ( n + 1)(2 n + 1) � 6 i =0 Rick Erkens May 24th, 2017 Prototype Verification System
Mifare Classic Card • Bart Jacobs and Ronny Wichers Schreur • RFID smart card sold by NXP • Widely used • Card relied on secrecy of the algorithm Rick Erkens May 24th, 2017 Prototype Verification System
Mifare Classic Card LfsrSize : nat = 48 state : TYPE = bvec[LfsrSize] MfCfeedback : [state -> bit] = LAMBDA (r:state) : r(0) XOR r(5) XOR r(9) XOR r(10) XOR r(12) XOR r(14) XOR r(15) XOR r(17) XOR r(19) XOR r(24) XOR r(25) XOR r(27) XOR r(29) XOR r(35) XOR r(39) XOR r(41) XOR r(42) XOR r(43) Rick Erkens May 24th, 2017 Prototype Verification System
Mifare Classic Card shift1in : [state, bit -> state] = LAMBDA(r:state, b:bit) : LAMBDA(i:below(LfsrSize)) : IF i < LfsrSize - 1 THEN r(i+1) % shift left ELSE b XOR MfCfeedback(r) % put new value at % i = LfsrSize - 1 ENDIF Rick Erkens May 24th, 2017 Prototype Verification System
“ Many of the details of the formalisation are inherently specific to the Mifare Classic card and its weaknesses. However, this work does show that formalisations are relatively easy to do and can be both precise and readable. This makes them a solid base for the documentation and analysis of cryptographic systems. Thus, this paper suggests to card producers that they do such formalisations themselves, before bringing a card onto the market. ” Rick Erkens May 24th, 2017 Prototype Verification System
Recommend
More recommend