Přeskočit na hlavní obsah

Kryptografie se symetrickým klíčem

V této lekci se podíváme na kryptografii se symetrickým klíčem, která díky své efektivitě zabezpečuje velkou část dat v klidu i při přenosu.

Na konci lekce budeme mít probráno:

  • Co je kryptografie se symetrickým klíčem
  • Ukázky kódu v Pythonu demonstrující použití kryptografie se symetrickým klíčem
  • Pohled na aplikace kryptografie se symetrickým klíčem
  • Aplikace kryptografie se symetrickým klíčem
  • Bezpečnost kryptografie se symetrickým klíčem
  • Hrozby pro tyto algoritmy ze strany klasických i kvantových počítačů

Úvod do kryptografie se symetrickým klíčem

Kryptografie se symetrickým klíčem (SKC) je nejstarší a nejintuitivnější forma kryptografie. Pomocí SKC jsou důvěrné informace chráněny prostřednictvím šifrování symetrickým klíčem (SKE), to znamená použitím jediného tajného klíče jak k šifrování, tak k dešifrování.

SKC zahrnuje:

  • Šifrovací funkci, která převádí danou instanci otevřeného textu na šifrovaný text s využitím tajného klíče
  • Dešifrovací funkci, která tuto operaci invertuje převodem šifrovaného textu zpět na otevřený text pomocí stejného tajného klíče

Otevřený text může znamenat jakýkoli druh nezašifrovaných dat, jako je přirozený jazykový text nebo binární kód, jehož informační obsah je v principu přímo přístupný, zatímco šifrovaný text označuje zašifrovaná data, jejichž informační obsah má být před dešifrováním nepřístupný.

Algoritmus, který popisuje operace šifrování a dešifrování pomocí sdíleného tajného klíče, se také nazývá symetrická šifra.

Obr. 1: Šifrování symetrickým klíčem daného otevřeného textu na šifrovaný text a dešifrování zpět na otevřený text pomocí stejného klíče.

Obrázek 1. Šifrování symetrickým klíčem daného otevřeného textu na šifrovaný text a dešifrování zpět na otevřený text pomocí stejného klíče.

Vlastnosti kryptosystémů se symetrickým klíčem

Kryptosystém se symetrickým klíčem by měl zajistit následující vlastnosti pro zabezpečení zpráv – jak staticky uložených dat, tak komunikace přes nějaký přenosový kanál:

  • Důvěrnost: Odkazuje na vlastnost, že informační obsah šifrovaných zpráv je chráněn před neoprávněným přístupem.
  • Integrita: Odkazuje na vlastnost, že jakékoli pozměnění šifrovaných zpráv během uložení nebo přenosu lze detekovat.
  • Autenticita: Odkazuje na vlastnost, že příjemce zprávy může ověřit identitu odesílatele a detekovat vydávání se za někoho jiného neoprávněnou stranou.

Navíc by tyto vlastnosti měly být realizovány v prostředí, kde algoritmy nebo šifry používané k šifrování a dešifrování mohou být veřejné a kde je přístup k informačnímu obsahu šifrovaných zpráv řízen výhradně prostřednictvím přístupu k tajnému klíči.

Implementace bezpečného kryptosystému se symetrickým klíčem tedy zahrnuje dva hlavní úkoly:

  1. Použití robustního šifrovacího algoritmu se symetrickým klíčem odolného vůči kryptografickým útokům.
  2. Zajištění důvěrnosti při distribuci a správě tajných klíčů.

V této lekci budeme diskutovat aspekty související s prvním úkolem, který tvoří primární zájem technologie SKC. Druhý úkol však vyžaduje řešení, která spadají mimo samotnou SKC, a budou představena později.

Ukázka šifrování symetrickým klíčem pomocí Pythonu

Ukážeme si jednoduchý příklad operací šifrování a dešifrování pomocí klasické Caesarovy posuvné šifry a moderního Advanced Encryption System (AES), který je od roku 2001 standardem pro šifrování symetrickým klíčem. Nejprve si nastavíme některé pythonové knihovny, které poskytují potřebné šifry symetrického klíče, a poté definujeme otevřený text, který chceme zašifrovat.

# Added by doQumentation — required packages for this notebook
!pip install -q cryptography numpy secretpy
# Install the library if needed
# %pip install secretpy

# import the required crypto functions which will be demonstrated later
from secretpy import Caesar
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from functools import reduce
import numpy as np

