Kryptografi: Forklarede symmetriske og asymmetriske nøgealgoritmer

Kryptografi blev født af behovet for at gøre en datatransmission privat, så på basis, kryptografi er den metode, der anvendes til en besked for at kryptere og dekryptere den på en sådan måde, at kun almindelig tekst er synlig for afsenderen og modtageren af ​​den nævnte besked, at det er fuldstændig ulæseligt for enhver, der opfanger den midt i transmissionen og til gengæld er sikker nok til at modstå ethvert angreb der kan kompromittere de oplysninger, der transmitteres. Der er to typer kryptering afhængigt af typen af ​​nøgler. Kryptografi, hvis algoritmer kun bruger en nøgle, eller symmetrisk kryptografi , og kryptografi af to-nøgle algoritmer, asymmetrisk kryptografi . Her vil vi være i stand til at se, hvordan hver enkelt arbejder, og hvad deres egenskaber og forskelle er.

Symmetrisk kryptografi eller en-nøglekryptografi

Symmetrisk kryptografi er den ældste kryptografiske teknik derude, men det giver stadig et højt sikkerhedsniveau. Det er baseret på brugen af ​​en enkelt hemmelig nøgle, der har ansvaret for kryptering og dekryptering af oplysningerne, uanset om det er information under forsendelse med protokoller som TLS eller information om en flytbar lagerenhed. Symmetrisk kryptografi var den første metode, der blev brugt til at kryptere informationen, den er baseret på, at den samme adgangskode vil blive brugt til både kryptering og dekryptering, derfor er det vigtigt, at alle brugere, der ønsker at kryptere eller dekryptere beskeden, har denne hemmelig nøgle, ellers kan de ikke. Takket være symmetrisk kryptografi kan vi kommunikere eller gemme filer sikkert.

Kryptografi

Kryptering Brug af en symmetrisk nøgle betyder, at mindst to brugere skal have den hemmelige nøgle. Ved hjælp af denne nøgle krypteres og dekrypteres alle meddelelser, der transmitteres gennem den usikre kanal, såsom Internettet, og derfor har vi brug for datakryptering for at opretholde fortrolighed. Enhver bruger, der ønsker at få adgang til den krypterede besked, skal have denne dekrypteringsadgangskode, ellers kan den ikke læses.

Metoden til at kryptere dataene er baseret på det faktum, at afsenderen krypterer meddelelsen med sin private nøgle, han sender den gennem den usikre kanal, og modtageren bliver nødt til at dekryptere den med den samme adgangskode eller den private nøgle, som afsenderen har brugt.

Der er flere punkter, som en symmetrisk nøgealgoritme skal opfylde for at være sikker i brug:

  • Når beskeden er krypteret, kan hverken krypteringsnøglen eller den klare meddelelse opnås ved enhver metode.
  • Hvis vi kender den klare besked og krypteringen, der skal bruges mere tid og penge på at skaffe nøglen til at få adgang til den klare meddelelse end den mulige værdi af informationen der er stjålet.

Brute force-angreb er de ægte fjende af symmetriske kryptografialgoritmer , skal man huske på, at disse algoritmer er offentlige, og at deres styrke afhænger direkte af, hvor kompleks algoritmen er internt, og også af længden på nøglen, der bruges til at forhindre disse angreb.

Det vigtigste ved symmetrisk kryptografi er at beskytte den private nøgle eller adgangskode. Det største problem, der opstår, er distributionen af ​​denne private nøgle eller adgangskode til alle brugere, både afsendere og modtagere af informationen, for at kryptere og dekryptere informationen i meddelelsen. Det er vigtigt, at alle brugere af systemet beskytter den private nøgle eller adgangskode bedst muligt, for hvis det falder i de forkerte hænder, ville hele systemet blive kompromitteret og skulle generere en ny nøgle og omfordele den private nøgle til de forskellige deltagere.

En af forskellene vi har mellem symmetrisk og asymmetrisk kryptografi er, at i symmetrisk har alle brugere den samme krypterings- / dekrypteringsnøgle, hvis vi har mere end en kommunikationskanal, vil vi have lige så mange private nøgler som parallelle kommunikationskanaler. I de asymmetriske vil hver bruger dog have et par nøgler (offentlige og private) til alle kommunikationskanaler, uanset antallet af sikre kanaler, der skal vedligeholdes, er vi kun nødt til at beskytte den private nøgle.

