Если вы шифруете данные, вы должны спросить себя, кто их расшифрует. Если вы используете асимметричную систему шифрования (например, RSA), тогда для шифрования используется открытый ключ, а для дешифрования используется соответствующий закрытый ключ; «асимметрия» происходит из-за того, что закрытый ключ не может быть повторно вычислен из открытого ключа (хотя оба ключа математически связаны друг с другом).
Асимметричное шифрование имеет тенденцию накладываться. Первое замечание заключается в том, что в таком шифровании должна быть какая-то случайная часть, потому что каждый может шифровать (открытый ключ, да, публичный): если процесс шифрования детерминирован, то любой может зашифровать все возможные SSN (их меньше, чем миллиарда из них (что очень мало для современного компьютера) и соответствуют зашифрованным значениям. Следовательно, во время шифрования должно быть добавлено несколько случайных чисел, а зашифрованный SSN больше, чем открытый SSN.
Известные системы асимметричного шифрования используют математические структуры, которые имеют свою стоимость. По сути, для системы шифрования RSA с «достаточно сильным» ключом зашифрованное сообщение будет иметь длину не менее 128 байтов. Некоторые системы шифрования работают лучше; придерживаясь проторенных путей академических исследований, я мог сделать это в 41 байт или около того (с Эль-Гамалем по эллиптической кривой NIST K-163). Меньше кажется сложнее.
Поэтому неудивительно, что данная система баз данных не будет включать такую функцию по умолчанию.
Для вашей проблемы вы должны сначала определить (и написать) как можно более четко:
- какие данные вы хотите защитить
- кто вводит данные
- кто должен читать данные обратно
и только тогда вы должны спросить себя, является ли шифрование подходящим инструментом для этого. Шифрование хорошо, когда предполагаемый злоумышленник может получить в свои руки необработанные, сохраненные данные. Это означает, что злоумышленник обошел защиту операционной системы. На этом этапе, что бы ни знала операционная система, злоумышленник также знает. Если база данных размещена на компьютере и существует интерфейс, через который можно получить расшифрованный SSN, то этот компьютер «знает», как получить данные, и злоумышленник - тоже самое. С другой стороны, если хост операционная система машины считается достаточно устойчивой, тогда, похоже, шифрование вообще не требуется.
Симметричное шифрование в базе данных может решить более слабую проблему, при которой злоумышленник получает копию жесткого диска , а затем . Хост-система знает симметричный ключ шифрования, но знает его только в оперативной памяти. У злоумышленника, который крадет жесткий диск, такого ключа не будет.