Когда вы шифруете конфиденциальные данные, вы существенно ограничиваете доступ к тем, у кого есть доступ к ключу. Затем эта проблема становится одним из ключевых элементов управления: обеспечение доступа только к авторизованным пользователям/системам для ключа, необходимого для дешифрования данных.
Вы должны, конечно, использовать стандартный алгоритм шифрования, достаточно простой в наши дни, но то, о чем вам нужно подумать, это то, какие угрозы вы защищаете, как вы собираетесь контролировать доступ к ключам и как вы контролируете физический доступ к серверам.
Использование TDE гарантирует, что содержимое базы данных и ее резервных копий зашифровано с минимальным воздействием на авторизованных пользователей базы данных. Поэтому каждый, кто может получить доступ к серверу базы данных с действительными учетными данными, сможет увидеть незашифрованные данные. Также любой администратор базы данных обычно имеет доступ к ключу и может видеть незашифрованные данные. Но третья сторона, которая, скажем, получает резервную копию вне офиса, не сможет получить доступ к данным, что может быть важным для соблюдения нормативных требований.
С другой стороны, если вы зашифруете в уровне приложения, вы можете использовать ключ, доступный только администраторам сервера приложений. Это потенциально дает вам дополнительную безопасность, если, например, администраторы сервера баз данных и администраторов приложений остаются в стороне (например, члены разных организаций). Администраторы баз данных, которые не имеют доступа к ключу сервера приложений, не смогут видеть данные.
В исходном посте вы говорите о скрытии секретного ключа в файле конфигурации на сервере приложений. На первый взгляд это звучит как эквивалент безопасности, скрывающий ключ передней двери под ковриком. Если вы это сделаете, вам нужно подумать о том, как вы убедитесь, что неавторизованные люди не могут получить доступ к ключу.
Почему вы задали ссылку на вашу компанию в своем вопросе? –
Извините, сила привычки, потому что так я подписываюсь на своем блоге. Теперь удалено. –
Я однажды разместил хороший ответ здесь, в StackOverflow, описывающий отличный способ добавления шифрования уровня приложения с помощью [RijndaelManaged] (http://msdn.microsoft.com/en-us/library/system.security.cryptography.rijndaelmanaged.aspx) Класс, и получил в некоторых довольно большой ЭТО над этим. Я «предполагаю», что вам нужно перейти к шифрованию БД. –