Niedawno, pisząc wieczorami dla siebie aplikacje w .NET natrafiłem na bardzo przyjemną i lekką bazę danych - SQLite. Tak mi się ta baza spodobała, że postanowiłem sprawdzić czy z poziomu Javy i JDBC uda się do niej dostać. SQLite ma jednak jedną wadę - brak szyfrowania i zabezpieczenia hasłem. Baza SQLite mieści się w jednym pliku, który nie jest w jakikolwiek sposób zabezpieczony. Jako że na codzień pracuję w firmie tworzącej oprogramowanie dla banków i policji brak szyfrowania jest dość poważną wadą nawet w bardzo prostych narzędziach jak program do fakturowania.
Z jakiego powodu potrzebne jest szyfrowanie samych danych? Wiadomo że błędem w sztuce jest trzymanie haseł w bazie danych - co najwyżej można trzymać posolone hashe. Zaszyfrowanie całej bazy danych (pliku sqlite) również nie wydaje się być dobrym pomysłem z powodów wydajnościowych. Dlatego należy rozpatrzyć szyfrowanie poszczególnych kolumn z danymi wrażliwymi. Jako przykład podam program do faktur gdzie są dane naszych kontrahentów. Co jeśli konkurencja przekupi naszego pracownika by zgrał na dysk USB plik z bazą naszych klientów? Ten problem dotyczy wszelkich aplikacji typu standalone, gdzie przetwarzane są wrażliwe dane. Częściowo ten problem jest rozwiązany w aplikacjach typu klient-serwer lecz nie zawsze jest sens stawiania takiej infrastruktury.