# Set the plaintext we want to encrypt
plaintext = "this is a strict top secret message for intended recipients only"
print(f"\nGiven plaintext: {plaintext}")

Uvidíme, jak ji zašifrovat a dešifrovat pomocí dvou různých metod šifrování symetrickým klíčem:

  1. Klasická Caesarova posuvná šifra
  2. Moderní Advanced Encryption Standard protokol AES-256

Caesarova posuvná šifra:

Caesarovo posuvné šifrování zahrnuje definování

  • Abecedy možných znaků k zakódování
  • Hodnoty posunu, která může být mezi 0 (nezašifrováno) a délkou abecedy. Tu považujeme za klíč.

Je známá jako monoalfabetická substituční šifra, protože každé písmeno otevřeného textu je v šifrovaném textu nahrazeno jiným.

V tomto příkladu budeme používat malá písmena abecedy.

Začněme tím, že si vše nastavíme.

# initialize the required python object for doing Caesar shift encryption
caesar_cipher = Caesar()

# Define the shift, ie the key
caesar_key = 5
print(f"Caesar shift secret key: {caesar_key}")

# Define the alphabet
alphabet = (
"a",
"b",
"c",
"d",
"e",
"f",
"g",
"h",
"i",
"j",
"k",
"l",
"m",
"n",
"o",
"p",
"q",
"r",
"s",
"t",
"u",
"v",
"w",
"x",
"y",
"z",
" ",
)
print(f"alphabet: {alphabet}")

Zašifrujme otevřený text, abychom získali šifrovaný text pro Caesarovu šifru.

caeser_ciphertext = caesar_cipher.encrypt(plaintext, caesar_key, alphabet)
print(f"Encrypted caeser shift ciphertext: {caeser_ciphertext}")

Dešifrujme šifrovaný text zpět na původní otevřený text pomocí stejného klíče, který byl použit k šifrování.

caeser_plaintext = caesar_cipher.decrypt(caeser_ciphertext, caesar_key, alphabet)
print(f"Decrypted caeser shift plaintext: {caeser_plaintext}\n")

Šifra Advanced encryption standard (AES)

Nyní zašifrujeme prostý text pomocí AES, populárního algoritmu symetrického šifrování.

Začneme vytvořením klíče, v tomto případě náhodného 16písmenného řetězce.

# lambda defines an inline function in this case that takes two values a,b with the resulting expression of a+b
# reduce uses a two-argument function(above), and applies this to all the entries in the list (random alphabet characters) cumulatively
aes_key = reduce(lambda a, b: a + b, [np.random.choice(alphabet) for i in range(16)])

print(f"AES secret key: {aes_key}")

AES podporuje více režimů provozu a vyžaduje, abychom určili, který použijeme.

Zvolíme režim Cipher Block Chaining (CBC) poskytovaný třídou modes.CBC z knihovny cryptography. Režim CBC u AES používá náhodnost pro dodatečnou bezpečnost. To vyžaduje specifikaci náhodného inicializačního vektoru (IV), nazývaného také nonce. I pro tento účel použijeme náhodný řetězec, stejně jako jsme to udělali u klíče.

aes_initialization_vector = reduce(
lambda a, b: a + b, [np.random.choice(alphabet) for i in range(16)]
)
print(f"AES initialization vector: {aes_initialization_vector}")

Nyní můžeme vytvořit instanci AES šifry jménem odesílatele tajné zprávy. Všimni si, že inicializační vektor je předán třídě modes.CBC, aby se nastavil režim CBC.

Následně zašifrujeme prostý text, který chceme odeslat.

# The encryptor is setup using the key and CBC. In both cases we need to convert the string (utf-8) into bytes
sender_aes_cipher = Cipher(
algorithms.AES(bytes(aes_key, "utf-8")),
modes.CBC(bytes(aes_initialization_vector, "utf-8")),
)
aes_encryptor = sender_aes_cipher.encryptor()

# update can add text to encypt in chunks, and then finalize is needed to complete the encryption process
aes_ciphertext = (
aes_encryptor.update(bytes(plaintext, "utf-8")) + aes_encryptor.finalize()
)

# Note the output is a string of bytes
print(f"Encrypted AES ciphertext: {aes_ciphertext}")

Abychom ji dešifrovali, vytvořme instanci AES šifry jménem příjemce. Všimni si, že zamýšlený příjemce má přístup jak k tajnému klíči, tak k inicializačnímu vektoru, ale ten druhý nemusí být tajný.

