API C/C
HSM Dinamo
|
Autenticación estándar 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.).
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:
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
b. Autenticación
Escenario II: Token: la semilla es generada por el fabricante del token y enviada en texto claro
a. Generación
b. Autenticación
Escenario III: Soft Token: la semilla es generada por el usuario y recibida en texto claro
a. Generación
b. Autenticación
Escenario IV: Soft Token: HSM genera la semilla
a. Generación
b. Autenticación
Autenticación de usuarios en cualquier escenario:
Referencias
Autenticación estándar OATH. Más...
Funciones | |
int AAP_API | DOATHIssueBlob(HSESSIONCTX hSession, char *szMasterKeyId, DWORD dwParamBlobType, void *pvParamBlob, DWORD dwParamBlobLen, BYTE *pbOTPBlob, DWORD *pdwOTPBlobLen, DWORD dwFlags) |
int AAP_API | DOATHCheckOTP(HSESSIONCTX hSession, char *szMasterKeyId, char *szOTP, BYTE *pbOATHBlob, DWORD *pdwOATHBlobLen, DWORD dwFlags) |
int AAP_API | DOATHGetNextOTP(HSESSIONCTX hSession, char *szMasterKeyId, BYTE bOTPLen, BYTE *pbOATHBlob, DWORD dwOATHBlobLen, char *szOTP, DWORD dwFlags) |
int AAP_API | DOATHGetBlobInfo (const HSESSIONCTX hSession, char *szMasterKey, BYTE *pbInBlob, DWORD dwInBlobLen, DWORD dwOutBlobType, BYTE *pbOutInfo, DWORD *pdwOutInfoLen, DWORD dwParam) |
int AAP_API | DOATHBlobResync(HSESSIONCTX hSession, char *szMasterKeyId, char *szOTP1, char *szOTP2, BYTE *pbOATHBlob, DWORD *pdwOATHBlobLen, DWORD dwFlags) |
int AAP_API | DOATHPskcTranslate(HSESSIONCTX hSession, char *szMasterKey, BYTE *pbPSK, BYTE bPSKLen, BYTE *pbPSKC, DWORD dwPSKCLen, void **pvBlobList, DWORD *pdwBlobListQuantity, DWORD dwParam) |
int AAP_API DOATHIssueBlob | ( | HSESSIONCTX | hSesión, |
char * | szMasterKeyId, | ||
DWORD | dwParamBlobType, | ||
vacío * | pvParamBlob, | ||
DWORD | dwParamBlobLen, | ||
BYTE * | pbOTPBlob, | ||
DWORD * | pdwOTPBlobLen, | ||
DWORD | dwFlags ) |
#include <dinamo.h>
Genera o importa un blob OATH para su uso en HSM.
[en] | hSesión | Contexto adquirido a través de la función DOpenSession(). | ||||||||||
[en] | szMasterKeyId | Nombre de la clave maestra, utilizada para proteger los blobs, de tamaño máximo MAX_OBJ_ID_FQN_LEN. | ||||||||||
[en] | dwParamBlobType | Se acepta la siguiente tabla.
| ||||||||||
[en] | pvParamBlob | Puntero a los datos o estructuras especificados en dwParamBlobType . | ||||||||||
[en] | dwParamBlobLen | Tamaño de los datos o de la estructura especificada en dwParamBlobType . | ||||||||||
[fuera] | pbOTPBlob | Buffer de tamaño mínimo de ISSUE_OATH_OUTPUT_MAX_BLOB_LEN que contendrá el blob generado. | ||||||||||
[in,out] | pdwOTPBlobLen | Tamaño del búfer indicado por pbOTPBlob . La entrada debe contener el tamaño del búfer pbOTPBlob en la salida contendrá el tamaño del blob escrito en el búfer asignado. | ||||||||||
[en] | dwFlags | Reservado para uso futuro (debe ser 0). |
int AAP_API DOATHCheckOTP | ( | HSESSIONCTX | hSesión, |
char * | szMasterKeyId, | ||
char * | szOTP, | ||
BYTE * | pbOATHBlob, | ||
DWORD * | pdwOATHBlobLen, | ||
DWORD | dwFlags ) |
#include <dinamo.h>
Comprueba un valor OTP para un blob dado OATH.
[en] | hSesión | Contexto adquirido a través de la función DOpenSession(). | ||||||
[en] | szMasterKeyId | Nombre de la clave maestra, utilizada para proteger los blobs, de tamaño máximo MAX_OBJ_ID_FQN_LEN. | ||||||
[en] | szOTP | OTP para comprobar el tamaño mínimo ISSUE_OATH_MIN_OTP_LEN y el máximo ISSUE_OATH_MAX_OTP_LEN. | ||||||
[in,out] | pbOATHBlob | Puntero a un buffer que contiene el blob que tendrá el OTP comprobado. Este búfer se reescribirá con el búfer actualizado. | ||||||
[in,out] | pdwOATHBlobLen | Tamaño del búfer pbOATHBlob . La entrada contendrá el tamaño de pbOATHBlob y mostrar el tamaño de los datos escritos en pbOATHBlob . | ||||||
[en] | dwFlags | A partir de la versión de firmware 4.0.2, el tamaño de la ventana de espera de autenticación se puede establecer en este parámetro. El valor por defecto es de 10 intervalos más o menos. 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 pasos de tiempo.
|
También puede pasar el OATH_UPDATE_BLOBpara permitir la actualización del formato de la nota OATH . Cuando el OATH_UPDATE_BLOB debe pasar el blob actual de OATH en pbOATHBlob
en un búfer lo suficientemente grande como para contener la nota actualizada. pdwOATHBlobLen
debe contener el valor del tamaño del búfer pasado en pbOATHBlob
. El tamaño de pbOATHBlob
necesario, se devuelve en pdwOATHBlobLen
en la llamada en la que se produjo el error D_OATH_BLOB_UPDATE se devuelve. La actualización sólo tiene que hacerse después de recibir el error D_OATH_BLOB_UPDATE. Consulte las Notas para obtener más información.
pdwOATHBlobLen
el tamaño del búfer que debe utilizarse para actualizar el blob OATH en una llamada posterior. Véanse los detalles en la sección OATH_UPDATE_BLOB. int AAP_API DOATHGetNextOTP | ( | HSESSIONCTX | hSesión, |
char * | szMasterKeyId, | ||
BYTE | bOTPLen, | ||
BYTE * | pbOATHBlob, | ||
DWORD | dwOATHBlobLen, | ||
char * | szOTP, | ||
DWORD | dwFlags ) |
#include <dinamo.h>
Genera el siguiente OTP a partir de un blob OATH. El blob OATH no se modificará.
[en] | hSesión | Contexto adquirido a través de la función DOpenSession(). |
[en] | szMasterKeyId | Nombre de la clave maestra, utilizada para proteger los blobs, de tamaño máximo MAX_OBJ_ID_FQN_LEN. |
[en] | bOTPLen | Tamaño de la OTP a generar, que puede ser un valor comprendido entre ISSUE_OATH_MIN_OTP_LEN e ISSUE_OATH_MAX_OTP_LEN. |
[en] | pbOATHBlob | Puntero a un búfer que contiene el blob que se utilizará para generar el OTP. Este búfer no se modificará. |
[en] | dwOATHBlobLen | Tamaño del búfer pbOATHBlob . |
[fuera] | szOTP | Buffer que contendrá el OTP generado. Debe tener un tamaño mínimo de bOTPLen + 1 (terminador nulo). |
[en] | dwFlags | Reservado para uso futuro (debe ser 0). |
int AAP_API DOATHGetBlobInfo | ( | const HSESSIONCTX | hSesión, |
char * | szMasterKey, | ||
BYTE * | pbInBlob, | ||
DWORD | dwInBlobLen, | ||
DWORD | dwOutBlobType, | ||
BYTE * | pbOutInfo, | ||
DWORD * | pdwOutInfoLen, | ||
DWORD | dwParam ) |
#include <dinamo.h>
Recupera la información interna de una mancha OATH.
[en] | hSesión | Contexto adquirido a través de la función DOpenSession(). | ||||||
[en] | szMasterKey | Nombre de la clave maestra, utilizada para proteger los blobs, de tamaño máximo MAX_OBJ_ID_FQN_LEN. | ||||||
[en] | pbInBlob | Puntero a un búfer que contiene el blob para extraer la información. | ||||||
[en] | dwInBlobLen | Tamaño del búfer pbInBlob . | ||||||
[en] | dwOutBlobType | Indica el tipo de datos de salida. Se acepta la siguiente tabla.
| ||||||
[fuera] | pbOutInfo | Puntero a un búfer que recibirá la información del blob. Debe ser como se describe en dwOutBlobType . | ||||||
[in,out] | pdwOutInfoLen | Tamaño del búfer indicado por pdwOutInfoLen . | ||||||
[en] | dwParam | Reservado para uso futuro (debe ser 0). |
int AAP_API DOATHBlobResync | ( | HSESSIONCTX | hSesión, |
char * | szMasterKeyId, | ||
char * | szOTP1, | ||
char * | szOTP2, | ||
BYTE * | pbOATHBlob, | ||
DWORD * | pdwOATHBlobLen, | ||
DWORD | dwFlags ) |
#include <dinamo.h>
Resincroniza una nota OATH mostrando dos valores continuos de OTP. Sólo para HOTP (OTP por evento).
[en] | hSesión | Contexto adquirido a través de la función DOpenSession(). |
[en] | szMasterKeyId | Nombre de la clave maestra, utilizada para proteger los blobs, de tamaño máximo MAX_OBJ_ID_FQN_LEN. |
[en] | szOTP1 | OTP para comprobar el tamaño mínimo ISSUE_OATH_MIN_OTP_LEN y el máximo ISSUE_OATH_MAX_OTP_LEN. |
[en] | szOTP2 | Segunda OTP a comprobar para tamaño mínimo ISSUE_OATH_MIN_OTP_LEN y máximo ISSUE_OATH_MAX_OTP_LEN. |
[in,out] | pbOATHBlob | Puntero a un búfer que contiene la nota que se va a sincronizar. Este búfer se reescribirá con el búfer sincronizado. |
[in,out] | pdwOATHBlobLen | Tamaño del búfer pbOATHBlob . La entrada contendrá el tamaño de pbOATHBlob y mostrar el tamaño de los datos escritos en pbOATHBlob . |
[en] | dwFlags | Aceptar la bandera OATH_UPDATE_BLOBpara permitir la actualización del formato de la nota OATH . Cuando el OATH_UPDATE_BLOB debe pasar el blob actual de OATH en pbOATHBlob en un búfer lo suficientemente grande como para contener la nota actualizada. pdwOATHBlobLen debe contener el valor del tamaño del búfer pasado en pbOATHBlob . El tamaño de pbOATHBlob necesario, se devuelve en pdwOATHBlobLen en la llamada en la que se produjo el error D_OATH_BLOB_UPDATE se devuelve. La actualización sólo tiene que hacerse después de recibir el error D_OATH_BLOB_UPDATE. Consulte las Notas para obtener más información. |
pdwOATHBlobLen
el tamaño del búfer que debe utilizarse para actualizar el blob OATH en una llamada posterior. Véanse los detalles en la sección OATH_UPDATE_BLOB. int AAP_API DOATHPskcTranslate | ( | HSESSIONCTX | hSesión, |
char * | szMasterKey, | ||
BYTE * | pbPSK, | ||
BYTE | bPSKLen, | ||
BYTE * | pbPSKC, | ||
DWORD | dwPSKCLen, | ||
void ** | pvBlobList, | ||
DWORD * | pdwBlobListQuantity, | ||
DWORD | dwParam ) |
#include <dinamo.h>
Importa semillas envueltas en el estándar PSKC(Portable Symmetric Key Container), RFC 6030.
[en] | hSesión | Contexto adquirido a través de la función DOpenSession(). |
[en] | szMasterKey | Nombre de la clave maestra, utilizada para proteger los blobs, de tamaño máximo de salida MAX_OBJ_ID_FQN_LEN. |
[en] | pbPSK | Tamaño máximo del búfer OATH_MAX_PSK_LEN que contiene la clave de transporte que protege las semillas notificadas en pbPSKC . |
[en] | bPSKLen | Tamaño del búfer pbPSK. |
[en] | pbPSKC | Búfer PSKC que contiene las semillas que se transformarán en blobs en formato HSM. |
[en] | dwPSKCLen | Tamaño del búfer pbPSKC. |
[fuera] | pvBlobList | Ponteiro para ponteiro que apontará para um buffer alocado internamente contendo um array de estruturas OATH_PSKC_TRANSLATE_OUTPUT. Esta estrutura conterá internamente os blobs das sementes traduzidas para o formato do HSM e o identificador de cada semente como na tag "<pskc:Key Id=>". |
[fuera] | pdwBlobListQuantity | Puntero al número de blobs devueltos en el búfer pvBlobList . |
[en] | dwParam | Reservado para uso futuro (debe ser 0). |