it-swarm-eu.dev

Kam uložit šifrovací klíč na straně serveru?

Mám v databázi některá data, která jsou symetricky šifrována jediným klíčem. Místo pevného kódování do mého kódu hledám bezpečnější způsob uložení šifrovacího klíče. Kde je mohu bezpečně uložit?

129
Radek

Zde jsou vaše možnosti, zhruba v klesajícím pořadí sofistikovanosti.

  1. Použijte externí hardwarový bezpečnostní modul. Existuje celé odvětví produktů určené pro vykládání operací citlivých na bezpečnost na externí zařízení. Tím se nevyřeší problém natolik, že jej přemístí , ale přemístí jej na mnohem bezpečnější zařízení, takže celkem je to výhra v zabezpečení. Pokud děláte něco s vysokým podílem, pak se to téměř jistě projeví ve vašem řešení.

  2. Připevněte šifrování k vašemu hardwaru. Teoreticky HSM dělají přesně toto, pouze máme tendenci očekávat od HSM trochu sofistikovanějšího než jen hardwarem podporovaná krypta. . Existují však levnější možnosti, pokud nepotřebujete průchodnost a dodržování předpisů, které skutečný HSM přináší ke stolu. Čipy TPM byly pro tento účel částečně vynalezeny a existuje mnoho příkladů, které ukazují, jak se s nimi integrovat. Kromě toho se vyhrazený kryptografický hardware stal poměrně levným a přesměrování zařízení, jako je Open-Source U2F Keys je pro to jednodušší, než to zní.

  3. Připojte šifrovací klíč k přihlášení správce (např. Zašifrujte šifrovací klíč pomocí přihlášení správce). Toto je pouze okrajově užitečné, protože vyžaduje, abyste se přihlásili, abyste mohli šifrovat/dešifrovat cokoli. Na druhou stranu ale nikdo nemůže šifrovat/dešifrovat nic, pokud nejste přihlášeni (tj. Větší kontrola). Mnoho bezpečného úložiště ve Windows funguje takto.

  4. Při spuštění zadejte šifrovací klíč, uložte jej do paměti. To chrání před útoky offline (pokud nezachytí klíč mimo RAM, což je tvrdší dělat). Podobné jako výše uvedená možnost, ale také jiné. Server se však zavádí do nepoužitelného stavu, takže před provedením práce je nutné ručně zadat klíč.

  5. Uložte klíč na jiný server. např. umístěte klíč na webový server a zašifrovaná data na databázový server. To vás do určité míry chrání, protože někdo by musel vědět, jak získat klíč a databázi, a také by měli mít přístup k oběma serverům. Není to úžasně bezpečné, ale přesto velmi populární volba. Většina lidí, kteří si myslí, že to dělají správně , to dělá tímto způsobem. Pokud o tom uvažujete, zvažte také jednu z prvních dvou výše uvedených možností.

  6. Uložte klíč jinde na stejném serveru. Přidá mezní zabezpečení, ale ne celé množství. Většina menších operací to dělá - neměly by, ale dělaly. Obvykle proto, že mají pouze jeden server a někde běží v nějakém cloudu. Je to jako nalepení klíče na dveře namísto ponechání v zámku; zaručeno, že zastaví ty nejkompetentnější útočníky.

  7. Uložte klíč do databáze. Nyní to ani nezkoušíte. Přesto, depresivně populární volba.

Mnoho cloudových řešení KMS (např .: AWS , GCP , Azure ), pokud se použije nejefektivněji, váže vaše šifrování k cloudovým virtuálním počítačům nebo prostředí. Jedinečná identita vaší VM) je pro hypervizora snadná, aby se dokázala a prosadila, a KMS používá kombinaci této identity a oprávnění, která jste jí přidělili, aby umožnil přístup k HSM-spravovanému šifrovací klíč. Je to podobné kombinaci možností 1 a 2, modulovaných tak, aby odpovídaly efemérní povaze cloudových cloudů. Tato řešení KMS jsou obecně také kompatibilní s dalšími mechanismy identity platformy, efektivně vázajícími šifrovací klíče k přihlašovacím klíčům; možnost 3.

145
tylerl

Uvědomuji si, že to bylo před chvílí zodpovězeno, ale abych Tylerovi poskytl pár příkladů:

  • Mám v úmyslu použít jeho # k navázání hesla k účtu služby a použít k tomu heslo cmdlet Powershell. Skripty tak nemusí být tak silně upraveny. Heslo účtu služby je ve službě Active Directory a musí být nejprve napadeno. Funguje to pro mě, protože jsem ji použil na dvou serverech.

  • Pro jeho # 5, abychom splnili naši shodu, jsme mohli uložit klíč v prostém textu na jiný server s externím úložištěm, protože toto úložiště bylo samo o sobě šifrováno a přístup k němu byl omezen. Jak Tyler zmiňuje, ten se nezdá tak bezpečný, ale byl dost dobrý i pro tvrdého odhadce.

5
Mike

Pro správu klíčů můžete vytvořit dvouvrstvou architekturu.

  1. Klíč pro šifrování dat v klidu, který šifruje tabulkové prostory nebo sloupce.
  2. Hlavní klíč k odemknutí 1.

pro svůj hlavní klíč použijte jedno z některých z zavedených řešení správy klíčů, například:

  • Amazon AWS KMS
  • Oracle Vault
  • Microsoft MKS.
  • nebo open source.

Jen mějte na paměti, že váš správce klíčů musí podporovat stejnou nebo vyšší dostupnost než infrastruktura, kde se používá spravovaný klíč.

2
Hugo R