# Similar setup of AES to what we did for encryption, but this time, for decryption
receiver_aes_cipher = Cipher(
algorithms.AES(bytes(aes_key, "utf-8")),
modes.CBC(bytes(aes_initialization_vector, "utf-8")),
)
aes_decryptor = receiver_aes_cipher.decryptor()

# Do the decryption
aes_plaintext_bytes = aes_decryptor.update(aes_ciphertext) + aes_decryptor.finalize()

# convert back to a character string (we assume utf-8)
aes_plaintext = aes_plaintext_bytes.decode("utf-8")

print(f"Decrypted AES plaintext: {aes_plaintext}")

Aplikace symetrické kryptografie

Zatímco klasické šifry jako Caesarova šifra se přestaly používat už dávno, moderní symetrické kryptosystémy jako AES jsou nasazeny v široké škále aplikací, mezi které patří:

  1. Šifrování a dešifrování dat: SKC se široce používá k ochraně citlivých dat, ať už staticky uložených na zařízení, nebo přenášených po síti. Příklady zahrnují ochranu přihlašovacích údajů uživatelů, šifrování e-mailových zpráv a zabezpečení finančních transakcí a další.

  2. Zabezpečená komunikace: Běžné komunikační protokoly jako SSL/TLS používají kombinaci symetrického a asymetrického šifrování k zajištění důvěrnosti a integrity dat vyměňovaných mezi dvěma stranami. Tyto zprávy se šifrují a dešifrují pomocí symetrického šifrování, které využívá sdílený klíč. Klíč použitý při symetrickém šifrování je bezpečně vyměněn pomocí asymetrického šifrování, které používá dvojici veřejného a soukromého klíče. Symetrické šifrování je mnohem rychlejší, a proto se dá použít pro šifrování zpráv velkého rozsahu.

  3. Ověření pravosti: V některých situacích se SKC využívá prostřednictvím technik jako autentizační kódy zpráv (MAC) a klíčované hashovací MAC (HMAC) k ověření pravosti a integrity zpráv, čímž zajišťuje komunikaci odolnou vůči manipulaci.

  4. Šifrování souborů a disků: Software pro šifrování celých disků a nástroje pro šifrování souborů využívají SKC k ochraně citlivých dat uložených na pevných discích nebo přenosných úložných zařízeních.

  5. Virtuální privátní sítě: Technologie VPN, které se snaží poskytovat důvěrné komunikační kanály bez odposlechu, mohou k propojení vzdálených uživatelů i firemních sítí používat symetrické nebo asymetrické šifrování.

Rozmanité spektrum aplikací, ve kterých je SKC nasazena, zase vyžaduje, aby symetrické kryptosystémy splňovaly určitou sadu kritérií.

Principy symetrického šifrování

V této části probereme některé základní principy, na kterých stojí bezpečnost algoritmů symetrického šifrování.

Odolnost vůči útoku hrubou silou: Nejzákladnějším požadavkem na bezpečnost šifrovací šifry je, aby velikost klíčového prostoru — jinými slovy počet možných různých klíčů, ze kterých si mohl někdo používající algoritmus vybrat — byla velmi velká.

Odolnost vůči kryptoanalytickému útoku: Druhým základním požadavkem na šifru, symetrickou i jinou, je, aby dokázala generovat šifrové texty, které jsou informačně neprostupné. K tomu je z pohledu teorie informace nutnou, ale ne postačující podmínkou, aby se šifrové texty vyznačovaly vysokou entropií, takže je nelze odlišit od náhodného textu bez rozpoznatelných vzorů nebo korelací. Díky tomu útočník nemůže získat žádné informace o otevřeném textu ani tajném klíči pokusem o analýzu šifrového textu pomocí frekvenční analýzy nebo jiných statistických technik.

Odolnost vůči obecným formám kryptoanalytických útoků dostatečná k zajištění sémantické bezpečnosti je formalizována prostřednictvím pojmu nerozlišitelnost. I když existuje několik variant nerozlišitelnosti s různými požadavky, symetrický kryptosystém se považuje za sémanticky bezpečný, pokud splňuje kritérium nerozlišitelnosti při útoku zvoleným otevřeným textem (IND-CPA). To znamená, že útočník nedokáže rozlišit šifrování dvou různých zpráv, ani když mu je povoleno posílat algoritmu více otevřených textů podle vlastního výběru a sledovat odpovídající šifrové texty.

