Caesarova šifra je historicky zaujímavá, ale pre skutočnú ochranu dát dnes nepostačuje. Moderné symetrické šifrovanie používa matematicky zložité algoritmy a kľúče dlhé stovky bitov — prelomenie by trvalo dlhšie, ako je vek vesmíru.
Čo je symetrické šifrovanie?
Pri symetrickom šifrovaní sa na zašifrovanie aj dešifrovanie používa ten istý kľúč. Obe strany komunikácie musia tento kľúč poznať vopred.
Otvorený text → [Šifrovanie + kľúč] → Šifrovaný text
Šifrovaný text → [Dešifrovanie + kľúč] → Otvorený text
Slovo „symetrické" pochádza z toho, že rovnaký kľúč sa používa na oboch stranách — šifrovanie aj dešifrovanie sú symetrickými operáciami s rovnakým kľúčom.
Šifrovací kľúč
Kľúč je tajná informácia, ktorú musia poznať obe strany, ale nikto iný. Bezpečnosť symetrického šifrovania závisí od:
- Dĺžky kľúča — dlhší kľúč = bezpečnejšie šifrovanie
- Náhodnosti kľúča — kľúč musí byť skutočne náhodný
- Utajenia kľúča — ak kľúč unikne, šifrovanie je prelomené
| Dĺžka kľúča | Počet možností | Bezpečnosť |
|---|---|---|
| 8 bitov | 256 | Veľmi slabé (zlomok sekundy) |
| 56 bitov | ~72 biliónov | Prelomiteľné (DES — zastarané) |
| 128 bitov | ~3,4 × 10³⁸ | Bezpečné (AES-128) |
| 256 bitov | ~1,2 × 10⁷⁷ | Mimoriadne bezpečné (AES-256) |
AES — Advanced Encryption Standard
AES (Advanced Encryption Standard) je dnes najpoužívanejší symetrický šifrovací algoritmus. Bol štandardizovaný americkým NIST v roku 2001 a nahradil zastaraný DES.
Vlastnosti AES:
- Kľúče dlhé 128, 192 alebo 256 bitov
- Šifruje dáta po blokoch 128 bitov
- Vykonáva 10–14 kôl matematických transformácií
- Používajú ho banky, armády, vládne inštitúcie aj bežné aplikácie
# Ukážka AES šifrovania (knižnica pycryptodome)
from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes
import base64
# Vygenerovanie náhodného 256-bitového kľúča
kluc = get_random_bytes(32) # 32 bajtov = 256 bitov
# Šifrovanie
sifra = AES.new(kluc, AES.MODE_EAX)
zasifrovane, tag = sifra.encrypt_and_digest(b"Tajná správa!")
print(f"Kľúč (hex): {kluc.hex()}")
print(f"Zašifrované (hex): {zasifrovane.hex()}")
# Dešifrovanie
sifra2 = AES.new(kluc, AES.MODE_EAX, sifra.nonce)
otvoreny_text = sifra2.decrypt(zasifrovane)
print(f"Dešifrované: {otvoreny_text.decode()}")
AES-256 je tak bezpečný, že ani všetky počítače na svete by ho nedokázali prelomiť hrubou silou. Preto sa šifrovania zvyčajne útočí na iné časti systému — na slabé heslá, chyby v implementácii alebo sociálne inžinierstvo.
Problém výmeny kľúča
Hlavnou slabinou symetrického šifrovania je bezpečná výmena kľúča:
- Alice chce poslať Bobovi zašifrovanú správu.
- Najskôr mu musí poslať kľúč.
- Ale ako mu pošle kľúč bezpečne, ak ešte nemajú šifrovaný kanál?
Toto sa nazýva problém výmeny kľúča a riešia ho asymetrické šifrovacie protokoly (napr. RSA alebo Diffie-Hellman), ktoré sa v praxi používajú spolu so symetrickým šifrovaním.
Kde sa symetrické šifrovanie používa?
- Šifrovanie disku: BitLocker (Windows), FileVault (macOS) používajú AES
- VPN siete: Šifrujú všetku komunikáciu medzi zariadením a serverom
- HTTPS: Po výmene kľúčov sa komunikácia šifruje symetricky (AES)
- ZIP s heslom: Používa AES-256
Nikdy nevymýšľaj vlastný šifrovací algoritmus — takmer určite bude mať bezpečnostné slabiny. Vždy používaj overené štandardy ako AES. Odborníci strávili desaťročia testovaním a zdokonaľovaním týchto algoritmov.
Cvičné príklady
Prečo je AES-256 bezpečnejší ako šifra s 56-bitovým kľúčom? Koľkokrát viac možností má kľúč AES-128 oproti 56-bitovému kľúču?
Zobraziť odpoveď
Aký je problém výmeny kľúča pri symetrickom šifrovaní a prečo ho nemožno vyriešiť jednoducho poslaním kľúča e-mailom?