API Java
HSM Dinamo
Cargando...
Buscando...
No se han encontrado entradas
OATH

Descripción detallada

Autenticación estándar OATH.

Iniciativa 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 (fichas, chips, tarjetas inteligentes, ordenadores, teléfonos móviles, PDA, tabletas), fabricantes de plataformas (servicios web, gestores de identidad, servidores de aplicaciones, sistemas de federación de identificación), fabricantes de aplicaciones (VPN, CRM, ERP, DRM, comercio electrónico, itinerancia, Wi-Fi) 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. La emisión consiste en que el HSM genera la semilla, 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. 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 realizar una autenticación, debe recuperar el blob de la base de datos, enviarlo al HSM, recibir el resultado junto con el blob actualizado, para devolverlo a la base de datos.
  3. el servicio de resincronización consiste básicamente en abrir la ventana normal de tolerancia 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: la semilla es generada por el fabricante del token y enviada en formato PSKC

a. 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;

b. Autenticación

  1. Véase más abajo;

Escenario II: Token: la semilla es generada por el fabricante del token y enviada en texto claro

a. 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;

b. Autenticación

  1. Véase más abajo;

Escenario III: Soft Token: la semilla es generada por el usuario y recibida en texto claro

a. 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;

b. Autenticación

  1. Véase más abajo;

Escenario IV: Soft Token: HSM genera la semilla

a. 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.);

b. Autenticación

  1. 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;

Glosario

Referencias

Funciones

byte[] generateOATHHotpBlob (String masterKey) throws TacException
 Genera un blob OATH HOTP(HMAC-based One-Time Password).
 
byte[] generateOATHHotpBlob (String masterKey, byte seedLen) throws TacException
 Genera un blob OATH HOTP(HMAC-based One-Time Password).
 
byte[] generateOATHHotpBlob (String masterKey, byte seedLen, byte truncationOffset) throws TacException
 Genera un blob OATH HOTP(HMAC-based One-Time Password).
 
byte[] importOATHHotpBlob (String masterKey, byte[] seed) throws TacException
 Genera un blob OATH HOTP(HMAC-based One-Time Password).
 
byte[] generateOATHTotpBlob (String masterKey) throws TacException
 Genera un blob OATH TOTP(Time-based One-Time Password).
 
byte[] generateOATHTotpBlob (String masterKey, byte seedLen, byte truncationOffset, int timeStep, long t0) throws TacException
 Genera un blob OATH TOTP(Time-based One-Time Password).
 
byte[] importOATHTotpBlob (String masterKey, byte[] seed, byte truncationOffset, int timeStep, long t0, boolean useDefaultMovingFactor, long movingFactor) throws TacException
 Genera un blob OATH TOTP(Time-based One-Time Password).
 
byte[] importOATHTotpBlob (String masterKey, byte[] seed) throws TacException
 Genera un blob OATH TOTP(Time-based One-Time Password).
 
byte[] getOATHSeed (String masterKey, byte[] blob) throws TacException
 Recupera la semilla de la mancha OATH.
 
Cadena getNextOATHOTP (String masterKey, int otpLen, byte[] oathBlob) throws TacException
 Genera el siguiente OTP a partir del blob OATH proporcionado.
 
byte[] checkOATHBlobOTP (String masterKey, String otp, byte[] oathBlob) throws TacException
 Comprueba un valor OTP para un blob dado OATH.
 
byte[] resyncOATHBlobOTP (String masterKey, String otp1, String otp2, byte[] oathBlob) throws TacException
 Vuelve a sincronizar una nota OATH mostrando dos valores OTP continuos.
 

Funciones

generateOATHHotpBlob() [1/3]

byte[] generateOATHHotpBlob ( Cadena masterKey) lanza una TacException

Genera un blob OATH HOTP(HMAC-based One-Time Password).

También conocido como OTP por evento. La semilla se genera dentro del HSM. Tamaño de la semilla TacNDJavaLib.ISSUE_OATH_SHA1_LEN.

