Als embedded programmeur kom ik steeds vaker dingen tegen waar encryptie noodzakelijk is zoals het versleutelen van firmware voor een bootloader, een digitale handtekening in een xml-document, versleutelde verbinding van een embedded modem met een server etc. Ik loop steeds weer tegen mijn beperkte kennis over encryptie aan. Ik zoek daarom een goed boek die zowel de basisprincipes van encryptie behandeld als de implementatie in embedded c-code. Het mogen ook twee boeken zijn, maar ik heb liever een boek die zowel theorie als praktijk behandeld zodat ik het kan implementeren.
Wat ik onder andere wil weten is:

  • soorten encryptie (symmetrisch, assymetrisch, ...)
  • signeren van data
  • hash (is meer gerelateerd aan integriteitscheck/uniek id volgens mij, maar dat valt volgens mij ook onder encryptie in de brede zin)
  • opzetten versleutelde verbinding (in welke volgorde wissel je sleutels uit etc.)
  • certificaat (geen idee wat dat is, maar dat heb je nodig voor SSL verbindingen)
  • random getallen
  • unieke id's
  • soorten aanvallen die mogelijk zijn en hoe hier tegen te beveiligen
  • end-to-end-encryptie (toch wel een must aangezien de uart-verbinding tussen een microcontroller en een embedded modem gewoon af te luisteren is)
  • implementatie in c-code

Er zijn heel veel boeken over encryptie, maar ik kan door het bos de bomen niet meer zien.

Een voorbeeld van wat ik graag zou willen begrijpen is het protocol van de https://bt.tn/. Ik heb de sim900-variant van deze al afgeluisterd. Elke keer stuurt deze een andere key naar de server, dus je kunt geen valse data naar de server sturen. Hoe werkt dat? Stuurt deze een key op basis van een timestamp zodat het elke keer uniek is? Of zit er een grote tabel in met keys? Ik vind het erg interessant.

Even OT: Als je een leuk boek over dit soort zaken wil lezen: Cryptonomicon vond ik erg gaaf.

http://www.eetimes.com/document.asp?doc_id=1278110

Hier wordt een soort boek beschreven die je zoekt, denk ik ;-)
page 3 geeft zelfs een code-example

Wel geen boek, maar misschien nuttig: ik gebruik meestal een pic24fjxxxGx202/204/406/410/412 met embedded hw encryption...

Ik krijg de indruk dat critiacrof in eerste instantie literatuur en voorbeelden nodig heeft waarin de algemene principes uitgelegd worden.

Daarna implementatie in een systeem, maar of je die 2 onderwerpen in 1 boek zult terugvinden voor een specifiek systeem lijkt me onwaarschijnlijk.

Er is toch geen wezenlijk verschil tussen implementatie op het ene of andere systeem? Alleen crypto hardware ondersteuning is relevant, als je zuinig moet zijn op je cpu cycles.

Op 15 oktober 2015 11:06:12 schreef fripster:
Even OT: Als je een leuk boek over dit soort zaken wil lezen: Cryptonomicon vond ik erg gaaf.

Even de epub opgezocht. Oef wat een dikke pil. Het lijkt wel goed leesbaar te zijn..?

Bruce Schneier's Applied Cryptography vond ik erg goed, maar dat is een theorieboek (hoewel er wel veel voorbeelden in C bij zitten). Embedded had je toen sowieso nog niet. :)

Waar je vooral op moet letten, is dat je de opgedane kennis gebruikt om open source encryptiebibliotheken of goed geteste voorbeeldcode toe te passen. Zelf het wiel opnieuw uitvinden blijkt in de praktijk regelmatig in gatenkaas te resulteren.

@joopv: ja wel dik, maar niet meer weg te leggen als je er eenmaal inzit ;-)

Op 15 oktober 2015 22:41:30 schreef maartenbakker:
Waar je vooral op moet letten, is dat je de opgedane kennis gebruikt om open source encryptiebibliotheken of goed geteste voorbeeldcode toe te passen.

En dan nog... Ik heb net even "logjam" zitten bestuderen. Blijkt dat voor "diffie-helman" key exchange, de keuze van het priemgetal er niet toe doet. Die is toch zo goed als openbaar. Kan je net zo goed helemaal openbaar maken.... Dus sommige pakketten leveren gewoon een priemgetal mee dat ze altijd gebruiken. Blijkt dat "bad guys" dan 2 weken computertijd investeren voor zo'n priemgetal, en dan een database hebben waarmee ze in ongeveer 1 minuut je key kunnen achterhalen. Ooops. Blijkt dat een significant deel van de HTTPS servers hetzelfde priemgetal gebruikt, zodat de NSA maar een paar van die "2 weken" runs hoeft te doen.....