For datakryptering brukes såkalte krypteringsnøkler. En krypteringsnøkkel er en streng (tekstsekvens) med data som brukes i en krypteringsalgoritme for å konvertere vanlig tekst til kryptert tekst og omvendt. Det finnes to hovedtyper av krypteringsnøkler – symmetriske og asymmetriske. Hovedforskjellen mellom de to er måten nøklene brukes på. Et viktig poeng med moderne krypteringsnøkler er at nøkkellengden skal være så lang at ikke skal være er praktisk mulig å prøve alle nøkler, dette kan hindre Brute-force angrep.
En symmetrisk nøkkel (hemmelig nøkkel) består av en enkelt nøkkel som brukes både til kryptering og dekryptering av data. Slike nøkler må deles av senderen for at mottakeren skal kunne dekryptere meldinger. En svakhet med symmetriske nøkler at sikkerheten er ødelagt hvis uvedkommende får tilgang til nøkkelen. Fordeler med symmetrisk krypteringsmetoder er at de generelt er raskt og enklere å utføre, derfor brukes slike metoder ofte når det er mye data som skal krypteres. Kryptering av hele databaser vil for eksempel vanligvis utføres ved hjelp av symmetrisk kryptering. Lengden til symmetriske nøkler er ofte 128 eller 256-bit. Eksempler på vanlige krypteringsalgoritmer som benytter symmetriske nøkler er AES, DES og 3DES.
En asymmetrisk nøkkel (offentlig nøkkel) er et nøkkelpar som består av en offentlig nøkkel og en privat nøkkel. Offentlige nøkler kan deles fritt til alle, mens private nøkler holdes hemmelige. Data som er kryptert med en offentlig nøkkel kan ikke dekrypteres igjen med den samme nøkkelen for å få tilbake klarteksten. Det er kun mottakeren med den tilhørende private nøkkelen som kan dekryptere meldingen. Denne typen kryptering er dermed sikrere enn den førstnevnte og lettere å dele, men er mye mer ressurskrevende og langsommere. Kryptering med offentlige nøkkel brukes ofte på mange ulike nettsider og i plattformer for kryptovaluta for å autorisere transaksjoner. Eksempler på krypteringsalgoritmer som benytter asymmetriske nøkler er Diffie-Hellmann, RSA og ECC. Nøkkellengden til asymmetriske nøkler kan variere, RSA som har nøkkelstørrelse 2048-bit eller lengre, mye lengre en de fleste symmetriske nøkler.
I dag bruker mange nettsider hybridkryptering der symmetrisk og asymmetrisk kryptering kombineres. Typisk brukes asymmetrisk kryptering til å utveksle en midlertidig symmetrisk nøkkel (med kort gyldighet), som deretter brukes til å kryptere selve dataene. Kombinasjonen av de to typene nøkler gjør det er mulig å få fordelene fra asymmetriske nøkler som enklere nøkkeldistribusjon og høyere sikkerhet, men samtidig ha en rask og effektiv kryptering ved hjelp av symmetriske nøkler.
Kryptering av tekst er basert på to grunnleggende operasjoner: transposisjoner og substitusjoner. Klartekstenheter (det kan være bokstaver, tall eller symboler) blir endret på med disse operasjonene. Algoritmene som benyttes for kryptering i dag er mye mer komplekse enn de eksemplene som beskrives her, men prinsippene om transposisjon og substitusjon benyttes også i avanserte algoritmer.
Transposisjon vil si man endrer rekkefølgen til symboler i klarteksten, uten at selve symbolene blir endret. Symboler blir blandet og bytter plass som i et anagram. For eksempel kan setningen «This is a secret message» bli til «etgsesasT sh mareieisc».
Substitusjon vil si at symboler blir endret, mens rekkefølgen forblir uendret. Et eksempel på dette er Cæsar-teknikken som ble brukt ca. 50 år f.Kr. Denne teknikken gikk ut på å bytte ut bokstavene i teksten med bokstavene f.eks. fem plasser senere i alfabetet. For eksempel vil «This is a secret message» krypteres til «Ymnx nx f xjhwjy rjxxflj». En svakhet med Cæsar-teknikken er at koden er veldig enkel å knekke ved et Brute-force-angrep. Bokstavfordeling av bestemte vokaler og konsonanter i ord kan også gjøre det enklere å knekke koden.
I moderne kryptografi brukes mange ulike avanserte matematiske algoritmer for å kryptere informasjon. Her presenteres noen vanlige algoritmer:
AES (Advanced Encryption Standard): er den gjeldende standarden for symmetrisk kryptering. Den matematiske algoritmen bak AES er basert på blokkchiffer også kalt et substitusjons–permutasjons nettverk. Det vil si at data som skal krypteres tas inn i blokker av bestemt størrelse, en tabell på 16 bytes. Algoritmen utføres i mange runder der lignende matematiske operarasjoner gjentas. AES bruker nøkler med lengde 128, 192 eller 256 bits, der krypteringsalgoritmen utføres i henholdsvis 10, 12 eller 14 runder. Hver runde består av fire trinn:
Diffie-Hellmann: er en asymmetrisk kryptografisk metode som i hovedsak brukes til sikker nøkkelutveksling via usikre tilkoblinger. Denne metoden er basert på modulær matematikk, og bruker modulo den matematiske operasjonen som regner ut resten som er igjen når to heltall deles på hverandre. Før nøkkelutveksling blir begge parter (Alice og Bob) enige om to tall; det ene er et stort primtall (p) og det andre en primitiv rot modulo p (g). Sikkerheten til Diffie-Hellmann er basert på vanskelighetsgraden å beregne diskrete logaritmer.
RSA (Rivest-Shamir-Adelman) er en asymmetrisk krypteringsalgoritme som benyttes for sikker nøkkelutveksling av symmetriske nøkler og for digitale signaturer (verifisering). Som Diffie-Hellmann er RSA også basert på modulær matematikk, men sikkerheten til RSA er basert på vanskelighetsgraden å primtallsfaktorisere to veldig store tilfeldige tall. RSA krever nøkler av lang lengde og er en relativ treg og ressurskrevende algoritme.
ECC (Elliptic-curve cryptography) er ulike asymmetriske krypteringsalgoritmer som ofte brukes på samme måte som RSA. Sikkerheten til ECC er basert på vanskelighetsgraden å løse diskrete logaritmeproblemer for elliptiske kurver. En stor fordel med ECC er at de er mer effektive enn RSA og kan gi samme sikkerhet med en mye kortere nøkkellengde.
Det er vanlig å bruke kryptografiske protokoller på Internett, dette er et sett med regler og prosedyrer som beskytter data og nettverkskommunikasjon i dagens digitale verden og brukes i en rekke applikasjoner og tjenester for å sikre personvern og konfidensialitet. For eksempel for å sikre nettforbindelser, som nettleser-til-serverkommunikasjon, e-post og VPN-tilkoblinger.
HTTPS (Hypertext Transfer Protocol Secure) er en sikrere versjon av HTTP, designet for å beskytte data som overføres mellom en brukers nettleser og en nettside. Den bruker kryptering for å sikre konfidensialiteten og integriteten til dataene. HTTPS gir visuell indikasjon på sikker tilkobling i nettlesere, for eksempel i form av et hengelåsikon foran url-en. HTTPS spiller en viktig rolle i å beskytte brukernes personvern og forhindrer dataavlytting under et nettsidebesøk.
Secure Sockets Layer (SSL) og Transport Layer Security (TLS) er krypteringsprotokoller som brukes i HTTPS for å kryptere nettverkstrafikk, spesielt for å sikre nettstedssesjoner. De bruker en kombinasjon av symmetrisk og asymmetrisk kryptering.
Det finnes mange ulike krypteringsverktøy som er egnet for ulike oppgaver. Her presenteres noen eksempler på slike programmer:
VeraCrypt er et gratis krypteringsverktøy som fungerer både på datamaskiner som kjører Windows, MacOS eller Linux. Programmet kan kryptere en hel disk, minnepinne eller en partisjon. Det kan også lage virtuelle, krypterte disker der du lagre dataene dine.
Signal er en kryptert kommunikasjonsapp for samtaler, tekstmeldinger og videosamtaler. Den er tilgjengelig for Android og iOS og gir ende-til-ende-kryptering for privat kommunikasjon. Ende-til-ende-kryptering vil si at data krypteres på avsendersiden og kun dekrypteres på mottakersiden.
ProtonMail er en kryptert e-posttjeneste som gir sikker kommunikasjon via e-post. ProtonMail er tilgjengelig i nettleser, samt på mobile enheter via apper.
Tresorit en skytjeneste som gir ende-til-ende-kryptering for filer som lagres i skyen. Tresorit er tilgjengelig for Windows, macOS, Android og iOS. Denne tjenesten fokuserer på å sikre filer og data.
OpenSSL er en populær åpen kildekode-krypteringsverktøykasse som brukes for å implementere Secure Sockets Layer (SSL) og Transport Layer Security (TLS) i applikasjoner. Den brukes ofte til å kryptere nettverkstrafikk og sikre websider.