Я хочу использовать асимметричное шифрование, предлагаемое инструментом для шифрования моих файлов, и я хотел бы знать, работает ли следующий процесс шифрования, независимо от, возможно, не оптимального использования.
Создать 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
в облаке до тех пор, пока не потребуется его загрузить, а затем расшифровать в обратном порядке с помощью Секретный ключ
Я владею.
Чтобы зашифровать файлы, я мог бы напрямую использовать симметричный ключ, сохраняя его в безопасности, но я хотел бы использовать базу данных общих статических открытых ключей, надежность которых я могу считать действительной.