SQL Server против. NET шифрования - PullRequest
21 голосов
/ 09 марта 2011

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

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

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

Ответы [ 2 ]

13 голосов
/ 09 марта 2011

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

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

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

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

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

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

3 голосов
/ 09 марта 2011

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...