Napad z izbranim šifrirnim besedilom (CCA): kaj je in kako se zaščititi
Napad z izbranim šifrirnim besedilom (CCA): izvedite, kako deluje, prepoznati ranljivosti in uvedeti praktične zaščitne ukrepe ter varne kriptografske sheme za zaščito podatkov.
Napad z izbranim šifrirnim besedilom (CCA) je model napada za kriptoanalizo, pri katerem napadalec izbere eno ali več šifrirnih besedil in pridobi njihovo dešifriranje z neznanim ključem. V najenostavnejši obliki napadalec pošilja izbrana šifrirna besedila v sistem in opazuje odzive oziroma prejme odprto besedilo; na podlagi teh informacij lahko izvede nadaljnje korake za razkritje skrivnega ključa ali za pridobitev drugih skrivnosti.
Vrste CCA in zakaj so nevarni
Napadi z izbranim šifrirnim besedilom se razlikujejo glede na to, ali napadalec lahko izvede poizvedbe pred ali tudi po tem, ko prejme izziv (tj. šifrirno besedilo, ki ga želi napasti). Pomembni pojmi so:
- NE-adaptiven CCA (CCA1) — napadalec lahko poizveduje o dešifriranjih le pred tem, ko dobi izziv.
- Adaptiven CCA (CCA2) — napadalec lahko poizveduje tudi po prejemu izziva, le da običajno ne sme zahtevati dešifriranja samega izziva. CCA2 je močnejši in realnejši model napada.
Kriptosistemi, ki so varni v smislu indistinguishability under chosen-ciphertext attack (IND-CCA), so zasnovani tako, da tudi ob dostopu do dešifrirnega oracle-a napadalec ne more izvedeti koristnih informacij o izzivnem šifrirnem besedilu.
Primeri ranljivosti in znani napadi
Tudi majhen dostop do funkcije dešifriranja lahko povzroči zelo subtilne in praktično izkoriščene ranljivosti. Med znanimi primeri so:
- Padding oracle napadi — če sistem ob vračanju napake razkrije, ali je bila oblika polnila (padding) pravilna, lahko napadalec postopoma rekonstruira odprto besedilo. Tak napad je bil praktično uporabljen proti nekaterim implementacijam šifriranja in protokolov (npr. ranljivosti v starejših implementacijah TLS).
- Bleichenbacherjev napad — klasičen primer izrabe odzivov pri dešifriranju RSA PKCS#1 v1.5, kjer napadalec z vrsto poizvedb postopoma dobi informacije, ki omogočijo dešifriranje.
- Uporaba istega mehanizma za podpisovanje in dešifriranje — nekateri sistemi, na primer RSA, so bili uporabljeni tako za podpisovanje kot za dešifriranje. Če se za podpisovanje sporočila ne uporablja ustrezno hashanje ali varna shema za podpise, to lahko omogoči napade (npr. tvorjenje veljavnih podpisov ali prevzem sporočil).
Kako se zaščititi — splošna priporočila
Zaščita pred napadi z izbranim šifrirnim besedilom zahteva kombinacijo pravilne kriptografske sheme, varne implementacije in skrbnega načrtovanja protokola. Glavne smernice:
- Uporabljajte kriptosisteme, ki so dokazano varni proti CCA (npr. RSA-OAEP za RSA-šifriranje, Cramer–Shoup in sodobne sheme z dokazano IND-CCA varnostjo).
- Za simetrično šifriranje uporabljajte overjeno simetrično šifriranje oziroma AEAD-sheme (naprimer AES-GCM, ChaCha20‑Poly1305) ali vzorce encrypt-then-MAC, ki zagotavljajo protivmešljivost in avtentičnost podatkov.
- Za podpise uporabite varne sheme in vedno hashrajte sporočila pred podpisovanjem; moderne sheme za podpise (npr. RSA-PSS) nudijo boljše varnostne lastnosti kot starejši načini.
- Ne razkrivajte podrobnih informacij o napakah. Standardizirajte in omejite sporočila o napakah, da ne nastane «padding oracle» ali druge izpostavitve informacij.
- Izogibajte se izpostavljanju dešifrirnega oracle-a (npr. ne dovoljujte, da zunanje entitete neposredno pošiljajo poljubne šifrirne bloke k dešifriranju).
- Uporabljajte preverjene kriptografske knjižnice in protokole z revizijami ter sledite priporočilom strokovnjakov; ne izmišljajte lastnih kriptosistemov.
- Implementirajte konstantni čas za kriptografske operacije, da zmanjšate tveganje časovnih stranskih kanalov.
- Ločite namene ključev (npr. ločeni ključi za podpisovanje in dešifriranje) in uporabljajte varne protokole za upravljanje s ključi.
- Redno posodabljajte programsko opremo in odpravljajte znane ranljivosti v protokolih (npr. prehod na TLS z AEAD algoritemi).
Praktična navodila za razvijalce in skrbnike
- Izberite algoritme in sheme, ki so v standardih priporočene in imajo dokazano odpornost na CCA.
- Pri oblikovanju protokolov zagotovite, da napadalec ne more dostopati do funkcije dešifriranja za poljubna šifrirna besedila, še posebej ne po tem, ko je prejel izziv.
- Pri sprejemu vhodnih podatkov izvajajte strogo preverjanje veljavnosti (format, dolžina, integriteta) pred kakršnokoli obdelavo ali povratnim sporočilom.
- Če sistem potrebuje tako šifriranje kot podpisovanje, uporabite ločene in pravilno konfigurirane sheme (npr. RSA-OAEP za šifriranje, RSA-PSS za podpise) in vedno hashrajte sporočila pred podpisom.
- Razmislite o uporabi protokolov, ki vključujejo zaščito pred CCA v sami zasnovi (npr. moderne izvedbe TLS, šifriranje datotek z AEAD, varne elektronske komunikacije z end‑to‑end šifriranjem).
Z upoštevanjem zgornjih smernic in z uporabo modernih, dokazano varnih kriptografskih shem lahko znatno zmanjšate tveganje napadov z izbranim šifrirnim besedilom. Varnost je večplastna — poleg matematične varnosti sheme je enako pomembna varna implementacija, pravilno ravnanje z napakami in skrbna administracija ključev.
Različice napadov z izbranim šifrirnim besedilom
Napadi z izbranim šifrirnim besedilom so lahko tako kot drugi napadi prilagodljivi ali neprilagodljivi. Pri neadaptivnem napadu napadalec vnaprej izbere šifrirni tekst ali šifrirne tekste, ki jih bo dešifriral, in ne uporabi dobljenih čistih tekstov za izbiro več šifrirnih tekstov. Pri adaptivnem napadu z izbranim šifrirnim besedilom napadalec izbira šifrirno besedilo adaptivno, tj. glede na rezultate predhodnih dešifriranj.
Napadi v času kosila
Posebej omenjena različica napada z izbranim šifrirnim besedilom je napad "lunchtime" ali "midnight", pri katerem lahko napadalec izvaja prilagodljive poizvedbe z izbranim šifrirnim besedilom, vendar le do določene točke, po kateri mora napadalec dokazati izboljšano zmožnost napada na sistem. Izraz "napad v času kosila" se nanaša na zamisel, da je napadalcu na voljo uporabnikov računalnik s sposobnostjo dešifriranja, medtem ko je uporabnik na kosilu. Ta oblika napada je bila prva, o kateri se je pogosto razpravljalo: očitno je, da če ima napadalec možnost poizvedovanja po adaptivno izbranem šifriranem besedilu, nobeno šifrirano sporočilo ne bi bilo varno, vsaj dokler mu te možnosti ne odvzamemo. Ta napad se včasih imenuje "neadaptivni napad z izbranim šifriranim besedilom"; tu se "neadaptivni" nanaša na dejstvo, da napadalec ne more prilagoditi svojih poizvedb kot odgovor na izziv, ki je podan po tem, ko je možnost poizvedovanja z izbranim šifriranim besedilom potekla.
Veliko praktično pomembnih napadov na izbrano šifrirno besedilo je napadov v času kosila, na primer, ko je Daniel Bleichenbacher iz laboratorijev Bell pokazal praktičen napad na sisteme, ki uporabljajo PKCS#1; izumil in objavil ga je RSA Security.
Prilagodljivi napad z izbranim šifrirnim besedilom
(Popolnoma) prilagodljiv napad z izbranim šifrirnim besedilom je napad, pri katerem se lahko šifrirna besedila prilagodljivo izberejo pred in po tem, ko je napadalcu dano izzivalno šifrirno besedilo, z enim samim pogojem, da se izzivalno šifrirno besedilo ne sme poizvedovati. To je močnejši pojem napada kot napad v času kosila in se običajno imenuje napad CCA2 v primerjavi z napadom CCA1 (v času kosila). Le malo praktičnih napadov je v tej obliki. Ta model je pomemben zaradi njegove uporabe pri dokazovanju varnosti pred napadi z izbranim šifrirnim besedilom. Dokaz, da so napadi po tem modelu nemogoči, pomeni, da ni mogoče izvesti nobenega praktičnega napada z izbranim šifriranim besedilom.
Kriptosistemi, ki so dokazano varni pred prilagodljivimi napadi z izbranim šifrirnim besedilom, vključujejo Cramer-Shoupov sistem in RSA-OAEP.
Sorodne strani
- Napad samo na šifrirano besedilo
- Napad z izbranim prostim besedilom
- Napad z znanim besedilom
Vprašanja in odgovori
V: Kaj je napad z izbranim šifriranim besedilom?
O: Napad z izbranim šifrirnim besedilom (CCA) je model napada za kriptoanalizo, pri katerem kriptoanalitik vsaj delno zbira informacije z izbiro šifrirnega besedila in pridobivanjem njegovega dešifriranja pod neznanim ključem.
V: Zakaj morajo izvajalci paziti, da se izognejo situacijam, v katerih bi napadalci lahko dešifrirali izbrana šifrirna besedila?
O: Kadar je kriptosistem dovzeten za napad z izbranim šifrirnim besedilom, morajo izvajalci paziti, da se izognejo situacijam, v katerih bi napadalci lahko dešifrirali izbrana šifrirna besedila (tj. izogibati se zagotavljanju sheme dešifriranja), saj lahko tudi delno izbrana šifrirna besedila omogočajo subtilne napade.
V: Kateri kriptosistemi so ranljivi za napade, če se za podpisano sporočilo ne uporablja hashanje?
O: Nekateri kriptosistemi (kot je RSA) uporabljajo isti mehanizem za podpisovanje in dešifriranje sporočil. To omogoča napade, kadar se za podpisano sporočilo ne uporablja hashanje.
V: Kateri pristop je boljši za preprečevanje napadov v modelu napada z izbranim šifrirnim besedilom?
O: Boljši pristop je uporaba kriptosistema, ki je dokazano varen pri napadu z izbranim šifrirnim besedilom, vključno z (med drugim) RSA-OAEP, Cramer-Shoup in številnimi oblikami overjenega simetričnega šifriranja.
V: Kaj pomeni RSA-OAEP?
O: RSA-OAEP pomeni RSA Optimal Asymmetric Encryption Padding.
V: Kaj je ena od posledic tega, da je kriptosistem ranljiv za napad z izbranim šifrirnim besedilom?
O: Ena od posledic tega, da je kriptosistem ranljiv za napad z izbranim šifrirnim besedilom, je, da morajo izvajalci paziti, da se izognejo situacijam, v katerih bi napadalci lahko dešifrirali izbrana šifrirna besedila (tj. da ne zagotovijo sheme dešifriranja).
V: Katere vrste napadov lahko omogočajo delno izbrani šifrirni teksti?
O: Delno izbrani šifrirni teksti lahko omogočajo subtilne napade.
Iskati