En el panorama digital actual, el cifrado de datos es una parte importante de cada aplicación web. Este artículo explora por qué desarrollé un paquete que aprovecha el poder del cifrado XChaCha20-Poly1305 de Libsodium y cómo puede potenciar la seguridad de su aplicación Laravel mientras minimiza los gastos generales.
El marco Crypt Facade de Laravel proporciona una interfaz conveniente para el cifrado y descifrado de datos confidenciales, como tokens de autenticación sin estado o marcos de comunicación entre servicios.
La implementación de cifrado del marco predeterminado, basada en AES-256-CBC a través de OpenSSL, es una base sólida generalmente segura, pero siempre hay margen de mejora, especialmente cuando el rendimiento y la usabilidad son críticos.
Si bien AES-256-CBC a través de OpenSSL todavía se considera seguro, se está volviendo obsoleto. Además, su dependencia de OpenSSL puede introducir vulnerabilidades potenciales dependiendo de la versión y configuración específicas.
A partir de PHP 7.2, la extensión Sodium se incluye con PHP Core. Libsodium prioriza primitivas criptográficas modernas y bien examinadas como XChaCha20-Poly1305 y Ed25519. Si bien AES puede ser rápido con la aceleración de hardware, XChaCha20-Poly1305, como implementación de software, lo supera sin instrucciones especiales de hardware.
// Default AES-256-CBC Encrypter $encrypter = new Illuminate\Encryption\Encrypter($key, 'aes-256-cbc'); $start = microtime(true); $results = []; for ($i = 0; $i encrypt(['user_id' => $i]); } $elapsed = microtime(true) - $start; // 4.08 seconds
// Custom XChaCha20-Poly1305 Encrypter $encrypter = new Blu3blaze\Encrypter\Encrypter($key); $start = microtime(true); $results = []; for ($i = 0; $i encrypt(['user_id' => $i]); } $elapsed = microtime(true) - $start; // 1.79 seconds
El cifrado integrado codifica el texto cifrado, el vector de inicialización y el valor de la etiqueta como representación Base64 del objeto JSON, lo que aumenta significativamente la longitud del token.
Cambiar al algoritmo XChaCha20 elimina la necesidad de codificar JSON; nonce se puede agregar al texto cifrado como una cadena binaria.
// Default AES-256-CBC Encrypter $encrypter = new Illuminate\Encryption\Encrypter($key, 'aes-256-cbc'); $token = $encrypter->encrypt([ 'user_id' => '10296ab5-88b8-4dff-b7cf-2840b879e6dc' ]); // 312 characters
// Custom XChaCha20-Poly1305 Encrypter $encrypter = new Blu3blaze\Encrypter\Encrypter($key); $token = $encrypter->encrypt([ 'user_id' => '10296ab5-88b8-4dff-b7cf-2840b879e6dc' ]); // 139 characters
La biblioteca integrada utiliza la variante Base64 original. Debido a esto, usar un token como parte de la URL o como uno de los parámetros GET requiere una transformación adicional de Base64 a Base64URLSafe.
Codificar texto cifrado inmediatamente en Base64URLSafe no tiene desventajas y permite la transferencia segura de tokens en cualquier entorno.
1) Instalar el paquete a través del compositor
composer require blu3blaze/laravel-xchacha20-encrypter
2) Modificar la lista de proveedores de servicios en bootstrap/providers.php
3) Disfruta de la fachada de la Cripta con el algoritmo XChaCha20-Poly1305
use Illuminate\Support\Facades\Crypt; $token = Crypt::encrypt([ 'user_id' => '73d430f0-d39e-4642-a37e-9ef791b90d11' ]); /* TAl1Sz4DTspE8ZzTOC6Q.....Ug5t4XcWqoiB6CWRak9Y */ $tokenData = Crypt::decrypt($token); /* ['user_id' => '73d430f0-d39e-4642-a37e-9ef791b90d11'] */Conclusión
Al adoptar el paquete blu3code/laravel-xchacha20-encrypter, puede aprovechar los beneficios del algoritmo de cifrado moderno y desbloquear importantes mejoras de rendimiento en sus aplicaciones Laravel. Esto se traduce en tiempos de respuesta más rápidos, carga reducida del servidor y un entorno más seguro para los datos de sus usuarios. ¡Pruébalo y comprueba la diferencia por ti mismo!
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3