Šifrování a dešifrování DES / 3DES / RC4 / Blowfish

Šifrujte nebo dešifrujte čtyřmi klasickými šiframi, které stále žijí ve starých souborech, zálohách a protokolech — DES a 3DES v režimu ECB nebo CBC, RC4 (ARCFOUR) jako proudová šifra a Blowfish s klíči až 56 bajtů. Ověřeno proti FIPS 46-3, publikovaným vektorům Blowfish od Schneiera a RFC 6229. Vše běží lokálně ve vašem prohlížeči — nic se nenahrává. Pro moderní práci použijte AES-GCM.
Tyto šifry jsou tu kvůli kompatibilitě, ne pro novou práci. DES byl vyřazen v roce 2005, 3DES v roce 2023, RC4 je v TLS zakázán od roku 2015 (RFC 7465) a 64bitový blok Blowfish dosáhne hranice narozenin zhruba po 32 GiB dat pod jedním klíčem. Pro cokoli nového použijte AES-GCM.
Směr: Šifra: Režim: Výstup:
DES = Data Encryption Standard z roku 1977: 64bitové bloky, 56bitový efektivní klíč. Vyřazen, ale stále se nachází ve starých zálohách, v blocích PIN (bankovnictví) a v Kerberos v4. Klíč musí mít přesně 8 bajtů.
Hex toleruje mezery, dvojtečky a předpony 0x. DES ignoruje paritní bit každého bajtu klíče.
Blokové šifry doplňují výplň PKCS#7; RC4 nikdy nedoplňuje.
Délky klíčů, které tato stránka přijímá
ŠifraKlíčBlokStav
DESpřesně 8 bajtů (56 efektivních bitů)64 bitůstaženo 2005 (NIST SP 800-131A)
3DES-EDE3přesně 24 bajtů (112 efektivních bitů)64 bitůzakázáno po roce 2023 (SP 800-131A r2)
3DES-EDE2přesně 16 bajtů (112 efektivních bitů)64 bitůstejné jako EDE3, slabší legacy volba
RC4 / ARCFOUR1..256 bajtůproudv TLS zakázáno od 2015 (RFC 7465)
Blowfish4..56 bajtů64 bitůnerozbitá, ale omezená 64bitovým blokem; použijte Twofish/AES
Efektivní velikost klíče je menší než surová, protože DES používá jeden bit každého bajtu jako paritu: 64bitový surový klíč nese jen 56 bitů klíče a 3DES se třemi nezávislými klíči nese 112 (meet-in-the-middle).
Interoperabilita s OpenSSL — OpenSSL 3 přesunul tyto šifry do legacy poskytovatele; pokud váš odmítne, přidejte -provider legacy. Příkazové ekvivalenty této stránky:
openssl enc -des-ecb -K 133457799BBCDFF1 -in msg.bin -out msg.enc
openssl enc -des3 -K <48 hex> -iv <16 hex> -in msg.bin -out msg.enc (3DES-CBC)
openssl enc -rc4 -K 4b6579 -in msg.bin -out msg.enc  /  -bf-cbc pro Blowfish-CBC.
Pro dešifrování použijte -d. -K přijímá surový hex klíč, -k heslo (vyhněte se mu — KDF se liší od čehokoli na této stránce).
Autotest
Znovu spustí motor stránky proti publikovaným a nezávisle vygenerovaným vektorům: pracovní příklad DES z FIPS 46-3, šifrotexty 3DES EDE2/EDE3 generované OpenSSL, vektory Blowfish od Schneiera, testovací vektory RC4 z RFC 6229 a klasický příklad „Key/Plaintext“, obousměrné převody ve všech režimech a negativní testy (špatná délka klíče, šifrotext, který není násobkem bloku, musí selhat). Nic se nikam neodesílá.
DES, 3DES, RC4 a Blowfish od začátku
Jednou větou: těchto čtyři šifry byly koněm pracovním 90. let — DES a jeho záchrana trojitým šifrováním 3DES, proudová šifra RC4 a Blowfish — a každá z nich je dnes vyřazena nebo zastaralá, udržována naživu jen starými soubory, starým hardwarem a starými protokoly, které musí být pořád čitelné.
DES: standard z roku 1977, který to celé odstartoval