Parámetros
masterKeyNombre de la clave maestra utilizada para proteger los blobs.
Devolución
Devuelve el blob OATH.
Excepciones
TacException

generateOATHHotpBlob() [2/3]

byte[] generateOATHHotpBlob ( Cadena masterKey,
byte seedLen ) lanza una TacException

Genera un blob OATH HOTP(HMAC-based One-Time Password).

También conocido como OTP por evento. La semilla se genera dentro del HSM.

Parámetros
masterKeyNombre de la clave maestra utilizada para proteger los blobs.
seedLenEstablece el tamaño de la semilla OATH. Se aceptan los siguientes valores.
Valor Tamaño en bytes
TacNDJavaLib.ISSUE_OATH_SHA1_LEN 20
TacNDJavaLib.ISSUE_OATH_SHA256_LEN 32
TacNDJavaLib.ISSUE_OATH_SHA512_LEN 64
Devolución
Devuelve el blob OATH.
Excepciones
TacException

generateOATHHotpBlob() [3/3]

byte[] generateOATHHotpBlob ( Cadena masterKey,
byte seedLen,
byte truncationOffset ) throws TacException

Genera un blob OATH HOTP(HMAC-based One-Time Password).

También conocido como OTP por evento. La semilla se genera dentro del HSM.

Parámetros
masterKeyNombre de la clave maestra utilizada para proteger los blobs.
seedLenEstablece el tamaño de la semilla OATH. Se aceptan los siguientes valores.
Valor Tamaño en bytes
TacNDJavaLib.ISSUE_OATH_SHA1_LEN 20
TacNDJavaLib.ISSUE_OATH_SHA256_LEN 32
TacNDJavaLib.ISSUE_OATH_SHA512_LEN 64
truncationOffsetSe subvenciona el siguiente importe:
Valor Significado
TacNDJavaLib.ISSUE_OATH_DYN_TRUNC Define el algoritmo de "truncamiento" como dinámico.
Devolución
Devuelve el blob OATH.
Excepciones
TacException

importOATHHotpBlob()

byte[] importOATHHotpBlob ( Cadena masterKey,
byte[] semilla ) lanza una TacException

Genera un blob OATH HOTP(HMAC-based One-Time Password).

También conocido como OTP por evento. La semilla es importada por la persona que llama.

Parámetros
masterKeyNombre de la clave maestra utilizada para proteger los blobs.
semillaDefina una semilla OATH. Se aceptan los siguientes tamaños.
Valor Tamaño en bytes
TacNDJavaLib.ISSUE_OATH_SHA1_LEN 20
TacNDJavaLib.ISSUE_OATH_SHA256_LEN 32
TacNDJavaLib.ISSUE_OATH_SHA512_LEN 64
Devolución
Devuelve el blob OATH.
Excepciones
TacException

generateOATHTotpBlob() [1/2]

byte[] generateOATHTotpBlob ( Cadena masterKey) lanza una TacException

Genera un blob OATH TOTP(Time-based One-Time Password).

También conocido como OTP por tiempo. La semilla se genera dentro del HSM. Semilla de tamaño TacNDJavaLib.ISSUE_OATH_SHA1_LEN.

Parámetros
masterKeyNombre de la clave maestra utilizada para proteger los blobs.
Devolución
Devuelve el blob OATH.
Excepciones
TacException

generateOATHTotpBlob() [2/2]

byte[] generateOATHTotpBlob ( Cadena masterKey,
byte seedLen,
byte truncationOffset,
int timeStep,
largo t0 ) lanza una TacException

Genera un blob OATH TOTP(Time-based One-Time Password).

También conocido como OTP por tiempo. La semilla se genera dentro del HSM.

