Jeśli szyfrujesz dane, musisz zadać sobie pytanie, kto je odszyfruje. Jeśli używasz asymetrycznego systemu szyfrowania (np. RSA), szyfrowanie wykorzystuje klucz publiczny, a deszyfrowanie używa odpowiedniego klucza prywatnego; „asymetria” wynika z faktu, że klucz prywatny nie może być ponownie obliczony z klucza publicznego (chociaż oba klucze są ze sobą matematycznie powiązane).
Szyfrowanie asymetryczne ma zwykle narzut. Pierwsza uwaga jest taka, że takie szyfrowanie musi mieć jakiś losowy element, ponieważ każdy może zaszyfrować (klucz publiczny jest, tak, publiczny):jeśli proces szyfrowania jest deterministyczny, to każdy może zaszyfrować wszystkie możliwe numery SSN (jest ich mniej niż miliardów z nich, co jest naprawdę niewielką liczbą dla współczesnego komputera) i pasują do zaszyfrowanych wartości. Dlatego podczas szyfrowania musi zostać dodana pewna ilość losowych danych, a zaszyfrowany numer SSN jest większy niż numer SSN w postaci zwykłego tekstu.
Znane systemy szyfrowania asymetrycznego wykorzystują struktury matematyczne, które mają swój własny koszt. Zasadniczo, dla systemu szyfrowania RSA, z „wystarczająco silnym” kluczem, zaszyfrowana wiadomość będzie miała długość co najmniej 128 bajtów. Niektóre systemy szyfrowania działają lepiej; trzymając się wydeptanych ścieżek badań akademickich, mogłem to zrobić w około 41 bajtach (z El-Gamalem nad krzywą eliptyczną NIST K-163). Mniejszy wydaje się trudniejszy.
Nic więc dziwnego, że dany system baz danych domyślnie nie zawierałby takiej funkcji.
W przypadku swojego problemu powinieneś najpierw zdefiniować (i napisać), jak najdokładniej:
- jakie dane chcesz chronić
- kto wprowadza dane
- kto ma odczytać dane z powrotem
i dopiero wtedy powinieneś zadać sobie pytanie, czy szyfrowanie jest do tego odpowiednim narzędziem. Szyfrowanie jest dobre, gdy przewidywany napastnik może zdobyć surowe, przechowywane dane. Oznacza to, że atakujący ominął zabezpieczenia systemu operacyjnego. W tym momencie, cokolwiek wie system operacyjny, wie również atakujący. Jeśli baza danych znajduje się na komputerze i istnieje interfejs, przez który można uzyskać odszyfrowany numer SSN, to ta maszyna „wie”, jak uzyskać dane, podobnie jak atakujący… Z drugiej strony, jeśli host system operacyjny maszyny jest uważany za wystarczająco odporny, więc szyfrowanie nie wydaje się w ogóle potrzebne.
Szyfrowanie symetryczne w bazie danych może rozwiązać słabszy problem, w którym atakujący otrzymuje kopię dysku twardego później . System hosta zna klucz szyfrowania symetrycznego, ale zna go tylko w pamięci RAM. Osoba atakująca, która kradnie dysk twardy, nie będzie miała tego klucza.