
Simple Encryption in PHP.
composer require defuse/php-encryption
Esta es una librería para cifrar datos con una clave o contraseña en PHP. Requiere PHP 5.6 o superior y OpenSSL 1.0.1 o superior. Recomendamos usar una versión de PHP que aún tenga soporte de seguridad, lo que al momento de escribir esto significa PHP 8.0 o posterior. Usar esta librería con una versión no soportada de PHP podría provocar vulnerabilidades de seguridad.
La versión actual de php-encryption es la v2.4.0. Se espera que esta librería
permanezca estable y reciba soporte de sus autores con correcciones de seguridad y errores hasta al
menos el 1 de enero de 2024.
La librería es un esfuerzo conjunto de Taylor Hornby y Scott Arciszewski, así como de numerosos contribuidores de código abierto.
Lo que distingue a esta librería de otras librerías de cifrado para PHP es, en primer lugar, que es segura. Los autores solían encontrarse a diario con código de cifrado PHP inseguro, por lo que crearon esta librería para aportar más seguridad al ecosistema. En segundo lugar, esta librería es "difícil de usar incorrectamente". Como libsodium, su API está diseñada para ser fácil de usar de forma segura y difícil de usar de forma insegura.
Esta librería no requiere dependencias especiales aparte de PHP 5.6 o superior con las extensiones OpenSSL (versión 1.0.1 o posterior) habilitadas (esto es lo predeterminado). Utiliza random_compat, que está incluida dentro de esta librería para que tus usuarios no necesiten seguir ningún procedimiento de instalación especial.
Comienza con el Tutorial. Puedes encontrar instrucciones para obtener el código de esta librería de forma segura en la documentación de Instalación y Verificación.
Después de haber leído el tutorial y obtenido el código, consulta la documentación formal de cada una de las clases que proporciona esta librería:
Si encuentras dificultades, consulta las respuestas del FAQ. Las soluciones a los problemas más comúnmente reportados se explican allí.
Si eres criptógrafo y quieres entender los detalles más minuciosos de cómo funciona esta librería, consulta la documentación de Detalles de Criptografía.
Si te interesa contribuir a esta librería, consulta la Documentación Interna para Desarrolladores.
Esta librería está pensada para software PHP de servidor que necesite cifrar datos en reposo. Si estás creando software que necesite cifrar del lado del cliente, o construyendo un sistema que requiera soporte de cifrado/descifrado multiplataforma, recomendamos encarecidamente usar libsodium en su lugar.
Si la documentación no es suficiente para que entiendas cómo usar esta librería, entonces puedes ver un proyecto de ejemplo que la utiliza:
Este código no ha sido sometido a una auditoría de seguridad formal y remunerada. Sin embargo, ha recibido muchas revisiones por parte de miembros de la comunidad de seguridad PHP, y los autores tienen experiencia en criptografía. Con toda probabilidad, estás más seguro usando esta librería que casi cualquier otra librería de cifrado para PHP.
Si usas esta librería como parte de tu negocio y te gustaría ayudar a financiar una auditoría formal, por favor contacta a Taylor Hornby.
La clave pública GnuPG utilizada para firmar las versiones actuales y nuevas está disponible en dist/signingkey-new.asc. Su huella digital es:
6DD6 E677 0281 5846 FC85 25A3 DD2E 507F 7BDB 1669
Puedes verificarla contra la página de contacto y el twitter de Taylor Hornby.
Las versiones anteriores se firmaron con una clave (ya caducada) disponible en dist/signingkey-old.asc. La huella digital de la clave antigua es:
2FA6 1D8D 99B9 2658 6BAC 3D53 385E E055 A129 1538
La huella digital de la clave antigua se puede verificar contra la página de contacto y el twitter de Taylor Hornby.
Una firma de esta nueva clave por parte de la clave antigua está disponible en dist/signingkey-new.asc.sig.