2013-08-03 4 views
0

Обычно сценарий заключается в том, что кто-то хочет хранить и шифровать данные, которые позднее будут доступны (прочитаны) только им. Но здесь я хочу зашифровать (простые и двоичные (BLOB)) данные в моей базе данных MySQL, чтобы кто-то получить прямой доступ к базе данных не смог прочитать эти данные. Но в этом случае все зарегистрированные пользователи должны иметь возможность вставлять (шифровать) данные для всех остальных, и наоборот, все зарегистрированные пользователи должны иметь возможность читать (расшифровать) данные, вставленные и зашифрованные другими.Шифрование/дешифрование содержимого в базе данных для нескольких пользователей

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

ответ

0

Этот вопрос немного абстрактно, и, возможно, я буду скучать по какой-то важный момент, но ...

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


Другим вариантом было бы использовать MySQL standard encryption functions для шифрования данных при хранении их и расшифровать их при обращении. Я меньше одобряю это решение, поскольку нешифрованные данные будут перемещаться по сети на/из сервера БД.


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

+0

Привет Сильвен, точка моего вопроса заключается в том, как пользователи веб-приложения, построенные над базой данных MySQL, будут использовать один и тот же ключ для шифрования/дешифрования данных в db? Каждый пользователь должен иметь возможность шифровать данные, которые другие смогут расшифровать. – sbrbot

+0

@sbrbot Как я пытался объяснить, с моей точки зрения, это, вероятно, проблема на уровне приложений. Не проблема с БД. Приложение будет кодировать данные перед их отправкой в ​​БД и декодировать их при чтении из БД. ... –

+0

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

Смежные вопросы