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.