Jak si ukážeme později, IND-CPA obvykle vyžaduje použití náhodnosti, aby bylo zajištěno, že pokaždé, když je daný otevřený text zašifrován daným tajným klíčem, výsledný šifrový text je pro každé šifrování nepředvídatelně odlišný.

Způsoby selhání klasických šifer: Před nástupem moderní kryptografie v 70. letech 20. století většina klasických šifer v praktickém použití nesplňovala jeden nebo oba výše uvedené požadavky. Například rané substituční šifry jako monoalfabetická Caesarova posuvná šifra se vyznačovaly jak malou velikostí klíčového prostoru (viz Tabulka 1), tak šifrovým textem s nízkou entropií, což je činilo nezabezpečenými vůči různým kryptoanalytickým útokům, jako jsou útoky hrubou silou, frekvenční analýza a útoky se známým otevřeným textem (KPT).

Následné polyalfabetické substituční šifry jako Vigenèrova šifra a šifra stroje Enigma měly v praxi velké klíčové prostory, což je činilo odolnými vůči útokům hrubou silou, ale byly zranitelné vůči frekvenční analýze, respektive útokům KPT. Podobně jako substituční šifry jsou i klasické transpoziční šifry, které písmena ve zprávě místo nahrazení přeskupují, kompromitovány řadou útoků, jako jsou anagramování, statistická analýza, hrubá síla a útoky KPT, a další.

Teoreticky je známo, že polyalfabetická substituční šifra známá jako jednorázová tabulka (OTP) je kryptograficky bezpečná. OTP se vyznačuje tajným klíčem, který by měl být (1) složen z náhodně vybraných písmen nebo bitů, (2) alespoň tak dlouhý jako původní otevřený text a (3) použit pouze jednou. OTP je pro skutečné aplikace nepraktická, protože pokud by bylo možné bezpečně sdílet tajný klíč — který musí být stejně dlouhý jako otevřený text a lze jej použít pouze jednou — pak by bylo možné bezpečně sdílet i původní otevřený text. OTP místo toho ilustruje užitečnost náhodnosti při generování bezpečných šifrových textů.

Útočník, který se pokouší implementovat vyhledávání hrubou silou v klíčovém prostoru s cílem najít klíč, jenž zprávu dešifruje, musí provést počet operací úměrný velikosti klíčového prostoru.

Velká velikost klíčového prostoru proto poskytuje odolnost vůči útokům hrubou silou tím, že je činí výpočetně neproveditelnými. Tabulka 1 uvádí velikosti klíčových prostorů některých známých šifer.

Tabulka 1: Velikosti klíčových prostorů některých symetrických šifer

CipherKey lengthKey space size
Caeser shift1alphabet-size
Vigenerenalphabet-sizen^\mathrm{n}
One-time-padplaintext-lengthalphabet-sizeplaintextlength^\mathrm{plaintext-length}
DES56256^\mathrm{56}
AES-1281282128^\mathrm{128}
AES-1921922192^\mathrm{192}
AES-2562562256^\mathrm{256}
ChaCha202562256^\mathrm{256}
Moderní schémata šifrování se symetrickým klíčem z velké části překonávají omezení klasických šifer. Produkují šifrový text odolný vůči kryptoanalýze a vyznačují se velkými prostory klíčů, přičemž jsou také mnohem prakticky efektivnější než OTP.

Blokové šifry: Jedna třída moderních šifer — například DES a AES — dosahuje bezpečnosti kombinací principů zmatení (confusion) a rozptýlení (diffusion), původně představených Claudem Shannonem. Tyto pojmy rozebereme v kontextu, kdy šifrovací schémata pracují s binárními reprezentacemi zpráv:

  • Zmatení (Confusion): Zmatení je vlastnost, kdy každý bit šifrového textu závisí na více bitech tajného klíče. Zajišťuje, že malá změna v tajném klíči změní téměř všechny bity šifrového textu, čímž zastírá vztah mezi šifrovým textem a tajným klíčem.

  • Rozptýlení (Diffusion): Rozptýlení je vlastnost, kdy překlopení jediného bitu v otevřeném textu by mělo změnit zhruba polovinu bitů v šifrovém textu a naopak. Rozptýlení skrývá statistické vztahy mezi otevřeným textem a šifrovým textem. Šifry s dostatečným rozptýlením splňují takzvané lavinové kritérium kryptografie.

