Se crittografi i dati, devi chiederti chi li decrittograferà. Se utilizzi un sistema di crittografia asimmetrico (es. RSA), la crittografia utilizza la chiave pubblica e la decrittazione utilizza la chiave privata corrispondente; "asimmetria" deriva dal fatto che la chiave privata non può essere ricalcolata dalla chiave pubblica (sebbene entrambe le chiavi siano collegate matematicamente tra loro).
La crittografia asimmetrica tende ad avere un sovraccarico. Una prima osservazione è che tale crittografia deve avere una parte casuale in essa, perché tutti possono crittografare (la chiave pubblica è, sì, pubblica):se il processo di crittografia è deterministico, allora chiunque può crittografare tutti i possibili SSN (ci sono meno di un miliardi di loro, che è un numero davvero piccolo per un computer moderno) e corrispondono ai valori crittografati. Pertanto, durante la crittografia devono essere aggiunti casuali e l'SSN crittografato è più grande dell'SSN in chiaro.
I noti sistemi di crittografia asimmetrica utilizzano strutture matematiche che hanno un proprio costo. Fondamentalmente, per il sistema di crittografia RSA, con una chiave "abbastanza forte", un messaggio crittografato avrà una lunghezza di almeno 128 byte. Alcuni sistemi di crittografia funzionano meglio; pur attenendomi ai percorsi ben battuti della ricerca accademica, potrei farlo in circa 41 byte (con El-Gamal sulla curva ellittica NIST K-163). Più piccolo sembra più difficile.
Quindi non c'è da stupirsi che un determinato sistema di database non includa tale funzionalità per impostazione predefinita.
Per il tuo problema, dovresti prima definire (e scrivere), nel modo più chiaro possibile:
- quali sono i dati che vuoi proteggere
- chi inserisce i dati
- chi dovrebbe rileggere i dati
e solo allora dovresti chiederti se la crittografia è uno strumento adeguato per questo. La crittografia è utile quando l'attaccante immaginato può mettere le mani sui dati grezzi e archiviati. Ciò significa che l'attaccante ha aggirato le protezioni del sistema operativo. A quel punto, qualunque cosa sappia il sistema operativo, lo sa anche l'attaccante. Se il database è ospitato su una macchina e c'è un'interfaccia attraverso la quale è possibile ottenere l'SSN decrittografato, allora quella macchina "sa" come ottenere i dati, e così fa l'attaccante... D'altra parte, se l'host sistema operativo della macchina è considerato sufficientemente resiliente, quindi la crittografia non sembra essere affatto necessaria.
La crittografia simmetrica sul database può risolvere un problema più debole, in cui l'autore dell'attacco ottiene una copia del disco rigido successivamente . Il sistema host conosce la chiave di crittografia simmetrica, ma la conosce solo nella RAM. Un utente malintenzionato che ruba il disco rigido non avrà quella chiave.