PHP 7.2 – El Primer Lenguaje De Programación En Agregar Criptografía Moderna A Su Biblioteca Estándar

Se cerro la fase de votación de RFC para agregar libsodium a PHP 7.2. El resultado fue unánime (37 a favor, 0 en contra).

Cuando la versión 7.2 salga a finales del año, PHP será el primer lenguaje de programación que adopte la criptografía moderna en su biblioteca estándar.

¿Qué es la criptografía moderna?

Se puede decir que una biblioteca de criptografía es moderna si cumple con dos requisitos:

  • Utiliza primitivas rápidas diseñadas para resistir el criptoanálisis de canales laterales (por ejemplo, fugas temporales, oráculos de relleno).
  • Expone una API de alto nivel que es simple y segura por defecto.

Primitivas seguras

Si implementa cifrado de claves públicas y firmas digitales en OpenSSL y Golang, estás forzado a elegir entre RSA y NIST ECC. Ninguna es una buena opción.

La criptografía moderna requiere el uso de primitivas seguras. Para la criptografía de clave pública, o sea las primitivas descritas en RFC 7748 y RFC 8032. Para la criptografía simétrica, que significa el uso de cifrado autenticado en todo momento.

Las curvas NIST (P-256, etc.) no califican como criptografía moderna (aunque su presencia en una biblioteca tampoco se descalifica automáticamente).

Los primitivos de Libsodium incluyen:

  • X25519 (Elliptic Curve Diffie-Hellman sobre Curve25519)
  • Ed25519 (Edwards-curve Digital Signature Algorithm sobre Curve25519)
  • Xsalsa20poly1305 (Cifrado de clave simétrica autenticado que funciona bien en software y no tiene vulnerabilidades de sincronización de caché como software AES)
  • BLAKE2 (Basado en el finalista SHA3 que realiza más rápido que MD5 en software, pero es más seguro que SHA256)
  • Argon2 (Hashing de la contraseña y función de derivación clave)
  • SipHash-2-4 (Hash rápido para tablas hash y estructuras de datos similares)
  • ChaCha20-Poly1305 (Encriptación autenticada con datos asociados)

Pero probablemente no tendrá que preocuparse por estos detalles, ya que también proporciona un …

API simple y segura de alto nivel

Para desencriptar un mensaje:

¿Que significa esto para mi?

Si se desarrolla en PHP y puede actualizar a 7.2 cuando salga, podrás disfrutar de la criptografía moderna como parte del propio lenguaje. Ahora será posible diseñar software que utilice firmas digitales Ed25519 (por ejemplo, para actualizaciones de seguridad automáticas) sin necesidad de que los usuarios instalen una extensión opcional de PHP.

Muchos han reclamado que PHP no es de su agrado, sin embargo, la mayoría de los lenguajes que se propusieron como mejores que PHP en este tema no lo eran.

Aquí están los hechos:

  • Go 1.8 utilizará X25519 y ChaCha20-Poly1305 en su pila TLS, pero no ofrece criptografía de capa de aplicación moderna en su biblioteca estándar. Lo que significa que si quieres usar TLS moderno, puedes hacerlo, pero si quieres cifrar datos en reposo, debes ir fuera de la biblioteca estándar o usar la criptografía de clave pública de los años 90.
  • La mayoría de los otros lenguajes de programación (Ruby, Erlang, Node.js) sólo ofrecen OpenSSL, que invita a los desarrolladores a (mal) usar RSA, cifrar usando AES en modo ECB y nunca autenticar sus cifrados. Además, muchos de estos lenguajes todavía usan el espacio de usuario PRNG de OpenSSL y no exponen una API sana para acceder al CSPRNG del sistema operativo. (PHP resolvió esto en 7.0.)

No importa lo que sientas acerca de PHP, la realidad es que PHP es el primer lenguaje de programación que se compromete a la criptografía moderna en su biblioteca estándar, que viene en la versión 7.2.0.

 

Enlace original: https://laravelonfire.com/2017/02/14/php-7-2-el-primer-lenguaje-de-programacion-en-agregar-criptografia-moderna-a-su-biblioteca-estandar/

Be the first to comment

Leave a Reply