Doresc să folosesc criptarea asimetrică oferită de un instrument pentru a-mi cripta fișierele și aș dori să știu dacă următorul proces de criptare funcționează, indiferent de utilizarea poate nu optimă.
Generați a 32-bytes-cheie-aleatorie
în interiorul browserului cu window.crypto.getRandomValues
utilizare biblioteca cripto sjcl pentru:
- alegerea algoritmului AES
cifr.aes
- generând 4 cuvinte aleator IV vector
random.randomWords(4, 0)
- criptarea unui fișier în modul GCM
mode.gcm.encrypt
(etichetă 128 de biți)
- concating IV și ieșire criptată producând
binaryFile1
utilizare Biblioteca NaCl Networking and Criptography, printr-un instrument care implementează ECIES, pentru:
- generând o
criptareKeypair
folosind nacl.box.keyPair.fromSecretKey
- criptarea celor de mai sus
32-bytes-cheie-aleatorie
cu ephemeralPublicKey
(folosind x25519
parte a schemei x25519-xsalsa20-poly1305
) producerea binaryFile2
, un pachet care conține cheia AES criptată și, printre alte metadate, codul ephemeralPublicKey
.
concat binaryFile2
+ a-separator
+ binaryFile1
producând finalBinaryFile
păstrează finalBinaryFile
pe cloud până când este necesar să îl descărcați și apoi să îl decriptați prin procesul invers, folosind cheie secreta
Detin.
Pentru a cripta fișierele, aș putea folosi direct cheia simetrică menținând-o în siguranță, dar aș dori să folosesc o bază de date de chei publice statice partajate, a căror încredere o pot considera valabilă.