Подтвердить что ты не робот

Шифрование sql server vs .net

Мне нужно сохранить небольшое количество полей базы данных (~ 3) в зашифрованном виде в таблицах базы данных.

В целом, лучше ли шифровать/расшифровывать данные в приложении с использованием криптографии .net или шифровать/дешифровать данные в базе данных с использованием симметричного шифрования ключей? Каковы плюсы и минусы двух методов?

Вот моя среда:
Приложение - веб-приложение для интрасети
Платформа разработки - Visual Studio 2010, ASP.Net,.Net Framework 3.5
Серверная операционная система - Windows Server 2008
База данных - SQL Server 2008

4b9b3361

Ответ 1

Это отличный вопрос.

Мое желание - позволить части, ответственной за хранение данных, также отвечать за любое ее шифрование. В этом случае пусть SQL-сервер управляет шифрованием.

Основная причина в том, что мы редко создаем автономные приложения. Чаще всего использование нескольких приложений использует один и тот же бэкэнд базы данных. Кроме того, чаще всего заменяется технология, используемая для создания приложения, чем замена механизма базы данных под ним.

Если вы сделаете это в коде, каждое приложение, использующее хранилище данных, должно будет использовать его собственную библиотеку шифрования/дешифрования, чтобы получить доступ к данным. Если это сделано на сервере sql, тогда приложения могут быть довольно не осведомлены о процессе, пока вы поддерживаете тот же уровень защиты.

Кроме того, вы должны использовать возможность шифрования подключений к SQL-серверу, который будет обрабатывать хранение данных, зашифрованных во время его перемещения между сервером веб-приложений и приложений и базой данных. Также вы должны включить SSL между браузером и вашим веб-сайтом, чтобы гарантировать, что данные никогда не будут дешифрованы между сервером браузера → веб-сервер → .

Надеюсь, что это поможет.

Ответ 2

Для внутренних приложений, где вас не беспокоят "исследователи" из Интернета, я предпочитаю делать шифрование в базе данных. Таким образом, если что-то идет на юг с вашим приложением (по какой-либо причине), вы не полагаетесь на это приложение, чтобы вернуть данные. Таким образом, ваше приложение также не имеет зависимости от механизмов шифрования или дополнительных затрат на выполнение приложения. Он может предположить, что в базе данных будет учтено, что делает код более удобным.

Это также более удобно для приложений с несколькими интерфейсами или шлюзами. Данные шифруются/дешифруются по центру. Однако в этом случае вам необходимо убедиться, что данные передаются в/из базы данных через защищенный туннель (SSL или VPN или что-то подобное), в противном случае это не означает, что нужно шифровать данные на все; его можно легко перехватить со стандартным сетевым сниффером.

В средах с общим хостингом я предпочитаю делать шифрование в приложении для целей безопасности. В этой ситуации я управляю ключами, а не хост-провайдером.