20TD02S_Informasjonssikkerhet_K05_v3_Kode - itnett/FTD02H-N GitHub Wiki
Studentressurs for Kapittel 5: Nøkkelhåndtering og PKI
Innholdsfortegnelse
- Oversikt
- Viktigheten av nøkkelhåndtering for kryptografi
- Én anvendelse per nøkkel
- Typer av kryptografiske nøkler
- Kryptoperiode
- Anbefalte størrelser på symmetriske nøkler
- Kvantecomputere og kryptografi
- Nøkkelgenerering
- Kompromittering av kryptografiske nøkler
- Beskyttelse av nøkler
- Nøkkeldestruering
- Public-Key Infrastructure (PKI)
- Problemet med forfalskning av offentlige nøkler
- X.509 offentlig nøkkelsertifikater
- Kjede av sertifikater
- Validering av sertifikater
- Tillitsmodeller
- Internett PKI: Silo-hierarkier
- Oppgaver og refleksjoner
Oversikt
Kapittel 5 dekker nøkkelhåndtering og PKI (Public Key Infrastructure). Det gir en forståelse av hvorfor nøkkelhåndtering er kritisk for kryptografiske systemer og hvordan PKI bidrar til sikker nøkkeldistribusjon og autentisitet.
Viktigheten av nøkkelhåndtering for kryptografi
Nøkkelhåndtering omfatter generering, lagring, distribusjon og destruering av nøkler. Korrekt nøkkelhåndtering sikrer at kryptografiske systemer opprettholder sin integritet og konfidensialitet.
- Eksempel: Et dårlig håndtert nøkkelsystem kan føre til sikkerhetsbrudd, som i tilfelle av NSA og RSA hvor en svak generator for tilfeldige tall ble brukt, noe som gjorde det mulig for NSA å forutsi genererte nøkler (Snowden, 2013).
Én anvendelse per nøkkel
Hver nøkkel skal brukes til én spesifikk oppgave, for eksempel kryptering eller autentisering. Dette reduserer risikoen for at kompromittering av en nøkkel påvirker flere systemer.
- Eksempel: Gjenbruk av passord på tvers av tjenester kan føre til at flere kontoer blir kompromittert hvis ett passord lekker.
Typer av kryptografiske nøkler
Nøkler kan være symmetriske, asymmetriske (offentlige/private), og klassifiseres etter bruk og levetid. NIST SP 800-57 definerer 19 nøkkeltyper.
- Lenke: NIST SP 800-57
Kryptoperiode
Kryptoperioden er den godkjente bruksperioden for en nøkkel. Den begrenser mengden data som beskyttes av en nøkkel, og reduserer potensialet for skade ved kompromittering.
- Visualisering: Geogebra kan brukes til å lage grafer som viser relasjonen mellom kryptoperioden og risikoen for kompromittering.
Anbefalte størrelser på symmetriske nøkler
Størrelsen på nøkler bestemmer tiden det tar for kryptoanalyse med utmattende søk. Eiere av systemer må vurdere nøkkelstørrelse basert på ønsket sikkerhetslevetid.
Kvantecomputere og kryptografi
Kvantecomputere representerer en trussel mot tradisjonell asymmetrisk kryptografi. NIST anbefaler overgang til post-kvantealgoritmer.
- Eksempel: RSA og elliptisk kurvekryptografi (ECC) vil være utsatt for kvanteangrep.
Nøkkelgenerering
Nøkkelgeneratorer må være sikre for å forhindre lekkasje, svekking eller forfalskning av nøkler.
- Eksempel: Bruk av hardware security modules (HSM) for nøkkelgenerering.
Kompromittering av kryptografiske nøkler
Når nøkler er kompromittert, må de umiddelbart opphøre å bli brukt til beskyttelse og brukere må informeres om risikoen.
Beskyttelse av nøkler
Nøkler må aldri lagres eller overføres i klartekst. Hierarkisk nøkkelbeskyttelse og bruk av passordbeskyttelse er viktig.
Nøkkeldestruering
Nøkler må fullstendig fjernes fra alle lagringsmedier etter destruering. Metoder inkluderer spesielle sletteoperasjoner og fysisk ødeleggelse.
Public-Key Infrastructure (PKI)
PKI løser utfordringer knyttet til nøkkeldistribusjon og autentisitet i asymmetrisk kryptografi. Det inkluderer policyer, teknologier og prosedyrer for håndtering av offentlige nøkkelsertifikater.
Problemet med forfalskning av offentlige nøkler
Forfalskning av offentlige nøkler kan føre til avvisning av gyldige signaturer og kompromittering av konfidensielle meldinger.
X.509 offentlig nøkkelsertifikater
X.509-standarden definerer formatet for offentlige nøkkelsertifikater, som signeres digitalt av en Certificate Authority (CA).
Kjede av sertifikater
Sertifikatstien fra rotsertifikatet til subjektsertifikatet valideres for å sikre autentisitet.
Validering av sertifikater
Sertifikater valideres ved å verifisere digitale signaturer og samsvar med domenenavn.
Tillitsmodeller
Tillitsmodeller som silo-hierarkier og kryss-sertifiserte hierarkier benyttes for å håndtere tillit i PKI-systemer.
Internett PKI: Silo-hierarkier
Internett-PKI består av flere silo-hierarkier hvor hvert hierarki har sitt eget rotsertifikat installert i nettlesere.
Oppgaver og refleksjoner
Oppgave 1: Sertifikater a. Begrenset kryptoperiode:
- Fire grunner for begrenset kryptoperiode:
- Redusert risiko for nøkkelkompromittering.
- Begrenset mengde data beskyttet av én nøkkel.
- Begrenset eksponeringstid for sikkerhetssvakheter.
- Mulighet for å oppdatere til nyere, sikrere algoritmer.
- En grunn for lang kryptoperiode:
- Redusert overhead og risiko for feil ved nøkkelgenerering og distribusjon.
b. Perioder for beskyttelse og prosessering:
- Beskyttelsesperiode: Nøkkelen brukes til å kryptere eller signere.
- Prosesseringsperiode: Nøkkelen brukes til å dekryptere eller validere.
c. Gyldighetsperioden for rotsertifikatet:
- Undersøk sertifikater på nsm.no og finn gyldighetsperioden.
- SSL Labs
d. Anbefalinger for private signaturnøkler i henhold til NIST SP800-57:
- Sammenlign utstedelsesdato og beskyttelsesperiode med anbefalingene.
e. Rotsertifikater og kvantecomputere:
- Hvis kvantecomputere blir tilgjengelige rundt 2030, må rotsertifikater oppdateres til post-kvantealgoritmer.
f. SSL-testresultater for nsm.no og universitetsforlaget.no:
- Sammenlign resultater og vurder sikkerhetsnivået.
Oppgave 2: Tillitsmodell a. Tillitsmodellen for PKI i nettlesere:
- Sertifikater signert av rot-CAer installert i nettlesere.
b. Fordeler og ulemper:
- Fordeler: Enkel validering, bred tillit.
- Ulemper: Risiko ved kompromittering av rot-CA, skaleringsproblemer.
c. Hvordan PKI skaper tillit:
- Nø
kkelkjeder og sertifikatvalidering.
d. Tillitsmodellen i PGP:
- Brukersentrisk PKI hvor hver bruker er sin egen CA.
Oppgave 3: Sertifikatkjeder a. Kjede for nsm.no:
- Bruk SSL Labs for å finne sertifikatstien.
b. Hvordan sertifikater valideres:
- Stegene som følger fra rotsertifikatet til serverens sertifikat.
Kilder og ressurser
- NIST SP 800-57
- SSL Labs
- Rapporten "Ti sårbarheter i norske IKT-systemer"
- "Nasjonalt digitalt risikobilde 2023"
- "Cyber Resilience Act Requirements Standards Mapping"
Ved å følge denne strukturen og bruke ressursene og rapportene som er lenket, vil du få en omfattende forståelse av nøkkelhåndtering og PKI, samt kunne løse oppgavene i kapittel 5 med solid bakgrunnskunnskap.
For å demonstrere nøkkelhåndtering og PKI ved hjelp av GeoGebra, Trinket, og kommandolinjeverktøy (CMD/PowerShell i Windows og Bash i Linux), vil vi ta noen praktiske eksempler og bryte dem ned for å illustrere konseptene.
GeoGebra: Visualisering av RSA-algoritmen
Vi kan bruke GeoGebra til å visualisere grunnleggende matematiske konsepter bak RSA-algoritmen, slik som generering av store primtall og beregning av modulus.
- Åpne GeoGebra og velg Algebra-visning.
- Opprett to store primtall:
p = 61
q = 53
- Beregn modulus n:
n = p * q
- Beregning av Euler's totientfunksjon:
phi_n = (p - 1) * (q - 1)
- Velg en offentlig eksponent e (gjerne et kjent primtall, som 65537):
e = 65537
- Beregning av den private eksponenten d ved hjelp av den utvidede euklidiske algoritmen:
d = ModInverse(e, phi_n)
- Demonstrere kryptering og dekryptering:
message = 42
ciphertext = Mod(message^e, n)
decrypted_message = Mod(ciphertext^d, n)
Trinket: Python Skript for RSA-algoritmen
Trinket kan brukes til å skrive og kjøre Python-kode som demonstrerer RSA-algoritmen.
Python-kode i Trinket:
import random
from Crypto.Util import number
# Generer store primtall
p = number.getPrime(8)
q = number.getPrime(8)
# Beregn n og phi_n
n = p * q
phi_n = (p - 1) * (q - 1)
# Velg en offentlig eksponent
e = 65537
# Beregn den private eksponenten
d = pow(e, -1, phi_n)
# Meldingen vi vil kryptere
message = 42
# Kryptering
ciphertext = pow(message, e, n)
print("Ciphertext:", ciphertext)
# Dekryptering
decrypted_message = pow(ciphertext, d, n)
print("Decrypted message:", decrypted_message)
Kjør koden på Trinket.io ved å lime den inn i et nytt Python-skript.
CMD/PowerShell i Windows: Bruk av OpenSSL for RSA
Generere RSA-nøkkelpar:
openssl genpkey -algorithm RSA -out private_key.pem
openssl rsa -in private_key.pem -pubout -out public_key.pem
Signere en melding:
echo "Hello, World!" > message.txt
openssl dgst -sha256 -sign private_key.pem -out signature.bin message.txt
Verifisere signaturen:
openssl dgst -sha256 -verify public_key.pem -signature signature.bin message.txt
Bash i Linux: Bruk av OpenSSL for RSA
Generere RSA-nøkkelpar:
openssl genpkey -algorithm RSA -out private_key.pem
openssl rsa -in private_key.pem -pubout -out public_key.pem
Signere en melding:
echo "Hello, World!" > message.txt
openssl dgst -sha256 -sign private_key.pem -out signature.bin message.txt
Verifisere signaturen:
openssl dgst -sha256 -verify public_key.pem -signature signature.bin message.txt
Ved å bruke disse verktøyene og metodene kan vi visualisere og praktisk demonstrere konseptene bak nøkkelhåndtering og PKI. GeoGebra hjelper oss med å forstå de matematiske prinsippene, mens Trinket og kommandolinjeverktøyene lar oss implementere og teste algoritmene i praksis.