meet in the middle stp
play

Meet in the Middle - STP March 20, 2019 1 / 17 Last weeks exercise - PowerPoint PPT Presentation

Meet in the Middle - STP March 20, 2019 1 / 17 Last weeks exercise Solution on whiteboard. 2 / 17 Recap of MitM attack Whiteboard 3 / 17 Searching for attacks By hand - Last week(s) Using the computer - This week 4 / 17


  1. Meet in the Middle - STP March 20, 2019 1 / 17

  2. Last week’s exercise Solution on whiteboard. 2 / 17

  3. Recap of MitM attack Whiteboard 3 / 17

  4. Searching for attacks ◮ By hand - Last week(s) ◮ Using the computer - This week 4 / 17

  5. Searching for attacks ◮ By hand - Last week(s) ◮ Using the computer - This week ◮ Excel ◮ Tailored program ◮ STP - Simple Theorem Prover ◮ MILP - Mixed Integer Linear Programming 4 / 17

  6. STP ◮ Can be used to prove certain properties of a system. ◮ Constraint Solver. ◮ Quantifier free. ◮ Bitvectors. ◮ Many input languages, we will use CVC (Least annoying). 5 / 17

  7. STP (2) We can give a set of constraints to STP and ask if the set of constraints is satisfiable. x = 5 y = 6 x > y 6 / 17

  8. STP (2) We can give a set of constraints to STP and ask if the set of constraints is satisfiable. x = 5 y = 6 x > y Is unsatisfiable. x = 0 x 5 y ∈ { 0 , 1 } 4 z = x ⊕ y z = 0 xF 6 / 17

  9. STP (2) We can give a set of constraints to STP and ask if the set of constraints is satisfiable. x = 5 y = 6 x > y Is unsatisfiable. x = 0 x 5 y ∈ { 0 , 1 } 4 z = x ⊕ y z = 0 xF Is satisfiable. 6 / 17

  10. CVC % INPUT x , y , z : BITVECTOR ( 4 ) ; ASSERT( x = 0hex5 AND z = BVXOR( x , y ) AND z = 0hexF ) ; QUERY(FALSE ) ; COUNTEREXAMPLE; 7 / 17

  11. CVC % INPUT % OUTPUT x , y , z : BITVECTOR ( 4 ) ; ASSERT( y = 0xA ) ; ASSERT( ASSERT( z = 0xF ) ; x = 0hex5 AND ASSERT( x = 0x5 ) ; z = BVXOR( x , y ) AND I n v a l i d . z = 0hexF ) ; QUERY(FALSE ) ; COUNTEREXAMPLE; 7 / 17

  12. CVC (2) % INPUT x , y , z : BITVECTOR ( 4 ) ; ASSERT( % x i s non zero NOT ( x = 0hex0 ) AND % y i s zero y = 0hex0 AND % s e t a c o n s t r a i n t on z z = x & (( y << 2 ) [ 3 : 0 ] ) AND % a s s e r t that z i s nonzero NOT ( z = 0hex0 ) ) ; QUERY(FALSE ) ; COUNTEREXAMPLE; 8 / 17

  13. CVC (2) % INPUT % OUTPUT x , y , z : BITVECTOR ( 4 ) ; Valid . ASSERT( % x i s non zero NOT ( x = 0hex0 ) AND % y i s zero y = 0hex0 AND % s e t a c o n s t r a i n t on z z = x & (( y << 2 ) [ 3 : 0 ] ) AND % a s s e r t that z i s nonzero NOT ( z = 0hex0 ) ) ; QUERY(FALSE ) ; COUNTEREXAMPLE; 8 / 17

  14. CVC (2.5) % INPUT x , y , z : BITVECTOR ( 4 ) ; ASSERT( % x i s non zero NOT ( x = 0hex0 ) AND % y i s zero NOT( y = 0hex0 ) AND % s e t a c o n s t r a i n t on z z = x & (( y << 2 ) [ 3 : 0 ] ) AND % a s s e r t that z i s nonzero NOT ( z = 0hex0 ) ) ; QUERY(FALSE ) ; COUNTEREXAMPLE; 9 / 17

  15. CVC (2.5) % INPUT % OUTPUT x , y , z : BITVECTOR ( 4 ) ; ASSERT( x = 0x4 ) ; ASSERT( ASSERT( y = 0x1 ) ; % x i s non zero ASSERT( z = 0x4 ) ; NOT ( x = 0hex0 ) AND I n v a l i d . % y i s zero NOT( y = 0hex0 ) AND % s e t a c o n s t r a i n t on z z = x & (( y << 2 ) [ 3 : 0 ] ) AND % a s s e r t that z i s nonzero NOT ( z = 0hex0 ) ) ; QUERY(FALSE ) ; COUNTEREXAMPLE; 9 / 17

  16. CVC (3) For more information on STP and CVC: https://github.com/ stp/stp/blob/master/docs/cvc-input-language.rst CVC normal CVC normal AND / OR / NOT && / || / ! 0hex5/0bin0110 0x5/0b0110 x ∈ { 0 , 1 } n | / & / ˜ | / & / ˜ x :BITVECTOR(n) BVXOR(a, b) a ˆb a @ b concatenation BVPLUS(a, b) a + b a[4:1] extraction BVMULT(a, b) a ∗ b left shift << BVSUB(a, b) a − b right shift >> 10 / 17

  17. TC03 TC03 is a Feistel network with a block size of 8 bits, and a key size of 64-bit. Round Function F ′ ( w ) = (( w ≪ 1)&( w ≪ 2)) ⊕ w Key Schedule K = k 0 | k 1 | k 2 | k 3 | . . . | k 15 The i -th round key is given by: rk i = k ( i mod 16) r l ⊕ F ′ rk i l ′ r ′ 11 / 17

  18. CVC (4) ◮ Overkill for finding MitM attacks, but is interesting for finding differential/linear charactersitics. ◮ Very verbose (no quantifiers). ◮ Write a python script to create CVC description of the cipher. 12 / 17

  19. SKINNY Round Function ART ShiftRows MixColumns >>> 1 SC AC >>> 2 >>> 3 S 4 = [C 6 9 0 1 A 2 B 3 8 5 D 4 E 7 F]  1 0 1 1  1 0 0 0   M =   0 1 1 0   1 0 1 0 13 / 17

  20. SKINNY Tweakey Schedule LFSR LFSR P T Extracted 8 s -bit subtweakey P T = [9 15 8 13 10 14 12 11 0 1 2 3 4 5 6 7] LFSR TK 2 = ( x 3 || x 2 || x 1 || x 0 ) → ( x 2 || x 1 || x 0 || x 3 ⊕ x 2 ) 14 / 17

  21. Skinny with STP ◮ Model knowledge on nibble level instead of bitlevel. ◮ Also model the Key schedule. ◮ Upperbound the key weight to find ‘best’ attacks. ◮ We can find all attacks by removing instances from the search space and retrying until no valid attacks are possible. 15 / 17

  22. The End? ◮ STP is powerfull, but for example getting the minimum number of keybits is not (natively) possible. Better to use MILP (Mixed Integer Linear Programming). ◮ MitM attacks are powerful, but as we will see next week there exist better attacks (more rounds). ◮ Only the basics of MitM attacks, we can squeeze out a bit more if we really want. 16 / 17

  23. For nextnext week ◮ Next week no class! ◮ Do this weeks exercises (deadline 3rd of april). ◮ Play a bit with STP (Hint: If you find your attack on TC02 with STP you get extra points). 17 / 17

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend