Izvēlētā šifrteksta uzbrukums (CCA) ir kriptoanalīzes uzbrukuma modelis, kurā uzbrucējs aktīvi izvēlas vienu vai vairākus šifrtekstus un iegūst to atšifrēšanu no sistēmas (t. i., piekļuvi atšifrētajiem tekstiem) — pat ja atslēga, kas tiek izmantota atšifrēšanai, ir nezināma. No prakses viedokļa tas nozīmē, ka sistēmai nedrīkst piekļūt “atšifrēšanas orākulam” (jeb atšifrēšanas pakalpojumam), ja tas ļauj uzbrucējam iegūt informāciju, kas palīdz atklāt slepeno atslēgu vai atšifrēt citus vēstījumus.

Kas ir svarīgi saprast

  • Atšķirība pret IND‑CPA: sistēma, kas ir droša pret izvēlēta atklātā teksta uzbrukumiem (CPA/IND‑CPA), nenozīmē, ka tā ir droša pret izvēlēta šifrteksta uzbrukumiem (CCA/IND‑CCA). CCA ir spēcīgāks uzbrukuma modelis.
  • Adaptīvs pret neadaptīvu: adaptīvais CCA (bieži saukts par CCA2) ļauj uzbrucējam pieprasīt atšifrēšanu gan pirms, gan pēc tam, kad viņš saņem “challenge” šifrtekstu — tas ir reālistiskāks un bīstamāks modelis nekā neadaptīvais CCA (CCA1), kur pieprasījumi pēc “challenge” nav atļauti.
  • Praktiska ietekme: pat nelielas informācijas noplūdes atšifrēšanas laikā (piemēram, kļūdas kods vai atbilde “nepareiza pildīšana”) var ļaut uzbrucējam izveidot pavedienus, kas noved pie pilnīgas atšifrēšanas vai atslēgas nolaupīšanas.

Riski un reāli piemēri

  • Bleichenbacher uzbrukums (1998): praktisks piemērs, kur uzbrucējs izmanto RSA PKCS#1 v1.5 atšifrēšanas “orākula” reakcijas (vai tas ir pareizs pildījums), lai pakāpeniski atklātu skaidro tekstu. Šis uzbrukums parādīja, cik bīstamas var būt nelielas atšķirības atgrieztajās atbildēs.
  • Pildījuma (padding) orākulu uzbrukumi: Vaudenay tipa uzbrukumi pret CBC režīmā šifrētām ziņām, kur atgrieztās kļūdas informācija ļauj atjaunot skaidro tekstu.
  • Problēmas ar parakstīšanas/atšifrēšanas koplietošanu: dažas kriptosistēmas — piemēram, klasiskā RSA bez pareizām aizsardzībām — izmanto vienu mehānismu gan ziņojumu parakstīšanai, gan atšifrēšanai. Ja parakstīšanai netiek nodrošināta atbilstoša drošība, tas var atvērt iespējas CCA tipa uzbrukumiem.

Aizsardzības stratēģijas un labākā prakse

  • Izmantojiet IND‑CCA/AEAD drošas shēmas: izvēlieties šifrēšanas konstrukcijas, kas pierādāmi drošas pret adaptīvajiem CCA uzbrukumiem. Piemēri: RSA-OAEP (pareizi īstenota), Cramer‑Shoup (provēti droša CCA konstrukcija), kā arī modernie AEAD (Authenticated Encryption with Associated Data) režīmi kā AES‑GCM, ChaCha20‑Poly1305 vai AES‑SIV.
  • Atdaliet funkcijas: nepieļaujiet vienas un tās pašas atslēgas vai algoritma izmantošanu gan parakstīšanai, gan atšifrēšanai bez skaidras izolācijas. Labā prakse — atsevišķas atslēgas un paredzēti protokoli katrai funkcionalitātei.
  • Encrypt‑then‑MAC: ja izmantojat kombināciju no šifrēšanas un autentifikācijas, izmantojiet encrypt‑then‑MAC paradigmu (šifrēšana pēc tam MAC) vai tieši AEAD, nevis vienkāršu MAC‑then‑encrypt vai encrypt‑then‑sign bez pierādījumiem.
  • Aizsardzība pret pildījuma orākuliem: neatklājiet detalizētas kļūdu ziņas atšifrēšanas laikā. Vienota kļūdas atbilde un ievades validācija pirms atšifrēšanas var novērst informācijas noplūdi.
  • Konsolidēta kļūdu apstrāde un laika aizsardzība: izvairieties no atbildes laika, kas mainās atkarībā no iekšējās atšifrēšanas validācijas. Ieviešiet konstanta laika atteikumus un cīņa pret laika kanalizācijām.
  • Izmantojiet modernus protokolus un bibliotēkas: uzticieties pārbaudītām kriptogrāfijas bibliotēkām un jaunākām protokolu versijām (piem., TLS 1.3 vietā TLS 1.0/1.1/1.2 ar novecojušiem režīmiem), jo tās bieži satur iepriekš definētas aizsardzības pret CCA veida uzbrukumiem.
  • Aizsardzība tiešraidē (runtime): nosakiet limita noteikumus, žurnālus un pārbaudes mehānismus, lai atslēgtu vai ierobežotu pieprasījumus, kas liecina par uzbrukuma mēģinājumu (piem., liels skaits neizdevušos atšifrēšanas pieprasījumu no vienas IP adreses).

Praktiski ieteikumi izstrādātājiem

  • Izmantojiet AEAD režīmus, ja nepieciešama gan slepenība, gan integritāte – tie nodrošina automātisku aizsardzību pret daudzām CCA klasēm.
  • Nekad neļaujiet ārējiem klientiem tieši piekļūt atšifrēšanas funkcijai bez autentifikācijas un autorizācijas slāņa.
  • Ja jālieto asimetriskā kriptogrāfija, izvēlieties konstrukcijas ar pierādītu CCA drošību (piem., RSA‑OAEP, Cramer‑Shoup) vai KEM‑DEM pieeju, kas nodrošina atsevišķu atslēgu izvedi.
  • Regulāri atjauniniet bibliotēkas un sekojiet publiskajām drošības brīdinājumiem par zināmiem pildījuma orākulu uzbrukumiem vai laika kanalizācijām.

Kopsavilkums

Izvēlēta šifrteksta uzbrukuma (CCA) modelis ir spēcīgs un praktisks drauds — tas var izraisīt pilnīgu slepenās informācijas noplūdi, pat ja sākotnējā šifrēšana šķiet “droša”. Lai to novērstu, nepieciešams izmantot konstrukcijas, kas pierādāmi iztur CCA uzbrukumus (vai AEAD režīmus), nepieļaut atšifrēšanas orākula pieejamību, rūpīgi apstrādāt kļūdas un ievērot citus drošības principus. Pareiza dizaina un uzturēšanas kombinācija būtiski samazina risku, ka CCA kļūs par praktisku uzbrukuma ceļu.