Actualización (6 de febrero de 2015):
Parece que la clase en cuestión se ha actualizado como respuesta a las respuestas aquí (a través de un problema, ahora cerrado, planteado en github).
Estaba buscando una biblioteca fácil de usar para cifrar archivos en PHP. PHP proporciona funcionalidad de cifrado a través de la biblioteca de mcrypt . Sin embargo, hay muchas opciones de configuración y opciones, suficientes de ellas para cometer muchos errores.
Entonces, en lugar de cometer esos errores, busqué una caída en la clase (licencia de código abierto, sin restricciones de marco) que ya ha descubierto cómo aplicar la funcionalidad de forma segura. Hay muchos ejemplos por ahí, pero parece que no puedo encontrar ningún código que haya sido revisado por cualquier persona con conocimientos previos sobre esto.
El mejor candidato que he encontrado hasta ahora está en github: Pixelfck / SymmetricEncryption
El código parece bastante bien escrito, la clase es bastante compacta y bien comentada, por lo que es al menos una buena señal. Sin embargo, no creo que estemos calificados para juzgar la parte de seguridad.
¿Podría alguien con más antecedentes sobre esto leer el código y ver si hay algún problema?
Actualización de Bounty
Tengo algunas preguntas que espero ver respondidas (no dude en seleccionar la código aparte aún más):
Primero : la clase incluye dos 'implementaciones de la zona de usuario' de funciones criptográficas:
¿Son correctas esas dos implementaciones?
Segundo : algunas cosas "extrañas" que he visto:
- El paso de 'extracción' de HKDF ha sido reemplazado por el uso de PBKDF2. ¿Es esta una idea aceptada para el uso previsto?
- El número de rondas utilizadas para PBKDF2 se agrega (sin cifrar) a la salida de los datos cifrados y se usa sin / antes de ser autentificado por el hmac. ¿No es esto un riesgo?
- PBKDF2 está limitado a un solo 'bloque' solo, ¿no es esto contrario a la forma en que PBKDF2 está diseñado para funcionar?
Tercer : algunas preguntas "menores":
- ¿Es 2 ^ 12 (= 4096) un número mínimo aceptable de rondas para PBKDF2 cuando se usa de esta manera?
- ¿Son 128 bits de sal para PBKDF2 realmente 'con margen de seguridad de sobra'?
- La clave hmac tiene una longitud de 256 bits, ¿es esto suficiente en este caso?
Tal vez me esté preocupando demasiado por esto, pero preferiría no usar una biblioteca de terceros que tenga fallas.