nejlepší způsob je provést šifrování na klientském nebo aplikačním serveru, takže databáze netuší, jaké jsou klíče, a nemůže data dešifrovat. Pokud je klient / appserver na jiném hostiteli, tím lépe.
Pokud vaše databáze šifruje a dešifruje data za vás, je zranitelná vůči odcizení klíčů spolu s databází.
Pokud používáte šifrovací funkce v databázi pgcrypto, můžete aplikaci nechat poslat klíč spolu s daty, což je alespoň trochu užitečné. Stále však hrozí, že klíče budou odhaleny v protokolech, pokud užitečný správce systému zapne agresivní protokolování příkazů nebo automatické ukládání plánu, a nakonec, pokud klíče míří do databázového stroje, jsou zranitelnější, než kdyby tomu tak nebylo. . Útočník, který převezme kontrolu nad databázovým strojem, může také změnit nastavení protokolů, nahradit binární soubory postgresql nebo čichat provoz, aby tímto způsobem zachytil klíče a data.
Pokud jsou appserver a db na stejném počítači a spravovány stejnými rolemi, nemá smysl se obávat jejich izolace a může být rozumné použít pouze pgcrypto.
Ať tak či onak, nezapomeňte na sůl!