Fordelen ved symmetriske kryptografialgoritmer er, at de er hurtige, meget hurtige. Derudover er hardwarekrypteringsacceleration i de senere år blevet inkorporeret i computerprocessorer, servere, routere og andre enheder, på denne måde kan vi overføre data via VPN rigtig hurtigt. Hastigheden afhænger også af den symmetriske krypteringsalgoritme, der skal bruges, for eksempel er AES og ChaCha20 to af de hurtigste og mest sikre, vi har i dag, men udstyrets hardware påvirker meget.

Nu skal vi tale detaljeret om to symmetriske algoritmer, der bruges kontinuerligt i dag, enten i HTTPS-forbindelser med TLS 1.2 og TLS 1.3, i virtuelle private netværk med IPsec, OpenVPN eller WireGuard, og også i andre områder, hvor datakryptering bruges, som i VeraCrypt.

AES (Advanced Encryption Standard)

Den symmetriske AES-algoritme var ansvarlig for erstatter DES , og bruges i øjeblikket i alle sikre kanaler og protokoller såsom TLS, FTPES, virtuelle private netværk og meget mere. AES-kryptering kan bruges i både software og hardware, AES er en blokkrypteringsalgoritme, den faste blokstørrelse er 128 bit . Længden af ​​nøglen kan vælges, og det har vi 128, 192 og 256 bit til rådighed er længden på 128 bit som standard, men 256 bit er også meget udbredt.

Et meget vigtigt aspekt er, at AES er ansvarlig for at generere en 4 × 4 matrix, og derefter anvendes en række krypteringsrunder på den. For en 128-bit nøgle anvendes 10 runder med kryptering, for en 192-bit nøgle anvendes 12 runder, og for en 256-bit nøgle er de anvendte runder 14. Fra starten tvivler mange kryptografer på dens sikkerhed, og det er at angreb er blevet registreret på et antal runder tæt på den sidste runde, specielt 7 runder for 128-bit nøgler, 8 runder for 192-bit nøgler og 9 runder for 256-bit nøgler er blevet dekrypteret.

Krypteringstilstand er den måde, hvorpå AES-krypterede meddelelsesblokke håndteres, der er forskellige typer, og hver af dem fungerer på en anden måde. For eksempel er der AES-CBC, AES-CFB og AES-OFB , vi skal forklare, hvad der præcist er, der vises i kryptografiske biblioteker som OpenSSL og LibreSSL.

  • CBC (Cipher-block chaining) - Denne krypteringstilstand er blevet udbredt i forbindelse med en hash-funktion for at verificere ægtheden af ​​data og bruges stadig i dag. Denne krypteringstilstand består af XORing af hver blok med almindelig tekst med den tidligere krypteringsblok. Hver krypteret blok afhænger af den tidligere behandlede indtil det tidspunkt. For at udføre denne XOR-mulighed med den første tekstblok bruges en initialiseringsvektor IV. Denne krypteringstilstand udføres sekventielt, den kan ikke behandles parallelt for at øge ydeevnen i datakryptering / dekryptering.
  • OFB (outputfeedback) : i denne tilstand bruges den hemmelige nøgle til at oprette en pseudo-tilfældig blok, som XOR-operationen med almindelig tekst anvendes til at oprette ciphertext. I dette tilfælde kræves der også en initialiseringsvektor, som skal være unik for hver krypteret meddelelse. Hvis der ikke bruges en anden IV, er systemets sikkerhed kompromitteret. Det kan heller ikke pareres.
  • CFB (krypteringsfeedback) : det gøres det samme som i OFB, men for at producere keystream krypterer det den sidste krypteringsblok i stedet for den sidste blok i keystream som OFB gør. Kryptering kan ikke paralleliseres, men dekryptering kan dog.
  • GCM ( Galois / tællertilstand) : Denne krypteringstilstand er en af ​​de bedste med hensyn til sikkerhed og hastighed, GCM tillader parallel behandling og er kompatibel med AES-NI-processorer for at fremskynde datakryptering / dekryptering. Denne krypteringstilstand er AEAD, udover at kryptere dataene er den også i stand til at autentificere dem og kontrollere integriteten af ​​dataene for at sikre, at de ikke er blevet ændret. GCM kan også acceptere tilfældige initialiseringsvektorer.

Som du har set, er AES i øjeblikket en af ​​de vigtigste og mest anvendte symmetriske krypteringsalgoritmer i verden, men den mest anbefalede krypteringstilstand er AES-GCM, da den indeholder AEAD.

ChaCha20

