Taggat med: daniel j. bernstein

Framtidssäkra krypteringen

Kryptoframtiden

Går det att sia in i framtiden om hur och vilka krypteringsalgoritmer som kommer att bestå?

Både Ja och Nej. Vi kan däremot titta i backspegeln och se vad vi har lärt oss av historien, vilka algoritmer som varit säkra och vilka som knäckts. För att jobba med krypton handlar om att alltid vara på tårna och följa vad som händer i omvärlden gällande nya rön, forskningsrapporter och best practices.

Det gäller att ha en plan för den dagen ett byte ska ske. Hur migrerar vi från SHA1 till SHA256? Kan vi byta hashfuktion på ett enkelt sätt eller blir vi kvar med MD5?

För de handlar inte enbart om att välja bra och trendiga algoritmer, det gäller även att bygga ett förtroende över tid.

Men skulle jag blicka framåt så är ChaCha20 + Poly1305 av Daniel J Bernstein (DJB), Peter Schwabe och Tanja Lange helt klart intressant som nu fått RFC-nummer 7539.

Så klart är elliptiska kurvor (ECC) intressant men titta innan framförallt på arbetet som DJB genomfört i samband med SafeCurves. Och när det gäller end-to-end kryptering så titta på axolotl (som nu WhatsApp använder).

krypto memeHåll Er borta från SHA1, 3DES, MD5 samt snake oil där utvecklare eller tillverkare skryter med löjligt stora nyckellängder eller oknäckbara system.

Och glöm framförallt inte att valet av algoritmer bara är en liten del av ett mycket större arbete som omfattar nyckelhantering, signering, kodgranskning, lökprincipen, patchning och uppsäkrade system och framförallt användare som ska använda systemet samt utbildas.

NaCl: Networking and Cryptography library

NaCl är ett nytt krypteringsbibliotek som Tanja Lange (Technische Universiteit Eindhoven) och Daniel J. Bernstein (University of Illinois, Chicago) står bakom. Utvecklingen är sponsrad av EU:s program FP7

Biblioteket är mycket lätt och använda, vanligtvis så genomförs nedan steg vid kryptering med hjälp av RSA + AES:

  • Generate a random AES key.
  • Use the AES key to encrypt the message.
  • Hash the encrypted message using SHA-256.
  • Read the sender’s RSA secret key from ”wire format.”
  • Use the sender’s RSA secret key to sign the hash.
  • Read the recipient’s RSA public key from wire format.
  • Use the recipient’s public key to encrypt the AES key, hash, and signature.
  • Convert the encrypted key, hash, and signature to wire format.
  • Concatenate with the encrypted message.

Men med NaCl så anropas enbart funktionen crypto_box som gör allt i ett steg.