Ако шифровате данни, трябва да се запитате кой ще ги дешифрира. Ако използвате система за асиметрично криптиране (напр. RSA), тогава криптирането използва публичния ключ, а декриптирането използва съответния частен ключ; „асиметрията“ идва от факта, че частният ключ не може да бъде преизчислен от публичния ключ (въпреки че и двата ключа са математически свързани заедно).
Асиметричното криптиране обикновено има допълнителни разходи. Първата забележка е, че такова криптиране трябва да има някаква произволна част в него, защото всеки може да криптира (публичният ключ е, да, публичен):ако процесът на криптиране е детерминистичен, тогава всеки може да криптира всички възможни SSN (има по-малко от милиард от тях, което е наистина малък брой за модерен компютър) и съответстват на криптираните стойности. Следователно, трябва да има произволно добавено по време на криптирането и шифрованият SSN е по-голям от SSN в обикновен текст.
Известните системи за асиметрично криптиране използват математически структури, които имат собствена цена. По принцип, за системата за криптиране RSA, с "достатъчно силен" ключ, криптираното съобщение ще има дължина най-малко 128 байта. Някои системи за криптиране се справят по-добре; докато се придържам към добре утъпканите пътеки на академичните изследвания, можех да го направя в около 41 байта (с El-Gamal върху елиптичната крива на NIST K-163). По-малкото изглежда по-трудно.
Така че не е чудно, че дадена система от бази данни няма да включва такава функция по подразбиране.
За вашия проблем първо трябва да дефинирате (и да напишете), възможно най-ясно:
- какви са данните, които искате да защитите
- кой въвежда данните
- който трябва да прочете данните обратно
и едва тогава трябва да се запитате дали криптирането е подходящ инструмент за това. Шифроването е добро, когато предвиденият нападател може да се докопа до необработените, съхранени данни. Това означава, че атакуващият е заобиколил защитата на операционната система. В този момент каквото операционната система знае, атакуващият също знае. Ако базата данни се хоства на машина и има интерфейс, чрез който може да бъде получен декриптираният SSN, тогава тази машина „знае“ как да получи данните, както и нападателят... От друга страна, ако хостът машинната операционна система се счита за достатъчно устойчива, тогава криптирането изглежда изобщо не е необходимо.
Симетричното криптиране на базата данни може да адресира по-слаб проблем, при който атакуващият получава копие на твърдия диск след това . Хост системата знае ключа за симетрично криптиране, но го знае само в RAM. Нападател, който открадне твърдия диск, няма да има този ключ.