Рейтинг:1

E2EE с паролями при входе в систему?

флаг cn

Представьте сценарий:

  1. Алиса и Боб хотят использовать платформу, на которой они входят в систему, используя адрес электронной почты и пароль. Платформа доступна на настольных и мобильных устройствах.
  2. Алиса хотела бы хранить зашифрованную информацию в базе данных или отправлять зашифрованные файлы на сервер S3.
  3. Боб сможет получить эту зашифрованную информацию (данные + файлы), если сервер позволит (Алиса предоставила Бобу доступ к этим данным)
  4. И Боб, и Алиса должны иметь возможность расшифровать информацию (данные + файлы) на своей стороне.

В настоящее время я играю, чтобы понять, возможен ли такой дизайн, но в ближайшем будущем мне нужно будет реализовать это. Я был бы признателен, если бы кто-нибудь мог дать «простой» ответ и, возможно, порекомендовать способ поиска поставщиков, у которых гораздо больше опыта, чем у меня (безопасность — это не шутка), и которые могли бы реализовать код для такого решения.

Gilles 'SO- stop being evil' avatar
флаг cn
Пожалуйста, имейте в виду, что нет простого ответа. [Neirpyc] (https://crypto.stackexchange.com/a/91645) настолько прост, насколько это возможно для номинального случая. Но есть много сложностей, которые нужно учитывать, чтобы заставить это работать в реальном мире. Что произойдет, если Алиса потеряет свой пароль? Как предотвратить утечку паролей (путем слежения, фишинга, грубой силы и т. д.) — двухфакторная аутентификация снижает ее для аутентификации, но ничего подобного для шифрования нет. Как добавить пользователя в список рассылки файла? Как отозвать доступ? и т.д.
Рейтинг:2
флаг us

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

Насколько я понимаю, решение вашей проблемы следующее:

  1. При создании учетной записи вы используете свой пароль для создания мастер-ключа км. Вы также должны сгенерировать случайную пару асимметричных ключей (RSA, эллиптическая кривая или любой асимметричный шифр). Вы должны загрузить на сервер свой открытый ключ, а ваш закрытый ключ зашифрован с помощью к0, ключ, полученный из главного ключа км.
  2. Алиса генерирует симметричный ключ кх и шифрует данные локально перед отправкой на сервер (AES, serpent, ChaCha, ...). кх должен быть получен из главного ключа Алисы км поэтому тот же ключ может быть сгенерирован снова для расшифровки файла. Файл должен получить уникальный идентификатор Икс который используется в ключевой функции деривации для детерминированного получения кх, без повторного использования одного и того же ключа для каждого файла.
  3. Чтобы авторизовать Боба, войдите в систему, создайте заново км мастер-ключ, запросить у сервера идентификатор файла, получить кх от вашего главного ключа км и идентификатор файла.Затем запросите у сервера открытый ключ Боба и используйте его для шифрования. кх. Затем вы можете отправить эти данные на сервер.
  4. Боб входит в систему, генерирует свой мастер-ключ. Затем он использует его для получения своего первого ключа к0, запрашивает у сервера свой зашифрованный закрытый ключ, использует к0 для расшифровки закрытого ключа. Получив закрытый ключ, вы можете расшифровать то, что вам прислала Алиса: кх, ключ, используемый для шифрования файла. Затем вы можете запросить файл у сервера и расшифровать его локально.

Ответить или комментировать

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