crypto Flashcards
Hva er Kerckhoffs prinsipp?
Unngå security through obscurity.
Det eneste en angriper ikke har tilgang til i et kryptosystem, er de private nøklene
Hva er perfekt sikkerhet?
Gitt c, så er det umulig å ekskludere noen enkelt klartekst p.
Altså, for hver p finnes en k som krypterer til c. Antall nøkler er da >= antall klartekster
Hvilket shiffer er det eneste som gir perfekt sikkerhet?
One-time-pad
Hvordan fungerer one-time-pad?
lengde(nøkkel) = lengde(klartekst)
nøkkel og klartekst er binære strenger
Bruker XOR til å kryptere og dekryptere
Hva er et problem med one-time-pad?
Krever veldig lange nøkler. Nøkler kan heller ikke gjenbrukes.
Hva er beregningsmessig sikkerhet?
Gitt en c, så tar det lang tid å ekskludere en enkelt klartekst p
Nevn 3 problemer som (vi tror) er vanskelige å løse i praksis
Faktorisering av store tall
Å invertere AES-blokkchifferprimitivet
Å finne diskrete logaritmer på en elliptisk kurve
Hvilket beregningsmessig vanskelig problem utnyttes i RSA?
At det er vanskelig å faktorisere store tall
Hvilket beregningsmessig vanskelig problem brukes i AES?
At AES-blokkchifferprimitivet er vanskelig å invertere
Hvilket beregningsmessig vanskelig problem brukes i ECDH?
At det er vanskelig å finne dikrete logaritmer på en elliptisk kurve
Hvordan definerer vi “lang tid” når vi snakker om beregningsmessig sikkerhet?
At tidsbruk på et problem vokser tilnærmet-eksponentielt med nøkkelstørrelse
I praksis, hva går de vanligste angrepene innen kryptografi ut på?
Sårbarheter i programvare oppstår på grunn av feil bruk av kryptografiske algoritmer
Gi 3 eksempler på feil bruk av kryptografiske algoritmer
Nøkler postes på Git
Signaturer valideres ikke, eller bare delvis valideres
Nonces genereres basert på klientkontrollerte verdier
Hva er et monoalfabetisk substitusjonschiffer?
Hver bokstav i klartekst-alfabetet mappes til én bokstav i chiffertekst alfabetet
Hva er noen problemer med monoalfabetisk substitusjonschiffer?
Språkstrukturer bevares slik at frekvensanalyse kan benyttes i cryptanalysis
Hva er et blokkchiffer?
Et blokkchiffer opererer på blokker, ikke individuelle tegn
Hva er et blokkchifferprimitiv?
Hvordan én blokk krypteres individuelt
Krypteringsfunksjonen E i primitivet har som output en ny blokk. Ingen to blokker gjøres om til samme blokk
Hva er et blokkchiffermodus?
Hvordan en lengre tekst krypteres ved å bruke blokkchifferprimitivet flere ganger
Hva er en permutasjon i blokkchiffre?
En funksjon som stokker om på mengden mulige blokker
Hvilken sikkerhetsantagelse gjør vi om primitiver (for eksempel AES)?
At det gir beregningsmessig sikkerhet. Altså er E(k, b) pseudorandom
Nevn en egenskap AES trolig har
Pseudorandomness
Hva er pseudorandomness?
Dersom man har én kryptert blokk og én blokk med tilfeldig data, skal man ikke kunne gjette hvilken blokk som er kryptert og hvilken som er tilfeldig mer enn 50% av gangene
Hva er IND-CPA?
Indistinguishability under Chosen Plaintext Attack
Beskriv ECB mode
Primitivet blir brukt på hver blokk
Plaintext_blokk_1 -> E(key, -) -> ciphertext_blokk_1
Nevn et problem med ECB
Like klartekstblokker krypteres likt
Beskriv CBC mode
iv: Initialiseringsvektor
Steg:
p_n XOR c_(n-1)
->
E(key, -)
->
c_n
Ved kryptering av første blokk XORes p_1 med iv
I CBC: Hva skjer om det oppstår én bit-feil i én chiffertekstblokk?
Feilen fører til at dekryptering av denne blokken scrambles helt.
Én bit i dekrypteringen av neste blokk blir flippet (samme bit som er feil i c-blokken)
Beskriv CTR mode
CTR mode er et flytchiffer
IV sendes i klartekst
Kryptering og dekryptering kan paralleliseres
Hva bestemmer nøkkelstrømmen i CTR mode?
nøkkel + IV
Hva er et flytchiffer?
Et symmetrisk nøkkelchiffer nøkkel er en pseudorandom bit-strøm.
Klartekst blir kryptert en og en bit om gangen
Kryptering og dekryptering bruker XOR
Hva er AEAD?
Authenticated encryption with associated data
Krypterer ved bruk av CTR.
Regner så ut en MAC basert på ciphertext-blokkene
Hva er GCM?
Chiffertextblokkene betraktes som polynom i GF(2^128)
Polynomet evalueres i et hemmelig punkt
Resultatet av dette er taggen
For flytchiffre, hva avhenger nøkkelstrømmen ofte av?
Nøkkel og IV
Hvilken fordel er det at nøkkelstrøm i flytchiffre ofte kun avhenger av nøkkel + IV?
Gir høy ytelse
Nevn 3 eksempler på flytchiffre
Salsa20
ChaCha
AES-CTR
Hva er autentisitet?
Bekrefter om en melding er modifisert eller ikke
Hva brukes MAC til?
Autentisitet
Hvordan fungerer MAC?
2 algoritmer: Sign(), verify()
k: nøkkel
m: melding
S(k, m): gir en tak t
V(k, m, t’): Godtar eller avviser en tag t’ basert på k og m
Hva er målet med MAC?
Det skal være vanskelig for en part å lage en gyldig tag uten kjennskap til k
Hvordan brukes MACs?
Inkluderer en tag(MAC) når en melding sendes
Når melding mottas, sjekk at V(k, m, t) er gyldig
Dersom melding m er modifisert underveis vil verifiserings-funksjonen detektere dette
Hva er en egenskap med en kryptografisk hashfunksjon?
Lett å beregne, vanskelig å invertere
Hva brukes hashfunksjoner til?
Lagring av sensitiv data, i.e. passord
Hvordan bør passord lagres, og hvorfor?
Lagre (salt, H(salt||passord)
salt: gjør at like passord ikke får samme hasher
Hvilke 3 krav har vi til kryptografiske hashfunksjoner?
Preimage-motstand
Second preimage
Kollisjonsmotstand
Hva er preimage motstand?
Gitt y, kan ikke finne en x slik at H(x) = y
Hva er second preimage?
Gitt x1, kan ikke finne en x2 != x1 slik at H(x1) = H(x2)
Hva er kollisjonsmotstand?
Kan ikke finne s1 != s2 slik at H(s1) = H(s2)
Ranger vanskelighetsgraden til de 3 kravene til hashfunksjoner. Øverst = vanskeligst
Primage
second preimage
kollisjon
Nevn 2 hashfunksjoner som er antatt sikre
SHA2, SHA3
Hvilket angrep er SHA2 sårbar mot
length extension (pga. at SHA2 baseres på Merkle Damgård)
Hva er HMAC?
Implementasjon av MAC via hasher
HMAC = H ((k′ ⊕ opad)||H((k′ ⊕ ipad)||m))
k’ = H(k)
Når er Z_p en gruppe?
Tall mod p, med ganging som operasjon, siden vi kan dele
Beskriv diffie hellman
Asymmetrisk, jobber (mod p)
Offentlig: (p, g)
A og B genererer a og b
A sender g^a
B sender g^b
Delt hemmelighet:
(g^a)^b = (g^b)^a
Hva er diskrete logaritme problemet?
Gitt p, g og g^x (mod p), finn x
Hva er det som gjør DH sikkert?
Diskrete logaritme problemet
I hvilke grupper er DLOG vanskelig?
(Z_p, ECC) ikke i alle (R)
Hva er de 3 komponentene av elgamal?
KeyGen
Encrypt
Decrypt
Hva er nøklene i elgamal?
Velger tilfeldig a, beregner g^a
public: (g, g^a)
private: (g, a)
Hva er nøklene i RSA?
Public: (e, n)
Private: (d, p, q)
Beskriv dekrypteringsfunksjonen til RSA
m = c^d mod n
Beskriv krypteringsfunksjonen til RSA
c = m^e mod n
Hvilket beregningsmessig vanskelig problem er det som gjør at RSA fungerer?
Vanskelig å primtallsfaktorisere
Hva gjør at RSA fungerer?
Eulers teorem
d = e^-1 mod ((p-1)(q-1))
Dette gjør at:
m^ed = m mod pq
hvor n = pq
Hva er eulers teorem?
Om hverken p eller q deler m, så er:
m^(p-1)(q-1) = 1 mod (pq)
Hva er noen problemer med skolebok-rsa?
Om like meldinger krypteres likt, så kan vi bekrefte riktig gjetning av melding.
Primtall bør være tilnærmet like store
Om tallene er små nok og e liten, så blir DLOG mer lik LOG ettersom man ikke wrapper like mye rundt. LOG er lett å beregne
Hvordan kan man løse problemene med skolebok-rsa?
Legg til padding før kryptering
padding bør være litt tilfeldig og “stor”
Hva er fordelen med å bruke elliptiske kurver?
For 100-bit sikkerhet i DH kreves nøkler av størrelse tilnærmet 1000
På grunn av kompleksiteten til elliptiske kurver kan man oppnå samme nivå av sikkerhet ved bruk av betydelig mindre nøkler
Definer en elliptisk kurve
Samling punkter (x, y) ∈ E som tilfredstiller:
y² = x³ + Ax + B for heltall A og B slik at:
4A³ + 27B² != 0
I tillegg eksisterer et spesielt punk O som ligger i uendeligheten
Hvordan brukes elliptiske kurver i krypto?
(x, y)∈Z_p -> koordinater og likningen forstås (mod p)
En primtallstørrelse på 256 bits gir en sikkerhet på 128-bit
Hvordan fungerer DH med elliptiske kurver?
Bli enige om kurve E og F_p, og startpunkt G∈E
A og B genererer hver sin a,b ∈ {2, …, p-1}
A genererer Ga = [a]G -> send til B
B genererer Gb = [b]G -> send til A
Felles hemmelighet:
Gab = [a]Gb = [b]Ga
Hvordan fungerer signaturer?
private key brukes til å generere en signatur
public key brukes til å verifisere signaturen
Hva er formålet med en signatur?
En gyldig signatur garanterer at eieren av tilhørende private nøkkel skrev meldingen
Hva er sammenhengen mellom DH og elgamal?
Elgamal er DH gjort om til et kryptosystem
Hvor store nøkler må RSA ha for å være sikker?
Nøkler >= 2048-bit
Når fungerer DSA, DH og Elgamal?
Når DLOG er vanskelig, både ved bruk av mod p og elliptiske kurver.
mod p trenger derimot større nøkler
Hvor store nøkler krever DH med DLOG i Z_p for 128-bit sikkerhet?
Tilnærmer 3000
Hva gir P+(-P)?
Uendelig fjernt punkt:
O = (uendelig, uendelig)
(Kan være dette er feil, litt vanskelig å tolke slides)
Når n er stor nok, hva blir [n]P?
O
Hva er ECC-DLOG?
Gitt G, H, finn n slik at:
[n]G = H
Hva er viktig å huske på når man skal bruke RSA til signering?
Ikke bruk skolebok-rsa, altså:
Bruk H(m) samt padding, ikke m
Hva er DSA?
Signatur algoritme
Hva krever DSA for hver signatur?
Krever en unik og hemmelig nonce per signatur
Hva avhenger sikkerheten til DSA på?
At DLOG er vanskelig
Hva er EdDSA?
Deterministisk DSA-variant som spesifiserer nonce-generering utifra privat nøkkel og melding
Hvilken implementeringsfeil kan gjøre DSA sårbar?
Nonce reuse
Hva er hensikten til sertifikater?
Koble en identitet med offentlig nøkkel
En identitet kan være: mailadresse, domene, etc.
Hvordan vet vi at vi kan stole på signaturer?
Kjenner til andre public keys som kan verifisere at det sertifikatet vi skal ta stilling til faktisk er gyldig.
Beskriv noen komponenter i en PKI
ROT-CA: Alle kjenner til public-keyene til disse og stoler på de
Sertifikat kjede:
Har et sertifikat utstedt av pk2 som sier at pk1 er til å stole på
Har et sertifikat utstedt av pk3 som sier at pk2 er til å stole på
…
fortsetter ned til pk-en vi selv stoler på
Hvordan setter du opp en ID som kan verifiseres av andre?
Spør en CA om å validere IDen og signere et sertifikat
Lagre sertifikatet
Andre som vil validere IDen din, viser du sertifikatet til
Hvilke 2 algoritmer kan vi bruke til å lage signaturer med?
RSA (med hashing og padding)
ECDSA (med unik og hemmelig nonce)
Hva er fokuset til wireguard?
Fokus på sikkerhet over konfigurerbarhet
Hvilke steg består WireGuard handshaken av?
Initialiseringsmelding
Fullføringsmelding
Kryptert melding
Hva er forward secrecy?
Session nøkler vil ikke bli kompromittert, dersom long-term nøkler som ble brukt i utvekslingen av session-nøklene, kommer på avveie.
Altså, forward secrecy beskytter tidligere sessions mot fremtidig kompromittering