ChaCha20-algoritmen er en symmetrisk krypteringsalgoritme, der understøtter 128-bit og 256-bit og højhastighedstaster, i modsætning til AES, som er en blokciffer, er ChaCha20 en streamcipher. Det har lignende egenskaber som sin forgænger Salsa20 men med en primitiv funktion på 12 eller 20 forskellige runder. Dens kode blev offentliggjort, standardiseret af IETF i RFC 7539 og i softwareimplementeringer, den er meget mere effektiv og hurtigere end AES, så den har hurtigt skabt en plads inden for de mest anvendte algoritmer i dag.

For at finde ud af hvorfor det er blevet så berømt, vil vi placere Google i midten, så alt kan forstås meget hurtigere. HTPPS-forbindelser er fokuseret på at tilbyde maksimal sikkerhed på de websteder, som vi besøger hver dag, det var det næste trin i HTTP-protokollen, som overhovedet ikke havde nogen beskyttelse. Kryptering varierer dog fra browser til browser. Indtil for et par år siden Chrome forum Android har brugt AES-GCM som sin symmetriske krypteringsalgoritme, dog har Google arbejdet med mere aktuel, sikker og hurtigere kryptering i mange år.

Hopet i popularitet opstår, når det nye efter lanceringen i desktopversionen af ​​Chrome ChaCha20 til kryptering og Poly1305 til godkendelse ankommer til Android. Et titanisk job, der oversættes til en symmetrisk algoritme, der giver mere sikkerhed, og som er immun over for forskellige typer angreb. Det mest bemærkelsesværdige er dog, at det opnår en ydeevne tre gange højere end noget ældre protokoller som AES, på denne måde kapaciteterne i CPU bruges også bedre og en reduktion på 16% i bredden af ​​det anvendte bånd, hvilket gør det muligt at drage fordel af forbindelsen endnu mere.

ChaCha20 bruges i vid udstrækning i HTTPS-forbindelser, i SSH-forbindelser til styring af servere, og selv den populære WireGuard VPN-protokol bruger kun ChaCha20 til symmetrisk datakryptering. Det er meget muligt, at vi snart også vil se ChaCha20 i IPsec-forbindelser, i mellemtiden skal du bruge AES-GCM, når det er muligt.

Indtil videre har forklaringen af ​​symmetrisk kryptografi, vi har kommenteret de to algoritmer, der ofte bruges i dag, der er mange flere, der tidligere var meget relevante, især for udviklingen af ​​nuværende, da de nye baser er de afgjort på oplevelsen af ​​det gamle, deres fejl og deres fordele. Algoritmer som DES, 3DES, RC5 eller IDEA banede vejen for de nye, så vi i dag har rigtig stærke krypteringsalgoritmer med kapacitet til at modstå angreb og beskytte al vores information mod uønskede og ondsindede hænder.

Asymmetrisk kryptografi eller offentlig nøglekryptografi

Asymmetrisk nøglekryptografi er også kendt som en offentlig nøgle, det bruger to forskellige nøgler i hver ende af kommunikationen til at kryptere og dekryptere den . Hver bruger af kommunikationen har en offentlig og en privat nøgle. Den private nøgle skal beskyttes og opbevares af brugeren selv, den vil være hemmelig og må ikke være kendt af absolut nogen, og det skal heller ikke sendes til nogen. Den offentlige nøgle vil være tilgængelig for alle brugere af systemet, der ønsker at kommunikere.

Styrken ved det system, hvormed denne type asymmetrisk algoritme er sikker, er, at den er baseret på matematiske funktioner, hvilke er nemme at løse i en forstand , men hvis opløsning i den modsatte retning er ekstremt kompliceret , medmindre nøglen er kendt. . Offentlige og private nøgler genereres samtidigt og er bundet til hinanden. Forholdet mellem de to skal være meget komplekst, så det er meget vanskeligt for os at få en nøgle fra den anden, i dette tilfælde at få den private nøgle, da den offentlige nøgle er kendt af alle, der er forbundet med systemet.

Parene på tasterne har flere og meget vigtige funktioner, blandt hvilke vi fremhæver:

  • Krypter oplysningerne.
  • Sikre integriteten af ​​de transmitterede data.
  • Garanter udstederens ægthed.

Asymmetrisk nøglekryptering

Hvis en person med et nøglepar krypterer en besked med modtagerens offentlige nøgle, kan den besked kun dekrypteres med den tilknyttede private nøgle. Hvis vi krypterer en besked med den private nøgle, kan vi ikke dekryptere den med selve den private nøgle, vi skal bruge den offentlige (i dette tilfælde betragtes det ikke som kryptering, men afsenderens ægthed kontrolleres med dette vil vi kontrollere, at afsenderen er den, der virkelig siger være).