Co to je. Data Encryption Standard (FIPS 46, 1977) je 16kolová Feistelova šifra na 64bitových blocích s 56bitovým klíčem (uloženým v 8 bajtech, protože jeden bit každého bajtu je paritní kontrola). Navrhl ji IBM za účasti NSA, dvě desetiletí byla americkým standardem a v roce 1998 byla politicky prolomena, když stroj EFF Deep Crack hrubou silou prolomil klíč za 56 hodin za hardware v hodnotě 250 000 dolarů. NIST ji v roce 2005 pro šifrování stáhl.

Proč paritní bit mate délky klíčů. Každý 8. bit klíče DES se počítá z ostatních sedmi, takže 8bajtový klíč nese jen 56 nezávislých bitů — proto uvidíte u téže šifry jak „64bitový klíč“, tak „56bitový klíč“. 3DES to zdědí: 24 surových bajtů = 168 bitů surově = 112 efektivních (meet-in-the-middle odebere zbytek).

Kde se s ní ještě setkáte. Bankovní bloky PIN (ISO 9564), některé realmy Kerberos v4, staré zálohové archivy a čipové karty. Pokud systém DES vyžaduje dnes, buď spolupracuje s hardwarem z 90. let, nebo je jednoduše nezabezpečený.

3DES: šifrovat, dešifrovat, šifrovat

Trik. Trojité DES spouští DES na každém bloku třikrát: EDE3 používá tři různé klíče (C = Ek3(Dk2(Ek1(P)))); krok dešifrování uprostřed existuje proto, aby implementace 3DES uměla emulovat jediné DES nastavením k1=k2. EDE2 používá jen dva klíče (k1=k3), což dává 112 efektivních bitů. Konstrukce byla rychlá oprava, která ztrojnásobila bezpečnost již napadené šifry, aniž by vynalezla novou.

Proč stejně zanikla. Dva problémy: je pomalá (tři plné průchody DES na blok, asi 1/20 rychlosti AES) a zůstala u 64bitového bloku. Při 32 GiB dat pod jedním klíčem (hranice narozenin 232 bloků) jsou kolize bloků dost pravděpodobné, aby prozradily strukturu prostého textu — útok Sweet32 (2016) to ukázal proti relacím TLS 3DES. NIST zakázal šifrování 3DES po roce 2023 (SP 800-131A r2); PCI DSS vyžaduje jeho vyřazení v platebních systémech.

RC4 / ARCFOUR: proudová šifra raného webu

