Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Как лучше хранить "секретную" инфу в базе

20.05.23 12:39
Re: Как лучше хранить "секретную" инфу в базе
 
MrSanders коренной житель
в ответ AlexNek 19.05.23 09:50
Другой пользователь может читать или расшаренную с ним информацию или свою. И хотелось бы иметь только одну копию шифрованной информации. Но похоже так не получится.
...
Если стащили один ключ, то тогда разрешено прочитать только ту информацию которая связана с именно с этим ключом/пользователем.

Есть ресурсы и есть пользователи. У пользователя есть ключ для шифрования (КП - ключ пользователя). Пользователь хочет сохранить где-то у нас данные (ресурс). В зашифрованном виде. Чо делать?

Создаём для пользователя новый ключ шифрования - ключ ресурса (КР). Шифруем данные КР и храним их (ЗР зашифрованный ресурс). Шифруем КР с помощью КП = ЗКР. Храним ЗКР.

Мысль понятна? У каждого ресурса свой КР. Если пользователь А (с ключом КПа), владеющий ресурсом Р1 (с ключом КР1) хочет поделиться им с пользователем Б (КПб), а копировать; содержимое мы не хотим, создаём ЗКР1б из КР1 (КР1 зашифрованный КПб) и делимся им с Б. Б хочет прочитать Р1? Да пожалста. Ввёл свой ключ, прочитал ЗКР1, расшифровал, получил КР1, расшифровал им ресурс.


Используем мы симметричные или асимметричные ключи - не принципиально.


Итого. Мы, не зная ключей пользователей, ничего прочитать не можем, хоть всё и храним. Ресурсы не копируются. Настройка доступа пользователя (или групп) происходит через управление ЗКР. Если пользователь про...теряет свой ключ, он потеряет доступ к данным. Совсем.


Домашнее задание: что делать, если надо отозвать право доступа к ресурсу Р2 у пользователя В? Пользователи А и Б тоже имеют доступ к ресурсу.


П.С. Да, при доступе к системе пользователя мы, конечно, сможем выловить расшифрованные ключи из памяти. Ну так он и так свой ключ знает...

 

Перейти на