Ir al contenido

OATH

La iniciativa OATH (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 consigue definiendo normas abiertas a disposición de todos.

El ecosistema OATH 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

El HSM puede utilizarse como generador de semillas OATH y como autenticador OTP(One Time Password). La implementación del HSM cumple las normas que se indican a continuación.

Al proporcionar una frontera criptográfica segura, un entorno controlado y algoritmos aprobados, HSM ofrece ventajas para su adopción en un sistema de autenticación fuerte.

El módulo OATH de HSM dispone de tres servicios básicos: emisión, autenticación y resincronización:

  1. 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.
  2. 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.
  3. 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 y autenticació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 - Token Hardware: la semilla es generada por el fabricante del token y enviada en formato PSKC

  • Generación

    1. La aplicación selecciona o genera una llave maestra;
    2. La aplicación recibe el archivo PSKC y la clave de transporte;
    3. La aplicación pide al HSM que traduzca el archivo PSKC a blob;
    4. HSM devuelve blob;
    5. La aplicación recibe el blob, crea una relación entre el blob y el usuario y lo almacena en la base de datos;
    6. 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 - Token Hardware: la semilla es generada por el fabricante del token y enviada en texto claro

  • Generación

    1. La aplicación selecciona o genera una llave maestra;
    2. La aplicación recibe una semilla en texto claro;
    3. La aplicación prepara una estructura blob OATH;
    4. La aplicación pide al HSM que cifre el blob OATH con la clave maestra;
    5. HSM devuelve los datos encriptados, que son los blob;
    6. La aplicación recibe el blob, crea una relación entre el blob y el usuario y lo almacena en la base de datos;
    7. 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 - Software Token: la semilla es generada por el usuario y recibida en texto claro

  • Generación

    1. La aplicación selecciona o genera una llave maestra;
    2. El usuario genera y exporta semillas en su aplicación OATH (teléfono inteligente, ordenador de sobremesa, etc.);
    3. El usuario envía la semilla a la aplicación;
    4. La aplicación recibe una semilla en texto claro;
    5. La aplicación prepara una estructura de datos OATH;
    6. La aplicación solicita al HSM que cifre la estructura de datos OATH con la clave maestra;
    7. HSM devuelve una estructura cifrada, que es el blob;
    8. 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 - Software Token: HSM genera la semilla

  • Generación

    1. La aplicación selecciona o genera una llave maestra;
    2. La aplicación solicita la emisión de blob OATH;
    3. HSM genera la semilla, prepara el blob y lo devuelve a la aplicación;
    4. La aplicación recibe el blob, crea una relación entre el blob y el usuario y lo almacena en la base de datos;
    5. La aplicación envía el blob al HSM y solicita la semilla en texto claro;
    6. La aplicación envía la semilla al usuario, normalmente utilizando un canal seguro;
    7. El usuario importa las semillas a su aplicación OATH (teléfono inteligente, ordenador de sobremesa, etc.);

    ---
    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: véase más abajo.

Autenticación de usuarios en cualquier escenario:

  1. El usuario envía la OTP generada a la aplicación;
  2. 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;
  3. HSM procesa la solicitud y devuelve el resultado y el blob procesado;
  4. La aplicación recibe el blob y actualiza la base de datos;
  5. 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 el tiempo 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.
  • clave maestra: clave AES en el HSM que cifra el blob.
  • clave de transporte: clave que cifra 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). No es necesaria una protección adicional para el blob almacenado, ya que sólo se puede acceder a su contenido con la clave maestra AES del HSM.

Referencias