Saltar al contenido
Seguridad

Cómo protegemos los certificados de tus clientes

gestiOne guarda en la nube los certificados digitales de los clientes de una gestoría de forma que solo la propia gestoría puede abrirlos. Ni nosotros, ni el proveedor del servidor, ni quien robara una copia de la base de datos puede ver una clave privada. Aquí está cómo, con los algoritmos y también con lo que el modelo no cubre.

En resumen

Conocimiento cero, en una imagen

Imagina una caja fuerte acorazada. La única llave que la abre se fabrica en el ordenador de tu empleado, a partir de su DNIe o su certificado FNMT, cada vez que la necesita, y se destruye al terminar. Nosotros guardamos la caja, pero nunca vemos la llave ni el contenido: si alguien nos robara el almacén entero, se llevaría cajas cerradas que no puede abrir.

«Conocimiento cero» (zero-knowledge) significa eso: la plataforma funciona sin conocer nunca los secretos que custodia. No es una promesa de buen comportamiento, sino una consecuencia de cómo se cifran los datos.

Qué guarda la nube y quién puede abrirlo

Lo que guarda la nube¿Cifrado?Quién puede abrirlo
La clave privada de cada certificado de clienteSí, AES-256-GCM con su propia clave de datos (DEK)Quien tenga la clave de la caja fuerte
La DEK de cada certificadoSí, sellada con HPKE para la clave pública de la caja fuerteQuien tenga la clave de la caja fuerte
El acceso de cada empleado a la caja fuerteSí, sellado con HPKE para su clave de usuarioSolo ese empleado, con su DNIe o FNMT
La clave de usuario de cada empleadoSí, AES-256-GCM con una clave que sale de su certificadoSolo ese empleado, con su DNIe o FNMT
El acceso de recuperaciónSí, sellado con HPKE para el kit en papelQuien tenga el kit
Las notificaciones de DEHú: documento, anexos, acuse y fichaSí, AES-256-GCM, con la DEK sellada para la clave de notificacionesTu equipo, y los móviles de tus clientes que tú apruebes
Los certificados públicos y su cadena (titular, NIF, caducidad)NoSon públicos por naturaleza; hacen falta para avisar de las caducidades
Clientes, empleados, grupos y permisosNoLa API, para aplicar los permisos
El registro de auditoríaNo, encadenado con hashesLa gestoría, para auditar

Lo que la API no recibe nunca: la contraseña del .pfx, ninguna clave privada en claro, ninguna DEK en claro, la clave de la caja fuerte ni la firma de la que se saca la llave de cada empleado.

El operador de la plataforma no tiene ningún permiso dentro de una gestoría: no ve sus clientes, empleados, certificados ni su auditoría. Sus propias acciones quedan en una auditoría de plataforma aparte.

Qué pasa al subir un certificado

Cuando un empleado sube el .pfx o .p12 de un cliente, todo pasa en su equipo antes de que nada salga hacia Internet:

  1. Se abre el fichero con su contraseña, que no se envía ni se guarda, y se comprueba que la clave privada corresponde al certificado.
  2. Se descarga el manifiesto de la caja fuerte de la gestoría y se verifica su firma: lo firmó un administrador con su DNIe o FNMT, y su cadena tiene que llegar a las autoridades de certificación oficiales. Se enseña la huella de la caja fuerte, para poder compararla.
  3. Se genera una clave de datos (DEK) aleatoria de 256 bits, solo para ese certificado.
  4. Se cifra la clave privada con la DEK, con AES-256-GCM, atada a la gestoría y al certificado: copiada a otra gestoría u otro certificado, no se descifra.
  5. Se sella la DEK para la clave pública de la caja fuerte con HPKE (RFC 9180).
  6. Se borran de la memoria la DEK y la clave privada, y a la API solo le llegan el cifrado, la DEK sellada y el certificado público con su cadena.
Jerarquía de claves de gestiOne: el certificado del empleado protege su clave de usuario, que protege su acceso a la clave de la caja fuerte, que protege la DEK de cada certificado, que protege la clave privada del cliente. El kit de recuperación es otra vía a la misma clave de la caja fuerte.
Qué protege a qué, y dónde vive cada clave.

La llave es el certificado del empleado, no una contraseña

gestiOne no saca ninguna clave de una contraseña. La clave que abre el acceso de cada empleado se obtiene de su certificado cualificado (DNIe o FNMT), que solo él puede usar, con su tarjeta y su PIN o con su almacén de certificados:

No hay nada que adivinar ni ataques de diccionario posibles, y el acceso queda atado a algo que la persona ya custodia por ley.

Algoritmos

Todos son estándares públicos, sin negociación ni variantes: la combinación está fija en el código y versionada, con vectores de prueba compartidos por todos sus componentes.

