Hlavní navigace

Hesla a šifrování

Sdílet

Se světem počítačů jsou neodmyslitelně spjata také hesla všeho druhu, která chrání přístup k datům a citlivým informacím. Správné heslo by mělo být snadno zapamatovatelné, na druhou stranu ovšem těžko odhadnutelné – a zde vyvstává klasický rozpor mezi schopnostmi lidské paměti a kvalitou hesla. Nároky na silné heslo se liší podle použité aplikace a stupně zabezpečení, nicméně obecná podoba „neprolomitelného“ hesla by mohla vypadat například takto:

  • Heslo by mělo být alespoň osm znaků dlouhé (v závislosti na použité abecedě).
  • Heslo v sobě nesmí obsahovat smysluplné slovo (např. computer, user2005 apod.)
  • Heslo nesmí být spojeno s informacemi o uživateli (např. rodné či telefonní číslo).
  • Heslo obsahuje malá i velká písmena standardní anglické abecedy.
  • Heslo obsahuje číslice a speciální znaky (např. !, ?, _, # apod.)

Učebnicovým příkladem, který představuje kompromis mezi dodržením výše uvedených pravidel a snadnou zapamatovatelností, může být volba hesla na základě nějaké fráze. Kupříkladu verš ze známé rýmovačky „Dej mi babko jedno jabko, budeme mít stejně“ si snadno zapamatujete a zároveň vám poslouží jako vodítko k odvození hesla Dmb1j,bm=. Zde však vyvstává další problém, protože v praxi často potřebujete vícero hesel a těžko si budete každé z nich odvozovat z odlišné rýmovačky.

S výběrem správného hesla vám naštěstí mohou pomoci na Internetu volně dostupné aplikace, s jejichž pomocí lze vygenerovat heslo požadovaných parametrů – stačí určit jeho délku, použitou abecedu, případně další parametry dle potřeby. Některé z těchto programů dokonce disponují takovými funkcemi, které ověřují snadnou vyslovitelnost hesla (je-li totiž heslo dobře vyslovitelné snáze si jej zapamatujete). Také se správou již existujících hesel vám mohou pomoci programy stažitelné z Internetu, přesněji řečeno se jedná o jakési „trezory na hesla“. Do programu vložíte libovolný počet hesel a přístup k nim pak chráníte pouze pomocí jediného.

Heslo často plní funkci šifrovacího klíče, můžete tedy díky němu znečitelnit data všeho druhu. Ve vodách Internetu se s hesly setkáte například díky protokolu SSL (Secure Sockets Layer), který slouží pro šifrování komunikace mezi vámi (respektive vaším prohlížečem) a serverem (aplikací běžící na straně serveru). Šifrované spojení SSL nalézá uplatnění zejména při online bankovních transakcích či přihlašování do e-mailové schránky skrze webové rozhraní a snadno jej rozeznáte například díky prefixu URL adresy, který má podobu https:// namísto běžného http://.

ethereal

Získání hesla obsaženého v nešifrovaném spojení není velkým problémem. Na obrázku ukázka zachycené komunikace protokolu FTP.

Při navazování SSL spojení vám internetový prohlížeč zpravidla nabídne možnost prozkoumat certifikát serveru, který obsahuje informace o jeho identitě a použitém veřejném klíči. Většina uživatelů tento dialog automaticky „odstřelí“ lačným stisknutím tlačítka OK. Není však žádným tajemstvím, že i certifikát může být cestou od serveru k vám podvržen, takže si alespoň při každém prvním spojení s novým serverem certifikát pozorně prostudujte a zkontrolujte jeho platnost. Certifikát dále obsahuje například identifikátor podpisového algoritmu, označení jeho vydavatele či název subjektu, kterému je certifikát vydáván. Každý webový prohlížeč poskytuje základní nástroje pro správu certifikátů, můžete je tak exportovat, importovat, mazat apod. Fyzický soubor s certifikátem lze rozeznat například podle následujících přípon:

  • .CER, .DER certifikát kódovaný podle DER (Distinguished Encoding Rules, používá se pro zakódování dat před jejich podepsáním)
  • .PEM údaje certifikátu kódovány v Base64 a uzavřeny mezi řetězce ---BEGIN CERTIFICATE--- a ---END CERTIFICATE---
  • .P7B, .P7C, .PK7 údaje kódovány podle PKCS#7 (Public Key Cryptography Standard, RFC 2315) a uzavřeny mezi řetězce ---BEGIN PKCS7--- a ---END PKCS7---
  • .PFX, .P12 údaje kódovány dle PKCS#12

Se šifrováním dat je také velice úzce spjato jejich podepisování, kdy dochází k opačnému použití kryptografie s veřejným klíčem. Soukromý klíč, který každý drží v tajnosti, totiž slouží k podepisování dat a odpovídající veřejný klíč, jež je zpřístupněn komukoliv, pak k ověření daného podpisu. Připomeňme, že při šifrování je použití obou klíčů opačné – veřejným klíčem šifrujete zprávu a pouze příjemce ji díky svému soukromému klíči může dešifrovat.

Na Internetu je k dispozici velké množství aplikací zakládajících se na asymetrické kryptografii, generování vlastního páru klíčů si můžete sami vyzkoušet kupříkladu díky známému programu PGP, či jeho GNU alternativě názvem GnuPG. Veřejný klíč pak podobně snadno umístíte na některý k tomu určený server, nicméně je vhodné, aby vám jeho platnost stvrdil další uživatel, který předtím získal důvěru jiných uživatelů a tak dále proti proudu času. Jednu a tu samou dvojici klíčů lze použít jak pro šifrování, tak pro podepisování dat, nicméně se to nedoporučuje. Důležité je také pořadí aplikace podpisu a šifrování: svá data vždy nejprve podepište a teprve poté zašifrujte.

V praxi se zpravidla nepodepisují data jako taková, ale pouze jejich otisk (haš), který má nesrovnatelně menší velikost. Klasickým výstupem hašovací funkce je otisk délky například 128 či 160 bitů, lhostejno zda původní soubor měl velikost 1kB nebo 1GB. Výpočet hašovací funkce můžete směle ponechat na svém šifrovacím a podepisovacím softwaru. Ideální postup při šifrování a podepisování dat tedy vypadá takto:

  1. Vypočítejte otisk dat
  2. Otisk podepište svým soukromým klíčem
  3. Přiložte podepsaný otisk k datům
  4. Data i s podepsaným otiskem zašifrujte

Jakmile příjemce obdrží výsledek čtvrtého kroku, provede následující:

  1. Data dešifruje
  2. Pomocí vašeho veřejného klíče zkontroluje dešifrovaný podpis
  3. Vypočítá otisk dešifrovaných dat a porovná ho se zaslaným otiskem

Těchto pár jednoduchých kryptografických kroků dokáže zajistit více, než se na první pohled zdá. Otisk zaručuje integritu posílaných dat, tedy to, že nebyla cestou změněna. Díky podpisu si příjemce ověří autenticitu zprávy, neboli zjistí, kdo je jejím odesílatelem. Konečně šifrování chrání jak podepsaný otisk, tak data před cizíma očima.