Рейтинг:-1

Зашифрованный обмен файлами с детерминировано сгенерированным ключом из пароля пользователя

флаг tr

Справочная информация:

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

Техническое решение:

Создайте случайно сгенерированный ключ Kw для рабочей области для шифрования файлов с помощью AES. Этот ключ никогда не будет храниться ни в базе данных, ни в сеансе пользователя.

Для каждого пользователя сгенерируйте еще один ключ «Ku» из пароля пользователя с функцией создания ключа, такой как PBKDF2, используя идентификатор пользователя в качестве соли. Затем зашифруйте ключ «Kw» ключом «Ku» с помощью AES и сохраните этот зашифрованный ключ «Kw» в базе данных с информацией о пользователе.

Затем при каждом входе пользователя в систему заново генерируйте ключ «Ku» из пароля пользователя, используя функцию создания ключа, например PBKDF2. Получите зашифрованный ключ «Kw» и расшифруйте его с помощью Ku. Затем используйте Kw для расшифровки/шифрования файлов.

Является ли это решение достаточно безопасным для хранения конфиденциальных файлов, таких как медицинский документ?

Заранее благодарим за ваши отзывы.

DannyNiu avatar
флаг vu
Рассмотрение полного дизайна схемы не по теме. Однако, чтобы быть полезным, вы можете пересмотреть свою структуру условного депонирования ключей (симметричного шифрования), потому что это, по-видимому, суть того, чего достигает ваше решение. Тем более, что вы **детерминистически** получаете ключи.
Gravity avatar
флаг tr
Спасибо за ваш ответ ! На самом деле это не обзор дизайна, а скорее совет, если я пропущу что-то «большое», что может серьезно снизить безопасность, поскольку я не эксперт по безопасности/криптографии.
DannyNiu avatar
флаг vu
Я только что заметил, что вы сказали "медицинский документ". Почему вам следует обращаться за советом к общедоступному интернет-форуму, а не к известной компании по обеспечению безопасности, такой как RSA, Security Innovation, OnBoard Security? Я подумал об этих именах, потому что RSA была изобретена соучредителями RSA, а Security Innovation и OnBoard Security некоторое время владели NTRU.
Gravity avatar
флаг tr
Я беру пример медицинского документа только для описания, но это могут быть любые конфиденциальные (с точки зрения пользователя) документы, которые пользователь хочет «зашифровать».
Рейтинг:0
флаг vu

Давайте сначала разберем это.

Во-первых, у нас есть следующие ключи:

  • $K_w$ - ключ рабочей области для шифрования файлов.
  • $K_u$ - пользовательский ключ для условного депонирования $K_w$.

Во-вторых, есть и скрытые переменные.

  • соль для создания $K_u$ от пароля пользователя. БОЛЬШОЙ КРАСНЫЙ ФЛАГ здесь OP берет свои значения из идентификаторов пользователей, где на самом деле это значение должно быть случайным и сохраненным.

  • одноразовый номер для алгоритма шифрования файла. Чтобы зашифровать файл, вам нужен режим работы блочного шифра или потоковый шифр, такому алгоритму шифрования требуется одноразовый номер, чтобы сделать его безопасным для многократного использования одного и того же ключа.Алгоритм шифрования в идеале должен быть аутентифицированным, то есть к зашифрованному тексту должна быть добавлена ​​метка MAC, или просто напрямую использовать алгоритм AEAD, такой как AES-GCM или ChaCha20-Poly1305.

Теперь вернемся к вопросу.

Создайте случайно сгенерированный ключ Kw для рабочей области для шифрования файлов с помощью AES.

Здесь нет ничего серьезного, кроме потенциально большой нагрузки на CSPRNG.

... и сохранил этот зашифрованный ключ "Kw" в базе данных вместе с информацией о пользователе.

Это означает, что вы шифруете $K_w$ с $K_u$ и депонировать зашифрованный $K_w$ в базе данных.

Gravity avatar
флаг tr
Спасибо за ваши отзывы. Поэтому сначала не используйте идентификатор пользователя в качестве соли, а сгенерируйте случайную соль и сохраните ее с информацией о пользователе. Во-вторых, используйте AES-GCM для шифрования файлов.
Gravity avatar
флаг tr
На последнем этапе в базе данных будет сохранено зашифрованное yes Kw. Для меня проблема безопасности заключается в том, что пароль пользователя отправляется в явном виде (обязательно с https) на серверную часть во время входа в систему, чтобы хакеры могли прослушивать и извлекать чистый пароль пользователя, а затем перестраивать Kw для расшифровки файла. Я прав ? Но я не знаю, есть ли решение для этой точки.

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

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