Offrire uno scenario di privacy con la libreria PHP mcrypt

3

prima di tutto, scusa se la mia domanda non è chiara, perché l'inglese non è la mia prima lingua. Ad ogni modo, lasciatemi spiegare il concetto che sto cercando di risolvere come la soluzione migliore. Ho alcuni ragazzi e vogliono privacy per il loro cloud (hosting dei loro file). Ok, la crittografia è la strada da percorrere, credo. Così ho fatto alcune ricerche veloci e ho scoperto che posso criptare i loro file con PHP e memorizzarli nel server del cloud. Ma in questo modo, per decodificare i loro file e dare loro un download del file originale, avrò bisogno di ottenere la loro chiave di crittografia (che dovrebbe essere segreta e conservata solo dal lato client) e usarla PHP mcrypt, per decifrare il file. In questo modo, creo la possibilità di "agganciare" le loro chiavi di crittografia e di decodificare i loro file anche senza il permesso. Ok, non faccio finta di farlo, ma voglio "lavarmi le mani" (forse questa espressione non funziona bene in inglese, ma cerca di capire) su ciò che stanno ospitando lì. Se in qualsiasi momento, per motivi legali, mi viene richiesto di ottenere la chiave di qualche utente e di decrittografare i file, semplicemente non voglio avere alcun modo per farlo. C'è un modo per farlo con la libreria PHP mcrypt? Forse facendo qualche funzione di hashing con la loro chiave di crittografia (solo supponendo) o magari elaborando il file scaricato sul lato client tramite javascript (è anche possibile?)

    
posta user3810691 02.02.2015 - 18:33
fonte

1 risposta

3

I have some guys, and they want privacy for their cloud (hosting their files).

Oggi sembra un obiettivo comune.

Ok, cryptography is the way to go I believe.

A destra.

So I did some quick research and found that I can crypt their files with PHP and store them crypted in the cloud's server. But this way, to decrypt their files and give them a download of the original file, I'll need to get their crypt key (supposed to be secret and kept only in client side) and use it in PHP mcrypt, to decrypt the file.

Se stai digitando la parola MCRYPT nel tuo codice PHP, stai sbagliando .

This way, I create a possibility to 'hook' their crypt keys, and decrypt their files even without the permission. Ok, I don't pretend to do that, but I want to "wash my hands" (maybe this expression doesn't work well in English, but try to understand) about what they are hosting there. If anytime, for legal purposes I get obligated to get the key of some user and decrypt the files, I just don't want to have any ways to do that. Is

Quindi, in pratica, stai realizzando i limiti della crittografia simmetrica: se hai una copia della chiave, puoi decrittografarla.

Is there any way to do this with the PHP mcrypt library? Maybe doing some hashing function with their crypt key (just supposing) or maybe processing the downloaded file in the client side via javascript (is that even possible?)

No, non puoi farlo con mcrypt. Puoi farlo in generale, comunque.

Una soluzione migliore di Mcrypt

Usa solo libsodium . In particolare, è possibile utilizzare libsodium.js in un browser Web, un'estensione di Chrome o un'applicazione desktop Electron. Cripta i file con crypto_box_seal() , decrittali sul computer dell'utente con crypto_box_seal_open() .

Se devi memorizzare qualcosa nel server (ad es. per la crittografia cross-device), salva solo il sale (per crypto_pwhash() e crypto_box_seed_keypair() ) e chiedi agli utenti di ricordare una password.

Ciò ti consente di progettare la tua applicazione in relazione al principio del privilegio minimo e di non visualizzare mai il testo cifrato. I tuoi utenti non devono fidarsi del tuo operatore di server per nulla tranne la disponibilità. Anche se ricevi un mandato di comparizione, non puoi decodificare i loro file.

    
risposta data 02.01.2016 - 04:30
fonte

Leggi altre domande sui tag