Zatímco kódování base64 nemá v úmyslu šifrovat, není příliš přitažlivé myslet si, že by proces kódování mohl být nějakým způsobem zmírněn, aby vytvořil šifrování. Určitě nejsem první, kdo si myslí o takovém pokusu o šifrování využívajícím kódování base64. Proto bych se chtěl zeptat, jaké druhy šifrovacích strategií base64 jsou známé?
Komentáře
- Jako 6bitová šifra?
- Obecně se šifrování odehrává před spuštěním dat prostřednictvím Base64
- Viděl jsem ‚ dříve používaná šifrovací schémata Base64, ale všechna mohla být triviálně nefunkční. Tato otázka má smysl, protože lidé možná hledají takové algoritmy. Zdravý rozum však pravděpodobně znamená, že naznačujeme, že base64 není míněn jako šifra a je výsledkem záměny kódování se šifrováním. Všimněte si, že mnozí z nás budou že předpoklad této otázky je špatný: že lze pro šifrování použít schéma kódování. To by mohlo vést k downvotes, i když je otázka přinejmenším zajímavá pro mnoho začínajících kryptografů.
- Možná tangenciálně relevantní: crypto.stackexchange.com/questions/62425/… , crypto.stackexchange.com/questions/5862/… a crypto.stackexchange. com / questions / 45215 / …
odpověď
Toto je převzato z záznamu Wiki pro Base64:
Pokud opravdu zamýšleno manipulovat kódování Base64 k zajištění šifrování, lze to provést na výše zvýrazněné úrovni indexu. Budete potřebovat tajný klíč, funkci odvození klíče přizpůsobenou k vytvoření semene vysoké entropie, které poté spustí generátor pseudonáhodných čísel. Výstup generátoru (6 bitů) by pak byl XORed s indexem, aby se změnilo kódování pro každý znak. A tuto techniku lze obrátit, aby dešifrovala zašifrovanou zprávu.
Vidíte, že je to všechno trochu obtěžování. Tradičně vytvoříte šifrovací text a poté jej zakódujete. Kromě oříznutí typické 8bitové náhodné sekvence na 6 bitů je pracovní zátěž stejná jako u tradiční streamové šifry . Ve skutečnosti potřebujete 33% výpočtů navíc, ale to není ani zde, ani tam.
Možná jste jako první začali uvažovat o této variantě Base64, protože si nikdo podobné chování neuvědomuje. To by však mělo fungovat.
Komentáře
- Děkujeme za tento zajímavý návrh! Vlastně jsem měl na mysli jednoduché věci, jako je permutace asociace 6bitové tabulky písmen. Nebo zavedeme klíč a budeme mít bitovou operaci xor na každém písmenu cyklicky přes klíč apod.
- @Kagaratsch No, myslím, že ‚ přemýšlíme o podobných řádky. Abychom vám umožnili permutovat, ‚ budete potřebovat funkci PRNG a k propojení klíče s PRNG budete ‚ potřebovat nějakou funkci odvození klíče, jinak ‚ Nebude existovat nesoulad mezi klíčovým formátem a formátem / stavem požadovaným pro provoz PRNG. Pokud jednoduše permutujete bez klíče nebo použijete cyklování své klíčové postavy, schéma ‚ není příliš bezpečné a je to koneckonců krypto.SE 🙂
- @PaulUszak Tento technický název je ve skutečnosti docela zřejmý, jakmile ho znáte… ‚ se jednoduše nazývá “ Šifra XOR „. 😉 Přesto si všimněte, že frekvenční analýza to triviálně zlomí. Totéž platí pro známé útoky v otevřeném textu. A pokud jde o technické pojmenování, bude úplné: když vložíte prng, taková “ šifra XOR “ se změní na “ proudová šifra „. Ale pravděpodobně jste to už věděli, ‚ t?
- @PaulUszak Nejste si jisti, proč říkáte “ ne „. Můžete si také být jisti, že vím, co znamená “ cyklistika „. Šifra XOR cykluje stejným klíčem znovu a znovu a ve stejném pořadí, přesně jak popisujete. Podívejte se na “ příklad “ tohoto odkazu wiki; odpovídá vašim popisům 100%…
a bitwise xor operation on each letter cycling through the key
aCycling round through the key means that the plain text will be XORed with the same sequence over and over, and in the same order.
– tomu ‚ se říká “ šifra XOR „. Žádná chyba ani jazyková mezera. - Jakýmkoli způsobem vyladíte base64, lze to promítnout do (a) definování šifry na bajtových řetězcích a potom (b) použití standardního base64 na jeho výstup, mapování bajtových řetězců ciphertext na prostý text. ‚ Nemá smysl spojovat (a) a (b) – nepřidává žádné zabezpečení a zbytečně komplikuje popis jak základní šifry, tak implicitní standardní báze64.
Odpověď
To nedává smysl. V base64 není žádný tajný klíč: kódování a dekódování base64 jsou veřejné funkce, které může kdokoli vyhodnotit.
Jediný způsob, jakým base64 souvisí s kryptografií, je to, že je vhodné kódovat ciphertext z nějakého kryptosystému, což je rovnoměrně distribuováno v 8bitových řetězcích, v omezené sadě US-ASCII, které nebudou mungovány nebo odmítnuty v kontextech omezených na prostý text, jako je XML.
Komentáře
- +1 (… a base64 produkuje kratší výstupy než hexadecimální kódování, proto byl vyvinut a proč je v aplikacích často používán.)
- Dělá to perfektní smysl 🙂 Otázka byla položena jako hypotetická a OP hledá možnosti implementace. ‚ Neexistuje žádný přirozený zákon vyžadující, aby celé šifrování muselo být super dooperační. Musí šifrovat / dešifrovat. Víte, že lidé stále staví parní stroje a jsou na ně velmi hrdí ..?
- @PaulUszak Nedává to ‚ smysl jako base64, veřejná transformace mezi dvěma ekvivalentními reprezentacemi dat je jiný typ objektu ze šifrovacího schématu, které zahrnuje tajemství, která protivník nezná. Jakýmkoli způsobem upravíte rozhraní a interní prvky base64 tak, aby do něj vložil nějaký klíč a šifru, lze zapracovat do standardní transformace reprezentace base64 a některé základní šifry, jejíž zabezpečení je pro část base64 irelevantní. Pokud jste vyrobili stroj Enigma na páru, řekli byste, že jste upravili koncept parní energie na šifrovací schéma?
- @SqueamishOssifrage Ano.
Odpověď
Zlaté pravidlo kryptografie by mělo znít: „Není to proto, že vy nemůžete číst text, který je šifrován“. Base64 není určen k použití za účelem vytvoření šifrovacího textu a pro tento účel by se neměl používat.
Šifrovací metody se vždy spoléhají na tajemství nebo artefakty, které zajišťují, že pouze aktéři komunikace mohou zvrátit šifrový text. Pokud tomu tak není, stejně jako u Base64, nejedná se o šifrování.
Base64 je určen k kódování binárního textu jako textu s různými výhodami oproti jiným schématům kódování. Ochrana soukromí mezi tyto výhody nepatří.
Odpověď
Ano, existuje zájem o šifrování upstream base64: je to ekonomika v iteracích. Když šifrujeme data a poté je kódujeme, musíme vytvořit alespoň dvě smyčky: jednu na šifrování dat a druhou na kódování generovaných dat. Šifrováním proti proudu můžeme snížit na smyčku, a proto získáte značný výkon.
@ e-sushi: Ve skutečnosti neexistuje mnoho příkladů kromě tohoto, který používá pouze jednu smyčku: php_base64encrypted
Existují pravděpodobně i jiné způsoby, jak to zlepšit, ale dokazuje to, že je to možné …
Upravit: omlouvám se, tento web moc neznám.
Komentáře
- Můžete uvést příklad (odkaz na papír nebo něco takového) takového `zájmu o šifrování upstream base64`? Snažil jsem se najít více informací pomocí svého oblíbeného vyhledávače , ale nějak se mi to nepodařilo. Ukazatel by proto byl mnohem vhodnější eliced.
- Kódování Base64 je streamovatelný proces (tj. umožňuje inkrementálně kódovat proud dat, jak je ‚ generován, aniž by bylo nutné nejprve všechna tato data číst). Bylo by tedy naprosto možné, aby konvenční šifrovací schéma přivádělo svůj výstup do inkrementálního kodéru base64, aniž by bylo nutné “ vytvořit alespoň dvě smyčky “ nad daty. Jediným důvodem, proč se to běžně nedělá ‚, je pravděpodobně skutečnost, že pro datové toky dostatečně dlouhé, aby to bylo užitečné, ‚ je obvykle mnohem efektivnější úplně přeskočit kódování base64 a pouze je přenášet a / nebo ukládat jako nezpracovaná binární data.