Introduksjon til Kryptografi 2 - itnett/FTD02H-N GitHub Wiki
Her er det teoretiske og praktiske grunnlaget for hvert av læringsmålene i kryptografikurset. Dette hjelper deg med å forstå de sentrale begrepene og teknikkene du vil lære, og hvordan du kan bruke dem i praksis.
1. Sentrale konsepter, metoder og definisjoner innen kryptografi
Teoretisk grunnlag:
- Kryptografi er vitenskapen om å sikre kommunikasjon ved å bruke matematiske algoritmer.
- Konfidensialitet: Sikrer at kun autoriserte parter kan få tilgang til informasjon.
 - Integritet: Garanterer at informasjon ikke er blitt endret.
 - Autentisering: Bekrefter identiteten til partene som kommuniserer.
 - Uavviselighet: Garanterer at en avsender ikke kan nekte for å ha sendt en melding.
 
 
Praktisk grunnlag:
- Symmetrisk kryptografi: Brukes i situasjoner der både sender og mottaker deler samme nøkkel, f.eks. i AES (Advanced Encryption Standard).
 - Asymmetrisk kryptografi: Brukes når to forskjellige nøkler brukes for kryptering og dekryptering, f.eks. RSA (Rivest–Shamir–Adleman).
 - Verktøy: Du kan bruke OpenSSL til å utføre symmetrisk og asymmetrisk kryptering i praksis.
 
2. Symmetriske primitiver: blokkchiffer, hashfunksjoner og autentiseringskoder
Teoretisk grunnlag:
- Blokkchiffer: En algoritme som krypterer faste blokker av data (f.eks. 128 bit) om gangen. Kjente eksempler er DES og AES.
 - Hashfunksjoner: Algoritmer som genererer en fast størrelse hash-verdi fra en hvilken som helst mengde data. De brukes for integritetsbeskyttelse (f.eks. SHA-2, SHA-3).
 - Meldingautentiseringskoder (MAC): Brukes for å autentisere meldinger og verifisere deres integritet, f.eks. HMAC.
 
Praktisk grunnlag:
- Blokkchiffer i praksis: Implementasjon av AES kan testes ved hjelp av CyberChef eller OpenSSL.
 - Hashfunksjoner i praksis: Du kan bruke CyberChef eller Hashcat til å beregne og analysere hash-verdier.
 - HMAC i praksis: Test HMAC med hashingverktøy som OpenSSL for å sikre meldingers integritet og autentisering.
 
3. Symmetriske primitiver: konkrete eksempler som DES, AES, SHA-2, HMAC
Teoretisk grunnlag:
- DES (Data Encryption Standard): En eldre symmetrisk algoritme, nå betraktet som usikker på grunn av kort nøkkellengde (56-bit).
 - AES (Advanced Encryption Standard): Den nåværende standarden for blokkchiffer, bruker nøkkelstørrelser på 128, 192 eller 256 bit.
 - SHA-2 (Secure Hash Algorithm 2): En hashfunksjon som produserer faste lengdeutganger og brukes i sikker kommunikasjon.
 - HMAC (Hash-based Message Authentication Code): En prosess som kombinerer en hashfunksjon med en hemmelig nøkkel.
 
Praktisk grunnlag:
- DES: Bruk OpenSSL til å kryptere og dekryptere med DES, selv om det ikke brukes i moderne applikasjoner.
 - AES: Kryptering og dekryptering av tekst ved hjelp av AES i CBC (Cipher Block Chaining) modus via CyberChef eller OpenSSL.
 - SHA-2 og HMAC: Lag hash-funksjoner og HMACer for å autentisere meldinger ved å bruke kommandoer som:
openssl dgst -sha256 -hmac "key" file.txt 
4. Asymmetriske primitiver: asymmetrisk kryptering, digitale signaturer, nøkkelutveksling
Teoretisk grunnlag:
- Asymmetrisk kryptering: Innebærer bruk av en offentlig nøkkel for kryptering og en privat nøkkel for dekryptering, f.eks. i RSA.
 - Digitale signaturer: Brukes til å verifisere identiteten til avsenderen av en melding, f.eks. med DSA (Digital Signature Algorithm).
 - Nøkkelutveksling: Algoritmer som Diffie-Hellman tillater sikre nøkkelutvekslinger over usikre kanaler.
 
Praktisk grunnlag:
- RSA i praksis: Bruk OpenSSL til å generere offentlige og private nøkler, kryptere meldinger med den offentlige nøkkelen og dekryptere med den private.
 - Digitale signaturer: Opprett digitale signaturer og verifiser dem med ECDSA (Elliptic Curve Digital Signature Algorithm).
 - Nøkkelutveksling: Bruk OpenSSL til å utføre en Diffie-Hellman nøkkelutveksling.
 
5. Eksempler på asymmetriske primitiver: RSA, ElGamal, (EC)DSA, Diffie-Hellman
Teoretisk grunnlag:
- RSA: Basert på faktoriseringsproblemet, brukes til både kryptering og digitale signaturer.
 - ElGamal: Et alternativ til RSA, basert på det diskrete logaritmeproblemet.
 - Diffie-Hellman: Et av de første algoritmene for nøkkelutveksling.
 - ECDSA: En variant av DSA som bruker elliptiske kurver for økt effektivitet og sikkerhet.
 
Praktisk grunnlag:
- RSA nøkkelgenerering og kryptering: Lag offentlige og private RSA-nøkler i OpenSSL, krypter data med den offentlige nøkkelen, og dekrypter med den private.
 - Diffie-Hellman nøkkelutveksling: Utfør en nøkkelutveksling ved hjelp av OpenSSL eller Python-biblioteker som Cryptography.
 
6. Matematikk bak kryptografi: faktoriseringsproblem og diskret logaritmeproblem
Teoretisk grunnlag:
- Faktoriseringsproblemet: RSA er basert på at det er vanskelig å faktorisere et stort produkt av to primtall.
 - Diskret logaritmeproblem: Grunnlaget for sikkerheten i ElGamal og Diffie-Hellman. Det er ekstremt vanskelig å beregne den diskrete logaritmen for store tall.
 
Praktisk grunnlag:
- RSA i praksis: Generer store primtall og utfør RSA-operasjoner i OpenSSL eller Python.
 - ElGamal i praksis: Bruk Python- eller Crypto-biblioteker for å eksperimentere med diskrete logaritmeproblemer.
 
7. Anvendelse av matematikk i kryptografi: algebra, tallteori, sannsynlighetsteori
Teoretisk grunnlag:
- Algebra: Brukes til å forstå gruppeteori og hvordan nøkler genereres og manipuleres i kryptografi.
 - Tallteori: Involverer primtall og modulfeltar, grunnlaget for RSA og Diffie-Hellman.
 - Sannsynlighetsteori: Brukes for å vurdere sjansene for kollisjoner i hashfunksjoner, og analysere hvor sikkert et system er mot brute-force-angrep.
 
Praktisk grunnlag:
- Tallteori i praksis: Eksperimenter med modulær aritmetikk ved hjelp av Python eller matematiske verktøy som SageMath.
 - Sannsynlighetsteori: Analyser sannsynligheten for kryptografiske kollisjoner ved å bruke algoritmer som birthday attack simuleringer.
 
🎓 Oppsummering
Gjennom dette kurset vil du oppnå en dyp forståelse av både de teoretiske grunnene bak kryptografi og hvordan du kan implementere og bruke disse prinsippene i praksis. Kryptografiens anvendelser er allestedsnærværende, fra nettlesersikkerhet (SSL/TLS) til blockchain, og verktøy som OpenSSL, CyberChef, og Hashcat vil hjelpe deg med å mestre denne vitenskapen.