Šifrs (vai šifra) ir algoritms, kas nosaka, kā veikt šifrēšanu (kodēšanu) vai atšifrēšanu (dekodēšanu). Tas ir skaidri definētu soļu kopums — procedūra, kuras gaitā sākotnējā informācija tiek pārvērsta nesaprotamā formā vai atkal atgriezta lasāmā veidā. Šifrēt vai kodēt nozīmē pārvērst informāciju no atklāta teksta šifrā vai kodā, izmantojot konkrētu metodi un, parasti, atslēgu.
Netehniskā valodā vārdi "šifrs" un "kods" dažkārt tiek lietoti kā sinonīmi, tomēr kriptogrāfijā tie ir atšķirīgi jēdzieni. Tradicionālā definīcija nosaka, ka šifrs slepeno vienību bāze ir burts vai bits, bet kods aizvieto lielākas vienības — vārdus vai frāzes. Piemēram, šifrā var katru burtu aizvietot ar citu burtu, bet kodā vesela frāze var tikt aizvietota ar specifisku simbolu virkni. Mūsdienu kriptogrāfija lielākoties strādā ar bitu plūsmām un blokiem, nevis ar atsevišķiem burtiem.
Kodi vēsturiskā izpratnē darbojās, izmantojot lielas kodu grāmatas, kur paroles vai frāzes bija sasaistītas ar nejaušu rakstzīmju vai skaitļu virknēm. Piemēram, "UQJHSE" varēja būt kods, kas nozīmē "Dodieties uz šādām koordinātēm". Mūsdienās šādas kodu grāmatas praktiski nav lietotas, jo modernas kriptogrāfijas metodes ir elastīgākas un drošākas.
Šifra uzdevums ir pārvērst sākotnējo ziņu ("atklāto tekstu") šifrētā formā — "šifrtekstā". Šifrteksta ziņojums satur visu atklātā teksta informāciju, taču bez atbilstošas atslēgas tas nav saprotams. Lai šifrētu vai atšifrētu, parasti nepieciešama atslēga, kas nosaka konkrēto pārveidošanas veidu. Drošības līmenis atkarīgs no algoritma stiprības, atslēgas garuma un atslēgas konfidencialitātes.
Kā darbojas šifrēšana
Šifrēšanas pamatprincips ir pārveide: funkcija f, kas atbilstoši atslēgai K pārvērš atklāto tekstu P par šifrtekstu C — C = f(P, K). Atšifrēšana izmanto pretēju funkciju f^{-1}, kas ar atbilstošu atslēgu K atgriež P = f^{-1}(C, K). Atkarībā no šifrā izmantotajām funkcijām tie var būt vienkārši aizvietošanas un permutācijas mehānismi vai sarežģītas matemātiskas operācijas, kas balstītas uz lieliem skaitļiem, lauku algebrām vai bitu manipulācijām.
Kriptogrāfijas veidi pēc atslēgas
- simetriskās atslēgas algoritmi (privātās atslēgas kriptogrāfija): šifrēšanai un atšifrēšanai tiek izmantota viena un tā pati atslēga. Tas nozīmē, ka abas puses, kas apmainās ar ziņojumiem, iepriekš ir nodrošinājušas atslēgas konfidencialitāti. Simetriskie algoritmi parasti ir ātri un efektīvi lielu datu apstrādē; piemēri ir AES un 3DES.
- asimetriskās atslēgas algoritmi (publiskās atslēgas kriptogrāfija): šifrēšanai un atšifrēšanai tiek izmantotas divas dažādas, bet matemātiski saistītas atslēgas — publiskā atslēga un privātā atslēga. Publisko atslēgu var brīvi izplatīt, bet privātā jāglabā slepena. Asimetriskie algoritmi (piem., RSA, ECC) bieži tiek izmantoti atslēgu apmaiņai, digitālai parakstīšanai un autentifikācijai.
Vēsture un attīstība
Šifrēšanas tradīcija ir sena: vienkārši šifri, piemēram, Cēzara šifrs, bija pazīstami jau senajā Romā. Viduslaikos tika izmantoti sarežģītāki polialfabētiskie šifri un kodu grāmatas. Ar 20. gadsimta sākumu attīstījās mehāniskie un pēc tam elektroniskie šifru un atslēgu ģeneratori. Otrā pasaules kara laikā attīstījās sarežģītas mašīnas (piem., Enigma), bet 1970. gados parādījās mūsdienu simetriskie bloka šifri un 1976. gadā — publiskās atslēgas kriptogrāfija.
Vārds "šifrs" franču valodā ir cifre, bet viduslaiku latīņu valodā — cifra, kas savukārt nāk no arābu valodas sifr, un tas nozīmē "nulle". Angļu valodā vārds "zero" (nulle) tika lietots no 1598. gada, kas saistīts ar šo etimoloģiju (nulle tika lietota 1598. gadā).
Mūsdienu šifri un lietojumi
Mūsdienās šifrēšana tiek plaši izmantota interneta drošībai (HTTPS), e-pasta aizsardzībai, datu uzglabāšanai (disku šifrēšana), mobilo sakaru aizsardzībai, banku un valsts sistēmās. Kā piemērus var minēt:
- Simetriskie bloka šifri (piem., AES) — efektīvi datu šifrēšanai uzglabāšanā un datu plūsmām.
- Asimetriskie šifri (piem., RSA, ECC) — droša atslēgu apmaiņa, digitālie paraksti un sertifikāti.
- Hibrīdās sistēmas — kombinē simetrisko un asimetrisko pieeju: asimetriski tiek droši nosūtīta simetriskā atslēga, bet tālāk dati šifrē ar simetrisko algoritmu.
Drošība un atslēgu pārvaldība
Šifra drošība nav tikai algoritma stiprība, bet arī atslēgu pārvaldības prakse: atslēgas ģenerēšana, uzglabāšana, apmaiņa, atjaunošana un iznīcināšana. Attālināta atslēgu apmaiņa bieži izmanto publiskās atslēgas infrastruktūru (PKI) vai protokolus kā Diffie–Hellman. Slikta atslēgu pārvaldība var padarīt pat matemātiski drošu šifru neaizsargātu pret uzbrukumiem.
Piemēri un tipiski uzbrukumi
Tipiski uzbrukumi pret šifriem un šifrēšanas sistēmām ietver atslēgas laušanu (bruteforce), kriptanalīzi, sānu kanālu uzbrukumus (piemēram, enerģijas patēriņa analīze), kā arī uzbrukumus, kas izmanto implementācijas kļūdas. Lai nodrošinātu drošību, jāizmanto pārbaudīti standarti, pietiekami garas atslēgas un droša programmatūras/hardware implementācija.
Šifrēšana ir būtiska digitālās drošības sastāvdaļa — tā aizsargā konfidencialitāti, nodrošina autentiskumu un integritāti. Zināšanas par šifru principiem, viņu vēsturi un praktiskajiem pielietojumiem palīdz saprast, kā droši apmainīties ar informāciju mūsdienu savienotajā pasaulē.