Saltar al contenido

sysPass se está refactorizandoMantente al día de las próximas novedades.Sigue el progreso

Encriptación

Documentación para sysPass 3.0.0Última revisión 05/01/2019

Estos documentos se revisaron por última vez para sysPass 3.0.0 y puede que no describan la versión actual.

Warning: Si aún utiliza versiones de sysPass <= 2.0 se recomienda actualizar a la versión 2.1 para implementar las mejoras de seguridad en la encriptación (CVE-2017-5999)

La encriptación de sysPass está basada en AES-256 en modo CTR mediante el uso del módulo OpenSSL de PHP. Para el manejo de los módulos y funciones de encriptación se utiliza la librería Defuse/php-encryption

Los datos encriptados (hasta versión 2.0) son:

  • Claves de las cuentas
  • Datos de campos personalizados
  • Exportación en formato XML de sysPass

Para hacer uso de la aplicación, por primera vez, es necesario conocer la clave maestra o la clave maestra temporal (ver temporary master key), ya que sólo se almacena un hash generado mediante Blowfish con un salt generado usando el generador de números aleatorios MCRYPT_DEV_URANDOM. Para la generación del hash en Blowfish se utiliza un coste de 10 para las iteraciones del algoritmo.

Tras hacer login con la clave maestra, ésta se almacena en los datos del usuario. Para su almacenamiento encriptado genera una llave segura usando la clave, el login del usuario y un salt generado con openssl_random_pseudo_bytes y almacenado en la configuración de sysPass bajo la etiqueta “passwordSalt”.

En los siguientes inicios de sesión la clave maestra es recuperada desde los datos del usuario y desencriptada usando la clave, el login del usuario y el salt generado en la configuración de sysPass. Esta clave es almacenada en la sesión del usuario mediante la encriptación de la misma con una llave segura usando ID de sesión de PHP y la hora UNIX de inicio de la sesión.

Note: La llave de sesión regenerada cada 120 segundos.

En el caso de que la clave maestra sea cambiada se solicitará a todos los usuarios la nueva clave o una clave maestra temporal (ver temporary master key).

Si un usuario canbia su clave de acceso, en el siguiente login, se le solicitará la clave anterior para poder obtener la clave maestra. Si no es posible obtener la clave maestra, se le solicitará.

Clave Maestra Temporal

Es posible generar una clave maestra temporal para su uso por los usuarios de la aplicación, así no es necesario conocer la clave maestra original.

Para la generación de la clave maestra temporal se utiliza la clave maestra original encriptada con una llave segura protegida con una clave generada usando openssl_random_pseudo_bytes cuyo hash Blowfish es almacenado en la tabla “config” de la base de datos.

Note: Para la comprobación de la clave maestra temporal sólo se utiliza el hash generado con Blowfish

PKI

Para mejorar la seguridad de los datos enviados, se hace uso de PKI para la encriptación de las claves que son enviadas desde los formularios de la aplicación.

Las claves pública y privada son generadas en el directorio “config” de la aplicación.

Diagramas

Proceso de Login

Proceso de Login

Proceso de Clave Maestra

Proceso de Clave Maestra

Proceso de Clave Maestra Temporal

Proceso de Clave Maestra Temporal

Proceso PKI

Proceso PKI

Warning: Tener en cuenta que el mayor riesgo de seguridad está en los propios usuarios, ya que una clave comprometida puede causar una brecha de seguridad.

Un servidor de sysPass comprometido puede ser peligroso si la base de datos está junto al servidor web, debido a que los datos de red pueden ser obtenidos por lo que las claves serían reveladas.