Šifrovanie a dešifrovanie AES — GCM, CBC, CTR a ECB priamo v prehliadači
Šifrovanie a dešifrovanie AES
Šifrovanie alebo dešifrovanie pomocou AES-128, AES-192 alebo AES-256
(FIPS 197) v režime GCM (autentizované šifrovanie), CBC, CTR alebo ECB. Kľúče sú v surovom hex alebo Base64, prípadne sa odvodia z hesla pomocou PBKDF2-HMAC-SHA256. GCM podporuje AAD a značku zobrazuje zvlášť; výstupy CBC/CTR/ECB sú kompatibilné s príkazom OpenSSL enc. Hashe sú v generátore hashov, kľúčové MAC v generátore HMAC a staré šifry na stránke Staré šifry v tejto skupine.
Beží úplne lokálne — kľúče a otvorený text neopúšťajú kartu. Súbory až do 200 MB.
Všetko, čo sa sem napíše, zostáva v tejto karte — ale to nie je to isté ako „bezpečné pre produkčné tajomstvá“.
Pamäť prehliadača, rozšírenia a nahliadnutie cez plece vidia, čo sa vloží. Túto stránku treba používať na učenie, overovanie a interoperabilitu, nie na prácu so živými dátami zákazníkov.
Smer:Režim:Výstup:
GCM = AES-GCM s 12-bajtovým nonce a 128-bitovou autentizačnou značkou (AEAD: dôvernosť + integrita). Predvolená voľba, ak je cieľom bezpečnosť.
Kľúč(surové bajty: 16, 24 alebo 32 bajtov = AES-128/192/256; o dĺžke rozhoduje vložený vstup)
Hex toleruje medzery, dvojbodky a predpony 0x.
Soľ (hex, 8–16 bajtov):
Iterácie:Veľkosť kľúča:
Soľ putuje spolu so šifrotextom — na dešifrovanie je potrebné rovnaké heslo, soľ, počet iterácií a veľkosť kľúča. OWASP odporúča aspoň 600 000 iterácií PBKDF2-HMAC-SHA256.
IV / nonce(GCM: 12 bajtov; CBC/CTR: 16 bajtov — hex)
V GCM alebo CTR sa nonce pod tým istým kľúčom nikdy nepoužíva znova.
AAD(dodatočné autentizované dáta — autentizované, ale nešifrované; voliteľné)
Dĺžka značky:
Autentizačná značka(hex, tak ako ho stránka vypíše pri šifrovaní — na dešifrovanie je potrebný)
Plaintext text (the data to encrypt, UTF-8 encoded)
Výber súboru alebo pretiahnutie sem
Súbor sa číta lokálne po blokoch 8 MB; nič sa nenahráva. Až 200 MB.
Ciphertext (jeden riadok: režim, veľkosť kľúča, hodnota; parametre sú na riadkoch nižšie)
Záznamy parametrov uchovávajú presné čítanie kľúča, IV, veľkosť AAD a značku, takže skopírovaný výsledok sa dá vždy zopakovať na inom počítači.
Ktorý režim zvoliť? GCM je predvolená odpoveď: šifruje aj autentizuje — riadok značky umožní zistiť manipuláciu (pri dešifrovaní s prevrátenou bajtom značky stránka odmietne). CBC skrýva vzory blokov, ale neposkytuje integritu; ak ho treba použiť, spáruje sa s HMAC (súvisiace: generátor HMAC). CTR robí z AES prúdovú šifru — bez výplne, ale opätovné použitie nonce pod tým istým kľúčom je katastrofálne v CTR aj GCM. ECB slúži len na kompatibilitu a na výučbu: identické otvorené bloky sa zašifrujú na identické šifrotextové bloky (známy ECB tučniak).
Interoperabilita s OpenSSL — výstupy CBC a CTR z tejto stránky (výplň PKCS#7, surový kľúč) sa dajú previesť cez príkazový riadok openssl enc: openssl enc -aes-256-cbc -K <64-hex-kľúč> -iv <32-hex-iv> -in msg.txt -out msg.enc openssl enc -d -aes-256-cbc -K <kľúč> -iv <iv> -in msg.enc -out msg.txt
To isté platí aj pre -aes-128-cbc, -aes-192-cbc, -aes-256-ctr (16-bajtový IV = počiatočný blok počítadla). Pozor: openssl encnepodporuje GCM — na autentizované šifrovanie treba použiť túto stránku alebo openssl aesgcm z OpenSSL 3.3+.
Ak je namiesto toho potrebná čínska národná šifra?
SM4 (GB/T 32907-2016) — blková šifra predpísaná v čínskej komerčnej kryptografii, s rovnakou 128-bitovou veľkosťou bloku a kľúča ako AES, ale vlastným rozvrhom kľúčov a S-boxom — beží na vlastnej stránke v režimoch ECB a CBC: SM4 šifrovanie / dešifrovanie. Ostatná sada SM je tiež tam: SM3 (hash), SM2 (verejný kľúč) a SM9 (kryptografia založená na identite).
Autotest Spúšťa motory stránky proti nezávislým referenciám: vektory známych odpovedí pre všetky štyri režimy (vygenerované nezávislou natívnou implementáciou), vektory značiek GCM s AAD aj bez neho, porovnanie motora WebCrypto s čistým JS AES, cyklus GCM a negatívne testy (upravená značka a zlý kľúč musia zlyhať). Nič sa nikam neodosiela.
Šifrovanie AES od základov
Stručne: AES je celosvetovo štandardná bloková šifra — šifruje 16-bajtové bloky pod kľúčom s 128, 192 alebo 256 bitmi — a režim, v ktorom sa spúšťa (GCM, CBC, CTR, ECB), určuje, ako sa bloky reťazia, na čo slúži IV a či sa dá zistiť manipulácia; ak nie je dôvod inak, zvolí sa GCM.
Čo je samotné AES (FIPS 197)
Blková šifra. AES (návrh Rijndael, štandardizovaný NIST v roku 2001 ako FIPS 197) šifruje vždy 16 bajtov naraz. Dĺžka kľúča — 16, 24 alebo 32 bajtov — určuje AES-128, -192 alebo -256 a počet vnútorných kôl (10, 12, 14). Každé kolo premieša blok s kľúčmi kôl odvodenými z kľúča cez substitučné tabuľky, posuny riadkov a miešanie stĺpcov. Žiadny praktický útok nelomí samotnú šifru: skutočné zlyhania sú takmer vždy chyby režimu, IV alebo správy kľúčov, a o tom pojednáva zvyšok tejto stránky.
Prečo vôbec režim? Správy majú zriedka 16 bajtov. Režim spája šifrovanie blokov: ECB šifruje bloky nezávisle; CBC XORuje každý blok s predchádzajúcim šifrotextom; CTR zašifruje počítadlo a XORuje ho s dátami ako prúdová šifra; GCM stavia na CTR a pridáva autentizačnú značku. AES zostáva rovnaký — režim mení všetko o zárukách, ktoré sa získavajú.
Kľúče a heslá. Kľúč AES je 16, 24 alebo 32 náhodných bajtov. Ľudské heslo takéto nie je: voľba Heslo na tejto stránke odvodí správny kľúč pomocou PBKDF2-HMAC-SHA256 (predvolene 600 000 iterácií, základ OWASP 2023 — podrobnosti o KDF sú v generátore HMAC). Reťazec hesla sa nikdy nepoužije priamo ako kľúč AES: jeho entropia je zlomok jeho dĺžky.
Výplň PKCS#7; klasika, ale potrebuje MAC. Chyby typu padding oracle sú klasickou nástrahou CBC.
CTR
16-bajtové počiatočné počítadlo
Nie
Bez výplne, prúdové, s náhodným prístupom; opätovné použitie nonce pod jedným kľúčom prezradí XOR dvoch otvorených textov.
ECB
žiadne
Nie
Rovnaké bloky → rovnaký šifrotext. Demonštrácia ECB tučniaka. Len na účely kompatibility.
Pravidlá pre IV v jednom odseku. IV nie je tajný — posiela sa spolu so šifrotextom —, ale pravidlá jeho jedinečnosti sa líšia: CBC chce nepredvídateľný IV; GCM a CTR vyžadujú len to, aby sa rovnaký nonce pod rovnakým kľúčom nikdy nepoužil znova (opätovné použitie nonce v GCM je horšie: prezradí autentizačný kľúč). Tlačidlo Náhodný IV na tejto stránke používa bezpečný generátor prehliadača; tlačidlo Samé nuly slúži na reprodukciu testovacích vektorov, nie na skutočné správy.
Výplň. CBC a ECB potrebujú celé bloky, takže PKCS#7 pripojí 1 až 16 bajtov, každý s hodnotou dĺžky výplne. Preto šifrotexty CBC narastú až o 16 bajtov a pri dešifrovaní zlým kľúčom väčšinou zlyhá chyba výplne. CTR a GCM fungujú ako prúd a výplň nepotrebujú — dĺžka šifrotextu je presne dĺžkou otvoreného textu (ukážka v režime CTR: 43 bajtov vstupu, 43 bajtov výstupu).
CFB a OFB (zvyšné dva klasické režimy) nie sú na tejto stránke implementované: sú prúdové ako CTR, ale bez výhody oproti nemu a prežívajú hlavne v starých protokoloch.
Čo pridáva GCM (AEAD, značky, AAD)
Autentizované šifrovanie. GCM = šifrovanie CTR + autentizátor GHASH nad šifrotextom, IV a AAD. Výstupná značka je odtlačok všetkého: zmena jedného bitu šifrotextu, IV alebo AAD značku zneplatní, takže príjemca môže dokázať, že správa je neporušená a pochádza od držiteľa kľúča. CBC+HMAC dosiahne to isté, len ak sa zloží správne (šifrovať, potom MAC) — GCM to zaisťuje konštrukciou.
AAD. Dodatočné autentizované dáta putujú nezašifrované, ale značka ich kryje: hlavičky protokolu, názvy súborov, identifikátory algoritmu. Príjemca musí poskytnúť presne rovnaké bajty AAD, inak kontrola značky zlyhá — v tom je zmysel.
Dĺžka značky. Predvolená 128-bitová značka je odporúčaná; kratšie značky (96 až 120 bitov) obetujú odolnosť voči falšovaniu za menšiu veľkosť. Pod 96 bitov sa bezpečnostné dôkazy GCM rýchlo zhoršujú, preto sa tu zastavujeme.
Katastrofa nonce. Opätovné použitie 12-bajtového nonce v GCM pod rovnakým kľúčom prezradí XOR dvoch otvorených textov a autentizačný podkľúč — potom sú možné falšovania všetkých budúcich správ pod týmto kľúčom. Systémy, ktoré nemôžu zaručiť jedinečnosť, používajú varianty odolné voči zneužitiu nonce (AES-GCM-SIV, RFC 8452).
Kotvy overenia — reprodukovanie na tejto stránke
Prvý riadok je známy jednoblokový príklad podľa FIPS 197; ostatné boli vygenerované nezávislou natívnou implementáciou (OpenSSL cez Node.js) a znovu overené v motoroch tejto stránky’. Na reprodukciu každého riadku sa na stránku vkladajú kľúč, IV a vstup.
Prípad
Vstupy
Očakávaný výstup
AES-128, jeden blok (podľa FIPS 197)
key 000102..0f, plaintext 00112233..ff
69c4e0d86a7b0430d8cdb78070b4c55a
AES-128-GCM
key 000102..0f, IV 606162..6b, plaintext 0011..ef ×2
ct 275f095bedfda377063fee326128892188377b410698ed03a022b9971bb4bdbe, tag 87ea7770714048977de2fd8dac645ecf
AES-256-GCM, to isté, ale s AAD deadbeef
key 000102..1f
ct eacab966ff15e518f48f5390be502fbc2756ccee0dcfff36a282c50bf5593ae7, tag aead900e895c88252d0388d7aefce5c8
AES-256-CBC
key 000102..1f, IV 101112..1f, plaintext 0011..ef ×2
Použitie ECB, lebo nepotrebuje IV. Pohodlie je pasca: vzory blokov prenikajú priamo do šifrotextu (zašifrovaním bitmapy sa obrázok stále dá rozpoznať). ECB je prijateľný len pre jednotlivé bloky alebo presne 16-bajtové náhodné kľúče — v praxi sa nikdy nemá voliť zámerne.
Opätovné použitie nonce/IV. Pri GCM alebo CTR pod jedným kľúčom je to jediná chyba, ktorá naraz rozbije všetko. Systémy založené na počítadle (tlačidlo Náhodný IV na tejto stránke) existujú práve preto, aby to bolo nemožné.
Zaobchádzanie s IV ako s tajomstvom. IV nie je tajný. Uloží sa alebo prenáša spolu so šifrotextom. Skrývanie mu nič nedá a podporuje opakované použitie.
Použitie hesla ako kľúča."hunter2hunter2hunter2hunter2" má 32 bajtov, ale nie 256 bitov entropie — je to slovo zo slovníka s výplňou. Kľúč sa odvodí pomocou PBKDF2 (je zabudovaný na tejto stránke) alebo sa vygeneruje náhodný kľúč.
Predpoklad, že CBC zisťuje manipuláciu. Prevrátenie bitu v šifrotexte CBC dešifrovanie „prejde“ a otvorený text je potichu poškodený. Až značka GCM (alebo explicitný HMAC) umožní manipuláciu odhaliť.
Porovnávanie šifrotextov GCM na rovnosť. Pri náhodných nonce sa rovnaký otvorený text zašifruje pri každom pokuse inak — to je vlastnosť. Deterministické šifrovanie je iný, špecializovaný nástroj.
FAQ
Je AES-128 stále bezpečný, alebo treba 256? Obe sú bezpečné voči reálnym útočníkom; najlepšie známe útoky ubrali len zlomok rezervy. AES-256 je dôležitý najmä pre dlhodobé tajomstvá a pre odolnosť voči kvantovým počítačom (Groverov algoritmus zníži silu kľúča na polovicu, takže AES-256 zostáva na úrovni ~128 bitov).
Prečo openssl enc nerobí GCM? Príkaz enc vznikol skôr ako AEAD a nemá spôsob, ako niesť značku; OpenSSL 3.3 preto pridal samostatný príkaz aesgcm. Výstup GCM na tejto stránke drží značku na vlastnom riadku, aby sa obe časti dali presúvať samostatne.
Čo je zabalenie kľúča (AES-KW)? Špecializovaný režim na šifrovanie iných kľúčov pevnými 64-bitovými blokmi a s vlastnou kontrolou integrity. Tu sa neponúka, lebo jeho vstupy a výstupy sú skôr kľúčového tvaru než správového — nesprávne použitie je bežné.
Prečo je šifrotext CTR rovnako dlhý ako otvorený text, ale šifrotext CBC je dlhší? CTR a GCM fungujú ako prúd (bez výplne); CBC/ECB dopĺňajú do celého 16-bajtového bloku podľa PKCS#7. Rozdiel v dĺžke je zámerný, nie chyba.
Dá sa dešifrovať niečo, čo bolo zašifrované inde? Áno, ak sú známe presný režim, kľúč a IV (a pri GCM aj značka). Riadky výstupu na tejto stránke zaznamenávajú všetky presne, aby sa parametre dali preniesť medzi nástrojmi — políčko OpenSSL vyššie ukazuje zodpovedajúce príkazové riadky.