Parámetros
masterKeyNombre de la clave maestra utilizada para proteger los blobs.
seedLenEstablece el tamaño de la semilla OATH. Se aceptan los siguientes valores.
Valor Tamaño en bytes
TacNDJavaLib.ISSUE_OATH_SHA1_LEN 20
TacNDJavaLib.ISSUE_OATH_SHA256_LEN 32
TacNDJavaLib.ISSUE_OATH_SHA512_LEN 64
truncationOffsetSe subvenciona el siguiente importe:
Valor Significado
TacNDJavaLib.ISSUE_OATH_DYN_TRUNC Define el algoritmo de "truncamiento" como dinámico.
timeStepValor del paso de tiempo en segundos. Además de establecer el paso de tiempo en segundos para las manchas TOTP, también se admiten los siguientes valores.
Valor Significado
TacNDJavaLib.ISSUE_OATH_DEFAULT_TIME_STEP Utilice el valor predeterminado de paso de tiempo del HSM, actualmente 30 s.
TacNDJavaLib.ISSUE_OATH_HOTP_TS Utilice este valor cuando trate con HOTP.
t0Valor temporal inicial.
Valor Significado
TacNDJavaLib.ISSUE_OATH_HOTP_T0 Utiliza el valor por defecto de HSM.
Devolución
Devuelve el blob OATH.
Excepciones
TacException

importOATHTotpBlob() [1/2]

byte[] importOATHTotpBlob ( Cadena masterKey,
byte[] semilla,
byte truncationOffset,
int timeStep,
largo t0,
booleano useDefaultMovingFactor,
largo movingFactor ) lanza una TacException

Genera un blob OATH TOTP(Time-based One-Time Password).

También conocido como OTP por tiempo. La semilla es importada por la persona que llama.

Parámetros
masterKeyNombre de la clave maestra utilizada para proteger los blobs.
semillaDefina una semilla OATH. Se aceptan los siguientes tamaños.
Valor Tamaño en bytes
TacNDJavaLib.ISSUE_OATH_SHA1_LEN 20
TacNDJavaLib.ISSUE_OATH_SHA256_LEN 32
TacNDJavaLib.ISSUE_OATH_SHA512_LEN 64
truncationOffsetSe subvenciona el siguiente importe:
Valor Significado
TacNDJavaLib.ISSUE_OATH_DYN_TRUNC Define el algoritmo de "truncamiento" como dinámico.
timeStepValor del paso de tiempo en segundos. Además de establecer el paso de tiempo en segundos para las manchas TOTP, también se admiten los siguientes valores.
Valor Significado
TacNDJavaLib.ISSUE_OATH_DEFAULT_TIME_STEP Utilice el valor predeterminado de paso de tiempo del HSM, actualmente 30 s.
TacNDJavaLib.ISSUE_OATH_HOTP_TS Utilice este valor cuando trate con HOTP.
t0Valor temporal inicial.
Valor Significado
TacNDJavaLib.ISSUE_OATH_HOTP_T0 Utiliza el valor por defecto de HSM.
useDefaultMovingFactorEstablézcalo a true para utilizar el factor móvil por defecto o a false para especificar un factor móvil en movingFactor.
movingFactorDefine el incremento inicial del cliente antes de la utilización. Además de establecer el incremento manualmente, puede utilizar los valores de la tabla siguiente.
Valor Significado
TacNDJavaLib.ISSUE_OATH_INIT_MF Utiliza el valor estándar del factor móvil.
Devolución
Devuelve el blob OATH.
Excepciones
TacException

importOATHTotpBlob() [2/2]

byte[] importOATHTotpBlob ( Cadena masterKey,
byte[] semilla ) lanza una TacException

Genera un blob OATH TOTP(Time-based One-Time Password).

También conocido como OTP por tiempo. La semilla es importada por la persona que llama.

Parámetros
masterKeyNombre de la clave maestra utilizada para proteger los blobs.
semillaDefina una semilla OATH. Se aceptan los siguientes tamaños.
Valor Tamaño en bytes
TacNDJavaLib.ISSUE_OATH_SHA1_LEN 20
TacNDJavaLib.ISSUE_OATH_SHA256_LEN 32
TacNDJavaLib.ISSUE_OATH_SHA512_LEN 64
Devolución
Devuelve el blob OATH.
Excepciones
TacException

