OATH
OATH La iniciativa (Open Authentication ) es una colaboración apoyada por varios miembros de la industria de la seguridad para desarrollar una arquitectura de autenticación fuerte abierta e interoperable. Este objetivo se logra mediante la definición de estándares abiertos a disposición de todos.
OATH El ecosistema está formado por fabricantes de dispositivos(tokens, chips, tarjetas inteligentes, ordenadores, teléfonos móviles, PDA, tabletas, etc.), fabricantes de plataformas (servicios web, gestores de identidad, servidores de aplicaciones, sistemas de federación de identificación, etc.), fabricantes de aplicaciones (VPN, CRM, ERP, DRM, comercio electrónico, itinerancia, Wi-Fi, etc.) e integradores de sistemas (ISP, organismos gubernamentales, marcas de tarjetas de crédito, etc.).
Módulo OATH
OATH El HSM puede utilizarse como generador de semillas y como autenticador OTP(One Time Password). La implementación del HSM cumple las normas que se indican a continuación.
Al proporcionar un límite criptográfico seguro, un entorno controlado y algoritmos certificados, el HSM ofrece ventajas para su adopción en un sistema de autenticación fuerte.
OATH El módulo deHSM tiene tres servicios básicos: emisión, autenticación y resincronización:
- Emisión: la emisión consiste en que el HSM genera la semilla, lo que provoca la emisión de un blob, que se devuelve a la aplicación para su almacenamiento en una base de datos. Con el blob guardado en una base de datos externa al HSM, el proceso de emisión es muy flexible, sin generar una carga en el HSM y manteniendo el secreto y la confidencialidad necesarios.
- Autenticación: el servicio de autenticación del módulo es sin duda el más utilizado en el día a día de la producción. Cuando la aplicación necesita autenticarse, debe recuperar el blob de la base de datos, enviarlo al HSM y recibir el resultado junto con el blob actualizado, para devolverlo a la base de datos.
- Resincronización: el servicio de resincronización consiste básicamente en abrir la ventana de tolerancia normal y pedir al usuario que introduzca los OTP n y n+1.
Escenarios de generación
En los escenarios de generación y autenticación que se describen a continuación, lo que cambia es el origen de la semilla y cómo la recibe la aplicación para crear el blob y la envía al usuario (como semilla o incrustada en un token físico). Una vez creado el blob, la autenticación en cualquier escenario sigue siempre el mismo formato. En los escenarios siguientes, no importa si el token es HOTP o TOTP.
Escenario I
Escenario I: Token de hardware. La semilla es generada por el fabricante del token y enviada en formato PSKC.
-
Generación
- masterLa aplicación selecciona o genera una clave ;
- La aplicación recibe el archivo PSKC y la clave de transporte;
- La aplicación pide al HSM que traduzca el archivo PSKC a blob;
- HSM devuelve blob;
- La aplicación recibe el blob, crea una relación entre el blob y el usuario y lo almacena en la base de datos;
- La aplicación envía el token físico al usuario;
--- title: OATH - Geração Cenário I --- %%{init: { 'themeVariables': { 'noteBorderColor': 'red' } } }%% sequenceDiagram autonumber participant factory as Fabricante<br>do Hardware Token participant app as Aplicação participant hsm as HSM participant db as Base de dados factory ->> factory: Geração da Seed note over factory: Seed factory ->> factory: Envelopa Seed destroy factory factory ->> app: PSKC +<br>Tranport Key app ->> hsm: PSKC +<br>Tranport Key app ->> hsm: Seleciona<br>Master Key hsm ->> hsm: Tradução<br>PSKC p/ blob destroy hsm hsm ->> app: blob app ->> app: seta relação<br>blob x user app ->> db: blob
-
Autenticación: véase más abajo.
Escenario II
Escenario II: Token de hardware. La semilla es generada por el fabricante del token y enviada en texto claro.
-
Generación
- masterLa aplicación selecciona o genera una clave ;
- La aplicación recibe una semilla en texto claro;
- OATHLa aplicación prepara una estructura blob;
- OATH masterLa aplicación solicita al HSM que cifre el blob con la clave ;
- HSM devuelve los datos encriptados, que son los blob;
- La aplicación recibe el blob, crea una relación entre el blob y el usuario y lo almacena en la base de datos;
- La aplicación envía el token físico al usuario;
--- title: OATH - Geração Cenário II --- %%{init: { 'themeVariables': { 'noteBorderColor': 'red' } } }%% sequenceDiagram autonumber participant factory as Fabricante<br>do Hardware Token participant app as Aplicação participant hsm as HSM participant db as Base de dados factory ->> factory: Geração da Seed note over factory: Seed destroy factory factory ->> app: Seed<br>em texto claro app ->> hsm: Seleciona<br>Master Key app ->> app: Prepara<br>blob OATH aberto app ->> hsm: blob aberto destroy hsm hsm ->> app: blob cifrado app ->> app: seta relação<br>blob x user app ->> db: blob cifrado
-
Autenticación: véase más abajo.
Escenario III
Escenario III: Software Token. La semilla es generada por el usuario y recibida en texto claro.
-
Generación
- masterLa aplicación selecciona o genera una clave ;
- OATH El usuario genera y exporta semillas en su aplicación (teléfono inteligente, ordenador de sobremesa, etc.);
- El usuario envía la semilla a la aplicación;
- La aplicación recibe una semilla en texto claro;
- OATHLa aplicación prepara una estructura de datos ;
- OATH masterLa aplicación pide al HSM que cifre la estructura de datos con la clave ;
- HSM devuelve una estructura cifrada, que es el blob;
- La aplicación recibe el blob, crea una relación entre el blob y el usuario y lo almacena en la base de datos;
--- title: OATH - Geração Cenário III --- %%{init: { 'themeVariables': { 'noteBorderColor': 'red' } } }%% sequenceDiagram autonumber actor user as Usuário participant app as Aplicação participant hsm as HSM participant db as Base de dados user ->> user: Geração da Seed note over user: Seed destroy user user ->> app: Seed<br>em texto claro app ->> hsm: Seleciona<br>Master Key app ->> app: Prepara<br>blob OATH aberto app ->> hsm: blob aberto destroy hsm hsm ->> app: blob cifrado app ->> app: seta relação<br>blob x user app ->> db: blob cifrado
-
Autenticación: véase más abajo.
Escenario IV
Escenario IV: Software Token. HSM genera la semilla.
-
Generación
- masterLa aplicación selecciona o genera una clave ;
- OATHLa aplicación solicita un problema de blob;
- HSM genera la semilla, prepara el blob y lo devuelve a la aplicación;
- La aplicación recibe el blob, crea una relación entre el blob y el usuario y lo almacena en la base de datos;
- La aplicación envía el blob al HSM y solicita la semilla en texto claro;
- La aplicación envía la semilla al usuario, normalmente utilizando un canal seguro;
- OATH El usuario importa las semillas a su aplicación (teléfono inteligente, ordenador de sobremesa, etc.);
- Autenticación: véase más abajo.--- title: OATH - Geração Cenário IV --- %%{init: { 'themeVariables': { 'noteBorderColor': 'red' } } }%% sequenceDiagram autonumber actor user as Usuário participant app as Aplicação participant hsm as HSM participant db as Base de dados app ->> hsm: Seleciona<br>Master Key app ->> hsm: Solicita blob hsm ->> hsm: Gera Seed note over hsm: Seed hsm ->> app: blob destroy hsm hsm ->> app: Seed app ->> app: seta relação<br>blob x user app ->> db: blob app ->> user: Seed user ->> user: Importa Seed<br>na app local
Autenticación
La autenticación de usuarios en cualquier escenario sigue el mismo guión.
- El usuario envía la OTP generada a la aplicación;
- La aplicación recupera el blob del usuario de la base de datos y solicita la verificación al HSM pasándole el blob y la OTP;
- HSM procesa la solicitud y devuelve el resultado y el blob procesado;
- La aplicación recibe el blob y actualiza la base de datos;
- La aplicación informa al usuario del resultado de la autenticación;
---
title: OATH - Autenticação
---
sequenceDiagram
autonumber
actor user as Usuário
participant app as Aplicação
participant hsm as HSM
participant db as Base de dados
user ->> app: OTP
db ->> app: blob
app ->> hsm: blob +<br>OTP
hsm ->> hsm: Verifica e<br>atualiza blob
destroy hsm
hsm ->> app: Resultado +<br>blob atualizado
app ->> db: blob atualizado
app ->> user: Resultado
Glosario
- otp: (one time password), contraseña de un solo uso
- Token hardware: dispositivo físico que genera otp a partir de una semilla, normalmente identificado por un número de serie único y del tamaño de un llavero. Es a prueba de manipulaciones.
- token de software: dispositivo que genera otp en software, normalmente instalado en un dispositivo móvil(teléfono inteligente). Es menos seguro que el token físico.
- semilla: secuencia aleatoria de bytes utilizada como material criptográfico diversificador para generar otp. Debe mantenerse en secreto desde su generación hasta su uso, incluido el transporte. Cada token hardware o token software debe estar asociado a una única semilla.
- paso de tiempo: intervalo utilizado para incrementar el cálculo TOTP para cada OTP. El tiempo en segundos entre cada generación de OTP.
- factor móvil: intervalo utilizado como incremento en el cálculo de HOTP para cada OTP. Contado por eventos.
- T0: Valor de tiempo UNIX (segundos desde la hora EPOCH) para empezar a contar los pasos de tiempo.
- truncation offset: método de truncamiento del cálculo HMAC para extraer el OTP.
- HOTP: (HMAC-based One-time Password Algorithm) estándar para generar otp por evento, normalmente provocado por el usuario, como pulsar un botón en el token, es decir, cada vez que el usuario pulsa el botón en el token, se genera una nueva otp.
- TOTP: (Time-based One-time Password Algorithm) norma para generar otp por tiempo; se genera una nueva otp en cada intervalo definido por el token, independientemente de la acción del usuario.
- blob(objeto binario grande), una estructura cifrada que contiene información para la autenticación otp. El blob es completamente opaco fuera del HSM. La clave que cifra el blob es AES (128, 192 o 256 bits). La información contenida en el blob incluye la semilla, el tipo (HOTP o TOTP), el intervalo de generación y la hora de inicio (en el caso de TOTP) y mecanismos de protección contra ataques de repetición.
- resincronización: proceso de ajuste de los contadores internos de una blob a los valores generados por el token físico o soft token para que la autenticación siga funcionando correctamente. Este proceso suele realizarse aumentando temporalmente la ventana de tolerancia y buscando valores de otp por el HSM, informando el usuario de dos o más otps generados en secuencia por el token.
- masterkey: Clave AES en el HSM que encripta el blob.
- clave de transporte: clave que encripta las semillas correspondientes a los tokens según la norma PSKC, para el transporte entre el fabricante del token y el integrador del sistema. Suele derivarse de una contraseña.
- pskc: (Portable Symmetric Key Container), un estándar para el transporte y la entrega seguros de semillas, basado en criptografía simétrica con derivación de clave por contraseña y formato XML.
- traducción pskc: proceso de importación de las semillas en formato PSKC, descifrado de las mismas y generación de blob_s individuales para su almacenamiento en la base de datos. El proceso de traducción para desencriptar el formato PSKC y encriptar el _blob se realiza dentro del HSM. Normalmente, un archivo PSKC contiene varias semillas encriptadas bajo la misma clave de transporte; cada semilla corresponderá a un blob.
- base de datos: estructura para almacenar los blobs generados por el HSM. Puede ser, por ejemplo, un sistema de archivos o un DBMS (Database Management System). master No es necesaria una protección adicional para el blob almacenado, ya que sólo se puede acceder a su contenido con la clave AES delHSM.
Referencias
- Iniciativa OATH
- OATH Arquitectura de referencia Versión 2.0
- HOTP: Algoritmo OTP basado en HMAC RFC 4226
- TOTP - Algoritmo de contraseña de un solo uso basado en el tiempo RFC 6238
- PSKC - Contenedor portátil de claves simétricas, RFC 6030
API OATH
OATHDocumentación de la API específica del módulo, con funciones, clases y ejemplos.