What if Turing had Python?
BREAKING
THE ENIGMA
¡HOLA!
MARIA CAMILA REMOLINA GUTIÉRREZ
● I ❤ the universe and computers
● Currently a backend developer at S4N
● I sculpt ceramics in my spare time
● Crush on cryptography + security
mariacamilarg.me/
WENEEDSECURECOMMUNICATIONS...
...since ancienttimes
EBIIL MVZLK
…tooureverydaylife
PUBLIC / PRIVATE
WWII
Enigma Machine
1900BC 1939-1945 2020
AAWSNPNLKLSTCXW
KJDFGSJRFPVLDKF...
ROTORS*
LAMPBOARD
KEYBOARD
*PLUGBOARD
*REFLECTOR
62,583,939,499,390,760,715,264,000
Combinations...
(~10^25)
So,howcanwebreakit?
?
oneflaw!
oneflaw!
A letter can never be
encrypted to itself!
oneflaw
+ Math
+ technology
Thebombe!
HOWDOWEBREAK
THEENIGMA?
FINDING
A CRIB
AAWSNPNLKLSTCXWKJDFGSJRFPVLDKFCSD...
FINDING
A CRIB
ATTACKATDAWN
AAWSNPNLKLSTCXWKJDFGSJRFPVLDKFCSD...
FINDING
A CRIB
ATTACKATDAWN
?
AAWSNPNLKLSTCXWKJDFGSJRFPVLDKFCSD...
FIND ALLPOSSIBLETRANSLATIONSOFTHATCRIB
ATTACKATDAWN
AAWSNPNLKLSTCXWKJDFGSJRFPVLDKFCSD...
FIND ALLPOSSIBLETRANSLATIONSOFTHATCRIB
ATTACKATDAWN
AAWSNPNLKLSTCXWKJDFGSJRFPVLDKFCSD...
FIND ALLPOSSIBLETRANSLATIONSOFTHATCRIB
ATTACKATDAWN
AAWSNPNLKLSTCXWKJDFGSJRFPVLDKFCSD...
possible CRIB - CIPHER pair
FIND ALLPOSSIBLETRANSLATIONSOFTHATCRIB
ATTACKATDAWN
AAWSNPNLKLSTCXWKJDFGSJRFPVLDKFCSD...
FIND ALLPOSSIBLETRANSLATIONSOFTHATCRIB
ATTACKATDAWN
AAWSNPNLKLSTCXWKJDFGSJRFPVLDKFCSD...
FIND ALLPOSSIBLETRANSLATIONSOFTHATCRIB
ATTACKATDAWN
AAWSNPNLKLSTCXWKJDFGSJRFPVLDKFCSD...
possible CRIB - CIPHER pair
FIND ALLPOSSIBLETRANSLATIONSOFTHATCRIB
FINDING
A MENU
ATTACKATDAWN
WSNPNLKLSTCX
CREATE A MENUFOREACHCRIB-CIPHERPAIR
ATTACKATDAWN
WSNPNLKLSTCX
1 12...
CREATE A MENUFOREACHCRIB-CIPHERPAIR
ATTACKATDAWN
WSNPNLKLSTCX
1 12...
CREATE A MENUFOREACHCRIB-CIPHERPAIR
Select the graph with most loops & nodes
CREATE A MENUFOREACHCRIB-CIPHERPAIR
RUNNING
BOMBE
Mathematicaldeductions
Take some initial configuration of rotors
Guess plugboard connection
Deduce next connection using map
IF inconsistency => ALL PREVIOUS
PLUGBOARD GUESSES
ARE WRONG!
RUNSMARTENIGMASINPARALLEL
~
BOMBEMACHINE
ANALYSIS
RESULTS
FINDTHETRUEPOSITIVE
AAWSNPNLKLSTCXWKJDFGSJRFPVL...
FINDTHETRUEPOSITIVE
IOLSJDFGASEDMLAATTACKATDAWN...
FINDTHETRUEPOSITIVE
IOLSJDFGASEDMLAATTACKATDAWN...
AATTACKATDAWNASKLGKALSHIEHF...
FINDTHETRUEPOSITIVE
IOLSJDFGASEDMLAATTACKATDAWN...
AATTACKATDAWNASKLGKALSHIEHF...
ONDECEMBEREIGHTATTACKATDAWN...
MESSAGE DECRYPTED!
STILLA LOTOFHUMANEFFORT
● Try different cribs
● Find all crib-cipher pairs
● Create menus
● Find best menu
● Run multiple bombes
● Analyze final decryptions
+
Et al.
BUILD
ENIGMA
INITIAL
Configuration
PROCESSING
CLEARINPUT
TEXT
CIPHEREDOUTPUT
BUILD
ENIGMA
INITIAL
Configuration
PROCESSING
CLEARINPUT
TEXT
CIPHEREDOUTPUT
~0.6ms
BUILD
ENIGMA
INITIAL
Configuration
PROCESSING
CLEARINPUT
TEXT
CIPHEREDOUTPUT
~0.6ms Brute force attack?
BUILD
ENIGMA
INITIAL
Configuration
PROCESSING
CLEARINPUT
TEXT
CIPHEREDOUTPUT
~0.6ms Brute force attack?
FINDING
A CRIB
AAWSNPNLKLSTCXWKJDFGSJRFPVLDKFCSDAS
LKFDJGSUIERGBVYDCYBWEKHGFGIUBHFBNKV
JZFDZNBWERJOBJZJFBFJRLBJSZHSUKIERKZ
KJRYGZFHBVUBUSEYAOPQZMALSWURNC...
- ATTACKATDAWN
- WEATHERREPORT
- DATEOFARRIVAL
- NOTHINGTOREPORT
- ...
msg:
possibilities:
FINDING
A CRIB
FINDING
A CRIB
str manipulation
FINDING
A CRIB
~3ms
FINDING
A MENU
ATTACKATDAWN
WSNPNLKLSTCX
FINDING
A MENU
FINDING
A MENU
dict for direct access
FINDING
A MENU
DSF to find cycles
FINDING
A MENU
~25ms
RUNNING
BOMBE
RUNNING
BOMBE
RUNNING
BOMBE
multiple enigmas at a time (multithreading)
RUNNING
BOMBE
math deductions to remove possibilities
RUNNING
BOMBE
add all candidates: all but one are false positives
RUNNING
BOMBE
~5m
ANALIZE
RESULT
ANALIZE
REsULT
ANALIZE
REsULT
detect language words
ANALIZE
REsULT
word-frequency analysis
tokenization
ANALIZE
REsULT
text distribution
perplexity
LET’SCOMPARE!
Finding a crib: ~20 m ~3 ms
Finding a menu: ~1 h ~25 ms
Running the bombe: ~2-4 h ~5 m
Analyzing results: ~30 m ~2 m
T.I.L
TODAYiLEARNED
● Crypto makes technology evolve
● All it takes is a different way of thinking
● Design flaws become exploits
SURPRISEBONUS
Let’susepython
● What if we do an spectrogram of it?
Credits: https://github.com/sam1902/SpectroGen/
Wecanusepythonnow
● Seems familiar?
(if used correctly)
Toolsenhanceourhumanity
¡GRACIAS!
mariacamilarg.me/

Breaking the Enigma: what if Turing had Python?