Klíč (kryptografie)
V kryptografii je klíč informace, která určuje průběh kryptografického algoritmu. Při šifrování klíč určuje transformaci zprávy do šifrovaného textu, při dešifrování je tomu naopak. Klíče se používají také v digitálních podpisových schématech a hašovacích funkcích (také MAC – message authentication code), často používaných na autentizaci.
- V bezpečných algoritmech, šifrováním zprávy pomocí různých klíčů dostaneme kompletně různé šifry a také dešifrování nesprávným klíčem dá náhodně vypadající text (nicméně existují také kryptosystémy, kde dešifrování různými klíči může dát různé rozumně vypadající zprávy).
- V praxi je užitečné předpokládat, že kryptografický algoritmus je útočníkovi znám a spoléhat se jenom na bezpečnost klíče, protože je většinou jednodušší uchovat v tajnosti relativně malý klíč, nežli detaily algoritmu. Tento princip se nazývá Kerckhoffovo pravidlo – „jen bezpečnost klíče zaručí bezpečnost systému“, nebo „nepřítel zná tvůj systém“.
Symetrická a asymetrická kryptografie
[editovat | editovat zdroj]Kryptografické algoritmy, které používají ten samý klíč pro šifrování i dešifrování se nazývají symetrické. O dost novější a v současnosti především používaná třída algoritmů však používá pro šifrování a dešifrování různé klíče. Tato kryptografie používá pro šifrování a dešifrování různé klíče, a proto se jmenuje asymetrická kryptografie, přičemž její rozvoj se datuje zhruba od roku 1970.
Šifrovací klíč bývá veřejný (public key), zatímco dešifrovací klíč bývá soukromý (private key, česky se mu také často říká „tajný klíč“) a znám jenom svému držiteli. Tedy zasílaní šifrovaných zpráv konkrétnímu adresátovi je umožněno všem, zatímco dešifrovat je může jenom on sám.
Držitel může svůj soukromý klíč použít k zašifrování kontrolního součtu – haše (z anglického hash) – dat a tím tato data opatří tzv. elektronickým podpisem (digitální signaturou) – vzhledem k tomu, že je soukromý klíč znám pouze jeho držiteli, může každý dešifrovat a zkontrolovat kontrolní součet jeho veřejným klíčem a potvrdit tím jednak integritu dat (tj. že je během přenosu nikdo nezměnil), jednak také autora, protože jediný, kdo mohl použít soukromý klíč k podpisu, je jeho držitel.
Aby však bylo možné důvěřovat elektronickému podpisu, je třeba mít jistotu, že veřejné klíče, používané pro kontrolu elektronického podpisu, skutečně náleží osobě, která je uvedena v popisu klíče. K tomu slouží tzv. certifikační autority, které pracují s hierarchickým modelem vztahů důvěry nebo sítě důvěry, které používají distribuovaný model důvěry (viz podepisování klíčů). V obou případech je na základě ověření totožnosti vydán certifikát pro veřejný klíč – v podstatě to znamená, že ho opatří podrobnými údaji a tyto údaje i samotný klíč jsou digitálně podepsány pomocí soukromého klíče autority, která ověření deklaruje.
Kromě potvrzení integrity dat a identity odesilatele je někdy třeba potvrdit také datum a čas, kdy byla zpráva podepsána. To se dělá tak, že důvěryhodná časová autorita přidá ke zprávě časovou známku (timestamp) a zprávu včetně časové známky podepíše svým soukromým klíčem.
Délka klíče
[editovat | editovat zdroj]Pro nepodmíněnou bezpečnost kryptosystému musí být klíč nejméně tak dlouhý jako zpráva samotná, což je slavný Shannonův výsledek. To ale není příliš praktické, protože jeho tajná distribuce je stejným problémem jako přenos zprávy. V tomhle ohledu skýtá kvantová kryptografie ohromnou výhodu. Jedním z protokolů na kvantovou distribuci klíče (QKD) použitelného pro nepodmíněně bezpečné šifrování je protokol BB84.
Klasická kryptografie používá klíče, které mohou být o mnoho kratší než zpráva, nicméně dostatečně dlouhé na to, aby nebylo možné vyzkoušet všechny možnosti. 80 bitů je považováno za minimální délku klíče pro symetrickou kryptografii. Běžně se užívají 128bitové klíče.
Systémy pro asymetrickou kryptografii často spoléhají na neinvertovatelnost jednosměrných funkcí současnými výpočetními prostředky. Například v systému RSA je veřejným klíčem součin dvou dostatečně velkých prvočísel, protože efektivní algoritmus na faktorizaci bez použití dodatečné informace (trapdoor), která je soukromým klíčem, není dosud znám. Dalším kandidátem na jednosměrnou funkci je například diskrétní logaritmus, na kterém se kryptosystémy rovněž běžně zakládají. Obecně potřebuje kryptografie s veřejným klíčem pro stejnou úroveň bezpečnosti delší klíče než kryptografie symetrická. 3 072bitový klíč by měl u algoritmů založených na faktorizaci či diskrétním logaritmu postačovat na dosáhnutí bezpečnosti srovnatelné s tou pro 128bitovou symetrickou šifru. Kryptografie založená na eliptických křivkách umožňuje používat kratší klíče, ale protože je známa jenom krátce, mohou se v budoucnu objevit nové efektivní útoky. V současnosti se doporučují klíče s dvojnásobnou délkou, než je tomu v symetrických šifrách pro stejnou úroveň bezpečnosti. Nicméně, bezpečnost v současnosti používaných kryptosystémů nebyla dosud prokázána matematicky, proto žádný z nich ve skutečnosti nemusí být bezpečný, pokud najdeme efektivní dešifrovací algoritmus, kteréhož existenci neumíme vyloučit.
Výběr klíče
[editovat | editovat zdroj]Aby se ztížilo případné uhádnutí klíče, měl by být generován náhodně a mít dostatečnou entropii, což v podstatě znamená, že je náhodně vybrán z dostatečně velkého počtu možností. Na generování náhodnosti se často používá hardwarový šum, v případě potřeby jenom malého množství však postačí i obyčejná (vyvážená) hrací kostka.
V praxi se například jako autentizační klíč často používá heslo, které může být velmi jednoduché. Pro jeho bezpečný výskyt na síti je šifrováno přidáním náhodných bitů (sůl) a následnou aplikací hašovací funkce (key derivation function).