Sådan sendes hemmelige meddelelser

Kryptografi er videnskaben om at bruge koder og chifre til at beskytte meddelelser på det mest basale niveau. Kryptering er kodning af meddelelser med det formål kun at lade den tilsigtede modtager forstå betydningen af ​​meddelelsen. Det er en tovejsfunktion (du skal være i stand til at fortryde den forvrængning, du har gjort med meddelelsen). Dette er designet til at beskytte data under transit.

En af de tidligste chifre involverede et simpelt skift. For eksempel, hvis du bare skifter alle bogstaverne i alfabetet nogle få, kan alfabetet se ud som følger:

ABCDEFGHIJKLMNOPQRSTUVWXYZ

NOPQRSTUVWXYZABCDEFGHIJKLM

Derefter svarer hvert bogstav i alfabetet til et andet bogstav, men det er svært at finde ud af, hvilket, hvis du ikke allerede ved det. Ved hjælp af denne chiffer oversættes meddelelsen 'Hello' til 'Uryyb'.

Desværre gjorde fremskridt inden for analyse, især mønsteranalyse drevet af meget kraftige computere, disse typer cyferer meget lette at bryde.

Som svar på det har vi udviklet meget stærke, komplekse algoritmer. Disse kan opdeles i to grundlæggende typer kryptering - symmetriske algoritmer og asymmetriske algoritmer.

Symmetriske algoritmer er også kendt som 'hemmelige nøgle' ​​algoritmer, og asymmetriske algoritmer er kendt som 'offentlige nøgle' ​​algoritmer. Hovedforskellen mellem de to er, at symmetriske algoritmer bruger den samme nøgle til at kode og afkode (se første figur nedenfor), mens asymmetriske algoritmer bruger forskellige nøgler til kryptering og dekryptering (se den anden figur nedenfor).

Som du kan se i figuren ovenfor, med symmetrisk kryptering, hvis Bob og Midge ønsker at kommunikere, krypterer Bob først sin besked med den hemmelige nøgle (den krypterede meddelelse kaldes ciphertext). Så sender han det til Midge. Midge dekrypterer derefter beskeden med den samme hemmelige nøgle og er i stand til at læse beskeden. For at sende en besked tilbage, er processen vendt.

Denne proces er hurtig, skalerbar og meget sikker. Problemet med det er, at det kræver, at begge parter allerede har den samme hemmelige nøgle. Hvis de ikke gør det, skal de sende det langs usikre kanaler, hvilket i det væsentlige fjerner krypteringens sikkerhed.

Med asymmetrisk kryptering, som i figuren ovenfor, hvis Bob og Midge ønsker at kommunikere, krypterer Bob sin besked med Midge's offentlige nøgle og sender den til hende. Derefter krypterer hun beskeden med sin private nøgle for at læse den. For at sende en besked tilbage, er processen vendt.

På denne måde kan enhver sende Midge en besked, da hun kan gøre sin offentlige nøgle tilgængelig for alle, men kun hun kan dekryptere en besked (da hun holder sin private nøgle hemmelig). Det løser også behovet for at videregive en hemmelig nøgle langs usikre kanaler, fordi der slet ikke er behov for at videregive en hemmelighed. Ulempen er, at det kræver, at alle, der ønsker at kommunikere, har to forskellige nøgler (ikke skalerbare), og det er relativt langsomt.

Generelt, når vi taler om kryptering, er de vigtigste overvejelser:

  • Authentication / Nonrepudiation - Hvorvidt du kan bevise, hvor beskeder stammer (er jeg sikker på, hvem der har sendt denne besked?).
  • Genbrug - Kan jeg fortsætte med at bruge denne nøgle, eller skal den regenereres for hver ny kommunikation?
  • Effektivitet - Hvor hurtigt kan jeg overføre store mængder data?
  • Skalerbarhed - er dette muligt for store grupper?
  • Distribution - hvordan distribuerer du nøgler til de mennesker, du kommunikerer med, uden at videregive hemmeligheden til nogen anden?

Det er her væsentlige forskelle begynder at komme op mellem symmetrisk og asymmetrisk kryptering, opsummeret nedenfor:

For at bruge det bedste fra begge verdener bruger mange moderne krypteringsprotokoller asymmetrisk kryptering til at etablere en forbindelse og skabe en delt hemmelighed. Derefter skifter de til symmetrisk kryptering for at drage fordel af hastighedsforskellen.

Jo mere jeg lærer om kryptografi, jo mere synes jeg Alice og Bob sandsynligvis bare skal tale personligt.

- Paul Reinheimer (@preinheimer) 13. marts 2017