Рейтинг:0

Безопасна ли эта асимметричная схема AES GCM +?

флаг cn

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

  • Создать 32-байтовый случайный ключ внутри браузера с window.crypto.getRandomValues

  • использовать криптобиблиотека sjcl за:

    • выбор алгоритма AES шифр.aes
    • генерация 4 слов случайного вектора IV случайные.randomWords(4, 0)
    • шифрование файла в режиме GCM режим.gcm.encrypt (тег 128 бит)
    • объединение IV и зашифрованный вывод, создающий двоичный файл1
  • использовать Библиотека сети и криптографии NaCl, с помощью инструмента, реализующего ECIES, для:

    • создание шифрованиеКлючевая пара с использованием nacl.box.keyPair.fromSecretKey
    • шифрование вышеуказанного 32-байтовый случайный ключ с эфемерный PublicKey (с использованием х25519 часть схемы x25519-xsalsa20-poly1305) производство двоичный файл2, пакет, содержащий зашифрованный ключ AES и, среди прочих метаданных, эфемерный PublicKey.
  • конкат двоичный файл2 + а-разделитель + двоичный файл1 производство finalBinaryFile

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

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

kelalaka avatar
флаг in
В чем вопрос?
флаг cn
Я четко выразил вопрос в заголовке. Спасибо.
kelalaka avatar
флаг in
Почему бы вам не использовать хорошо поддерживаемые программы, такие как Veracrypt, или библиотеки, такие как [age] (https://github.com/FiloSottile/age) (_age — это простой, современный и безопасный инструмент шифрования файлов, формат и библиотека Go_ .)
Maarten Bodewes avatar
флаг in
Полные обзоры криптографических протоколов и схем не по теме. Использование ECIES для шифрования секретного ключа немного фальшиво; вы можете использовать саму часть соглашения о ключе, чтобы установить ключ. Конечно, вам также нужно отправить эфемерный открытый ключ для ECIES, чего не хватает в вашем протоколе. Я не понимаю, как вы установили пару статических ключей получателя или как доверяют этому открытому ключу, поэтому описание, безусловно, не является безошибочным и полным.
флаг cn
Спасибо за ваши замечания, Мартен. На самом деле я забыл упомянуть, что в `binaryFile2` также есть эфемерный открытый ключ, поэтому я обновлю вопрос. Я знаю, что спрашиваю о действительности независимо от процесса регистрации статической пары ключей и относительной надежности.
Рейтинг:2
флаг si

NaCL предоставляет набор crypto_box методы, которые делают это все за один раз. Libsodium предоставляет еще более простой набор crypto_box_easy методы.

флаг cn
Спасибо за ваше предложение. Моя реализация должна быть в javascript, поэтому я просто использую набор NaCl, который предлагает и управляет поколениями пар ключей.
SAI Peregrinus avatar
флаг si
Также есть JS-привязки для libsodium.

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

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