Breaking The Enigma → php[tek]

Breaking The Enigma → php[tek]

Many years ago, the world was at war. The very best minds were focussed on out-smarting the "other side", all without the aid of our modern computational tools.

The key was in communication, and the Nazis had devised a simple and effective way to relay orders to the battlefront. They were using one of the most famous forms of electronic encryption: the Enigma.

Breaking this Enigma was a victory built on the tireless work of many people, not least of all the persecuted and brilliant Alan Turing.

In this talk we will learn how the enigma worked, and how it was broken. All in live code!

061e3bae4ce4234a2194d20a382e5d19?s=128

Christopher Pitt

May 27, 2016
Tweet

Transcript

  1. None
  2. BREAKING the ENIGMA

  3. Thanks to PHP[TEK]

  4. Thanks to SILVERSTRIPE

  5. HUMBLE beginnings

  6. BUTTERFLY effect

  7. meeting CHRISTOPHER

  8. CHOICE and DETERMINISM

  9. THINKING machines

  10. SUM of all parts

  11. SUM of all parts ▸ cpu

  12. SUM of all parts ▸ cpu ▸ ram

  13. SUM of all parts ▸ cpu ▸ ram ▸ hard

    drive
  14. SUM of all parts ▸ cpu ▸ ram ▸ hard

    drive ▸ keyboard, mouse, network
  15. SUM of all parts ▸ cpu ▸ ram ▸ hard

    drive ▸ keyboard, mouse, network ▸ display, speakers, network
  16. SUM of all parts ▸ cpu hard-coded rules ▸ ram

    ▸ hard drive ▸ keyboard, mouse, network ▸ display, speakers, network
  17. SUM of all parts ▸ cpu hard-coded rules ▸ ram

    1 variable ▸ hard drive ▸ keyboard, mouse, network ▸ display, speakers, network
  18. SUM of all parts ▸ cpu hard-coded rules ▸ ram

    1 variable ▸ hard drive ▸ keyboard, mouse, network ▸ display, speakers, network
  19. SUM of all parts ▸ cpu hard-coded rules ▸ ram

    1 variable ▸ hard drive ▸ keyboard, mouse, network stream of symbols ▸ display, speakers, network
  20. SUM of all parts ▸ cpu hard-coded rules ▸ ram

    1 variable ▸ hard drive ▸ keyboard, mouse, network stream of symbols ▸ display, speakers, network successful completion
  21. time for some code

  22. FAMINE, SWORD and FIRE

  23. None
  24. $rotor1 = new Rotor( "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "EKMFLGDQVZNTOWYHXUSPAIBRCJ", 1 ); $rotor2 =

    new Rotor( "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "AJDKSIRUXBLHWTMCQGZNPYFVOE", 2 ); $rotor3 = new Rotor( "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "BDFHJLCPRTXVZNYEIWGAKMUSQO", 3 );
  25. $reflector = new Reflector( "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "FVPJIAOYEDRZXWGCTKUQSBNMHL" );

  26. $machine = new Machine( $rotor1, $rotor2, $rotor3, $reflector );

  27. A → K → L → V → B →

    A → A → T
  28. A → K → L → V → B →

    A → A → T T → A → A → B → V → L → K → A
  29. STARTING configurations ▸ 3 rotors from a set of 5

  30. STARTING configurations ▸ 3 rotors from a set of 5

    ▸ 26 positions per rotor
  31. STARTING configurations ▸ 3 rotors from a set of 5

    ▸ 26 positions per rotor ▸ plugboard with 10 connected pairs
  32. STARTING configurations ▸ 3 rotors from a set of 5

    ▸ 26 positions per rotor ▸ plugboard with 10 connected pairs ▸ 158,962,555,217,826,360,000
  33. the BOMBE

  34. None
  35. cipher text ! J Y P D O M Q

    N J C O S G A W H L E I H Y S O position 1 ! K E I N E B E S O N D E R E N E R E I G N I S cipher text ! J Y P D O M Q N J C O S G A W H L E I H Y S O position 2 ! K E I N E B E S O N D E R E N E R E I G N I cipher text ! J Y P D O M Q N J C O S G A W H L E I H Y S O position 3 ! K E I N E B E S O N D E R E N E R E I G N
  36. None
  37. None
  38. thank you HTTPS://JOIND.IN/17071 HTTPS://TWITTER.COM/ASSERTCHRIS