Šifra (alebo šifra) je algoritmus na vykonávanie šifrovania (kódovania) alebo dešifrovania (dekódovania). Ide o sériu presne definovaných krokov, ktoré možno dodržiavať ako postup. Šifrovať alebo kódovať znamená previesť informáciu z otvoreného textu na šifru alebo kód.
V netechnickom použití "šifra" často znamená to isté ako "kód", ale v kryptografii sa šifry od kódov odlišujú. Jeden zdroj z 20. storočia uvádza toto vysvetlenie: "Šifra je "metóda, v ktorej je základnou jednotkou utajenia písmeno. V porovnaní s tým je šifra spôsob utajenia, pri ktorom je základnou jednotkou slovo". Koncom storočia sa "kódy" v tomto kryptografickom zmysle stali zriedkavými. Kryptografia 21. storočia väčšinou šifruje bitové prúdy.
Kódy fungovali tak, že sa nahrádzali podľa rozsiahlej kódovej knihy, ktorá spájala náhodný reťazec znakov alebo čísel so slovom alebo frázou. Napríklad "UQJHSE" by mohol byť kód pre "Pokračujte na nasledujúce súradnice".
Šifra sa používa na premenu pôvodnej informácie ("otvoreného textu") na zašifrovanú formu "šifrového textu". Šifrovaná správa obsahuje všetky informácie z otvoreného textu, ale človek ani počítač ju nemôžu prečítať bez príslušného mechanizmu na dešifrovanie. Na zašifrovanie alebo dešifrovanie potrebujete "kľúč". Pri šifrovaní kľúč určuje konkrétnu transformáciu otvoreného textu na šifrový text alebo naopak pri dešifrovaní.
Podľa typu použitého kľúča sa šifry delia na:
- algoritmy so symetrickým kľúčom (kryptografia so súkromným kľúčom): na šifrovanie a dešifrovanie sa používa rovnaký kľúč a
- algoritmy s asymetrickým kľúčom (kryptografia s verejným kľúčom): na šifrovanie a dešifrovanie sa používajú dva rôzne kľúče.
Slovo šifra vo francúzštine je cifre a v stredovekej latinčine cifra, z arabského sifr, čo znamená "nula". Prvé známe anglické použitie slova zero bolo v roku 1598.
Základné princípy a rozdelenie šifier
V kryptografii sa šifry často klasifikujú podľa princípu transformácie dát:
- Substitučné šifry – každá jednotka otvoreného textu (napr. písmeno alebo bit) sa nahradí inou jednotkou. Príklad: Caesarova šifra alebo Vigenèrova šifra.
- Transpozičné (permutačné) šifry – zachovaný je obsah jednotiek, no mení sa ich poradie (napr. transpozície písmen v rámci bloku).
- Blokové šifry – pracujú so vstupom po blokoch pevnej dĺžky (napr. 128 bitov). Typickým príkladom je AES.
- Prúdové šifry – generujú prúd kľúčových bitov, ktoré sa kombinujú s otvoreným textom (XOR). Používajú sa napr. pri zabezpečení dátových prúdení v reálnom čase.
Symetrické vs. asymetrické šifry (rozšírenie)
Symetrické algoritmy sú rýchle a efektívne pre veľké objemy dát, ale vyžadujú bezpečné zdieľanie kľúča medzi komunikujúcimi stranami. Bežné symetrické algoritmy: AES, DES (historicky), 3DES.
Asymetrické algoritmy používajú dvojicu kľúčov – verejný a súkromný. Verejný kľúč môže ktokoľvek použiť na šifrovanie správy určené prijímateľovi, ktorý ju potom dekóduje súkromným kľúčom. Asymetria rieši problém distribúcie kľúčov, ale býva pomalšia než symetrické metódy. Bežné príklady: RSA, ECC (eliptické krivky).
V praxi sa často používa hybridný prístup: asymetrická kryptografia zabezpečí výmenu symetrického kľúča a samotné dáta sa šifrujú symetrickou šifrou (týmto spôsobom sa spájajú výhody oboch prístupov).
Bežné algoritmy a príklady
- Caesarova šifra – jednoduchá substitúcia, písmená sa posunú o pevný počet pozícií. Ukážka: A→D pri posune o 3.
- Vigenèrova šifra – opakovaný kľúč určuje postupné posuny; historicky odolnejšia voči jednoduchému frekvenčnému rozboru.
- AES (Advanced Encryption Standard) – moderná bloková symetrická šifra používaná v mnohých štandardoch; bezpečná pri správnom použití.
- RSA – asymetrický algoritmus založený na faktorizácii veľkých čísel; často používaný na výmenu kľúčov a digitálne podpisy.
- ECC (eliptické krivky) – poskytuje rovnakú bezpečnosť pri menších kľúčoch v porovnaní s RSA, čo šetrí výpočtové prostriedky a šírku pásma.
Módy prevádzky blokových šifier
Pri použití blokovej šifry na prenášanie alebo ukladanie väčších množín dát sa používajú módy prevádzky (napr. ECB, CBC, CTR, GCM). Módy riešia, ako šifrovať viac než jeden blok a ako zaobchádzať s opakovaním vzorov. Niektoré módy (napr. ECB) sú nevhodné pre väčšinu aplikácií, pretože odhaľujú vzory v dátach. Iné (napr. CBC, GCM) poskytujú lepšiu bezpečnosť a autentifikáciu.
Bezpečnostné aspekty a typy útokov
- Bruteforce – skúšanie všetkých možných kľúčov; veľkosť kľúčového priestoru rozhoduje o odolnosti.
- Kryptanalytické útoky – využitie matematických slabín v algoritme (napr. pri starších štandardoch ako DES).
- Útoky s vybraným otvoreným textom / zákonom o šifrách – útočník získa schopnosť šifrovať alebo dešifrovať vybrané správy a využíva tieto odpovede.
- Man-in-the-middle – pri komunikácii bez overenia totožnosti môže útočník zachytiť a zmeniť kľúče alebo správy.
- Vedľajšie kanály – získanie informácií cez úniky z implementácie (časovanie, spotreba energie, elektromagnetické emisie).
Riadenie kľúčov a praktické odporúčania
Bezpečnosť šifry závisí nielen od algoritmu, ale aj od správneho spravovania kľúčov (generovanie, skladovanie, výmena, revokácia). Odporúčania:
- Používať moderné, overené štandardy (napr. AES-256, RSA/ECC so správnou dĺžkou kľúča).
- Vyhnúť sa vlastným ("home-grown") kryptografickým riešeniam bez odborného hodnotenia.
- Implementovať ochranu proti vedľajším kanálom a zabezpečiť aktualizácie softvéru.
- Používať správne módy prevádzky a náhodné inicializačné vektory (IV) tam, kde sú potrebné.
Aplikácie šifier v praxi
Šifry sú základom bezpečnej komunikácie a ochrany dát: HTTPS/TLS pre bezpečné webové spojenia, šifrovanie e‑mailov (PGP/S/MIME), VPN, ochrana pevných diskov (full disk encryption), zabezpečenie mobilných aplikácií, digitálne podpisy a autentifikácia. V modernej infraštruktúre sa často kombinuje symetrická a asymetrická kryptografia tak, aby sa dosiahla bezpečnosť aj výkonnosť.
Historická poznámka k názvu
Etymológia slova bola zaznamenaná v pôvodnom texte: slovo šifra vo francúzštine je cifre a v stredovekej latinčine cifra, z arabského sifr, čo znamená "nula". Prvé známe anglické použitie slova zero bolo v roku 1598. Pôvod slova reflektuje historické spojenie s číslami a numerickými sústavami, ktoré zohrávali dôležitú úlohu pri vzniku šifrovacích postupov.
Ak potrebujete, môžem doplniť konkrétne príklady šifrovania/dešifrovania (napr. ukážka Caesarovej šifry), porovnanie konkrétnych algoritmov (AES vs. ChaCha20) alebo odporúčania pre implementáciu v konkrétnom prostredí (web, mobil, server).