Generación del token
El token digital se implementará utilizando el algoritmo TOTP (Time based One-Time Password), que usará una semilla gestionada por AWS Cloud HSM. Para el proceso de generación se tiene en cuenta:
Identificador de acceso de la clave
Se usará el User Id que maneja actualmente Spin. Es un tipo de dato UUID, para su transmisión se usará su valor como cadena de texto y para la generación de tokens su valor como arreglo de bytes con longitud de 128 bits
Clave para generar OTP
La clave o semilla para ser usada por el algoritmo debe tener las siguientes características:
Aleatoriedad: Uso de generador de números aleatorios seguros.
Longitud: 256 bits
Unicidad: (Validar) Garantizar que no haya 2 semillas iguales
Secreto: Confidencialidad durante la generación y transmisión
Almacenamiento seguro: La clave se almacenará y procesará en AWS Cloud HSM
Revocabilidad: Implementación de métodos para refrescar o eliminar la clave.
Algoritmo de cifrado para HMAC
La generación del token digital requiere el uso de HMAC (Hash-based Message Authentication Code), por lo que es necesario hacer uso de un algoritmo para generar el digest. Se considera SHA-256 , y se está evaluando el uso de SHA-512. No se considera SHA3 por no estar disponible en AWS Cloud HSM.
Longitud del token
El token generado será un número de 32 bits, aunque sólo se considerarán los 9 dígitos decimales menos significativos.
Autenticación de servicios
Aún no se definen los mecanismos de autenticación entre servicios, aunque debido a que los servicios se desplegarán en clúster independiente don de la comunicación interna se hará usando el protocolo gRPC, se propone el uso de Linkerd como mecanismo de autenticación.
Acceso a los servicios
El acceso a los servicios se hará a través del servicio de agregación, que expondrá los métodos mediante gRPC y REST. El clúster deberá estar en la misma VPN de los servicios consumidores.
Algoritmos y librerías utilizadas para la generación, aprovisionamiento y seguridad del token
Para la generación de la semilla, se implementó el paquete Java Security. En este proceso, se recurrió a la clase MessageDigest, que se nutrió del algoritmo SHA-256, permitiendo de esta forma la creación efectiva del digest.
Cuando se trata de almacenar la semilla en CloudHSM, empleamos la clase KeyGenerator. Esta facilita la tarea de cifrar la semilla utilizando el algoritmo AES, lo que nos permite su posterior almacenamiento seguro en CloudHSM.
Cuando se necesita retornar la semilla al cliente, esta se cifra utilizando una llave pública suministrada por el propio cliente. Para este proceso, hacemos uso del algoritmo RSA, lo que fortalece la seguridad y protección de la información del cliente.
Aprobación y consideraciones para subir código a respositorios de SPIN
Otros aspectos por evaluar
Necesidad de almacenamiento del token digital
Almacenamiento de token de activación
Que cifrado de datos sensibles usan y si tienen algún servicio para esto ¿Cuál es? ¿Cómo lo implementan del lado del cliente?
Add Comment