Den matematiske struktur for, hvordan asymmetrisk kryptering fungerer, er denne:

  • Besked + offentlig nøgle = Krypteret besked
  • Krypteret besked + privat nøgle = Dekrypteret besked
  • Besked + privat nøgle = Signeret besked
  • Signeret besked + offentlig nøgle = Godkendelse

Som vi tidligere har kommenteret, når vi taler om kryptografi med symmetrisk nøgle, giver symmetrisk kryptering fortrolighed (kun modtageren kan læse beskeden). Asymmetrisk kryptografi giver andre egenskaber: ægthed, integritet og ikke-afvisning. For at en algoritme kan betragtes som sikker, skal den overholde følgende:

  • Hvis ciphertext er kendt, det skal være meget vanskeligt eller næsten umuligt at udtrække almindelig tekst og privat nøgle ved enhver metode.
  • Hvis almindelig tekst og kryptering er kendt, er det burde være dyrere at få den private nøgle end almindelig tekst .
  • Hvis dataene er krypteret med den offentlige nøgle, der skal kun være en privat nøgle, der er i stand til at dekryptere den , og omvendt.

Fordelen ved asymmetrisk kryptering frem for symmetrisk kryptering er, at den offentlige nøgle kan være kendt af alle brugere af systemet, men dette sker ikke med den private nøgle, og som et resultat af symmetrisk kryptering skal begge brugere kende den samme nøgle. (og adgangskoden skal sendes til hver af de forskellige brugere gennem den etablerede kommunikationskanal).

Drift af det symmetriske og asymmetriske system

Den største ulempe ved denne type kryptering er dens langsommelighed , bremser brugen af ​​denne type nøgler krypteringsprocessen for kommunikation. Løsningen på dette er at bruge både asymmetrisk og symmetrisk kryptering (som protokoller som f.eks IPSec eller OpenVPN gør for virtuelle private netværk, HTTPS for sikre webforbindelser eller i SFTP / FTPES-forbindelser).

Denne kombination af cifre sker som følger. Vi opretter den symmetriske algoritmnøgle, krypterer den med modtagerens offentlige nøgle, sender de krypterede data over den usikre kommunikationskanal, og derefter dekrypterer modtageren dataene ved hjælp af deres private nøgle. Med den symmetriske algoritmnøgle i tyktarmen er det her, når kommunikation ved hjælp af symmetrisk kryptering kan begynde, hvilket gør kommunikation meget hurtigere, end hvis vi kun brugte asymmetrisk kryptografi i al kommunikation.

Det klare eksempel på, hvor denne type kombineret metode bruges, er VPN'er, såsom OpenVPN eller IPsec, hvor den sessionsnøgle, som er kendt af brugerne, regenereres så ofte for yderligere at øge kommunikationssikkerheden uden at medføre en væsentlig forsinkelse i dataoverførslen .

Udfordrende svar

For at øge sikkerheden, denne metode bekræfter, at afsenderen virkelig er den, han hævder at være , for dette sendes en tekst til afsenderen, og han krypterer den med sin private nøgle (hvad han virkelig laver er at underskrive den), afsenderen sender os den krypterede tekst (underskrevet), og vi dekrypterer nøglen (vi vil verificer signaturen) udnyt det faktum, at vi har udstederens offentlige nøgle, og endelig sammenligner vi, at den opnåede besked er den samme, som vi sendte tidligere.

Hvis en bruger efterligner den rigtige udsteder, ville de ikke have den private nøgle, så "udfordringen" ville ikke have været vellykket, og dataene blev ikke kommunikeret.

Digital signatur

Den digitale signatur tillader modtageren af ​​en besked om, at oprindelsen er autentisk , kan vi også kontrollere, om meddelelsen er blevet ændret. Forfalskning af en digital signatur er næsten umulig, medmindre de kender den private nøgle til den person, der underskriver (og vi har allerede sagt før, at den private nøgle skal gemmes, og at ingen skal vide det). Her er de to faser til realisering af den digitale signatur:

  • Signaturproces: afsenderen krypterer dataene med den private nøgle og sender dem til modtageren.
  • Bekræft signaturen: modtageren dekrypterer dataene ved hjælp af afsenderens offentlige nøgle og verificerer, at oplysningerne matcher de originale data (hvis de matcher, er de ikke blevet ændret).

I digitale signaturer bruges hash-funktioner som SHA2-256 og SHA2-512, da asymmetrisk kryptering, som vi tidligere har forklaret, er langsom. Afsenderen af ​​kommunikationen anvender HASH-funktionen på den originale besked for at få fingeraftrykket. Fingeraftrykket krypteres derefter med den private nøgle og sendes til modtageren over den usikre kanal til dekryptering. Modtageren hasher også dine data og sammenligner resultaterne (den, de fik, og den, de modtog). Hvis resultatet af sammenligningen af ​​disse data er negativt, dvs. at der er forskelle mellem hvad der blev opnået og hvad der blev modtaget, oplysningerne er blevet ændret, og fingeraftryksdataene vil have ændret sig. Hvis resultatet er det samme, foregår kommunikationen uden problemer.

Med alt dette har vi opfyldt:

  • Ægthed, udstederen er den, de siger, de er . Signaturen ved oprindelse og destination er den samme.
  • Integritet, meddelelsen er ikke blevet ændret . Hvad der opnås, og hvad der modtages, er det samme.
  • Ingen afvisning, afsenderen kan ikke benægte at have sendt beskeden til modtageren . Den digitale signatur ændres ikke.

Hvis vi ønsker at indføre fortrolighed med kommunikationen, er alt, hvad vi skal gøre, at afsenderen krypterer den originale besked med modtagerens offentlige nøgle.

Asymmetriske nøglekrypteringsalgoritmer

Nu viser vi de to vigtigste asymmetriske algoritmer, der bruges i dag, og vi forklarer, hvordan de fungerer.

Diffie-Hellman

Det er ikke en asymmetrisk algoritme i sig selv, det er en nøgleprotokol, det bruges til at generere en privat nøgle i begge ender af en usikker kommunikationskanal . Det bruges til at hente den private nøgle, hvormed oplysningerne senere bliver krypteret sammen med en symmetrisk krypteringsalgoritme. Styrken ved Diffie-Hellman er, at dens sikkerhed ligger i vanskeligheden ved at beregne den diskrete logaritme af et stort antal (Diffie-Hellmann tillader også brugen af ​​elliptiske kurver).

Problemet med denne algoritme er, at den ikke giver autentificering, den kan ikke validere brugernes identitet, så hvis en tredje bruger kommer midt i kommunikationen, vil de også blive forsynet med nøglerne og kunne derfor etablere kommunikation med afsenderen og modtageren, der efterligner identiteter. For at undgå dette er der flere løsninger, der mindsker og løser problemet, f.eks. Ved hjælp af digitale certifikater.

RSA

Den asymmetriske algoritme par excellence, denne algoritme er baseret på paret nøgler , den offentlige og den private, som vi allerede har talt om tidligere. Sikkerheden ved denne algoritme ligger i problemet med faktorering af meget store heltal og i RSA-problemet, fordi fuldstændig dekryptering af en ciphertext med RSA i øjeblikket ikke er mulig, selvom delvis dekryptering er mulig. Nogle meget vigtige egenskaber ved RSA er nøglelængden. I øjeblikket skal der mindst bruges en længde på 2048 bit, selvom det anbefales, at den er 4096 bit eller højere for større sikkerhed.

Fordel:

  • Problemet med fordelingen af ​​symmetriske nøgler (symmetrisk kryptering) er løst.
  • Det kan bruges til at blive brugt i digitale signaturer.

Ulemper:

  • Sikkerhed afhænger af computerens effektivitet.
  • Det er langsommere end symmetriske nøgealgoritmer.
  • Den private nøgle skal krypteres af en eller anden symmetrisk algoritme.

DSA

Denne algoritme er også rent asymmetrisk, en ulempe ved DSA er, at den ønsker meget mere beregningstid end RSA for hardware-lighed. DSA bruges i vid udstrækning som en digital signaturalgoritme, det er i øjeblikket en standard, men DSA bruges ikke til at kryptere data, kun som en digital signatur. Denne algoritme bruges i vid udstrækning i SSH-forbindelser til at verificere klienters digitale signatur.Derudover er der en variant af DSA baseret på elliptiske kurver (ECDSA), og den er tilgængelig i alle aktuelle kryptografiske biblioteker som OpenSSL, GnuTLS eller LibreSSL. Et andet træk ved DSA er nøglelængden, den mindste nøgellængde er 512 bit, selvom det mest almindelige er at bruge 1024 bit.

Nu kender du de to typer kryptografi og egenskaberne for hver enkelt, med dette vil du vide hvor det er værd at bruge den ene type, og hvor den anden . Over tid vil disse metoder variere eller opdateres til mere sikre, da med stigningen i computerens ydeevne forbedres angreb på denne type sikkerhedsmetoder, men lige nu er de, der er i kraft, og som fortsat bruges til ikke efter at være blevet afsat endnu, er det dem, vi lige har forklaret dig.