Рейтинг:1

Проходит ли мой псевдокод асимметричного/симметричного шифрования смешанных файлов проверку работоспособности?

флаг sk

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

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

Начальная настройка:
- Создать пару ключей RSA
- Запрашивать у пользователя пароль и предполагать, что он использует достаточно безопасный пароль.
- Зашифровать закрытый ключ в формате DER, pkcs=8, схема = scryptAndAES256-CBC с паролем пользователя

Для каждого файла:
- Сгенерировать случайный сеансовый ключ размером 32 байта
- Зашифровать ключ сеанса с помощью начального открытого ключа
- Создать случайный одноразовый номер из 12 байтов
- Запись в выходной файл:
  - Зашифрованный сеансовый ключ
  - одноразовый
  - Зашифрованный файловый поток с помощью AES GCM с использованием случайного сеансового ключа 32 байт и одноразового номера 12 байт.

При расшифровке файла
- Запрашивать у пользователя пароль, расшифровывать начальный закрытый ключ
- Чтение зашифрованного сессионного ключа и одноразового номера с начала файла
- Расшифровать сеансовый ключ с помощью начального закрытого ключа
- Расшифровать файловый поток с помощью сеансового ключа и одноразового номера.

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

Есть ли какие-либо проблемы с этим планом или это будет безопасный способ защитить конфиденциальность файлов, предполагая, что псевдокод был правильно реализован?

DannyNiu avatar
флаг vu
Схема типичная и явных изъянов пока не вижу. Но если бы это был я, я бы не позволил задаче доказательства безопасности лишить меня сна и волос — я бы использовал существующий зарекомендовавший себя продукт для шифрования файлов, такой как 7-zip (или RAR, если вы можете сэкономить немного денег), хотя они не не имеют шифрования с открытым ключом.
DannyNiu avatar
флаг vu
PGP и GnuGPG тоже хороши, я думаю, у них есть производные GUI.
fgrieu avatar
флаг ng
«Зашифровать ключ сеанса с помощью исходного открытого ключа» и «расшифровать исходный закрытый ключ» сильно занижены; там можно сделать массу ошибок, например, использовать $x\mapsto x^e\bmod n$ для шифрования сеансового ключа или использовать [RSAES-PKCS1-v1_5](https://pkcs1.grieu.fr/#page =23). В меньшей степени «Создание пары ключей RSA» и параметризация scrypt также недостаточно указаны, даже если мы рассматриваем только безопасность.
Maarten Bodewes avatar
флаг in
Также имейте в виду, что повторение известной комбинации ключа + IV для структурированных данных, таких как ключ RSA, является опасной практикой и может привести к утечке информации о упакованном ключе (**PS Привет, поставщики HSM, вы слушаете?**)

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

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