Не съм сигурен дали използването на MySQL вградено криптиране би било най-доброто решение на проблема ви.
M_CRYPT на PHP Пакетът се смята за доста добър и ви дава гъвкавостта да изберете алгоритъм, който е най-подходящ за вашите нужди.
Съхраняването на вашия ключ на друг сървър има едно голямо предимство:ключът не е на същата машина като криптираните данни. Така че докато нападателят няма достатъчно контрол над компрометираната машина, той не може да стигне до ключа.
Ако атакуващият получи пълен контрол над машината, на която се съхраняват данните, най-вероятно ще може да направи запитване уеб услугата за ключа.
Въпреки това, предаването на ключа от една машина на друга отваря цяла нова област, която трябва да бъде защитена. Вероятно включва повече ключове и повече слоеве за криптиране, като по този начин увеличава вероятността от грешки.
Другата опция е да въведете паролата при стартиране на уеб сървъра и да я запазите само в паметта.
Възможно решение
Ако видите използвано решение, което използва следния метод за криптиране на файлове за потребители с уеб достъп (не съм сигурен за вашата среда, но може да е полезно):
- При създаването на потребител, на новия потребител се присвоява дълъг произволен ключ.
- Този произволен ключ се съхранява в криптирана колона в потребителския запис.
(само тази колона е криптирана, за да не влияе върху производителността на останалата част от записа! ) - Криптирането на колоната с произволен ключ се извършва с 1 главна парола, съхранявана във файл или в паметта.
(По-добрият вариант е да въведете паролата при гледане на вашия уеб сървър и да я съхранявате само в паметта. )
(Друг подход би бил да се позволи на потребителя да въведе парола и да я използва за шифроване/декриптиране на колоната с произволен ключ, но не съм сигурен дали това ще увеличи или намали сигурността ) - Всеки документ, който трябва да бъде криптиран, се криптира с произволния ключ за този потребител и след това се съхранява на диск.
- Документите се съхраняват с минимални разрешения във файловата система.
Предимствата на този подход са:
1. Случайният ключ е криптиран в базата данни. Така че все още имате допълнителната сигурност на сървъра на базата данни, в комбинация с криптираната колона.2. Документите се съхраняват с различни ключове, ако нападателят се сдобие с ключ, само част от документите са компрометирани.
Въпреки това:
Ако нападателят се сдобие с главната парола и има достъп за четене до потребителската таблица, цялата система отново е повредена.