[Alg] Hoe werkt de Data Encryption Standard (DES)*

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • hneel
  • Registratie: Maart 2001
  • Laatst online: 12:46

hneel

denkt er het zijne van

Topicstarter
Ik heb wat algemene vragen over DES encryptie. Ik wil dit gaan implementeren met als doel om een puzzel te kraken.

Ik heb nu al wat zitten experimenteren met o.a. openssl en een programma genaamd Cryptool. Het valt me op dat er een aantal verschillen tussen zitten. Bij openssl kan je files encrypten/decrypten met een password en bij Cryptool moet dat een 64-bits key zijn. Ik ben er nu al achter dat DES intern werkt met zo'n 64-bits key, en dat openssl waarschijnlijk een functie gebruikt om vanuit dat password een key te genereren. Maar is zo'n omzettingsfunctie nu gestandariseerd? Of is het mogelijk dat weer een andere DES implementatie ook met passwords kan werken maar die in heel andere key's omzet?

Iets anders wat me opvalt is het volgende: Als ik in openssl een file decrypt met een verkeerd password, dan krijg ik een melding 'bad decrypt'. In Cryptool wordt het gewoon gedecodeerd en komt er gewoon verkeerde data uit. Net alsof het een soort simpele XOR encryptie is (daarbij kan een decoderingsprogramma immers ook niet uitmaken welke key geldig is en welke niet). Hoe zit dat bij DES? stel dat ik een file van 8 karakters encrypt met een 64-bits key. Zo'n 64-bits key geeft 2^64 verschillende mogelijkheden, als ik goed reken. Komen daar dan ook evenzoveel mogelijke verschillende output uit? Zo ja, hoe weet het programma dan bij decoderen of een key goed of fout is? Of zit er in de key ook een soort checksum/crc/whatever waarop gecontroleerd wordt?

Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Ik neem aan dat je Wikipedia: Data Encryption Standard al hebt doorgelezen?

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Ook hier kan je nog meer over de standaard lezen: http://www.itl.nist.gov/fipspubs/fip46-2.htm

Een tool zou kunnen weten of de key goed of fout is door kennis te hebben over het formaat van de output. Als je bijvoorbeeld weet dat je een zip-file aan het uitpakken ben kun je naar de zip-header kijken.

Ook is het mogenlijk dat bijvoorbeeld de padding niet klopt. Omdat het een block-cypher is moet er aan het eind wat bytes toegevoegd worden om een blok compleet te maken, als die bytes niet kloppen weet je ook dat het decrypten niet juist is gegaan.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
In het geval van tekstberichten word gekeken naar de frequenties van de verschillende karakters. Je weet dat er statistisch gezien veel 'e' en 'i' karakters voorkomen en relatief weinig ¬ en » :)

https://niels.nu


Acties:
  • 0 Henk 'm!

  • hneel
  • Registratie: Maart 2001
  • Laatst online: 12:46

hneel

denkt er het zijne van

