Slide 1

Slide 1 text

Turing Breaking)The)Enigma

Slide 2

Slide 2 text

Early&Life

Slide 3

Slide 3 text

Turing's)fond)of)the)football)field, for)geometric)problems)the) touchlines)yield

Slide 4

Slide 4 text

For,%of%course,%the%body%is%a% machine.%It%is%a%vastly%complex% machine,%many,%many%:mes%more% complicated%than%any%machine%ever% made%with%hands;%but%s:ll%a=er%all%a% machine

Slide 5

Slide 5 text

Personally*I*think*that*spirit*is*really* eternally*connected*with*ma5er*but* certainly*not*always*by*the*same* kind*of*body...

Slide 6

Slide 6 text

...I#did#believe#it#possible#for#a#spirit# at#death#to#go#to#a#universe#en5rely# separate#from#our#own,#but#I#now# consider#that#ma;er#and#spirit#are#so# connected#that#this#would#be#a# contradic5on#in#terms

Slide 7

Slide 7 text

Theory'Of'Computa0on

Slide 8

Slide 8 text

Any$effec(vely$generated$theory$ capable$of$expressing$elementary$ arithme(c$cannot$be$both$ consistent$and$complete

Slide 9

Slide 9 text

The$behaviour$of$the$computer$at$ any$moment$is$determined$by$the$ symbols$which$he$is$observing,$and$ his$'state$of$mind'$at$that$moment...

Slide 10

Slide 10 text

...We$will$also$suppose$that$the$ number$of$states$of$mind$which$ need$to$be$taken$into$account$is$ finite

Slide 11

Slide 11 text

A"machine"which"can"read"a" character"at"a"known"point,"and" op2onally"change"state

Slide 12

Slide 12 text

A"machine"which"can"write"a" character"at"a"known"point," op1onally"change"state

Slide 13

Slide 13 text

A"machine"which"can"move"to"any" known"point"on"a"tape

Slide 14

Slide 14 text

$automaton = new Automaton( 1, // initial state [2], // acceptable, final states new Rulebook([ new Rule(1, "a", 1), new Rule(1, "b", 2), new Rule(2, "b", 2), new Rule(2, "a", 1), ]) )

Slide 15

Slide 15 text

assertFalse( $automaton->hasAcceptableState() ); $automaton->readCharacter("a")->readCharacter("b"); assertTrue( $automaton->hasAcceptableState() );

Slide 16

Slide 16 text

github.com/turingphp

Slide 17

Slide 17 text

new Rulebook([ new Rule(1, "a", 1), new Rule(1, "b", 2), new Rule(2, "b", 2), new Rule(2, "a", 1), ]) Given&the&sequence&ababb: Start%in%state%1 Read%a%and%stay%in%state%1 Read%b%and%move%to%state%2 Read%a%and%move%to%state%1 Read%b%and%move%to%state%2 Read%b%and%stay%in%state%2

Slide 18

Slide 18 text

All#complex#machines#can#be# defined#in#terms#of#the#simplest# Determinis6c#Finite#Automaton

Slide 19

Slide 19 text

Understanding+Computa1on, by+Tom+Stuart

Slide 20

Slide 20 text

Enigma

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

No content

Slide 23

Slide 23 text

$machine = new Machine( [ new Rotor( "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "EKMFLGDQVZNTOWYHXUSPAIBRCJ", 0 ), new Rotor( "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "AJDKSIRUXBLHWTMCQGZNPYFVOE", 0 ), new Rotor( "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "BDFHJLCPRTXVZNYEIWGAKMUSQO", 0 ) ], new Reflector( "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "FVPJIAOYEDRZXWGCTKUQSBNMHL" ) );

Slide 24

Slide 24 text

// first rotor new Rotor( "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "EKMFLGDQVZNTOWYHXUSPAIBRCJ", 0 )

Slide 25

Slide 25 text

EKMFLG...IBRCJ-→-KMFLG...BRCJE

Slide 26

Slide 26 text

// second rotor new Rotor( "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "AJDKSIRUXBLHWTMCQGZNPYFVOE", 0 )

Slide 27

Slide 27 text

// third rotor new Rotor( "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "BDFHJLCPRTXVZNYEIWGAKMUSQO", 0 )

Slide 28

Slide 28 text

new Reflector( "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "FVPJIAOYEDRZXWGCTKUQSBNMHL" )

Slide 29

Slide 29 text

And$the$return$trip: B"→"A"→"A"→"T So#we#press#A#and#T#lights#up...

Slide 30

Slide 30 text

A!→!K!→!L!→!V!→!B!→!A!→!A!→!T T!→!A!→!A!→!B!→!V!→!L!→!K!→!A

Slide 31

Slide 31 text

So#long#as#the#rotors#are#in#the#same# posi0on#at#the#start#of#each# message...

Slide 32

Slide 32 text

5"x"4"x"3"x"26³"="1"054"560

Slide 33

Slide 33 text

1.58%x%10²⁰%on%newer%models...

Slide 34

Slide 34 text

Bombe

Slide 35

Slide 35 text

No#le&er#can#produce#itself#as# output

Slide 36

Slide 36 text

Guess%a%phrase

Slide 37

Slide 37 text

Slide&the&phrase&along&the&coded& le1ers&un3l&there&are&no&conflicts

Slide 38

Slide 38 text

Brute&force*se,ngs

Slide 39

Slide 39 text

Bombe&could&a,empt&all& permuta0ons&in&20&minutes

Slide 40

Slide 40 text

Conclusion

Slide 41

Slide 41 text

Thanks @assertchris