Para quéAlgoritmo
Cifrar la clave privada de cada certificado y cada notificaciónAES-256-GCM, nonce aleatorio de 96 bits y una clave por objeto
Repartir claves (DEK, accesos, recuperación, móviles)HPKE (RFC 9180), modo Base: DHKEM(X25519, HKDF-SHA256), HKDF-SHA256, AES-256-GCM
Sacar la llave de cada empleadoHKDF-SHA256 sobre una firma RSA o un ECDH
Firmas de los empleados (manifiesto, aprobaciones)RSA PKCS#1 v1.5 con SHA-256; ECDSA P-256 y P-384, según su certificado
Integridad de la auditoríaCadena SHA-256 por gestoría
Kit de recuperaciónSecreto aleatorio de 256 bits, en papel
Copias de seguridadage (X25519 y ChaCha20-Poly1305), con claves que no están en el servidor

Aunque el servidor mintiera

La conexión

VersionesTLS 1.3 y TLS 1.2 (como mínimo 1.2)
CifradoSolo intercambio ECDHE con cifrado autenticado; secreto perfecto hacia adelante siempre
Intercambio de clavesX25519MLKEM768 (híbrido poscuántico) primero; X25519, P-256 y P-384
Quién entraSolo con certificado de cliente (mTLS): DNIe o FNMT, verificado contra las autoridades oficiales. Sin él, la conexión no llega a establecerse
RevocaciónSe consulta por OCSP en cada acceso si el certificado sigue siendo válido
CabecerasHSTS, CSP estricta con Trusted Types, sin marcos ni referer

TLS 1.2 sigue admitido porque en TLS 1.3 el navegador firma con RSA-PSS, y el DNIe no lo hace: exigir solo 1.3 dejaría fuera a quien entra con DNIe. Las suites de 1.2 admitidas tienen todas secreto perfecto hacia adelante y cifrado autenticado.

Quién accede a qué

RolPuede
AdministradorTodo dentro de su gestoría: empleados, grupos, clientes, certificados, caja fuerte y auditoría
OperadorUsar los certificados de los clientes de sus grupos y subirles certificados
LectorVer los clientes de sus grupos y la parte pública de sus certificados

No hay usuarios ni contraseñas: se entra con DNIe o FNMT. Nadie se da de alta solo: un administrador crea a cada empleado, y para usar la caja fuerte ese empleado genera en su equipo su clave de usuario, la firma con su certificado y un administrador la aprueba.

Los clientes se organizan en grupos, y cada empleado solo ve los de sus grupos. Precisión: la caja fuerte tiene una clave por gestoría, y el reparto por grupos lo aplica la API, que solo entrega los cifrados que el empleado puede ver. Es control de acceso, no criptografía: protege frente a un empleado, no frente a un servidor comprometido que además tuviera el acceso de un empleado. Cada lectura de un secreto queda en la auditoría.

Cuando alguien deja el despacho

  1. Un administrador le da de baja: sus certificados dejan de servir para entrar y sus claves de usuario quedan revocadas. Como cada petición vuelve a comprobar el certificado, no hay sesiones que caduquen más tarde: la siguiente se rechaza.
  2. Después se renueva la caja fuerte desde la app de escritorio: clave nueva, todas las DEK selladas de nuevo y los accesos antiguos borrados. Ninguna clave que esa persona hubiera guardado abre ya nada de lo que guarda la nube.

La baja corta el acceso futuro. Lo que alguien hubiera copiado fuera del sistema mientras tenía permiso no se puede borrar a distancia: en ese caso, lo definitivo es revocar el certificado del cliente ante su emisor y subir uno nuevo. La auditoría dice qué leyó y cuándo.

Registro de cada uso

Cada operación queda en un registro encadenado por gestoría: fecha y hora, quién (con la huella del certificado con el que entró), qué, sobre qué y desde qué IP. Se registran las altas, bajas y cambios; cada subida, cambio y retirada de certificados; cada lectura del secreto de un certificado; y cada acceso pedido, aprobado o retirado, cada renovación y cada recuperación de la caja fuerte.

Cada entrada lleva el hash SHA-256 de la anterior: cambiar, borrar o reordenar una rompe la cadena, y la verificación dice dónde. La API solo puede añadir y leer en la auditoría, cada copia de seguridad comprueba la cadena contra la anterior y hay un verificador independiente para el auditor.

El agente de tu oficina

El agente de gestiOne es un programa que trabaja solo, día y noche, en un ordenador de tu oficina: consulta DEHú por tus clientes, descarga lo que se acepta, lo cifra antes de subirlo y avisa por correo de lo que vence.

Su seguridad depende de quién tenga acceso a ese ordenador. La llave en el TPM impide copiarla a otro equipo o usarla desde una copia del disco, pero no que alguien use el propio ordenador: quien lo controle, con permisos de administrador o llevándoselo entero, podría llegar a lo que el agente abre. Por eso recomendamos:

Notificaciones de DEHú

La app para tus clientes

La tarjeta virtual en cada puesto

Lo que el modelo no cubre

Contarlo es parte de la garantía:

¿Necesitas más detalle?

Si tu responsable de protección de datos o tu auditor quiere el documento técnico completo o revisar algo en concreto, escríbenos a hola@gestione.pro. También puedes ver cómo funciona gestiOne en vídeo.