2011-02-07 4 views
6

У нас есть сайт, в котором пользователь будет хранить очень личные и конфиденциальные данные в нашей базе данных.Шифрование данных для хранения в базе данных

Мы, конечно, должны будем шифровать эти данные, прежде чем они будут сохранены в базе данных, и с использованием SSL. Это приложение MVC, которое будет использовать проверку подлинности. что является лучшим способом обеспечить, чтобы эти данные были зашифрованы с момента его сохранения до момента его дешифрования для отображения на их личной странице.

Мы также должны убедиться, что он будет защищен даже от наших разработчиков и dba, работающих над приложением.

Каков наилучший способ справиться с этой ситуацией?

+0

Что вы пытаетесь защитить данные? –

+0

Любой, кто захочет его получить. В основном мы просто должны быть в состоянии обеспечить пользователям, чтобы они были единственными, кто когда-либо видел данные. (хотя я знаю, что это невозможно гарантировать на 100%, нам нужно как можно ближе приблизиться к нему) – twal

+3

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

ответ

1

Невозможно сохранить DBA из данных, если вы не использовали шифрование с открытым ключом, и конечный пользователь должен был бы это контролировать. Если конечный пользователь потерял свой ключ, они потеряли бы все свои данные.

У вас может быть отдельная база данных, в которой вы храните ключи, и ваш администратор базы данных не будет иметь доступа к этой БД.

У вас должно быть два администратора баз данных, один для данных и один для ключей.

Предполагается, что вы не доверяете своим администраторам баз данных, но тогда вы не должны их нанимать.

Если вы доверяете своим администраторам баз данных, вы позволяете им иметь доступ к обеим БД, но требуйте, чтобы у них были отдельные учетные записи, поэтому, если одна из учетных записей будет скомпрометирована, они (хакеры) не будут иметь доступ ко всему.

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

Я предполагаю, что программисты имеют доступ только к тестовой среде. Если у них есть доступ к рабочей среде, они будут иметь доступ как к ключам, так и к данным.

+0

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

0

Каждый шифрования имеет ключ и ключ (чтобы получить/не получить), что ключ :) Самый лучший способ установить ключ на web.config, которые вы можете обойтись без какого-либо программирования фона


И я видел красивый AES Encryption Algorithm implementation at StackOverflow. Я предлагаю вам использовать это.

+0

Настройка ключа в web.config позволит разработчикам получить доступ к данным, если только я что-то не упустил. – mxmissile

+0

@mxmissile: Производство web.config ≠ Разработка web.config. Кроме того, производство db ≠ development db. – rsenna

+0

@mxmissile: пусть разработчик развивается с помощью ключа, который они знают. мы могли бы изменить его после развертывания. – naveen