Update (6 February 2015):
It seems like the class in question has actually updated as a response to the answers here (through an issue, now closed, raised on github).
Stavo cercando una libreria facile da usare per crittografare i file in PHP. PHP fornisce funzionalità di crittografia tramite la libreria mcrypt . Tuttavia, ci sono molte opzioni e opzioni di configurazione, sufficienti per fare molti errori.
Quindi, invece di commettere quegli stessi errori, ho cercato un calo di classe (licenza open source, nessun vincolo di struttura) che ha già capito come applicare la funzionalità in modo sicuro. Ci sono molti esempi là fuori, ma non riesco a trovare alcun codice che sia stato recensito da chiunque abbia qualche conoscenza di base su questo.
Il miglior candidato che ho trovato finora è su github: Pixelfck / SymmetricEncryption
Il codice sembra scritto abbastanza bene, la classe è abbastanza compatta e ben commentata, quindi questo è almeno un buon segno. Eppure io non penso di essere qualificato per giudicare la parte della sicurezza di esso.
Qualcuno con uno sfondo più approfondito può leggere il codice e vedere se ci sono problemi?
Aggiornamento bounty
Ho alcune domande che spero di vedere risposte (non esitate a scegliere il codice a parte ancora di più):
Prima : la classe include due "implementazioni per l'utente" di funzioni crittografiche:
Queste due implementazioni sono effettivamente corrette?
Secondo : alcune cose "strane" che ho individuato:
- Il passaggio "estratto" di HKDF è stato sostituito dall'uso di PBKDF2, è un'idea accettata per l'uso previsto?
- Il numero di round utilizzati per PBKDF2 viene aggiunto (non crittografato) all'output dei dati crittografati e utilizzato senza / prima dell'autenticazione da parte di hmac. non è un rischio?
- PBKDF2 è limitato a un solo "blocco", non è contrario a come è previsto che funzioni PBKDF2?
Terzo : alcune domande "minori":
- Is 2 ^ 12 (= 4096) rappresenta effettivamente un numero minimo accettabile di round per PBKDF2 se usato in questo modo?
- I 128 bit di sale per PBKDF2 sono effettivamente sufficienti "con margine di sicurezza da risparmiare"?
- La chiave hmac è lunga 256 bit, è sufficiente in questo caso?
Forse mi preoccupo troppo di questo, ma preferirei non usare una libreria di terze parti che è difettosa.