Istedet for å stage-dive ned i hylekoret, så lar vi heller datalagringsdirektivet inspirere oss til litt “roll your own”- crypto. Jeg antar at dette også kan gjelde flere – kanskje til og med de som datalagringsdirektivet er myntet på ?

Jeg lovte for 14 måneder siden en flaske Crème de menthe til førstemann på jobben som klarte å knekke en RSA cipher med en astronomisk 25-bits nøkkel. Det er fremdeles ingen som har hentet flaska – og jeg må innrømme at jeg er bittelittegrann skuffa over kollegene.

Lett inspirert av Simon Singhs “The Code Book”, samt Neal Stephensons “Cryptonomicon”, så kjører vi nå på med 2 crypto-challenges på TimeExpander (Må innrømme at jeg håper bittelittegranne på at Mr.Black kliner til med et vakkert CUDA-basert angrep her). Førstemann som tar oppgave 1, har sikret seg en av de viktigste ingrediensene til en Long Island Iced Tea. Tar noen oppgave 2, så er jeg målløs – selv om vi fremdeles er milevis unna sterk kryptering (den er kanskje noe i nærheten av 3300 bits nøkkel).

De fleste har vel allerede tafset på PGP en eller annen gang i livet, men det er jo alltid mye morsommere å implementere selv.

Algoritmen er mainstream RSA, og encoding er den samme for begge oppgavene. Blokkstørrelsen er på 6 ASCII-tegn. (Eks. ABABCC kodes om til tallet 065066065066067067, som så krypteres til en blokk)

Challenge 1

Eksponenten er her 13, og modulus er 67678791760781523437. Dette koker ned til en 64-bits nøkkel, og på en gjennomsnittlig laptop, så vil du finne faktorene i denne på litt over 6 sekunder i GHC-interpretern (Vil anbefale å laste ned factors.hs + avhengigheter ). Når du har funnet faktorene, så kan du beregne dekrypteringseksponenten med Euclids litt mer hårete algoritme. Har du funnet faktorene p & q, så beregner du (q-1)*(p-1) som du sender inn som første parameter i algoritma. Eksponenten sender du inn som andre parameter. Tredje-(ut)parameter gir deg den überhemmelige dekrypteringseksponenten du trengre for å få ut klarteksten.

Meldinga er:

29643486281214166221
31754568318096595222
18866919755208611117
55040353993448503713

Challenge 2

Samme eksponent, men litt mer spenstig modulus (

678648287556408617566069222098092902319638579724763875423231780887782326290241

8744935562591753666395263203428475274164718768544714991285086897539719863791118

6738188516300965912313252519347371139520672783464398243462618474462789121940809

9114315856609681214446240262839281497875178239697354955962530884728294167958882

1810144649133171263643828721099263415616160241960347422876670232802323954916153

203458325605447155696165221304951552737653043673235876789182276584555029158316

306025226515214149292624577476985142800101585906921256842656760345220750940800

773391507375838096484475814715991700775116950996058350550623510986740512768220

5901173058576812786694734254940160714262362347388194271548813831795003045136323

4931117226890457894237151923513658606018447058856460088641456991246871553798871

6321044744986262680135316851295044487842324672058126529415662142249679080097680

3872828355872743194309262734480141233313566807508114373357542300631203369795753

89505524061770859087441543471000292176019523256017430869)

Meldinga er:

Blokk1:

377115642735908117634179214447605612540218329872407165870138140622416033271

897546885685495927151782530732361682604928598246196985267990225557751408420

636520989535311669448003738074476220310868379166880607681043991761231
Blokk2:

385003780674235349593353258943692556522883981777147082636946189123366585988

38762006293275050883553693166734753353162741955253799670514390196940297464

753492879286385543131085777359141224795483055628098023956281545231
Blokk3:

62262973840636976542976222853245241536540257579793119620781087099370189332

145848943412187781153561779540870288111901778724323262918299776123951572354

8842888816551428732027287524442967514199041656065173235375891920166015625

Blokk4: 688579136852433871931703296

(Konkatener linjene i h.h.v. modulus of hver blokk til ett tall – worpress sliter med lange ord…):

Vote: