Kryptografi: Symmetriska och asymmetriska nyckelalgoritmer förklarade

Kryptografi föddes av behovet av att göra en dataöverföring privat, så på grundval av kryptografi är metoden som används på ett meddelande för att kryptera och dekryptera det på ett sådant sätt att endast klartext är synlig för avsändaren och mottagaren av meddelandet, att det är helt oläsligt för alla som fångar upp det mitt i sändningen och i sin tur att det är tillräckligt säkert för att motstå alla attacker som kan äventyra informationen som överförs. Det finns två typer av kryptering beroende på vilken typ av nycklar du har. Kryptografi vars algoritmer bara använder en nyckel, eller symmetrisk kryptografi , och kryptografi av tvånyckelalgoritmer, asymmetrisk kryptografi . Här kommer vi att kunna se hur var och en fungerar och vad deras egenskaper och skillnader är.

Symmetrisk kryptografi eller kryptografi med en tangent

Symmetrisk kryptografi är den äldsta kryptografiska tekniken där ute, men den erbjuder fortfarande en hög säkerhetsnivå. Det är baserat på användningen av en enda hemlig nyckel som kommer att ha ansvaret för kryptering och dekryptering av informationen, oavsett om det är information under transport med protokoll som TLS, eller information om en flyttbar lagringsenhet. Symmetrisk kryptografi var den första metoden som används för att kryptera informationen, den är baserad på det faktum att samma lösenord kommer att användas för både kryptering och dekryptering, därför är det viktigt att alla användare som vill kryptera eller dekryptera meddelandet har detta hemlig nyckel, annars kommer de inte att kunna. Tack vare symmetrisk kryptografi kan vi skapa kommunikation eller lagra filer på ett säkert sätt.

Kryptografi

kryptering att använda en symmetrisk nyckel betyder att minst två användare måste ha den hemliga nyckeln. Med den här nyckeln krypteras och dekrypteras alla meddelanden som skickas via den osäkra kanalen, såsom Internet, och därför behöver vi datakryptering för att upprätthålla sekretess. Alla användare som vill komma åt det krypterade meddelandet måste ha detta dekrypteringslösenord, annars är det oläsligt.

Metoden för att kryptera data baseras på det faktum att avsändaren kommer att kryptera meddelandet med sin privata nyckel, han kommer att skicka det genom den osäkra kanalen, och mottagaren måste dekryptera det med samma lösenord eller privata nyckel som avsändaren har använt.

Det finns flera punkter som en symmetrisk nyckelalgoritm måste uppfylla för att vara säker vid användning:

  • En gång meddelandet är krypterad kan varken krypteringsnyckeln eller det tydliga meddelandet erhållas med vilken metod som helst.
  • Om vi ​​vet det tydliga meddelandet och krypteringen, mer tid och pengar bör spenderas på att skaffa nyckeln för att komma åt det tydliga meddelandet än det möjliga värdet av informationen som är stulen.

Brute Force attacker är verklig fiende till symmetriska kryptografialgoritmer måste man komma ihåg att dessa algoritmer är offentliga och att deras styrka beror direkt på hur komplex algoritmen är internt, och även på längden på den nyckel som används för att förhindra dessa attacker.

Det viktigaste i symmetrisk kryptografi är att skydda den privata nyckeln eller lösenordet. Det största problemet som uppstår är distributionen av denna privata nyckel eller lösenord till alla användare, både avsändare och mottagare av informationen, för att kryptera och dekryptera informationen i meddelandet. Det är viktigt att alla användare av systemet skyddar den privata nyckeln eller lösenordet så bra som möjligt, för om det hamnar i fel händer skulle hela systemet äventyras och behöva generera en ny nyckel och omfördela den privata nyckeln till de olika deltagarna.

En av skillnaderna vi har mellan symmetrisk och asymmetrisk kryptografi är att i symmetrisk har alla användare samma krypterings- / dekrypteringsnyckel, om vi har mer än en kommunikationskanal kommer vi att ha lika många privata nycklar som parallella kommunikationskanaler. Men i de asymmetriska, kommer varje användare att ha ett par nycklar (offentliga och privata) för alla kommunikationskanaler, oavsett antalet säkra kanaler att behålla, vi behöver bara skydda den privata nyckeln.

Fördelen med symmetriska kryptografialgoritmer är att de är snabba, mycket snabba, dessutom har hårdvarukrypteringsacceleration på senare år införlivats i datorprocessorer, servrar, routrar och andra enheter, på detta sätt kan vi överföra data via VPN riktigt snabbt. Hastigheten beror också på den symmetriska krypteringsalgoritmen som ska användas, till exempel är AES och ChaCha20 två av de snabbaste och säkraste vi har idag, men utrustningens hårdvara påverkar mycket.

Nu ska vi prata i detalj om två symmetriska algoritmer som används kontinuerligt idag, antingen i HTTPS-anslutningar med TLS 1.2 och TLS 1.3, i virtuella privata nätverk med IPsec, OpenVPN eller WireGuard, och även i andra områden där datakryptering används, som i VeraCrypt.

AES (Advanced Encryption Standard)

Den symmetriska AES-algoritmen var ansvarig för ersätter DES , och används för närvarande i alla säkra kanaler och protokoll som TLS, FTPES, virtuella privata nätverk och mycket mer. AES-kryptering kan användas i både programvara och hårdvara, AES är en blockkrypteringsalgoritm, den fasta blockstorleken är 128 bitar . Längden på nyckeln kan väljas, och vi har 128, 192 och 256 bitar tillgängliga , eftersom längden på 128 bitar är standarden, men 256 bitar används också i stor utsträckning.

En mycket viktig aspekt är att AES ansvarar för att generera en 4 × 4-matris, och sedan tillämpas en serie krypteringsrunder på den. För en 128-bitarsnyckel tillämpas 10 krypteringsrundor, för en 192-bitarsnyckel tillämpas 12 omgångar, och för en 256-bitarsnyckel tillämpas omgångarna 14. Från början tvivlar många kryptografer på dess säkerhet, och det är att attacker har spelats in på ett antal omgångar nära den sista omgången, speciellt 7 omgångar för 128-bitars nycklar, 8 omgångar för 192-bitars nycklar och 9 omgångar för 256-bitars nycklar har dekrypterats.

Krypteringsläge är det sätt som AES-krypterade meddelande block hanteras, det finns olika typer, och var och en av dem fungerar på ett annat sätt. Till exempel finns det AES-CBC, AES-CFB och AES-OFB kommer vi att förklara vad exakt detta är som visas i kryptografiska bibliotek som OpenSSL och LibreSSL.

  • CBC (Chiffer-block chaining) - Detta krypteringsläge har använts i stor utsträckning i kombination med en hash-funktion för att verifiera datans äkthet och används fortfarande idag. Detta krypteringsläge består av att XORing varje klartextblock med föregående krypteringsblock. Varje krypterat block beror på det tidigare bearbetade fram till den punkten. För att utföra detta XOR-alternativ med det första textblocket används en initialiseringsvektor IV. Detta krypteringsläge utförs sekventiellt, det kan inte behandlas parallellt för att öka prestanda i datakryptering / dekryptering.
  • OFB (feedback för utdata) : i det här läget används den hemliga nyckeln för att skapa ett pseudo-slumpmässigt block som XOR-operationen med klartext används för att skapa ciphertext. I detta fall krävs också en initialiseringsvektor som måste vara unik för varje krypterat meddelande. Om en annan IV inte används äventyras säkerheten i systemet. Det kan inte heller paraliseras.
  • CFB (Chifferfeedback) : det görs detsamma som i OFB, men för att producera nyckelströmmen krypterar det det sista krypteringsblocket istället för det sista blocket i nyckelströmmen som OFB gör. Kryptering kan inte parallelliseras, men dekryptering kan dock.
  • GCM ( Galois / Counter Mode) : Detta krypteringsläge är en av de bästa när det gäller säkerhet och hastighet, GCM möjliggör parallell bearbetning och är kompatibel med AES-NI-processorer för att påskynda datakryptering / dekryptering. Detta krypteringsläge är AEAD, förutom att kryptera data kan det också verifiera det och verifiera dataintegriteten för att säkerställa att det inte har modifierats. GCM kan också acceptera slumpmässiga initialiseringsvektorer.

Som du har sett är AES för närvarande en av de viktigaste och mest använda symmetriska krypteringsalgoritmerna i världen, men det mest rekommenderade krypteringsläget är AES-GCM eftersom det innehåller AEAD.

ChaCha20

ChaCha20-algoritmen är en symmetrisk krypteringsalgoritm som stöder 128-bitars och 256-bitars och höghastighetstangenter, till skillnad från AES som är en blockchiffer, är ChaCha20 en stream-chiffer. Det har liknande egenskaper som sin föregångare Salsa20 men med en primitiv funktion på 12 eller 20 olika omgångar. Koden publicerades, standardiserad av IETF i RFC 7539 och i mjukvaruimplementeringar, den är mycket effektivare och snabbare än AES, så den har snabbt gjort en plats inom de mest använda algoritmerna idag.

För att ta reda på varför det har blivit så känt kommer vi att placera Google i mitten så att allt kan förstås mycket snabbare. HTPPS-anslutningar är inriktade på att erbjuda maximal säkerhet på de webbplatser som vi besöker varje dag, det var nästa steg i HTTP-protokollet som inte hade något skydd alls. Kryptering varierar dock från webbläsare till webbläsare. Fram till för några år sedan, krom för Android har använt AES-GCM som sin symmetriska krypteringsalgoritm, men Google har arbetat med mer aktuell, säker och snabbare kryptering i många år.

Hoppet i popularitet inträffar när, efter lanseringen i desktopversionen av Chrome, den nya ChaCha20 för kryptering och Poly1305 för autentisering anländer till Android. Ett titaniskt jobb som översätts till en symmetrisk algoritm som ger mer säkerhet och som är immun mot olika typer av attacker. Det mest anmärkningsvärda är dock att det uppnår en prestanda som är tre gånger högre än något äldre protokoll som AES, på detta sätt CPU används också bättre och en minskning med 16% i bredden på det använda bandet, vilket gör det möjligt att utnyttja anslutningen ännu mer.

ChaCha20 används ofta i HTTPS-anslutningar, i SSH-anslutningar för att hantera servrar, och även det populära WireGuard VPN-protokollet använder endast ChaCha20 för symmetrisk datakryptering. Det är mycket möjligt att vi snart också kommer att se ChaCha20 i IPsec-anslutningar, under tiden bör du använda AES-GCM när det är möjligt.

Hittills har förklaringen av symmetrisk kryptografi, vi har kommenterat de två algoritmer som ofta används idag, det finns många fler som tidigare var mycket relevanta, särskilt för utvecklingen av nuvarande, eftersom baserna för de nya är de bestämde sig för de gamla erfarenheterna, deras misstag och deras fördelar. Algoritmer som DES, 3DES, RC5 eller IDEA banade väg för de nya så att vi idag har riktigt starka krypteringsalgoritmer med kapacitet att motstå attacker och skydda all vår information från oönskade och skadliga händer.

Asymmetrisk kryptografi eller offentlig nyckelkryptografi

Asymmetrisk nyckelkryptografi är också känd som en offentlig nyckel, det använder två olika nycklar i vardera änden av kommunikationen för att kryptera och dekryptera den . Varje användare av kommunikationen har en offentlig och en privat nyckel. Den privata nyckeln måste skyddas och förvaras av användaren själv, den kommer att vara hemligt och får inte kännas av absolut någon, och det bör inte heller skickas till någon. Den offentliga nyckeln kommer att vara tillgänglig för alla användare av systemet som vill kommunicera.

Styrkan i systemet med vilken denna typ av asymmetrisk algoritm är säker är att den baseras på matematiska funktioner som är lätta att lösa i en mening , men vars upplösning i motsatt riktning är extremt komplicerad , såvida inte nyckeln är känd. . Offentliga och privata nycklar genereras samtidigt och är knutna till varandra. Förhållandet mellan de två måste vara väldigt komplicerat, så att det är mycket svårt för oss att få en nyckel från den andra, i det här fallet, att få den privata nyckeln eftersom den offentliga nyckeln är känd av alla som är anslutna till systemet.

Nyckelparen har flera och mycket viktiga funktioner, bland vilka vi lyfter fram:

  • Kryptera informationen.
  • Säkerställ integriteten hos de överförda uppgifterna.
  • Garantera äktheten hos emittenten.

Asymmetrisk nyckelkryptering

Om en person med ett nyckelpar krypterar ett meddelande med mottagarens offentliga nyckel kan meddelandet bara dekrypteras med tillhörande privatnyckel. Om vi ​​krypterar ett meddelande med den privata nyckeln kommer vi inte att kunna dekryptera det med den privata nyckeln, vi måste använda den offentliga (i det här fallet anses det inte vara kryptering, men avsändarens äkthet kontrolleras, med detta kommer vi att verifiera att avsändaren är den som verkligen säger vara).

Den matematiska strukturen för hur asymmetrisk kryptering fungerar är den här:

  • Meddelande + offentlig nyckel = Krypterat meddelande
  • Krypterat meddelande + privat nyckel = Dekrypterat meddelande
  • Meddelande + privat nyckel = Signerat meddelande
  • Signerat meddelande + offentlig nyckel = autentisering

Som vi har kommenterat tidigare när vi talar om symmetrisk nyckelkryptering ger symmetrisk kryptering konfidentialitet (endast mottagaren kan läsa meddelandet). Asymmetrisk kryptografi ger andra egenskaper: äkthet, integritet och icke-repudiering. För att en algoritm ska anses vara säker måste den uppfylla följande:

  • Om ciphertext är känd, det måste vara mycket svårt eller nästan omöjligt att extrahera klartext och privat nyckel med vilken metod som helst.
  • Om klartext och kryptering är känd, så är det borde vara dyrare att få den privata nyckeln än vanlig text .
  • Om data har krypterats med den offentliga nyckeln, det borde bara finnas en privat nyckel som kan dekryptera den , och vice versa.

Fördelen med asymmetrisk kryptering framför symmetrisk kryptering är att den offentliga nyckeln kan vara känd av alla användare av systemet, men detta händer inte med den privata nyckeln, och till följd av symmetrisk kryptering måste båda användarna känna till samma nyckel. (och lösenordet måste skickas till var och en av de olika användarna via den etablerade kommunikationskanalen).

Drift av det symmetriska och asymmetriska systemet

Den största nackdelen med denna typ av kryptering är dess långsamhet , sänker användningen av denna typ av nycklar krypteringen av kommunikationen. Lösningen på detta är att använda både asymmetrisk och symmetrisk kryptering (som protokoll som t.ex. IPSec eller OpenVPN gör för virtuella privata nätverk, HTTPS för säkra webbanslutningar eller i SFTP / FTPES-anslutningar).

Denna kombination av chiffer händer enligt följande. Vi skapar den symmetriska algoritmnyckeln, krypterar den med mottagarens offentliga nyckel, skickar de krypterade uppgifterna över den osäkra kommunikationskanalen och sedan dekrypterar mottagaren informationen med sin privata nyckel. Med den symmetriska algoritmnyckeln i tjocktarmen kan kommunikationen med symmetrisk kryptering börja, vilket gör kommunikationen mycket snabbare än om vi bara använde asymmetrisk kryptografi i all kommunikation.

Det tydliga exemplet på var den här typen av kombinerad metod används är VPN, som OpenVPN eller IPsec, där den sessionsnyckel som är känd för användare regenereras så ofta för att ytterligare öka kommunikationssäkerheten, utan att medföra en betydande fördröjning i dataöverföringen .

Utmaningssvar

För att öka säkerheten, den här metoden verifierar att avsändaren verkligen är den han påstår sig vara , för detta skickas en text till avsändaren och han kommer att kryptera den med sin privata nyckel (vad han verkligen gör är att signera den), avsändaren skickar oss den krypterade texten (signerad) och vi kommer att dekryptera nyckeln (vi kommer att verifiera signaturen) och utnyttja det faktum att vi har den offentliga nyckeln till emittenten och slutligen kommer vi att jämföra att det erhållna meddelandet är detsamma som vi skickade tidigare.

Om en användare efterliknar den verkliga emittenten skulle de inte ha den privata nyckeln, så "utmaningen" skulle inte ha lyckats och uppgifterna skulle inte kommuniceras.

Digital signatur

Den digitala signaturen tillåter mottagaren av ett meddelande om att ursprunget är giltigt kan vi också kontrollera om meddelandet har ändrats. Att förfalska en digital signatur är nästan omöjligt om de inte vet den privata nyckeln för den som signerar (och vi har redan sagt tidigare att den privata nyckeln måste sparas och att ingen borde veta det). Här är de två faserna för förverkligandet av den digitala signaturen:

  • Signaturprocess: avsändaren krypterar data med den privata nyckeln och skickar den till mottagaren.
  • Verifiera signaturen: mottagaren dekrypterar data med avsändarens offentliga nyckel och verifierar att informationen matchar originaldata (om den matchar har den inte ändrats).

I digitala signaturer används hashfunktioner som SHA2-256 och SHA2-512 eftersom, som vi har förklarat tidigare, asymmetrisk kryptering är långsam. Avsändaren av kommunikationen kommer att använda HASH-funktionen på det ursprungliga meddelandet för att få fingeravtrycket. Fingeravtrycket krypteras sedan med den privata nyckeln och skickas till mottagaren via den osäkra kanalen för dekryptering. Mottagaren kommer också att hasha dina data och jämföra resultaten (den de fick och den de fick). Om resultatet av att jämföra dessa data är negativt, det vill säga, det finns skillnader mellan vad som erhölls och vad som mottogs, informationen har ändrats och fingeravtrycksdata kommer att ändras. Om resultatet blir detsamma kommer kommunikationen att ske utan problem.

Med allt detta har vi uppfyllt:

  • Äkthet, emittenten är vem de säger att de är . Signaturen vid ursprung och destination är densamma.
  • Integritet, meddelandet har inte ändrats . Vad som erhålls och vad som tas emot är detsamma.
  • Inget avslag, avsändaren kan inte förneka att ha skickat meddelandet till mottagaren . Den digitala signaturen ändras inte.

Om vi ​​vill införa konfidentialitet i kommunikationen är allt vi behöver göra att avsändaren krypterar det ursprungliga meddelandet med mottagarens offentliga nyckel.

Asymmetriska krypteringsalgoritmer

Nu kommer vi att lista de två huvudasymmetriska algoritmerna som används idag och vi kommer att förklara hur de fungerar.

Diffie-Hellman

Det är inte en asymmetrisk algoritm i sig, det är ett nyckelprotokoll, det används för att generera en privat nyckel i båda ändarna av en osäker kommunikationskanal . Den används för att erhålla den privata nyckeln med vilken informationen senare kommer att krypteras tillsammans med en symmetrisk krypteringsalgoritm. Styrkan för Diffie-Hellman är att dess säkerhet ligger i svårigheten att beräkna den diskreta logaritmen för ett stort antal (Diffie-Hellmann tillåter också användning av elliptiska kurvor).

Problemet med denna algoritm är att den inte tillhandahåller autentisering, den kan inte validera användarnas identitet, så om en tredje användare hamnar mitt i kommunikationen, skulle de också förses med nycklarna och därför kunde de skapa kommunikation med avsändaren och mottagaren som imiterar identiteter. För att undvika detta finns det flera lösningar som mildrar och löser problemet, till exempel att använda digitala certifikat.

RSA

Den asymmetriska algoritmen par excellence, denna algoritm är baserad på tangentparet , den offentliga och den privata som vi redan har pratat om tidigare. Säkerheten för denna algoritm ligger i problemet med att ta med mycket stora heltal och i RSA-problemet, eftersom fullständig dekryptering av en ciffertext med RSA för närvarande inte är möjlig, även om partiell dekryptering är möjlig. Några mycket viktiga egenskaper hos RSA är nyckellängden, för närvarande bör minst en längd på 2048 bitar användas, även om det rekommenderas att det är 4096 bitar eller högre för större säkerhet.

Fördel:

  • Problemet med distributionen av symmetriska nycklar (symmetrisk kryptering) är löst.
  • Den kan användas för att användas i digitala signaturer.

Nackdelar:

  • Säkerhet beror på datorns effektivitet.
  • Det är långsammare än symmetriska nyckelalgoritmer.
  • Den privata nyckeln måste krypteras av någon symmetrisk algoritm.

DSA

Denna algoritm är också rent asymmetrisk, en nackdel med DSA är att den vill ha mycket mer beräknad tid än RSA för hårdvarujämlikhet. DSA används ofta som en digital signaturalgoritm, det är för närvarande en standard, men DSA används inte för att kryptera data, bara som en digital signatur. Denna algoritm används ofta i SSH-anslutningar för att verifiera klienternas digitala signatur. Dessutom finns det en variant av DSA baserat på elliptiska kurvor (ECDSA), och den finns i alla nuvarande kryptografiska bibliotek som OpenSSL, GnuTLS eller LibreSSL. En annan egenskap hos DSA är nyckellängden, den minsta nyckellängden är 512 bitar, även om det vanligaste är att använda 1024 bitar.

Nu vet du de två typerna av kryptografi och egenskaperna för var och en, med detta kommer du att veta där det är värt att använda en typ och var den andra . Med tiden kommer dessa metoder att variera eller kommer att uppdateras till säkrare, eftersom med datorns prestanda ökar förbättras attackerna mot denna typ av säkerhetsmetod, men just nu är de som är i kraft och fortsätter att användas för att inte efter att ha kastats ut ännu är det de vi just har förklarat för dig.