Blokové šifry implementují zmatení a rozptýlení pomocí kryptografických struktur známých jako substitučně-permutační sítě (SPN), které operují nad diskrétními bloky dat. SPN přijímá jako vstup blok otevřeného textu a tajný klíč a provádí specifikovaný počet kol transformací, aby získala blok šifrového textu. Každé kolo se skládá ze střídajících se matematických struktur známých jako substituční boxy (S-boxy) a permutační boxy (P-boxy) nebo ekvivalentní operace.

Ty implementují složité nelineární a lineární transformace vstupních bloků, což vede k lavinovým efektům v šifrovém textu.

SPN jsou navrženy tak, že zvyšování počtu kol obvykle zvyšuje bezpečnost šifry. To vede k pojmu bezpečnostní rezerva. Bezpečnostní rezerva: Bezpečnostní rezerva dané kryptografické šifry založené na SPN je rozdíl mezi počtem kol v kompletní implementaci šifry a maximálním počtem kol, o kterých je známo, že jsou prolomitelné pomocí nejlepšího známého reálného útoku.

Například v současnosti nejlepší známé útoky rychlejší než hrubá síla proti AES-256 dokážou prolomit až 9 kol z celkových 14 kol v plné šifře, když je používána ve standardním režimu známém jako Electronic Codebook (ECB). Proto v současnosti činí bezpečnostní rezerva AES-256 5 kol.

Proudové šifry: Jako alternativu k blokovým šifrám moderní kryptologové také navrhli prakticky bezpečné proudové šifry, jako je Chacha20. Tyto šifry využívají náhodnost jako základní součást svého návrhu a operují na pseudonáhodných klíčových proudech bitů místo na diskrétních blocích dat.

Proudové šifry tedy kombinují tajný klíč a inicializační vektor (IV), aby inicializovaly generátor pseudonáhodných čísel (PRNG), který vyprodukuje klíčový proud náhodných bitů, které jsou následně zkombinovány s daným otevřeným textem, čímž vznikne šifrový text. V tomto smyslu jsou proudové šifry podobné jednorázové tabulce (OTP), ale vyznačují se kratšími délkami tajných klíčů a opakovaně použitelnými klíči, což je činí praktičtějšími. Ze stejného důvodu však nezaručují dokonalou utajení, na rozdíl od OTP.

Sémantická bezpečnost: Tuto podkapitolu uzavřeme návratem k pojmu sémantická bezpečnost neboli bezpečnost na úrovni IND-CPA představenému výše. Základní operace implementované blokovými šiframi, jako jsou S-box a P-box, jsou deterministické. To znamená, že ve standardních provozních režimech, jako je ECB, daná dvojice otevřený text – klíč vždy poskytuje stejný šifrový text, což je stav náchylný k útokům s vybraným otevřeným textem.

K dosažení bezpečnosti na úrovni IND-CPA musí blokové šifry pracovat v režimu, který využívá náhodnost zavedenou prostřednictvím pseudonáhodného inicializačního vektoru (IV) s dodatečným požadavkem, aby žádné dvě šifrovací operace nepoužívaly stejnou dvojici klíč-IV. AES podporuje několik provozních režimů, například cipher block chaining (CBC), které jsou IND-CPA bezpečné. Podobný požadavek platí i pro proudové šifry, kdy by stejná dvojice klíč-IV neměla být použita k inicializaci PRNG více než jednou, pokud je požadována IND-CPA.

