Pakaitinis šifras yra kriptografijos rūšis.
Pakaitiniame šifre kiekviena pranešimo raidė keičiama pagal taisyklę. Taisyklėje sakoma, kad kiekvieną raidę reikia pakeisti (arba "pakeisti") kita abėcėlės raide.
Pavyzdžiui, šioje lentelėje pateikiama pakeitimo šifro taisyklė:
Pagal šią taisyklę sakinys "Džekas ir Džilė ėjo į kalną" pakeičiamas į "Etar tzn Evmm gkzc dw cuk uvmm". Cezario šifras yra vienas iš pakeitimo šifro pavyzdžių.
Pakaitiniai šifrai nėra pakankamai saugūs, kad juos būtų galima naudoti svarbiems pranešimams. Pakaitinius šifrus galima nulaužti taikant dažnių analize vadinamą idėją. Kai kurios raidės anglų kalbos sakiniuose pasitaiko dažniau nei kitos: E yra dažniausia, tada T, tada A ir taip toliau. Pranešime, kuris buvo pakeistas pakeitimo šifru, bus kitokių bendrinių raidžių, tačiau tai duoda užuominą apie taisyklę. Tikėtina, kad pakeistame pranešime dažniausios raidės bus dažniausios raidės anglų kalboje. Kriptogramų (pakeitimo šifru paslėptų pranešimų) laužymas yra įprastas galvosūkis, dažnai sutinkamas laikraščiuose.
Kaip veikia pakaitinis šifras — papildomi paaiškinimai
Pakaitinis šifras priskiriamas simetriniams šiframs, nes taisyklė (raktas) yra vienoda tiek šifravimo, tiek iššifravimo metu. Paprasčiausias pakaitinis šifras vadinamas vienkartiniu arba tiesioginiu pakeitimu: kiekviena aiškiojo teksto raidė visada pakeičiama ta pačia užšifruota raide. Yra ir sudėtingesnių variantų:
- Vieno abėcėlės pakeitimas (simple substitution) — kiekviena raidė pakeičiama kita, bet visur ta pati taisyklė.
- Homofoninis pakeitimas — dažnoms raidėms priskiriama daugiau užšifruotų simbolių, kad būtų išlyginti dažniai.
- Polialfabetinis pakeitimas — naudojami keli pakeitimo raktai (pvz., Vigenère šifras), todėl ta pati aiškiojo teksto raidė kartais pavirsta skirtingomis raidėmis.
Cezario šifras — paprastas pavyzdys
Cezario šifras yra klasikinis pakaitinio šifro pavyzdys. Jis veikia kaip abėcėlės poslinkis: kiekvieną raidę pakeičiame raide, esančia tam tikru skaičiumi pozicijų toliau abėcėlėje. Pavyzdžiui, su poslinkiu 3 (tai buvo Julijaus Cezario naudojamas poslinkis) abėcėlė A→D, B→E, C→F ir t. t.
Pavyzdys su anglų/lotyniška abėcėle (26 raidės): aiškus tekstas "HELLO" po poslinkio 3 tampa "KHOOR". Panašiai lietuvišką žodį "LABAS" (naudojant bazinę lotynišką abėcėlę) su poslinkiu 3 galima užšifruoti taip: L→O, A→D, B→E, A→D, S→V — gauname "ODEDV".
Cezario šifras yra labai paprastas ir greitai sulaužomas, bet jis dažnai naudojamas kaip mokomasis pavyzdys ar galvosūkis.
Dažnių analizė ir kaip nulaužti pakaitinius šifrus
Dažnių analizė remiasi tuo, kad skirtingos raidės tekste pasitaiko nevienodai. Kaip taisyklė:
- Skaičiuojama, kurios užšifruoto teksto raidės pasirodo dažniausiai.
- Dažniausios užšifruoto teksto raidės bandomos priskirti dažniausioms raidėms natūralioje kalboje (pvz., anglų E, T, A; lietuvių kalboje dažniausios raidės yra šiek tiek kitokios — A, I, S, E ir pan.).
- Taip gaunami pradiniai spėjimai, kuriuos patikrinus pagal trumpus žodžius, pasikartojančius raštus ir kontekstą galima palaipsniui ištaisyti ir gauti aiškų tekstą.
Be vienoračių raidžių dažno analizė naudoja ir dviračius/triračius (digrams, trigrams) – populiarias raidžių poras ar tripletus, pvz., anglų "TH", "HE", "IN". Taip pat svarbi žodžių struktūra: vienaračiai žodžiai, pasikartojantys žodžiai, raidžių pasikartojimų modeliai (pvz., 3 raidžių žodai, kurių pirmos ir paskutinės yra tokios pačios) duoda užuominų.
Praktiniai patarimai ir apribojimai
- Dažnių analizė gerai veikia ilgiems tekstams. Trumpas pranešimas gali būti nelaužiamas vien tik pagal dažnius, todėl reikia naudoti papildomas užuominas (kontekstas, žinomų frazių paieška).
- Kalba turi reikšmės: raidžių pasiskirstymas skiriasi tarp kalbų — taigi analizuokite pagal atitinkamos kalbos statistikas.
- Kompiuteriai labai pagreitina laužymą: automatizuotos programos išbando sutapimus tarp dažnių, modelių ir žodynų įrašų.
- Norint padaryti pakaitinį šifrą saugesnį, istorijoje naudoti polialfabetiniai metodai (pvz., Vigenère) arba homofoniniai pakaitalai; tačiau šiuolaikinė kriptografija remiasi visiškai kitokiais algoritmais, kurie nepasikliauja tik paprastu pakeitimu.
Apibendrinant: pakaitinis šifras yra paprasta ir aiški šifravimo idėja — viena raidė pakeičiama kita pagal raktą. Tai puikus įvadas į kriptografiją ir loginius galvosūkius, bet nepakankamai saugus rimtai informacijai. Dažnių analizė suteikia veiksmingą įrankį šiems šiframs sulaužyti, ypač turint ilgą tekstą ir žinant kalbą.