Sto sviluppando una semplice utility per risolvere un problema molto specifico: voglio memorizzare tutte le mie foto su cloud. Immagini di famiglia, niente di eccentrico, illegale o mortale. i requisiti sono:
Voglio che siano almeno "oscurati", come in "non automaticamente visualizzabili e indicizzabili quando qualcuno spazza il mio account di archiviazione", come Google o Microsoft quando raccolgono materiale per addestrare i loro servizi cognitivi o qualsiasi altra società. co.nz dà accesso ai miei file a. Meglio sarebbe sicuramente crittografato, ovviamente.
Devo essere in grado di rilevare le modifiche a una singola immagine e caricare solo quella, evitando così enormi archivi.
Ho sviluppato una sequenza di operazioni usando solo le librerie standard (apache commons crypto principalmente) che dovrebbero essere protette dagli standard attuali:
[una volta, quando si esegue la crittografia]
- inserisci una password (qualsiasi lunghezza)
[i passaggi successivi vengono ripetuti per ciascun file]
- genera un secureRandom salt (32 byte)
- calcola una password di 16 byte + hash sale usando PBKDF2WithHmacSHA512 (1000 iterazioni)
- genera un secureRandom IV (16 byte)
- ZIP il singolo file (questo è modificabile in quanto inutile per le immagini)
- AES codifica il file utilizzando AES / CBC / PKCS7Padding
So che questo non nasconderà il nome, la natura e la dimensione dei miei file, (contrariamente a quello che tenta di fare Cryptomator, ad esempio, ma webdav è un problema quando si tenta di rilevare i cambiamenti di file), ma dovrebbe andare bene da me a meno che non abiliti in qualche modo il cracking dell'intera crittografia.
Ora ho bisogno di memorizzare il sale e l'IV, e attualmente ho deciso di memorizzarli in un file JSON di metadati nello stesso posto in cui conserverò il file crittografato. Ho letto e capito che l'IV deve essere casuale ma non ha bisogno di essere segreto, correggimi se sbaglio, ma per quanto riguarda il sale hash? Posso memorizzarlo con la IV e il file crittografato senza minacciare alcuna parte della crittografia?