najlepsze sposobem jest wykonanie krypto na kliencie lub serwerze aplikacji, dzięki czemu baza danych nie ma pojęcia, jakie są klucze i nie może odszyfrować danych. Jeśli klient/serwer aplikacji są na innym hoście, tym lepiej.
Jeśli Twoja baza danych szyfruje i odszyfrowuje dane za Ciebie, jest podatna na kradzież kluczy wraz z bazą danych.
Jeśli używasz funkcji kryptograficznych pgcrypto w bazie danych, możesz poprosić aplikację o przesłanie klucza wraz z danymi, co jest przynajmniej w pewnym stopniu pomocne. Nadal jednak istnieje ryzyko ujawnienia kluczy w dziennikach, jeśli pomocny administrator systemu włączy agresywne rejestrowanie instrukcji lub automatyczne zrzucanie planu, a na koniec, jeśli klucze trafiają do maszyny bazodanowej, są bardziej narażone niż gdyby nie . Atakujący, który przejmuje kontrolę nad maszyną bazy danych, może również zmienić ustawienia dziennika, zastąpić pliki binarne postgresql lub sniffować ruch, aby w ten sposób przechwycić klucze i dane.
Jeśli serwer aplikacji i baza danych znajdują się na tej samej maszynie i są zarządzane przez te same role, nie ma sensu martwić się ich izolowaniem i rozsądne może być użycie pgcrypto.
Tak czy inaczej, pamiętaj o soli!