шифрование базы данных - PullRequest
1 голос
/ 22 мая 2009

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

Эти данные в базе данных должны быть зашифрованы, чтобы запретить клиентский доступ и защитить данные.

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

Я читал об этом в Интернете, и, возможно, SQL Server Compact Edition будет хорошим выбором.

Может кто-нибудь помочь мне с этим?

Спасибо

Ответы [ 5 ]

2 голосов
/ 22 мая 2009

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


Обновление: Вопрос гласит: «Эти данные в базе данных должны быть зашифрованы, для отказа в доступе клиента, и защиты данных». Если клиент имеет доступ к любому приложению, которое может получить доступ к базе данных, он имеет доступ к ключу, используемому приложением, и может обойти приложение, чтобы получить доступ к базе данных напрямую.

Если неотвратимая логика не имеет смысла, рассмотрим случайные свидетельства неудачных схем защиты от копирования, которые пытались защитить музыку, игры и другие цифровые активы.

2 голосов
/ 22 мая 2009

SQL Server 2008 включает в себя функцию прозрачного шифрования данных, которая может делать то, что вам нужно. Я не знаю, содержит ли Compact Edition эту функцию. Немного прибегая к помощи этих ключевых слов, вы должны начать. Обычно я не рекомендую использовать SQL Server, но в этом случае мне неизвестны какие-либо аналогичные функции от других поставщиков БД (но они должны существовать ...).

Тем не менее, что вы надеетесь получить, зашифровав данные? Если это полностью на стороне клиента, то у клиента будет ключ для расшифровки данных. В лучшем случае вы делаете небольшое препятствие для людей, чтобы получить доступ к содержимому вашей базы данных. Оно не будет защищено никаким значимым определением.

1 голос
/ 22 мая 2009

SQL Server CE не поддерживает шифрование вообще. В лучшем случае вы можете зашифровать файл базы данных, используя средства шифрования ОС хоста. Шифрование на уровне файлов не работает для баз данных, потому что для чтения страницы X в файле необходимо расшифровать все страницы 1 ... X-1, чтобы получить ключ шифрования в соответствующем состоянии (достичь надлежащего состояния блока CBC). С другой стороны, BitLocker прекрасно работает, поскольку он может дешифровать / шифровать страницы в файле по отдельности. Но BitLocker - это опция уровня раздела, а не уровня файла. Эти общие соображения применимы к любому плану шифрования всего файла базы данных, независимо от используемого продукта (SQL CE, SQL Express, MySQL, Access и т. Д.).

SQL Server имеет шифрование на уровне базы данных. Самым простым в использовании является TDE, Transparent Data Encryption , но для этого требуется Enterprise Edition. Другой вариант - использовать криптографические функции и самостоятельно управлять шифрованием . Вряд ли прост в использовании, но доступен в бесплатной версии Express.

1 голос
/ 22 мая 2009

SQLite имеет расширение шифрования (SEE), которое позволяет приложению читать и записывать зашифрованные файлы базы данных: http://www.hwaci.com/sw/sqlite/see.html

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

0 голосов
/ 29 июня 2009

Могу ли я порекомендовать SQLCipher ? Это бесплатная реализация SQLite с открытым исходным кодом, которая поддерживает прозрачное шифрование на уровне страниц. Он похож на SEE, находится в активной разработке и имеет экспериментальную поддержку для ряда различных шифров, так как он использует OpenSSL для некоторых своих реализаций. Полное раскрытие: я один из разработчиков! У нас есть учебник по его использованию в приложениях для iPhone , который даст вам базовое представление о том, как он работает, и есть ветка комментариев, которая расширяет некоторые связанные темы. Очевидно, что использование его в Visual Studio будет немного отличаться от XCode, но вы должны иметь возможность подключить соединение и запустить его в среде Windows.

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