Topicstarter
Ik neem aan dat je Wikipedia: Data Encryption Standard al hebt doorgelezen?
Ook hier kan je nog meer over de standaard lezen: http://www.itl.nist.gov/fipspubs/fip46-2.htm
Het probleem is dat alles wat ik totnutoe heb kunnen vinden ofwel te simpel is, ofwel te complex. Het laatste artikel gaat me bv boven mijn pet. misschien dat ik het antwoord op mijn vragen er wel uit zou kunnen halen als ik het allemaal zou snappen. Maar misschien is er iemand die het me gewoon kan vertellen.
In het geval van tekstberichten word gekeken naar de frequenties van de verschillende karakters. Je weet dat er statistisch gezien veel 'e' en 'i' karakters voorkomen en relatief weinig ¬ en »
Dat is waar. Alleen de vraag is: werkt DES (of de openssl implementatie) op die manier. Die weten toch niet wat voor data ik wil encrypten? Misschien wel een binary file, een foto ofzoiets.

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Hydra schreef op woensdag 17 juni 2009 @ 11:26:
In het geval van tekstberichten word gekeken naar de frequenties van de verschillende karakters. Je weet dat er statistisch gezien veel 'e' en 'i' karakters voorkomen en relatief weinig ¬ en » :)
Frequentie analyse ( http://nl.wikipedia.org/w...tieanalyse_(cryptografie) ) word vooral gebruikt om cyphers te kraken. Echter is dit bij een block-cypher al een stuk lastiger.
hneel schreef op woensdag 17 juni 2009 @ 11:46:
Het probleem is dat alles wat ik totnutoe heb kunnen vinden ofwel te simpel is, ofwel te complex. Het laatste artikel gaat me bv boven mijn pet. misschien dat ik het antwoord op mijn vragen er wel uit zou kunnen halen als ik het allemaal zou snappen. Maar misschien is er iemand die het me gewoon kan vertellen.
Daarom vertel ik er ook nog een versimpeld verhaaltje bij ;)
Dat is waar. Alleen de vraag is: werkt DES (of de openssl implementatie) op die manier. Die weten toch niet wat voor data ik wil encrypten? Misschien wel een binary file, een foto ofzoiets.
Het lijkt mij sterk dat de implementaties die techniek gebruiken om te kijken of de decryptie gelukt is. Het lijkt mij het meest logisch dat ze gewoon naar de padding kijken ( http://www.di-mgt.com.au/cryptopad.html ), ze weten hoe die er uit hoort te komen, dus weet je ook of de decryptie gelukt is.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • hneel
  • Registratie: Maart 2001
  • Laatst online: 12:46

hneel

denkt er het zijne van

Topicstarter
Maar als de lengte van je data precies een veelvoud van 8 is? Dan heb je geen padding, toch?

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
hneel schreef op woensdag 17 juni 2009 @ 12:48:
Maar als de lengte van je data precies een veelvoud van 8 is? Dan heb je geen padding, toch?
Je kan als afspraak bijvoorbeeld hanteren dat je altijd minstens 1 padding byte hebt. Je krijgt dan in het geval van een veelvoud van 8 gewoon een extra block.

Je hebt zowiezo een afspraak nodig om te kunnen detecteren of er padding toegepast is, anders is het resultaat inclusief padding, en dan is je resultaat dus ook meestal niet goed.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • Data-base
  • Registratie: Maart 2007
  • Laatst online: 07-09 10:33
Lees dit boek eens door:

http://www.amazon.com/Fun...oks&qid=1245357359&sr=1-3

Staat alles in over des (en nog veel meer)

Je kan m lezen via google books:
http://books.google.com/b...ntals+of+Cryptology&hl=nl

[ Voor 23% gewijzigd door Data-base op 18-06-2009 22:43 ]


Acties:
  • 0 Henk 'm!

  • Confusion
  • Registratie: April 2001
  • Laatst online: 01-03-2024

Confusion

Fallen from grace

hneel schreef op dinsdag 16 juni 2009 @ 23:48:
Maar is zo'n omzettingsfunctie nu gestandariseerd? Of is het mogelijk dat weer een andere DES implementatie ook met passwords kan werken maar die in heel andere key's omzet?
Voor de afleiding van de key uit een password gebruik je een zogenaamde key derivation function (KDF). In het geval van (3)DES is dat volgens mij de PBKDF2 uit RFC 2898.

[ Voor 4% gewijzigd door Confusion op 19-06-2009 22:00 ]

Wie trösten wir uns, die Mörder aller Mörder?


Acties:
  • 0 Henk 'm!

  • hneel
  • Registratie: Maart 2001
  • Laatst online: 12:46

hneel

denkt er het zijne van

Topicstarter
Zo. Inmiddels ben ik er wat dieper in gedoken. Ik heb vooral naar de sourcecode van OpenSSL gekeken. Het blijkt dat alleen in dat programma al 3 verschillende methoden bestaan om van een ascii password een binaire key te krijgen. Waarbij een van deze methodes ook nog eens met verschillende parameters kan werken. Dat levert elke keer een andere key op. En daarnaast heb ik gemerkt dat sommige andere programma's van nog weer andere methode's gebruik maken.

Dan over mijn andere vraag: de functie om te decrypten levert geen returnwaarde op. Controle kan eventueel via de padding, maar als daar geen gebruik van wordt gemaakt zal je toch zelf de uitkomst moeten bekijken/analyseren.

Mocht in de toekomst nog iemand anders met deze vragen zitten; hier is dus het antwoord.
Pagina: 1