Гибридное шифрование контента для нескольких авторизованных пользователей (FE и BE) - PullRequest
0 голосов
/ 07 ноября 2019

В данный момент я хочу реализовать метод, который хранит определенные данные на стороне сервера только в зашифрованном виде. Для этой процедуры предусмотрено, что каждый авторизованный пользователь получает закрытый ключ, с помощью которого он может хранить и считывать зашифрованные данные. Теперь несколько уполномоченных лиц могут просматривать один и тот же зашифрованный контент. Это означает, что если лицо A хранит данные, зашифрованные его личным ключом, то человек B (если он авторизован) также может прочитать эти данные со своим личным ключом.

Идея реализации: ДляДля всех уполномоченных лиц на стороне сервера генерируется один симметричный ключ. Ключ используется для шифрования и дешифрования текстовых данных. Теперь для каждого отдельного заявителя генерируется пара ключей (открытый и закрытый). С открытым ключом симметричный ключ шифруется и сохраняется для пользователя, и на сервере имеется несколько таких асимметрично зашифрованных симметричных ключей. Закрытый ключ предоставляется пользователю (в виде файла для загрузки, HTTPS), который впоследствии можно использовать для расшифровки зашифрованного симметричного ключа. Поэтому он может загрузить свой закрытый ключ перед записью или чтением зашифрованных данных в веб-приложении (на стороне клиента) и отправить его на сервер. Сервер использует закрытый ключ для шифрования содержимого пользователя и его сохранения или расшифровки более старого содержимого и отправки его в виде простого текста пользователю.

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

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

...