Et angreb med valgt chiffertekst (CCA) er en angrebsmodel inden for kryptoanalyse, hvor angriberen får adgang til en dekrypterings‑"oracle" og dermed kan vælge en eller flere chiffertekster og få dem dekrypteret med en ukendt nøgle. Formålet er at udnytte denne oracle til at lære noget om den hemmelige nøgle eller den originale klartekst. Angreb med valgt chiffertekst er særligt alvorlige, fordi adgang til blot en lille dekrypteringsfunktion ofte kan føre til fuld kompromittering.
Typer af CCA
- Ikke‑adaptivt CCA (CCA1): angriberen kan få dekrypteret chiffertekster før udfordringen (challenge) udvælges, men ikke efter.
- Adaptivt CCA (CCA2): angriberen kan få dekrypteret chiffertekster både før og efter udfordringen, med undtagelse af selve udfordringschifferteksten. CCA2 er den stærkeste og mest realistiske model for mange praktiske angreb.
Hvordan angreb virker (eksempler)
- Padding‑oracle-angreb: hvis et system afslører, om en dekryptering fejler pga. forkert padding, kan en angriber ofte rekonstruere klarteksten ved at sende modificerede chiffertekster og analysere fejlresponsen.
- Bleichenbacher‑angrebet mod RSA med PKCS#1 v1.5: et konkret eksempel på et CCA, hvor en oracle for "gyldig padding" gjorde det muligt at udlede klartekst eller forfalske signaturer.
- Signatur vs. dekryptering‑fejl: nogle systemer bruger samme mekanisme til at underskrive og dekryptere. Hvis man ikke anvender korrekt hashing eller separation af funktioner, kan dette åbne for angreb, hvor en dekrypteringsoracle misbruges til at forfalske signaturer.
Hvorfor det er farligt
Hvis et system er sårbart over for CCA, kan konsekvenserne være alvorlige:
- Udbredt lækage af fortrolige beskeder (klartekstgenkendelse eller fuld klartekst).
- Utroværdighed af digitale signaturer eller mulige signaturforfalskninger.
- Komplet kompromittering af en hemmelig nøgle i nogle tilfælde.
Forebyggelse og bedste praksis
For at beskytte mod angreb med valgt chiffertekst anbefales følgende tiltag:
- Brug kryptosystemer, der er bevist sikre mod CCA, f.eks. RSA‑OAEP og Cramer‑Shoup til offentlige nøgler. Overvej også hybridløsninger, hvor asymmetrisk kryptering bruges til nøgleudveksling og symmetrisk autentificeret symmetrisk kryptering (AEAD) til selve meddelelsen.
- Undgå at eksponere en dekrypterings‑oracle. APIs bør ikke tilbyde en dekrypteringsfunktion til ubekræftede eksterne parter.
- Returnér ikke detaljerede fejlmeddelelser ved dekryptering (fx "forkert padding" vs. "forkert nøgle"); brug generiske fejl og konstant‑tid‑operationer, så angribere ikke kan skelne fejlårsager.
- Hash meddelelsen, inden den underskrives, og brug en passende signatur‑skema (f.eks. brug af PSS for RSA) for at undgå at genbruge dekrypteringsmekanismer til signaturer.
- Anvend moderne AEAD‑skemaer (fx AES‑GCM, ChaCha20‑Poly1305) for symmetrisk kryptering, da disse kombinerer kryptering og autentificering og dermed forhindrer forgænger‑typer af CCA.
- Indfør adgangskontrol, rate‑begrænsning og overvågning for at opdage og forhindre gentagne dekrypteringsforespørgsler, som kan være et tegn på et igangværende angreb.
- Brug veldokumenterede kryptobiblioteker og højere‑niveau API'er, der implicit håndterer korrekt padding, autentificering og fejlhåndtering, frem for at implementere lavniveau‑krypto selv.
- Udfør trusselsmodellering, penetrationstest, fuzzing og kodegennemgang for at afdække potentielle oracles og utilsigtede lækager af information.
- Ved kritiske nøgler, overvej brug af HSM’er (hardware security modules) og separat håndtering af signering og dekryptering for at minimere eksponering.
Opsummering
Angreb med valgt chiffertekst er en kraftfuld og praktisk relevant angrebsmodel. Selv tilsyneladende små informationslækager fra en dekrypteringsfunktion kan føre til alvorlige kompromitteringer. Brug derfor kryptosystemer, som er bevist sikre mod CCA, undgå eksponering af dekrypteringsoracles, og følg etablerede implementerings‑ og fejlhåndteringspraksisser for at reducere risikoen.