Jak funguje. RC4 (Ron's Code 4, navržena 1987, uniklá 1994) je proudová šifra: klíč naplní 256bajtovou permutaci (KSA) a permutace pak vydává pseudonáhodný bajtový proud (PRGA), který se XORuje se zprávou. Bez výplně, bez velikosti bloku, libovolná délka zprávy, velmi rychlá v softwaru — proto dominovala SSL/TLS a WEP v 90. letech. „ARCFOUR“ je název bez obchodní značky, který většina open-source projektů používá.

Jak se zlomila. Fluhrer-Mantin-Shamir (2001) ukázali, že první bajty proudu klíčů jsou zkreslené — fatální ve WEP, kde konstrukce klíče pro každý paket tyto bajty předávala útočníkům. Pozdější útoky na zkreslení (2013, AlFardan a kol.) obnovily prostý text z relací TLS chráněných RC4 s miliony spojení. RFC 7465 (2015) RC4 v TLS zakazuje zcela.

Klasický vektor. Klíč „Key“ (3 bajty) a zpráva „Plaintext“ dají šifrotext bbf316e8d940af0ad3 — vyzkoušejte Ukázku RC4 a porovnejte. Samotest této stránky také ověřuje proud klíčů RFC 6229 pro 40bitový klíč 01 02 03 04 05: b2396305f03dc027ccc3524a0a1118a8.

Blowfish: nerozlomený, ale omezený velikostí bloku

Co to je. Feistelova šifra Bruce Schneiera z roku 1993: bloky po 64 bitech, klíče od 32 do 448 bitů (4..56 bajtů), 16 kol a proslulé plánování klíčů, které spouští samotný Blowfish 521krát, aby sestavil podklíče — což nastavení klíče zpomaluje, ale i pokusy o hrubou sílu drahé. Žádná praktická kryptoanalýza nerozbije plné Blowfish.

Proč je přesto na této stránce. Problémem je 64bitový blok, ne algoritmus: nad ~32 GiB pod jedním klíčem prozrazují kolize narozenin data (stejná hranice jako u 3DES, podobně jako Sweet32). Schneier sám pro cokoli nového doporučuje jeho nástupce Twofish (finalista AES) nebo AES. Blowfish dál žije uvnitř bcrypt — plánování klíče hashe hesla je Blowfish — a to je v pořádku, protože hashování pracuje s malými vstupy, ne s gigabajty.

Klasické vektory. Klíč všech nul a prostý text všech nul se zašifruje na 4ef997456198dd78 (první blok výstupu Ukázky); klíč "abcdefghijklmnopqrstuvwxyz" na "BLOWFISH" dá 324ed0fef413a203. Oba pocházejí ze souboru vektorů publikovaného Schneierem a ověřuje je samotest.

Časté chyby
  • Použití těchto šifer pro nová data. Každá šifra na této stránce je zastaralá kromě Blowfish (který je omezen velikostí bloku). Správnou moderní volbou je AES-GCM — viz Šifrování / dešifrování AES.
  • Klíč DES z hesla. Osmiznakové heslo není 56 náhodných bitů; je to jen několik bitů entropie na znak. Staré systémy přesně tohle dělaly a je to nejčastější důvod, proč archivy „šifrované DES“ padají na slovníkové útoky během několika minut.
  • Opakované použití IV v CBC. První blok pak prozrazuje shodu prostého textu mezi zprávami pod stejným klíčem. Tlačítko Náhodný IV existuje právě z tohoto důvodu.
  • Opakované použití proudu klíčů RC4. RC4 XORuje pro stejný klíč stejný proud klíčů: zašifrování dvou zpráv jedním klíčem je jednorázová podložka použitá dvakrát — XOR šifrotextů vynese oba prosté texty. Fatální chybou WEP byla přesně konstrukce se znovupoužitím proudu klíčů.
  • Předpoklad „dešifruje se, takže je to správně“. ECB/CBC zde při dešifrování ověřují jen výplň — špatný klíč obvykle vydá nesmysl, který může projít kontrolou výplně. Žádný legacy režim nemá kontrolu integrity; pokud ji potřebujete, potřebujete AES-GCM, ne tyto režimy.
  • Počítání 3DES jako „168bitového“. Surový klíč má 168 bitů, ale efektivní síla je 112 — meet-in-the-middle redukuje trojité šifrování na dvojité plus něco navíc, přesně jako u předchůdců konstrukce 3DES.
Časté dotazy

Proč vůbec držet nástroj pro rozbitou šifru? Kvůli kompatibilitě. Šifrované zálohy, exportované soubory ve starém formátu, zachycené protokolové stopy, CTF úlohy a hardware, který nelze aktualizovat, stále těmito šiframi mluví. Číst stará data je legitimní; psát nová jimi legitimní není.

Můj klíč DES má lichou paritu / bajty mimo ASCII. DES ignoruje paritní bit každého bajtu klíče, takže efektivní klíč je vždy těch ostatních 56 bitů. Tato stránka přijme libovolných 8 bajtů a sudou paritu nevynucuje.

Proč někdy dešifrovaný text vypadá jako šum? Špatný klíč, špatný režim, špatný IV, nebo data nebyla zašifrována tak, jak předpokládáte. Bez autentizační značky neexistuje čisté hlášení „špatný klíč“ — kontrola výplně je jediný náznak a může projít náhodou (1/256 případů).

Je Blowfish bezpečný pro mé soubory? Pro malé soubory kryptograficky ano (žádný praktický zlom). Pro cokoli v gigabajtovém rozsahu pod jedním klíčem ne — hranice narozenin 64bitového bloku se týká objemu dat, ne síly klíče. Twofish nebo AES problém obcházejí.

Co 72bajtové klíče Blowfish, které jsem kdesi viděl? Některé implementace přijmou až 72 bajtů, ale Schneierova referenční implementace používá 56 a bajty nad to ve standardním plánování nepřinášejí žádnou další difúzi. Tato stránka se řídí referencí: 4..56 bajtů.