Šifrování je způsob, jak schovat data před cizíma očima — vezmeš čitelný text a pomocí klíče ho převedeš na nesmysl, který jde vrátit zpět jen s tím správným klíčem. Zní to jako jedna věc, ale lidi si pod „šifrováním" pletou spoustu různých nástrojů: LUKS na disk, GPG na soubory, TLS na síť. A hlavně — šifrování se často plete s hashováním, což je něco úplně jiného. Když si od začátku ujasníš, co je vratné a co ne a kdy který nástroj, přestane ti to celé připadat jako magie.
Pár pojmů na úvod
- Šifrování (encryption) = vratný převod dat pomocí klíče. S klíčem data zase rozšifruješ zpátky. Účel = utajení (aby to cizí nepřečetl). Klíč pryč → data pryč, ale samo o sobě je to obousměrné.
- Hashování (hashing) = jednosměrný otisk dat. Ze vstupu spočítáš krátký „fingerprint" a zpátky to nejde. Účel = integrita (poznat, že se data nezměnila) a ukládání hesel.
- Klíč (key) = tajemství, kterým šifruješ a dešifruješ. Kdo má klíč, dostane se k datům — proto je ochrana klíče stejně důležitá jako samotné šifrování.
- Symetrické šifrování = jeden klíč na šifrování i dešifrování. Rychlé, ale klíč musí znát obě strany.
- Asymetrické šifrování = pár klíčů: veřejný (rozdáš ho) a soukromý (nikdy nikomu). Co zašifruje veřejný, rozšifruje jen soukromý (u podpisů je to opačně: podepisuje soukromý, ověřuje veřejný).
- Passphrase = heslo (spíš celá věta), ze kterého se odvozuje šifrovací klíč. Typicky u LUKS a
gpg -c. - „V klidu" (at rest) vs „na cestě" (in transit) = data ležící na disku vs data letící po síti. Každé chrání jiný nástroj: disk → LUKS, síť → TLS/HTTPS.
Šifrování vs hashování — to si zapamatuj první
Tohle je nejčastější zmatek, tak ho vezmeme hned a natvrdo:
| Šifrování | Hashování | |
|---|---|---|
| Vratné? | Ano — s klíčem zpět | Ne — jen jedním směrem |
| K čemu? | utajení dat | integrita + ukládání hesel |
| Potřebuje klíč? | Ano | Ne (volitelně „sůl") |
| Příklad | LUKS, GPG, TLS | SHA-256, bcrypt, argon2 |
Šifrování vezme text „ahoj" a udělá z něj 8f3a... — a když máš klíč, dostaneš zpátky „ahoj".
Je to jako zamčená schránka: obsah tam pořád je, jen k němu potřebuješ klíč.
Hash vezme „ahoj" a spočítá 2c26b46b... — a z toho otisku už nikdy „ahoj" nesložíš. Je to
jako otisk prstu: jednoznačně patří k „ahoj", ale z otisku člověka nepostavíš.
# Hash — jednosměrný otisk (ověřuje, že se soubor nezměnil)
sha256sum soubor.iso
# -> 9f86d081884c7d659a2feaa0c55ad015... soubor.iso
# Šifrování — vratné, s heslem zpátky (viz GPG níže)
gpg -c tajne.txt # zašifruj
gpg tajne.txt.gpg # rozšifruj zpátky (chce heslo)
💡 Zlaté pravidlo: Hesla se hashují, ne šifrují. Kdyby šla v databázi rozšifrovat zpátky, útočník, co ukradne databázi i klíč, přečte všechna hesla. Hash zpět nejde — ani pro tebe, ani pro útočníka.
Symetrické vs asymetrické — jeden klíč, nebo pár?
Symetrické = jeden sdílený klíč. Rychlé (šifruje i gigabajty dat svižně), ale je tu háček: jak
ten klíč bezpečně předáš druhé straně? Když ho pošleš po síti, může ho někdo odchytit. Proto se
symetrické šifrování hodí tam, kde klíč zná jen jeden člověk — třeba tvůj disk (LUKS) nebo soubor,
co si šifruješ sám pro sebe (gpg -c).
Asymetrické = pár klíčů, které patří k sobě:
- Veřejný klíč — rozdáš ho komukoli. Slouží k šifrování zprávy pro tebe a k ověření tvého podpisu.
- Soukromý klíč — držíš ho v tajnosti a chráníš heslem. Jím rozšifruješ, co ti někdo poslal, a jím podepisuješ.
Kouzlo je, že klíče jsou spárované asymetricky: co zamkne veřejný, otevře jen soukromý.
Díky tomu si dva lidi, co se nikdy nepotkali, můžou bezpečně psát — bez toho, aby si předem předávali tajný klíč. Praxe většinou kombinuje obojí: asymetrikou se bezpečně domluví jednorázový symetrický klíč (rychlý), a jím se pak šifruje samotný provoz. Přesně tak funguje HTTPS.
LUKS — šifrování celého disku
LUKS (Linux Unified Key Setup) je standard pro šifrování celých oddílů nebo disků v Linuxu. Nešifruje jednotlivé soubory — šifruje celý blok pod souborovým systémem. Chrání data „v klidu": když ti někdo ukradne vypnutý notebook, vidí jen šifrovaný nesmysl. Bez passphrase se k datům nedostane, i kdyby disk vyndal a připojil jinam.
⚠️ Pozor: LUKS chrání jen vypnutý (nebo hibernovaný) stroj. Uspání do RAM (suspend) data nechrání — master klíč zůstává v paměti, takže probuzený notebook je odemčený a klíč jde z RAM vytáhnout (cold-boot / DMA útok). Citlivý stroj bez dozoru raději vypni nebo hibernuj, neuspávej.
Jak to funguje v kostce: při bootu tě systém požádá o passphrase, tou odemkne šifrovací klíč a disk se „otevře" jako běžný oddíl. Za běhu o šifrování ani nevíš — čte a zapisuje se transparentně.
# POZOR: luksFormat NEVRATNĚ přepíše oddíl. Ověř si název (lsblk)!
sudo cryptsetup luksFormat /dev/sdX1 # vytvoř šifrovaný oddíl (zeptá se na passphrase)
sudo cryptsetup luksOpen /dev/sdX1 tajnydisk # odemkni -> vznikne /dev/mapper/tajnydisk
sudo mkfs.ext4 /dev/mapper/tajnydisk # založ na odemčeném zařízení filesystem
sudo mount /dev/mapper/tajnydisk /mnt # připoj a používej normálně
# ...po práci:
sudo umount /mnt
sudo cryptsetup luksClose tajnydisk # zase zamkni
💡 Když má systém šifrovaný
/(full-disk encryption přes LUKS, běžná volba už při instalaci), chce heslo hned při startu — dřív, než naběhne plocha. To je odemykání disku, ne přihlášení do účtu; jsou to dvě různé věci (a klidně dvě různá hesla).
Kdy LUKS: chceš chránit všechno na disku/notebooku najednou a nechceš řešit „zašifroval jsem tenhle soubor, a tamten?". Zapne se u instalace jedním kliknutím a dál se o nic nestaráš.
GPG — šifrování a podpis souborů
GPG (GNU Privacy Guard) je švýcarský nožík na šifrování jednotlivých souborů a mailů a na digitální podpisy. Umí obě varianty šifrování:
Symetricky (gpg -c) — zašifruješ heslem, žádné klíče neřešíš. Ideální, když si chceš jen odložit
soubor tak, aby ho nikdo bez hesla nepřečetl:
gpg -c dokument.pdf # -> dokument.pdf.gpg (chce heslo)
gpg dokument.pdf.gpg # rozšifruj zpátky (chce stejné heslo)
Asymetricky — vyrobíš si klíčový pár a používáš veřejné/soukromé klíče:
gpg --full-generate-key # vytvoř svůj pár (veřejný + soukromý)
gpg --export -a "tvuj@mail" > public.asc # veřejný klíč, co můžeš rozdat
# někdo ti zašifruje soubor TVÝM veřejným klíčem, ty ho otevřeš svým soukromým
gpg -e -r "tvuj@mail" tajne.txt # zašifruj pro příjemce
gpg -d tajne.txt.gpg # dešifruj svým soukromým klíčem
Podpisy = druhé velké využití GPG. Podpisem soukromým klíčem dokážeš, že něco pochází od tebe
a nebylo to změněno; kdokoli to ověří tvým veřejným klíčem. Přesně tak se ověřuje pravost
balíčků (dnf/apt kontrolují podpisy repozitářů) nebo Git commitů:
gpg --verify balicek.tar.gz.sig balicek.tar.gz # sedí podpis? -> od koho a nezměněno
git commit -S -m "feat: ..." # podepsaný commit
💡 Rozdíl podpis vs šifrování: šifrování řeší „nikdo cizí to nepřečte" (utajení). Podpis řeší „je to fakt od tebe a nezměněné" (pravost + integrita). GPG umí obojí, klidně naráz.
Kdy GPG: jeden konkrétní soubor nebo mail, který chceš poslat/uložit šifrovaně, nebo když chceš něco podepsat. Na celý disk se nehodí — od toho je LUKS.
TLS/HTTPS — šifrování „na cestě" (jen zmínka)
Zatímco LUKS chrání data ležící na disku, TLS chrání data letící po síti. To je to „S" v HTTPS a ten zámeček v prohlížeči. Když se připojíš k webu, tvůj prohlížeč a server se přes asymetrické klíče domluví na jednorázovém symetrickém klíči a jím pak šifrují celou komunikaci — takže nikdo na cestě (Wi-Fi, poskytovatel, útočník) neuvidí, co si posíláte, ani to nezmění.
Princip je stejná stavebnice, jakou už znáš (symetrika + asymetrika + podpisy/certifikáty), jen aplikovaná na síť. Detaily certifikátů a HTTPS necháme na kapitolu o síti — tady stačí zapamatovat: LUKS = data v klidu, TLS = data na cestě.
Kdy co použít (rychlá tabulka)
| Chci chránit... | Nástroj | Proč |
|---|---|---|
| Celý notebook / disk / oddíl | LUKS | jeden zámek na všechno, chrání ukradený stroj |
| Jeden soubor nebo mail | GPG | cílené šifrování/podpis konkrétní věci |
| Data letící po síti | TLS/HTTPS | šifruje spojení, ne uložená data |
| Ověřit, že se soubor nezměnil | hash (sha256sum) | otisk, ne šifra — integrita |
| Uložit uživatelská hesla | hash (bcrypt/argon2) | jednosměrné, nesmí jít rozšifrovat |
Failure modes — časté omyly
- Záměna hashování a šifrování. „Zašifruju to SHA-256" — ne, SHA-256 je hash, nejde vrátit zpět. A obráceně „zahashuju to, ať se to dá později přečíst" — hash přečíst zpátky nejde. Nejdřív si ujasni, jestli chceš data vrátit (šifra), nebo jen ověřit/uložit heslo (hash).
- Ztráta LUKS passphrase = ztráta dat. Natvrdo. Neexistuje žádný „zapomněl jsem heslo" ani backdoor
ani hotline — to je celý smysl šifrování. Passphrase si zálohuj (správce hesel, papír v šuplíku) a
zvaž si přidat druhý klíčový slot (
cryptsetup luksAddKey) jako pojistku. - Šifrovaný disk, ale slabá passphrase. LUKS s heslem
1234je zámek s klíčem pod rohožkou. Síla celé ochrany = síla passphrase. Dlouhá (16+ znaků), ne slovníková. - Soukromý GPG klíč bez zálohy a bez hesla. Bez zálohy o klíč přijdeš při přeinstalaci (a nic starého už nerozšifruješ). Bez hesla ho kdokoli u tvého počítače rovnou zneužije. Zálohuj soukromý klíč bezpečně a chraň ho heslem — veřejný klidně rozdávej, ten je na to.
- „Zašifruju hesla v databázi." Klasika, a špatně. Hesla se hashují (bcrypt/argon2 + sůl), ne šifrují. Šifrování by šlo rozšifrovat — kdo ukradne DB i klíč, má všechna hesla. Hash zpět nejde.
🛠️ Cvičení
- Šifra vs hash prakticky. Spočítej
sha256sumnějakého souboru dvakrát za sebou a porovnej výstup. Pak soubor o jeden znak změň a spočítej znovu. Co se stalo a proč se tomu říká „otisk"? Šel by z toho otisku soubor složit zpátky? - Symetrické GPG. Zašifruj textový soubor přes
gpg -c, smaž originál, a rozšifruj ho zpátky. Jaké tajemství tu hraje roli klíče? Kolik lidí ho musí znát? - Rozmysli nástroj. Ke každé situaci přiřaď LUKS / GPG / TLS / hash a zdůvodni: (a) ukradli mi vypnutý notebook, (b) posílám kolegovi jeden citlivý PDF, (c) ukládám hesla uživatelů webu, (d) přihlašuju se do internetového bankovnictví.
- Podpis vs šifrování. Vysvětli vlastními slovy rozdíl mezi tím, když soubor GPG zašifruješ, a když ho GPG podepíšeš. Který z nich řeší „nikdo cizí to nepřečte" a který „je to fakt od tebe"?
- (Pro odvážné, na testovacím disku/USB!) Na prázdném USB nebo virtuálním disku vyzkoušej
cryptsetup luksFormat,luksOpen, založ filesystem, připoj, zapiš soubor, odpoj aluksClose. Pak zkus data přečíst bez odemčení. Co uvidíš?
Náčrt řešení — rozbal, až si cvičení zkusíš sám
- Šifra vs hash — dvakrát po sobě dá
sha256sumstejný otisk (hash je deterministický). Po změně jednoho znaku se otisk kompletně změní — proto pozná i drobnou úpravu (integrita). Zpátky soubor složit nejde: hash je jednosměrný, z krátkého otisku původní data nepostavíš. Pozor: proto se hash hodí na ověřování a hesla, ne na „schování, co se dá vrátit". - Symetrické GPG —
gpg -c souborvytvořísoubor.gpga chce heslo (passphrase); to je tady tajemství v roli klíče. Rozšifruješgpg soubor.gpgstejným heslem. Znát ho musí jen ten jeden člověk (ty) — proto je symetrika ideální na „šifruju sám pro sebe". Pozor: kdo zná heslo, čte data; a když heslo zapomeneš, soubor je pryč. - Který nástroj — (a) ukradený vypnutý notebook → LUKS (data v klidu na celém disku); (b) jeden citlivý PDF kolegovi → GPG (cílené šifrování/podpis souboru); (c) hesla uživatelů → hash (bcrypt/argon2 + sůl, nikdy ne šifrování!); (d) bankovnictví → TLS/HTTPS (šifrování spojení „na cestě"). Pozor: každá vrstva řeší jiné místo — disk, soubor, síť, uložené heslo.
- Podpis vs šifrování — šifrování převede obsah na nečitelný a otevře ho jen ten, kdo má klíč → řeší „nikdo cizí to nepřečte" (utajení). Podpis obsah nezakryje, ale přiloží k němu důkaz tvým soukromým klíčem → kdokoli tvým veřejným klíčem ověří, že je to od tebe a nezměněné → řeší „je to fakt od tebe" (pravost + integrita). Pozor: jde to i naráz — podepsat a zašifrovat zároveň.
- LUKS na USB — po
luksFormat+luksOpenvznikne/dev/mapper/<jmeno>, na tom založíš filesystem, připojíš a zapisuješ normálně. PoluksClosea pokusu číst syrová data oddílu (hexdump/dd) uvidíš jen šifrovaný nesmysl, žádný čitelný soubor — přesně to vidí zloděj s ukradeným diskem. (Pozn.:cryptsetup luksDumpnaopak ukáže čitelnou hlavičku — cipher, sloty, UUID — takže sám o sobě není důkaz zašifrování dat.) Pozor:luksFormatmaže data, dělej to jen na prázdném/testovacím médiu.
🧠 Otázky & odpovědi
Jaký je rozdíl mezi šifrováním a hashováním?
Šifrování je vratné: pomocí klíče převedeš data na nesmysl a stejným (nebo párovým) klíčem je dostaneš zpátky — účelem je utajení. Hashování je jednosměrné: spočítá z dat krátký otisk a zpátky se z něj původní data složit nedají — účelem je integrita (poznat změnu) a bezpečné ukládání hesel. Pravidlo: chceš data někdy vrátit → šifruj; chceš jen ověřit nebo uložit heslo → hashuj.
Proč se hesla v databázi mají hashovat a ne šifrovat?
Protože šifrování jde rozšifrovat zpátky. Kdyby útočník ukradl databázi i šifrovací klíč, přečetl by rovnou všechna hesla v čitelné podobě. Hash zpátky nejde — ani pro útočníka, ani pro tebe. Při přihlášení zahashuješ zadané heslo a jen porovnáš otisky, samotné heslo nikde neukládáš. Používej na to bcrypt nebo argon2 se solí, ne holé SHA. Aplikace nikdy nepotřebuje heslo přečíst zpět — jen ověřit, že sedí.
Co se stane, když zapomenu passphrase k LUKS disku?
Přijdeš o data. Natvrdo a nezvratně — v tom je celý smysl šifrování. Neexistuje backdoor, master heslo
ani hotline, která ti to odemkne; kdyby existovaly, nebyl by disk vlastně chráněný. Proto si passphrase
zálohuj (správce hesel, papír na bezpečném místě) a zvaž přidat druhý klíčový slot přes
cryptsetup luksAddKey jako pojistku pro případ, že na to hlavní zapomeneš.
Kdy použít LUKS a kdy GPG?
LUKS na celý disk nebo oddíl — chceš chránit všechno na notebooku najednou pro případ krádeže, zapneš to typicky u instalace a dál nic neřešíš (data v klidu). GPG na jednotlivé soubory nebo maily — když chceš zašifrovat jeden konkrétní dokument, poslat ho někomu, nebo něco podepsat. Zjednodušeně: celý disk = LUKS, jeden soubor = GPG. TLS je pak třetí věc — šifruje data na cestě po síti, ne uložená na disku.
K čemu je u GPG veřejný a soukromý klíč?
Tvoří pár, který patří k sobě. Veřejný klíč klidně rozdáš — ostatní jím zašifrují zprávu pro tebe a ověří tvůj podpis. Soukromý klíč držíš v tajnosti a chráníš heslem — jím rozšifruješ, co ti poslali, a jím podepisuješ. Kouzlo je, že co zamkne veřejný klíč, otevře jen soukromý; u podpisů je to opačně — podepisuje se soukromým a ověřuje veřejným. Díky tomu si můžou bezpečně psát i lidi, co si nikdy nepředali žádné společné heslo. Soukromý klíč si proto zálohuj a chraň heslem — jeho ztráta nebo únik shodí celou ochranu.