getOATHSeed()

byte[] getOATHSeed ( Cadena masterKey,
byte[] blob ) lanza una TacException

Recupera la semilla de la mancha OATH.

Parámetros
masterKeyNombre de la clave maestra utilizada para proteger los blobs.
blobblob OATH.
Devolución
Semilla asociada a la mancha OATH.
Excepciones
TacException

getNextOATHOTP()

String getNextOATHOTP ( Cadena masterKey,
int otpLen,
byte[] oathBlob ) lanza una TacException

Genera el siguiente OTP a partir del blob OATH proporcionado.

Parámetros
masterKeyNombre de la clave maestra utilizada para proteger los blobs.
otpLenTamaño de la OTP que se generará. Tamaño mínimo TacNDJavaLib . ISSUE_OATH_MIN_OTP_LEN y máximo TacNDJavaLib.ISSUE_OATH_MAX_OTP_LEN.
oathBlobque se utilizará para generar el OTP. Este búfer no se modificará.
Devolución
Devuelve el OTP generado.
Excepciones
TacException

checkOATHBlobOTP()

byte[] checkOATHBlobOTP ( Cadena masterKey,
Cadena otp,
byte[] oathBlob ) lanza una TacException

Comprueba un valor OTP para un blob dado OATH.

Parámetros
masterKeyNombre de la clave maestra utilizada para proteger los blobs.
otpOTP a comprobar. Tamaño mínimo TacNDJavaLib . ISSUE_OATH_MIN_OTP_LEN y máximo TacNDJavaLib.ISSUE_OATH_MAX_OTP_LEN.
oathBlobblob que tendrá el OTP comprobado. Este búfer se reescribirá con el búfer actualizado.
Devolución
blob OATH actualizado.
Excepciones
TacException
Notas
Si el error D_OATH_BLOB_UPDATE es lanzado, esta llamada debe ser rehecha pasando el oathBlob con un tamaño de ISSUE_OATH_OUTPUT_MAX_BLOB_LEN que contenga el blob actual, para que el blob sea actualizado. Ver detalles en la especificación de OATH_UPDATE_BLOB.

resincOATHBlobOTP()

byte[] resyncOATHBlobOTP ( Cadena masterKey,
Cadena otp1,
Cadena otp2,
byte[] oathBlob ) lanza una TacException

Vuelve a sincronizar una nota OATH mostrando dos valores OTP continuos.

Sólo para HOTP (OTP por evento).

Parámetros
masterKeyNombre de la clave maestra utilizada para proteger los blobs.
otp1Primera OTP. Tamaño mínimo TacNDJavaLib . ISSUE_OATH_MIN_OTP_LEN y máximo TacNDJavaLib.ISSUE_OATH_MAX_OTP_LEN.
otp2Segundo OTP. Tamaño mínimo TacNDJavaLib . ISSUE_OATH_MIN_OTP_LEN y máximo TacNDJavaLib.ISSUE_OATH_MAX_OTP_LEN.
oathBlobblob que tendrá el OTP comprobado. Este búfer se reescribirá con el búfer actualizado.
Devolución
blob OATH actualizado.
Excepciones
TacException
Notas
A partir de la versión de firmware 4.0.2, la ventana se ampliará hasta 200 intervalos. En el caso de tokens HOTP los intervalos se contarán por número de eventos, en el caso de tokens TOTP se contarán por número de time-steps. Si se lanza el error D_OATH_BLOB_UPDATE, esta llamada debe ser rehecha pasando el oathBlob con un tamaño de ISSUE_OATH_OUTPUT_MAX_BLOB_LEN que contenga el blob actual, para que el blob sea actualizado. Ver detalles en la especificación de OATH_UPDATE_BLOB.