Po představení některých základních principů SKC nyní uvedeme několik populárních algoritmů symetrického klíče, abychom ilustrovali různorodost přístupů uplatňovaných v moderních kryptosystémech. Moderní blokové šifry i proudové šifry se používají v různých kontextech, jak je ukázáno níže.

  1. Advanced Encryption Standard: AES, již představený výše, je v současnosti de facto standardem pro SKC díky svým bezpečnostním, efektivním a výkonnostním charakteristikám. AES má pevné velikosti klíčů 128, 192 a 256 bitů a používá víceokolovou substitučně-permutační síť (SPN). AES je známý tím, že je odolný vůči široké škále kryptoanalytických útoků. AES byl vyhlášen jako Federal Information Processing Standard (FIPS) pro šifrování se symetrickým klíčem ve Spojených státech v roce 2001.`

  2. Data Encryption Standard (DES) a Triple Data Encryption Standard (3DES): DES byla bloková šifra původně vynalezená Horstem Feistelem a jeho spolupracovníky v IBM® v 70. letech 20. století, která používala SPN s relativně krátkým 56bitovým klíčem. DES byl přijat jako FIPS pro šifrování se symetrickým klíčem ve Spojených státech až do konce 90. let 20. století, kdy bylo prokázáno, že je prolomitelný pomocí útoků hrubou silou se specializovaným hardwarem kvůli jeho malé velikosti prostoru klíčů. Následně byl jako náhrada zaveden 3DES, který aplikuje algoritmus DES třikrát s různými klíči, čímž zvyšuje délku klíče na 168 bitů. Nicméně 3DES je z velké části nahrazen AES.

  3. Blowfish a Twofish: Blowfish a jeho nástupce Twofish jsou blokové šifry navržené kryptografem Brucem Schneierem v 90. letech 20. století. Blowfish a Twofish umožňují proměnlivé délky klíčů až 448 bitů, resp. 256 bitů, čímž nabízejí určitou flexibilitu v kompromisu mezi bezpečností a výkonem. Na rozdíl od AES mají také S-boxy závislé na klíči. Twofish byl jedním z finalistů v soutěži NIST o výběr Advanced Encryption Standard, ale nakonec nebyl zvolen. Oba algoritmy jsou v současnosti považovány za bezpečné.

  4. Rivestovy šifry (RC2, RC4, RC5 a RC6): Rodina algoritmů symetrického klíče Rivest Cipher (RC) byla navržena Ronem Rivestem počínaje 80. lety 20. století. RC2 byla raná 64bitová bloková šifra, zatímco RC4 byla proudová šifra široce používaná v bezpečnostních protokolech souvisejících s webovým provozem díky své jednoduchosti a rychlosti. Ani jedna není v současnosti považována za bezpečnou. RC5 a RC6 jsou blokové šifry založené na SPN, navržené s přizpůsobitelnou velikostí bloku, velikostí klíče a počtem kol. Stejně jako Twofish výše byl i RC6 finalistou v soutěži NIST AES a je považován za bezpečný.

  5. Salsa20 a ChaCha20: Salsa20 a ChaCha20 označují příbuznou rodinu proudových šifer navržených kryptografem Danielem Bernsteinem v roce 2000. Salsa20 je součástí portfolia profilu 1 kryptografického validačního projektu eSTREAM Evropské unie. ChaCha20, modifikace Salsa20, byla navržena tak, aby zvýšila vlastnosti rozptýlení a výkon. V současnosti je ChaCha20 považován za bezpečný a nabízí lepší výkon v případě absence vyhrazeného hardwarového zrychlení AES. Proto ChaCha20 nachází uplatnění v určitých prostředích, jako jsou síťové protokoly typu QUIC a mobilní zařízení s procesory založenými na architektuře ARM.

Výhody kryptografie se symetrickým klíčem

Poté, co jsme nastínili vlastnosti kryptosystémů se symetrickým klíčem a některé principy, na nichž je založen jejich vývoj, uvedeme nyní některé z hlavních výhod SKC oproti kryptografii s asymetrickým klíčem. Tou se budeme zabývat v následujících lekcích.

  1. Rychlost a efektivita: Algoritmy se symetrickým klíčem jsou vhodnější pro šifrování velkých objemů dat nebo pro použití v komunikačních scénářích v reálném čase, protože jsou obecně rychlejší a méně náročné na zdroje než jejich asymetrické protějšky. Algoritmy SKC, jako je AES, se lineárně škálují s velikostí otevřeného textu a nezahrnují algebraicky náročné matematické operace. Podrobný přehled výkonnostních charakteristik AES najdeš v práci Tomoiaga et al..

  2. Škálovatelnost: Díky relativně nízké výpočetní režii se algoritmy se symetrickým klíčem dobře škálují s počtem uživatelů i s objemem šifrovaných dat.

  3. Jednoduchost: Protokoly symetrického šifrování jsou ve srovnání s přístupy s asymetrickým klíčem často snadnější na implementaci i na pochopení, což je činí atraktivními pro vývojáře i uživatele.

Výzvy a omezení kryptografie se symetrickým klíčem

Navzdory výhodám má kryptografie se symetrickým klíčem také některé výzvy a omezení:

  1. Distribuce a správa klíčů: V SKC musí mít odesílatel i příjemce zprávy přístup ke stejnému klíči, který je třeba udržovat v tajnosti před neautorizovanými stranami. Pokud je klíč nějakým způsobem zachycen nebo kompromitován třetí stranou, je ztracena i bezpečnost zašifrovaných dat. Bezpečná distribuce a správa tajného klíče je tedy zásadní výzvou. Řešení této výzvy však leží mimo samotnou SKC.

  2. Absence nepopiratelnosti: Nepopiratelnost se vztahuje ke schopnosti prokázat, že konkrétní strana odeslala zprávu. V SKC není možné určit, která strana vytvořila konkrétní šifrový text, protože stejný klíč se používá jak k šifrování, tak k dešifrování. Naopak kryptografie s asymetrickým klíčem zajišťuje nepopiratelnost prostřednictvím digitálního podpisu.

K řešení těchto výzev se kryptografie se symetrickým klíčem často používá v kombinaci s kryptografií s asymetrickým klíčem. Například se často používá asymetrické šifrování k bezpečnému přenosu relativně krátkého sdíleného tajného klíče mezi odesílatelem a příjemcem. To umožňuje následné použití symetrického šifrování k efektivnímu přenosu mnohem větších dat a zpráv.

Kvantové výpočty a symetrické šifrování: Rizika a jejich zmírnění

Kvantová kryptografie nabízí slibnou cestu ke zmírnění rizik v digitálním věku, přičemž přijetí kvantově odolných produktů je připraveno zabezpečit naše informace proti hrozící hrozbě pokroku v oblasti kvantových počítačů.

V následujícím textu se zaměříme na rizika, která představují kvantové počítače pro schémata symetrického šifrování představená v předchozí části, a nastíníme některé možné cesty ke zmírnění těchto rizik.

Kvantové kryptografické útoky

Existují dvě odlišné třídy kvantových hrozeb pro tradiční kryptografické algoritmy:

  1. Kvantové útoky hrubou silou: Týkají se situací, kdy útočník použije kvantový počítač ke spuštění specializovaného kvantového algoritmu k provedení prohledávání prostoru klíčů symetrické šifry hrubou silou. Nejvýznamnější kvantovou primitivou umožňující tento typ útoku je Groverův algoritmus.

  2. Kvantové kryptoanalytické útoky: Týkají se situací, kdy jsou kvantové počítače nasazeny k provádění kryptoanalytických útoků, jejichž cílem je obnovit buď tajný klíč, nebo otevřený text efektivněji než prohledáváním hrubou silou. Možnost úspěšného provedení kvantových kryptoanalytických útoků závisí na mnoha faktorech souvisejících s matematickou strukturou analyzované šifry i na potenciálních slabinách konkrétních implementací.

Strategie zmírnění rizika kvantových útoků

Než si probereme strategie zmírnění rizika kvantových útoků, zavedeme pojem úroveň bezpečnosti kryptografické šifry:

Úroveň bezpečnosti je mírou obtížnosti prolomení šifry měřenou počtem výpočetních operací, které by úspěšné prolomení šifry vyžadovalo.

Úroveň bezpečnosti se obvykle vyjadřuje v bitech; tedy obecně řečeno šifra nabízí N-bitovou bezpečnost, pokud k jejímu prolomení je potřeba O(2N)\mathcal{O}(2^{N}) operací. Na klasických počítačích, za předpokladu, že je symetrická šifra jinak kryptograficky bezpečná, je úroveň bezpečnosti zhruba synonymem délky klíče.

Například úroveň bezpečnosti AES-128, který má 128bitový klíč, je obecně považována za 128 bitů, protože by to vyžadovalo řádově 2128^{128} operací, aby útočník používající klasický počítač vyzkoušel všechny možné 128bitové klíče v prostoru klíčů.

Útoky hrubou silou a jejich zmírnění

Riziko kvantového útoku hrubou silou: Kvantový útok hrubou silou mění výše uvedené hodnocení, protože Groverův algoritmus umožňuje útočníkovi s vhodným kvantovým počítačem prohledávat prostor klíčů šifry kvadraticky rychleji než jakýkoli klasický počítač.

Například stejného útoku hrubou silou na AES-128 by bylo s Groverovým algoritmem potenciálně možné dosáhnout s pouhými 264^{64} operacemi. Úroveň bezpečnosti AES-128 se tedy sníží ze 128 bitů na 64 bitů, pokud čelí kvantovému protivníkovi spouštějícímu Groverovo vyhledávání. Protože výpočetní výkon tradičně rostl exponenciálně s časem, je v současné době úroveň bezpečnosti 64 bitů považována za nebezpečnou, což znamená, že jakmile budou realizovány dostatečně výkonné kvantové počítače, bude muset být AES-128 opuštěn.

Stejný druh výpočtu platí pro další symetrické blokové nebo proudové šifry, u nichž je úroveň bezpečnosti pro danou délku klíče Groverovým algoritmem účinně snížena na polovinu.

Zmírnění rizika kvantového útoku hrubou silou: Z výše uvedených úvah vyplývá, že zřejmým způsobem, jak odolat kvantovým útokům hrubou silou, je alespoň zdvojnásobit minimální délky klíčů používaných pro symetrické šifrování.

Pro zajištění 128bitové bezpečnosti vůči kvantovým útokům hrubou silou by tedy stačilo použít šifry jako AES-256 nebo ChaCha20, které využívají 256bitové klíče. To se považuje za bezpečné, protože i s kvantovými počítači je provedení 2128^{128} operací k prolomení šifer v dohledné budoucnosti neproveditelné.

Ačkoli je toto navrhované řešení spočívající ve zdvojnásobení velikostí klíčů teoreticky jednoduché, není bez nákladů, protože delší velikosti klíčů znamenají dodatečné výpočetní náklady pro rutinní úlohy šifrování-dešifrování, spolu s pomalejším výkonem, vyššími nároky na paměť a další spotřebou energie.

Kryptoanalytické útoky a jejich zmírnění

Riziko kvantových kryptoanalytických útoků: Riziko, které představují kvantové kryptoanalytické útoky pro kryptosystémy se symetrickým klíčem, je v současnosti aktivně zkoumáno kryptografy. Kombinace klasických a kvantových výpočtů potenciálně rozšiřuje škálu nástrojů dostupných útočníkům pro zkoumání slabin v matematické struktuře šifer a v současné době je navrhována celá řada nových kvantových kryptoanalytických útoků. Ty zahrnují kvantizace známých klasických technik, jako je lineární a diferenciální kryptoanalýza, i nové typy útoků, které nemají klasické protějšky.

Nedávná kvantová kryptoanalytická studie Advanced Encryption Standard (AES) zjistila, že šifra zůstala odolná vůči různým známým kvantovým kryptoanalytickým útokům a nadále vykazovala odpovídající post-kvantovou bezpečnostní rezervu. Některé studie však zjistily, že různé symetrické šifry považované za klasicky bezpečné jsou snadno kompromitovány tzv. kvantovým útokem s vybraným otevřeným textem. Proto byly také navrženy nové primitivy pro symetrické šifrování specificky navržené pro post-kvantovou éru.

Zmírnění rizika kvantových kryptoanalytických útoků: Vzhledem k tomu, že kvantová kryptoanalýza je jako disciplína v plenkách, je možné, že post-kvantová symetrická kryptografie projde rychlým vývojem, jak budou vznikat nové kvantové kryptoanalytické útoky a jak budou navrhovány a vyhodnocovány nové šifry odolné vůči nim. Nejlepší strategií pro zmírnění rizika kvantových kryptoanalytických útoků v dohledné budoucnosti je tedy kryptografická agilita (neboli krypto-agilita). Krypto-agilita odkazuje na schopnost informačního systému rychle a snadno přijímat alternativní kryptografické primitivy bez rušivých změn v infrastruktuře systému.

Krypto-agilita vyžaduje schopnost nahradit zastaralé algoritmy používané pro šifrování, dešifrování, digitální podpisy nebo jiné kryptografické funkce s minimálním úsilím a narušením. Krypto-agilní systémy budou v dobré pozici, aby zvládly přechod na post-kvantovou kryptografii se symetrickým klíčem.

Shrnutí

Kryptografie se symetrickým klíčem poskytuje robustní a efektivní řešení pro zabezpečení digitálních informací. Jednoduchost použití stejného klíče pro šifrování i dešifrování umožňuje vysoký výkon a škálovatelnost, díky čemuž je SKC vhodná pro širokou škálu aplikací.

Bezpečnost SKC se opírá o algoritmickou odolnost vůči kryptografickým útokům i o řádnou správu tajných klíčů. Moderní kryptosystémy se symetrickým klíčem kombinují principy záměny, difuze a náhodnosti ve spojení s odpovídajícími velikostmi klíčů, aby dosáhly sémantické bezpečnosti. Správa tajných klíčů, ačkoli je zásadní, nemůže být dosažena pouze pomocí SKC.

Pochopení vlastností a omezení SKC umožní vývojářům navrhovat, implementovat a nasazovat bezpečná řešení informačních technologií s využitím přístupů zahrnujících podle potřeby delší velikosti klíčů a použití nových algoritmů.