it-swarm-eu.dev

Je možné bezpečně ukládat hesla pomocí reverzibilního šifrování?

Každý říká, že při ukládání hesel musíte použít nevratný hash, takže i v případě úniku databáze jsou hesla sama o sobě bezpečná. Zajímalo by mě, jestli je stejně možné použít reverzibilní šifrování k ukládání hesel.

Přinejmenším byste museli požadovat, aby jakékoli zneužití, které uniká databázi (injekce SQL, přístup na server Shell atd.), Neuniklo šifrovacímu klíči a že by nebylo rozumně možné zjistit šifrovací klíč pomocí známé heslo prostého textu, pokud máte uniklou databázi.

Ne vážně to zvažuji, protože se to zdá, i když je to technicky možné, že by bylo těžké udělat správně, ale vypadá to jako zajímavý problém.

23
Steve

Reverzibilní šifrování se u hesel běžně nepoužívá, protože specifické požadavky a parametry ověřování heslem nejsou kompatibilní se slabostí reverzibilního šifrování.

Primární slabost reverzibilního šifrování je jednoduchá: pokud je klíč napaden, šifrovaná data jsou ohrožena, tečka.

Hesla se používají vždy, když se uživatelé přihlašují. Proces ověřování musí být proto schopen automaticky přistupovat k přihlašovacím údajům uživatelů, a to bez překážek. To znamená, že klíč pro reverzibilní šifrování musí být neustále na disku nebo v paměti. Pokud je tento program, disk nebo paměť nějakým způsobem ohrožena, pak jsou všechna ta reverzibilně šifrovaná hesla ohrožena jedním pádem.

Na rozdíl od toho zvažte použití nevratných hashů. Pokud dojde k ohrožení programu, disku nebo paměti, útočník dostane „zamčené“ hashe a není zde žádný klíč. Potom mohou zaútočit na další - známý šifrový útok, hrubou silou atd. - ale ještě „nevyhráli“.

Vždy používáme reverzibilní (řekněme klíčové) šifrování - disky, soubory, e-mailové přílohy. Všechna tato použití však mají společné to, že povzbuzují (ne-li vyžadují) lidský zásah, aby poskytl klíč.

Nejsem si jistý, proč se na to ptáte, ale co hybridní model? Uvažujte, že by mohlo být rozumné uložit obojí reverzibilní i nevratný ciphertext pro uživatelská hesla. Při vytváření hesel uložte dvě zašifrované verze: jednu vytvořenou pomocí jednosměrné hašovací funkce a druhou vytvořenou pomocí asymetrického šifrovacího algoritmu („kryptografie veřejného klíče“). Všechny procesy automatizované autentizace používají nevratné hashe pro účely autentizace. Ponechejte polovinu páru „veřejného klíče“ v systému pro použití při generování zašifrovaných hesel a uložte polovinu páru „soukromého klíče“ offline . V případě, že je potřeba prázdný text hesla, zašlete šifrované heslo offline a dešifrujte jej pomocí příslušného klíče. Dokud není dešifrovací klíč přístupný pro autentizační systém, nemůže útočník využít skutečnosti, že jste k ukládání hesel v prostém textu použili „reverzibilní“ šifrování.

To pomůže pouze v případě, že vaše potřeba přístupu k heslům prostého textu není samozřejmě automatická potřeba. Ale zdá se mi to jako šikovný nápad.

21
gowenfawr

Je možné bezpečně ukládat hesla pomocí reverzibilního šifrování?

Ano, ale je to mnohem obtížnější a vyžaduje mnohem větší úsilí a náklady. Klíčování je těžké dobře.

Aby bylo možné podporovat reverzibilní šifrování (nemusí být nutně symetrické viz poznámky @goenfawr ), potřebujete alespoň jeden klíč (dva pro kryptografii veřejných klíčů). Klíč musíte vygenerovat, bezpečně uložit, chránit před poškozením nebo zničením, načíst ho k použití, chránit jej během používání a pravidelně jej vyměňovat.

Významnou součástí problému je, jak chránit klíč, když se nepoužívá. Pokud klíč zašifrujete, potřebujete jej k dešifrování jiného klíče. V tom případě jste zpět tam, kde jste začali. Jiné metody ochrany používají speciální parametry hardwaru nebo zabezpečené operační systémy nebo dokonce vlastní počítače se samostatnou pamětí a procesory. Všechna tato řešení vyžadují dodatečné náklady na školení a podporu.

Porovnejte tato řešení s použitím maloobchodního počítače, maloobchodního operačního systému a hašovací funkce.

6
this.josh

Jedna věc, kterou lze přidat k existujícím odpovědím, je to, že je možné použít symetrické (reverzibilní) šifrování pro ukládání tajemství (včetně hesel), ale je to trochu složitější/nákladnější.

Dobrým příkladem toho jsou sítě bankomatů a bankomatů, které tradičně využívaly správu symetrických klíčů (i když to přesouvají na řešení založené na PKI).

Klíč (k tomu není určena žádná hříčka) je ten, že šifrovací klíče jsou uloženy na důvěryhodném místě, v tomto případě je to hardwarový bezpečnostní modul (HSM) a je třeba dodržovat přísné postupy týkající se načítání a správy klíčů, aby se zajistilo, že klíče zůstanou tajemství.

4
Rory McCune

Podívejte se na wiki stránku pro Ciphers. Přestože existuje mnoho bezpečných šifrů, vždy existuje riziko úniku klíče. Používání jednosměrné hash eliminuje toto riziko tím, že nemá klíč.

Zásadou bezpečnostního inženýrství je minimalizovat informace, které lze získat, protože systém je ohrožen.

2
nik3daz