ES2952534T3 - Un método, un sistema y un aparato que usan criptografía de seguridad hacia adelante para la verificación de códigos de acceso - Google Patents

Un método, un sistema y un aparato que usan criptografía de seguridad hacia adelante para la verificación de códigos de acceso Download PDF

Info

Publication number
ES2952534T3
ES2952534T3 ES16826678T ES16826678T ES2952534T3 ES 2952534 T3 ES2952534 T3 ES 2952534T3 ES 16826678 T ES16826678 T ES 16826678T ES 16826678 T ES16826678 T ES 16826678T ES 2952534 T3 ES2952534 T3 ES 2952534T3
Authority
ES
Spain
Prior art keywords
value
client
authentication
server
state variable
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES16826678T
Other languages
English (en)
Inventor
Steven James Murdoch
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Onespan International GmbH
Original Assignee
Onespan International GmbH
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Onespan International GmbH filed Critical Onespan International GmbH
Application granted granted Critical
Publication of ES2952534T3 publication Critical patent/ES2952534T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0863Generation of secret information including derivation or calculation of cryptographic keys or passwords involving passwords or one-time passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • H04L63/067Network architectures or network communication protocols for network security for supporting key management in a packet data network using one-time keys
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/083Network architectures or network communication protocols for network security for authentication of entities using passwords
    • H04L63/0838Network architectures or network communication protocols for network security for authentication of entities using passwords using one-time-passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0853Network architectures or network communication protocols for network security for authentication of entities using an additional device, e.g. smartcard, SIM or a different communication terminal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0877Generation of secret information including derivation or calculation of cryptographic keys or passwords using additional device, e.g. trusted platform module [TPM], smartcard, USB or hardware security module [HSM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3226Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using a predetermined code, e.g. password, passphrase or PIN
    • H04L9/3228One-time or temporary data, i.e. information which is sent for every authentication or authorization, e.g. one-time-password, one-time-token or one-time-key
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3234Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving additional secure or trusted devices, e.g. TPM, smartcard, USB or software token
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/04Masking or blinding

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Storage Device Security (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Radar Systems Or Details Thereof (AREA)

Abstract

Se divulgan métodos, aparatos y sistemas que utilizan un código de acceso para asegurar la interacción entre un usuario y una aplicación informática. (Traducción automática con Google Translate, sin valor legal)

Description

Un método, un sistema y un aparato que usan criptografía de seguridad hacia adelante para la verificación de códigos de acceso
Referencia cruzada a solicitud relacionada
La presente solicitud se refiere a y reivindica el beneficio de la solicitud US provisional N° 62/273.138, titulada METHOD AND SYSTEM APPARATUS USING FORWARD-SECURE CRYPTOGRAPHY FOR PASSCODE VERIFICATION presentada el 30 de Diciembre de 2015.
Campo de la invención
La invención se refiere al aseguramiento de un acceso remoto a ordenadores y aplicaciones y transacciones remotas a través de redes informáticas. Más específicamente, la invención se refiere a métodos, aparatos y sistemas para el uso de un código de acceso secreto con un token de autenticación de dos factores.
Antecedentes de la invención
A medida que aumenta la popularidad de los accesos remotos a sistemas informáticos y aplicaciones, aumenta dramáticamente el número y la diversidad de transacciones a las que se accede de manera remota a través de redes públicas, tales como Internet. Esta popularidad ha evidenciado la necesidad de seguridad; en particular: cómo garantizar que las personas que acceden de manera remota a una aplicación sean quienes afirman ser, cómo garantizar que las transacciones que se realizan de manera remota sean iniciadas por individuos legítimos y cómo garantizar que los datos de las transacciones no hayan sido alterados antes de ser recibidos en un servidor de aplicaciones.
Una solución para asegurar la interacción de los usuarios con aplicaciones basadas en ordenador es el uso de soluciones de autenticación fuerte de dos factores.
En las soluciones de autenticación de dos factores, un usuario puede ser autenticado, por ejemplo, en una aplicación basada en ordenador, por una persona que afirma ser el usuario legítimo proporcionando a una entidad de verificación de autenticación una prueba de dos factores de autenticación. Un primer factor (el factor 'lo que el usuario tiene') consiste en una prueba de que el usuario posee o tiene acceso a un objeto o token específico que puede estar vinculado o asociado con un usuario particular. Un segundo factor puede consistir en una prueba de que el usuario tiene conocimiento de una pieza de información específica que puede estar vinculada o asociada con un usuario particular (el factor ”lo que el usuario sabe”). Esta pieza de información específica puede comprender un secreto que puede suponerse que no es conocido por ninguna otra persona distinta del usuario legítimo, tal como una contraseña secreta o un PIN (número de identificación personal) secreto. En el resto de la presente descripción, puede hacerse referencia a esta pieza de información específica como un código de acceso. El documento US8832807B1 se refiere a la generación de OTPs.
Para garantizar la seguridad de las soluciones de autenticación usando un código de acceso, es esencial que se garantice y se mantenga en todo momento la confidencialidad del código de acceso.
Lo que se necesita es una solución segura para proteger el secreto y la confidencialidad de los códigos de acceso que se usan con soluciones de autenticación fuerte de dos factores.
Divulgación de la invención
La invención se basa en una percepción de los presentes inventores de que los dispositivos cliente y servidor que se usan con propósitos de autenticación pueden ser pirateados, de manera que la información almacenada en estos dispositivos puede caer en manos de estafadores. Si esta información robada está relacionada con los códigos de acceso que los usuarios pueden usar al autenticarse en una aplicación basada en ordenador, existe un riesgo de que esta información robada pueda ser usada por alguna parte fraudulenta para extraer conocimiento acerca de estos códigos de acceso, por ejemplo, para recuperar los propios códigos de acceso. Debido a que en algunos casos un usuario puede usar los mismos códigos de acceso o códigos de acceso similares en múltiples plataformas y aplicaciones, el daño que podría producirse debido al descubrimiento de dichos códigos de acceso por parte de partes maliciosas puede extenderse mucho más allá de la única aplicación basada en ordenador. Por ejemplo, en la práctica puede ser difícil excluir que los usuarios de una aplicación de banca por Internet elijan un código de acceso para autenticarse en esa aplicación de banca por Internet que es idéntica o muy similar al PIN de una de sus tarjetas bancarias.
Una percepción de los presentes inventores es que la seguridad global de una solución de autenticación basada en el uso de un código de acceso puede aumentarse si ni los dispositivos cliente ni los dispositivos servidores almacenan permanentemente ninguna información que pueda permitir a un atacante recuperar el valor de un código de acceso o acotar el intervalo de posibles valores de un código de acceso. Por ejemplo, en algunas realizaciones de la invención, ni los dispositivos cliente ni los dispositivos servidores pueden almacenar permanentemente un valor de código de acceso o un elemento de datos que se calcula de manera reversible a partir de un valor de código de acceso. En la presente descripción, puede hacerse referencia también a los dispositivos cliente como clientes, clientes de autenticación, tokens de autenticación o tokens de autenticación fuerte.
La presente invención se define en las reivindicaciones independientes. Las realizaciones preferidas dependen de las reivindicaciones dependientes.
En algunas realizaciones, el token de autenticación fuerte puede estar adaptado para generar credenciales dinámicas, tales como una contraseña de un solo uso (OTP) o una firma electrónica, mediante una combinación criptográfica de un valor de un elemento de datos de verificador de código de acceso con el valor de una variable dinámica y el valor de una clave criptográfica secreta y usando un algoritmo criptográfico que está parametrizado con la clave criptográfica secreta.
En algunas realizaciones, el token de autenticación fuerte puede estar adaptado para calcular el valor del elemento de datos de verificador de código de acceso solicitando al usuario que proporcione un código de acceso y combinando el valor del código de acceso proporcionado por el usuario con el valor de un elemento de datos de enmascaramiento de código de acceso. En algunas realizaciones, el elemento de datos de enmascaramiento de código de acceso puede ser almacenado por el token de autenticación, por ejemplo, en alguna forma de memoria permanente o no volátil accesible por el token de autenticación. En algunas realizaciones, el valor de código de acceso proporcionado por el usuario puede combinarse con el valor de un elemento de datos de enmascaramiento de código de acceso almacenado usando una función, tal como una función criptográfica unidireccional que puede comprender, por ejemplo, una función hash criptográfica. En algunas realizaciones, el elemento de datos de enmascaramiento de código de acceso puede ser generado una vez por el token de autenticación fuerte y, a continuación, puede ser almacenado por el token de autenticación fuerte para su uso futuro. En algunas realizaciones, el token de autenticación fuerte puede generar el elemento de datos de enmascaramiento de código de acceso de una manera impredecible. En algunas realizaciones, el token de autenticación fuerte puede generar el elemento de datos de enmascaramiento de código de acceso de una manera que es independiente del valor del código de acceso. Por ejemplo, en algunas realizaciones, el token de autenticación fuerte puede generar el elemento de datos de enmascaramiento de código de acceso usando un generador de números aleatorios o un generador de números pseudoaleatorios. En algunas realizaciones, el elemento de datos de enmascaramiento de código de acceso puede comprender un número aleatorio que ha sido generado por un generador de números aleatorios o un generador de números pseudoaleatorios. En algunas realizaciones, el token de autenticación fuerte puede estar adaptado para borrar de su memoria cualquier copia (temporal) del valor de código de acceso que el usuario haya proporcionado una vez que el token de autenticación fuerte ha usado el valor de código de acceso para calcular el valor del elemento de datos de verificador de código de acceso. Además, en algunas realizaciones, el token de autenticación fuerte puede estar adaptado para borrar de su memoria cualquier copia (temporal) del elemento de datos de verificador de código de acceso calculado una vez que el token de autenticación fuerte ha usado el elemento de datos de verificador de código de acceso calculado para generar una credencial de autenticación dinámica.
En algunas realizaciones, la variable dinámica puede ser una función de un valor de tiempo (que puede ser proporcionado, por ejemplo, por un reloj del token de autenticación fuerte, tal como un dispositivo informático personal en el que puede estar ejecutándose un token de software). En algunas realizaciones, la variable dinámica puede ser una función del valor de una variable relacionada con un evento. En la presente descripción, la terminología variable relacionada con un evento puede hacer referencia a una variable cuyo valor puede actualizarse automáticamente usando un algoritmo de actualización tras producirse un evento específico. En algunas realizaciones, el token de autenticación fuerte, después de producirse un evento específico, puede calcular un nuevo valor para la variable relacionada con un evento como una función del valor actual de esa variable relacionada con un evento y puede reemplazar el valor actual por el nuevo valor calculado. En algunas realizaciones, el evento específico puede comprender, por ejemplo, el uso por parte del token de autenticación fuerte de la variable relacionada con un evento para generar una OTP o una firma electrónica. En algunas realizaciones, la variable relacionada con un evento puede comprender un contador y el algoritmo de actualización puede comprender un incremento (o decremento) monótono del contador. En algunas realizaciones, el algoritmo de actualización puede comprender, por ejemplo, un algoritmo hash unidireccional y la variable relacionada con un evento puede actualizarse con un nuevo valor que se obtiene como resultado de aplicar el algoritmo hash unidireccional al valor antiguo de la variable relacionada con un evento. En algunas realizaciones, la variable relacionada con un evento puede comprender la clave criptográfica secreta o una clave criptográfica secreta usada en la generación de una credencial dinámica puede derivarse a partir de una variable relacionada con un evento. Por ejemplo, en algunas realizaciones, el valor de la clave criptográfica secreta puede actualizarse con un valor nuevo, que puede ser una función de un valor anterior de la clave criptográfica secreta, cada vez que la clave criptográfica secreta se usa para generar una OTP o firma electrónica. En algunas realizaciones, la variable relacionada con un evento puede comprender una variable de estado y el valor de la clave criptográfica secreta puede calcularse como una función de esa variable de estado, que puede actualizarse, tras producirse un evento específico, con un nuevo valor que puede ser una función del valor actual de esa variable de estado. En algunas realizaciones, la variable dinámica puede basarse en un desafío de autenticación que puede ser generado, por ejemplo, por un servidor y que puede proporcionarse, por ejemplo, al token de autenticación fuerte (por ejemplo, por el usuario que introduce el desafío de autenticación usando una interfaz de entrada de usuario del dispositivo electrónico que comprende el token de autenticación fuerte). En algunas realizaciones, la variable dinámica puede basarse en datos de transacción que pueden proporcionarse al token de autenticación fuerte (por ejemplo, por el usuario que introduce los datos de transacción usando una interfaz de entrada de usuario del token de autenticación fuerte). En algunas realizaciones, la variable dinámica puede comprender cualquier combinación de los tipos de variables dinámicas descritos anteriormente.
En general, puede hacerse referencia al resultado de la combinación criptográfica del valor del elemento de datos de verificador de código de acceso con la variable dinámica y el valor de la clave criptográfica secreta como una credencial dinámica o una credencial de autenticación dinámica. En el caso en el que la variable dinámica está basada en los datos de transacción, puede hacerse referencia al resultado de la combinación criptográfica del valor de la variable dinámica con el valor del elemento de datos de verificador de código de acceso y el valor de la clave criptográfica secreta como una firma electrónica. En el caso en el que la variable dinámica está basada en un desafío de autenticación, puede hacerse referencia al resultado de la combinación criptográfica del valor de la variable dinámica con el valor del elemento de datos de verificador de código de acceso y el valor de la clave criptográfica secreta como una respuesta. En el caso en el que la variable dinámica está basada en datos que son generados internamente y/o que son mantenidos por el token de autenticación fuerte, tal como puede ser el caso con un valor de tiempo o el valor de una variable relacionada con un evento, puede hacerse referencia al resultado de la combinación criptográfica del valor de la variable dinámica con el valor del elemento de datos de verificador de código de acceso y el valor de la clave criptográfica secreta como una contraseña de un solo uso (OTP).
En algunas realizaciones, el algoritmo criptográfico para combinar criptográficamente el valor del elemento de datos de verificador de código de acceso con el valor de la variable dinámica y el valor de la clave criptográfica secreta puede comprender un algoritmo criptográfico simétrico que puede ser parametrizado por la clave criptográfica secreta, y el token de autenticación fuerte puede compartir la clave criptográfica secreta, por ejemplo, con un servidor de autenticación. Por ejemplo, en algunas realizaciones, el algoritmo criptográfico simétrico puede comprender un algoritmo de encriptación o de desencriptación simétrico, tal como AES (estándar de encriptación avanzado) que puede operar sobre el valor de la variable dinámica y que puede ser parametrizado con la clave criptográfica secreta. En algunas realizaciones, el algoritmo criptográfico simétrico puede comprender un algoritmo hash con clave, tal como HMAC (código de autenticación de mensajes basado en hash) que puede operar sobre el valor de la variable dinámica y que puede ser parametrizado con la clave criptográfica secreta.
Tokens de software y hardware:
En algunas realizaciones, un token de autenticación fuerte puede adoptar la forma de una aplicación de software instalada en, y que se ejecuta en, un dispositivo informático electrónico de propósito general, personal, que pertenece a un usuario, tal como un ordenador personal (PC), un ordenador de tipo tableta o un teléfono inteligente, de manera que la aplicación de software puede estar adaptada para proporcionar servicios de autenticación para un usuario legítimo de la aplicación de software de autenticación.
En algunas realizaciones, un token de autenticación fuerte puede comprender un dispositivo de hardware electrónico dedicado cuya función principal o única es proporcionar servicios de autenticación para un usuario legítimo del dispositivo.
Estos servicios de autenticación pueden comprender la generación de credenciales dinámicas para asegurar la interacción entre un usuario y una aplicación basada en ordenador, tal como la autenticación del usuario en una aplicación basada en un ordenador remota y/o el aseguramiento de las transacciones enviadas por el usuario a una aplicación basada en un ordenador remoto, tal como se explica más detalladamente en otras partes de la presente descripción.
Principios generales de algunas realizaciones:
En algunas realizaciones, un protocolo de autenticación según la invención puede usar una secuencia de claves criptográficas que se generan a partir de un estado dinámico, en el que el estado se actualiza de manera que los nuevos estados pueden encontrarse a partir de los estados antiguos, pero no viceversa. El valor actual del estado puede ser mantenido de manera sincronizada tanto por el cliente de autenticación (tal como un token de autenticación fuerte) como por un servidor de autenticación. Por ejemplo, en algunas realizaciones puede usarse un algoritmo de actualización de clave de seguridad hacia adelante para construir una secuencia de claves y/o estados. En algunas realizaciones, un token de autenticación puede combinar criptográficamente un código de acceso, que puede haber sido proporcionado al token de autenticación por un usuario del token de autenticación, con dicha clave criptográfica para generar una credencial de autenticación. En algunas realizaciones, la clave criptográfica que se usa en la generación de la credencial de autenticación puede ser derivada por el token de autenticación fuerte a partir del valor actual de dicho estado que puede ser actualizado por el token de autenticación fuerte, por ejemplo, cada vez después de que el token de autenticación fuerte haya generado una credencial de autenticación.
En algunas realizaciones, el código de acceso no se usa directamente, sino solo para crear un "verificador de código de acceso”, que se forma a partir del código de acceso y un elemento de datos de enmascaramiento de código de acceso. El elemento de datos de enmascaramiento de código de acceso puede ser obtenido, por ejemplo, generado, por el token de autenticación durante una etapa de inicialización y puede ser almacenado permanentemente en el token de autenticación, y solo en el token de autenticación, para su uso futuro, por ejemplo, para la generación de un valor de verificador de código de acceso a partir de un valor de código de acceso. El verificador de código de acceso puede generarse usando una función unidireccional de manera que el valor de código de acceso no pueda calcularse aplicando una función inversa al verificador de código de acceso resultante. El elemento de datos de enmascaramiento de código de acceso puede tener una alta entropía y el verificador de código de acceso puede generarse de manera que tenga también una alta entropía, de manera que pueda ser inviable en la práctica recuperar, mediante un ataque de fuerza bruta, el valor de código de acceso real a partir del verificador de código de acceso si no se conoce el elemento de datos de enmascaramiento de código de acceso. Por ejemplo, el verificador de código de acceso puede ser calculado por el token de autenticación aplicando una función hash, preferiblemente una función hash criptográficamente segura, tal como SHA-256, a una combinación, tal como una concatenación, del valor de código de acceso y el elemento de datos de enmascaramiento de código de acceso. El elemento de datos de enmascaramiento de código de acceso puede haber sido generado por un generador de números realmente aleatorios o pseudoaleatorios. En algunas realizaciones, el número de enmascaramiento de código de acceso puede generarse en base a datos realmente aleatorios o pseudoaleatorios generados por el token de autenticación. En algunas realizaciones, el número de enmascaramiento de código de acceso puede generarse en base a datos realmente aleatorios o pseudoaleatorios generados por un servidor de autenticación. En algunas realizaciones, el número de enmascaramiento de código de acceso puede generarse en base a una combinación de datos realmente aleatorios o pseudoaleatorios generados por el token de autenticación y datos realmente aleatorios o pseudoaleatorios generados por un servidor de autenticación. El código de acceso real puede borrarse del token de autenticación cada vez que se usa e inmediatamente después de que se haya usado. En una etapa de inicialización, el verificador de código de acceso puede haber sido transferido de manera segura a un servidor de verificación o de autenticación y puede almacenarse permanentemente en el servidor de verificación o de autenticación, y solo en el token de verificación o de autenticación, para su uso futuro, por ejemplo, para la verificación de una credencial de autenticación dinámica generada por el token de autenticación.
En algunas realizaciones, cada credencial de autenticación dinámica generada puede ser un HMAC bajo una clave que se actualiza para cada credencial generada. Una de las entradas al HMAC puede ser el verificador de código de acceso. Una vez verificada la credencial, la clave antigua puede descartarse y el estado puede actualizarse. De esta manera, el servidor de verificación no puede aprender el código de acceso (solo tiene una copia del verificador de código de acceso, y no el elemento de datos de código de acceso, de manera que el valor de código de acceso real no pueda recuperarse aplicando un ataque de fuerza bruta sobre la copia del verificador de código de acceso mantenida en el servidor).
El token de autenticación nunca almacena el código de acceso, de manera que la extracción de información a partir del token de autenticación no permitirá que se descubra el código de acceso (aunque el elemento de datos de enmascaramiento de código de acceso está almacenado en el token de autenticación, este no puede usarse para recuperar el valor del código de acceso mediante un ataque de fuerza bruta sin el conocimiento del verificador de código de acceso).
Además, dada una credencial antigua y el estado actual del token de autenticación, el código de acceso no puede descubrirse debido a que la clave necesaria para comprobar un código de acceso candidato ha sido destruida tanto por el servidor como por el cliente.
Otros aspectos del protocolo, del sistema y del método de la invención pueden estar relacionados con cómo mantener sincronizados el servidor y el cliente, lo que puede conseguirse siguiendo ciertas reglas en lo que se refiere a cuándo actualizar el estado. Detalles adicionales de estos aspectos se describen en otras partes de la presente descripción.
En algunas realizaciones, las técnicas descritas en la presente descripción pueden aplicarse también a cualquier dato sensible relacionado con la autenticación de usuario que debería permanecer secreto y que puede ser vulnerable a ataques de fuerza bruta, por ejemplo, ya que puede tener una baja entropía. Por ejemplo, estas técnicas pueden aplicarse también a PINs, contraseñas y plantillas biométricas, que podrían ser todos ellos ejemplos de un código de acceso.
Realizaciones particulares:
En los siguientes párrafos se describirá un conjunto particular de realizaciones de la invención.
Terminología y definiciones:
- PRNG(longitud): una cadena de bits de 'longitud' bits a partir de un generador de números aleatorios criptográficamente seguro, que puede comprender un generador de números realmente aleatorios o un generador de números pseudoaleatorios.
- IENCODE(i, longitud): indica una cadena de bits que es el resultado de codificar el número 'I' como entero “big-endian” y relleno por la izquierda con ceros hasta 'longitud' bits.
- <>: indica una cadena de bytes de longitud cero.
- {a,b,c,...}: indica el resultado de concatenar las cadenas de bits 'a', 'b', 'c',... en el orden proporcionado.
- S: a menos que se especifique lo contrario, se refiere al servidor de autenticación y puede indicar también una acción o etapa realizada por el servidor de autenticación. - C: a menos que se especifique lo contrario, se refiere a un cliente de autenticación, tal como el token de autenticación o la aplicación de cliente de autenticación, y puede indicar también una acción o etapa realizada por el cliente de autenticación.
- La expresión "Remitente -> Receptor: Mensaje” significa que la cadena de bits 'Mensaje' es enviada desde la entidad 'Remitente' a la entidad 'Receptor'. Puede implicar además la generación por parte de la entidad 'Remitente' de la cadena de bits 'Mensaje' antes de la transferencia de 'Mensaje' desde el 'Remitente' al 'Receptor'.
Primitivas criptográficas:
Primitiva de encriptación:
La expresión "texto cifrado = ENC(K, IV, Datos)" indica la encriptación de la cadena de bits 'Datos' para obtener el resultado 'texto cifrado' usando un algoritmo de encriptación criptográfico parametrizado con la clave ‘K’ de encriptación criptográfica usando (si es aplicable para el algoritmo de encriptación elegido) el vector de inicialización 'IV'. En algunas realizaciones, el algoritmo de encriptación puede comprender un algoritmo de encriptación simétrico. En algunas realizaciones, el algoritmo de encriptación simétrico puede comprender un encriptador de bloque, tal como AES (estándar de encriptación avanzado) o 3DES (estándar de triple encriptación de datos) en algún modo de encriptación. Por ejemplo, en algunas realizaciones, el algoritmo AES puede usarse en el modo CTR (modo contador, véase también: el sitio web situado en la dirección web en.wikipedia.org/wiki/Block_cipher_mode_of_operation#CTR) y la clave K puede tener un tamaño de 128 bits y el valor inicial del contador para el modo CTR puede calcularse a partir del vector de inicialización. En algunas realizaciones, el valor inicial del contador para el modo CTR puede calcularse como el vector de inicialización desplazado a la izquierda un número de posiciones, por ejemplo, IV<<64. En algunas realizaciones, el vector de inicialización puede calcularse a partir de un contador 'CTR' y un número aleatorio. Por ejemplo, el vector de inicialización puede calcularse como una función del contador 'CTR' de la siguiente manera: IV(CTR) = {IENCODE(CTR, 6 x 8), PRNG(2 x 8)}.
Primitiva de generación de credenciales:
En algunas realizaciones, una credencial puede calcularse usando una clave 'K' y una cadena de bits de entrada 'Datos' usando una función criptográfica que usa como entradas la clave 'K' y la cadena de bits 'Datos'. Por ejemplo, en algunas realizaciones, la credencial puede calcularse como un código de autenticación de mensaje (MAC) usando como entradas la clave 'K' y la cadena de bits 'Datos'. En algunas realizaciones, la función criptográfica para calcular la credencial puede comprender una encriptación (o desencriptación) de la cadena de bits 'Datos' bajo la clave 'K'. En algunas realizaciones, la función criptográfica para calcular la credencial puede comprender una función unidireccional. En algunas realizaciones, la función unidireccional puede comprender una función hash criptográfica. En algunas realizaciones, la función unidireccional puede comprender una función hash con clave. Por ejemplo, en algunas realizaciones, la credencial puede calcularse como MAC = HMAC(K, Datos), de manera que HMAC indique un código de autenticación de mensaje basado en hash de Datos bajo la clave K, tal como el HMAC especificado por RFC 2104, o un HMAC SHA-256, tal como especifica RFC4231. En algunas realizaciones, la clave K puede tener un tamaño de 128 bits. En algunas realizaciones, el criptograma, hash o MAC resultante puede estar truncado. En algunas realizaciones, si los datos no son un múltiplo de 8 bits, entonces pueden rellenarse con ceros a la izquierda hasta el siguiente límite de byte.
Primitiva de actualización de clave:
La expresión "estadoi+1, clavei+1 = UPDATE(estadoi)” indica la actualización de los valores de una clave y un estado mediante el uso de alguna clave criptográfica y algún algoritmo de actualización de estado para calcular los nuevos valores 'clavei+1' para la clave y 'estadoi+1' para el estado partiendo del valor 'estadoi ' antiguo del estado, y reemplazar (si corresponde) los valores antiguos para la clave y para el estado por los valores recién calculados. En algunas realizaciones, el nuevo valor del estado puede calcularse a partir del valor actual del estado usando una primera función irreversible que toma el valor actual del estado como una entrada. En algunas realizaciones, el nuevo valor de la clave criptográfica puede calcularse a partir del valor actual del estado usando una segunda función irreversible que toma el valor actual del estado como una entrada. En algunas realizaciones, las funciones irreversibles para calcular los nuevos valores del estado y de la clave criptográfica a partir del valor actual del estado, pueden comprender, por ejemplo, una función hash criptográfica segura. En algunas realizaciones, el algoritmo de actualización de la clave criptográfica y del estado puede comprender un algoritmo de actualización de clave, tal como el algoritmo de actualización de clave divulgado en "Forward-Security in Private-Key Cryptography” de Mihir Bellare y Bennet Yee, Springer LNCS 2612. En algunas realizaciones, el algoritmo de actualización de la clave criptográfica y del estado puede definirse como:
- clavei+1 = ENC(estadoi, IV_1, Datos_1) donde, en una realización específica, Datos_1 puede consistir en los 16 bytes 0x00...0x00 y IV_1 puede tener el valor 0
- estadoi+1 = ENC(estadoi, IV_2, Datos_2) donde, en una realización específica, Datos_2 puede consistir en los 16 bytes 0x00...0x00 y IV_2 puede tener el valor 263.
Constantes:
En algunas realizaciones, pueden usarse una serie de constantes. Por ejemplo, en algunas realizaciones pueden usarse las siguientes constantes: VERSION, MSG_CHALLENGE, MSG_RESPONSE, MSG_ACTIVATION_CHALLENGE, MSG_ACTIVATION_RESPONSE, en el que las últimas cuatro constantes pueden tener valores que son todos ellos diferentes entre sí. En una realización particular, estas constantes pueden tener los siguientes valores:
VERSION:=IENCODE(0, 8)
MSG_CHALLENGE:=IENCODE(1, 4) MSG_RESPONSE:=IENCODE(2, 4) MSG_ACTIVATION_CHALLENGE:=IENCODE(3, 4)
MSG ACTIVATION_RESPONSE:=IENCODE(4, 4)
Parámetros y configuración inicial:
Todos los parámetros son para una combinación token de autenticación - servidor particular. Los datos recuperados por el servidor para un token de autenticación particular pueden corresponder a una cuenta de usuario particular en la que se está iniciando sesión o se ha iniciado sesión. Los datos recuperados por el servidor pueden corresponder al token de autenticación particular o a la instancia particular de la aplicación de autenticación lanzada.
Figure imgf000015_0001
Figure imgf000016_0001
Suposiciones y notas:
En algunas realizaciones, puede suponerse que el atacante puede controlar una red para pasar mensajes entre el token de autenticación y el servidor, y puede ser capaz de montar un ataque MitM (hombre en el medio) completo. En algunas realizaciones, puede suponerse también que el token o la aplicación de autenticación son seguros. En algunas realizaciones, puede suponerse también que el servidor es seguro.
En algunas realizaciones, el token de autenticación puede implementarse usando hardware seguro, y el token de autenticación puede ser capaz de MAC y/o de desencriptar mensajes arbitrarios, pero es posible que no libere las claves. En dichas realizaciones, puede ser ventajoso si se incluye un “nonce” (valor aleatorio de un solo uso) en los mensajes. Un atacante con solo un acceso temporal al token de autenticación no puede predecir los “nonces” para ninguna transacción futura.
Preactivación del cliente:
En algunas realizaciones, el servidor puede generar los siguientes elementos de datos, tal como se ha indicado anteriormente, y, durante una preactivación del cliente, pueden ser transferidos desde el servidor al cliente: Clave MAC de desafío, KCMAC:=KSMAC, clave de encriptación KCENC:=KSENC, estado de respuesta SCRES: =SSRES, Clave MAC de activación KCACT:= KSACT.
Sub-protocolo de activación:
Sumario:
En algunas realizaciones, el estado inicial de un token o una aplicación de autenticación puede ser tal como se ha mostrado anteriormente. Antes de que pueda realizarse la firma de una transacción o la generación dinámica de credenciales, puede ser necesario activar el token o la aplicación de autenticación. En algunas realizaciones, la activación puede realizarse solo una vez, pero puede estar estrechamente relacionada con el cambio de código de acceso. El resultado final de la activación puede ser que, por una parte, el servidor puede tener una copia del verificador de código de acceso (PV) y, por otra parte, el cliente puede haber almacenado un valor correspondiente del elemento de datos de enmascaramiento de código de acceso (PR). Esta etapa puede realizarse de manera que el servidor no llegue a conocer el código de acceso del usuario, pero puede verificar si se introdujo correctamente para la generación de una credencial que puede haber sido recibida por el servidor. El mensaje de respuesta desde el cliente, que puede comprender el valor del verificador de código de acceso, puede encriptarse bajo una clave segura de reenvío de manera que, si alguien roba el token de autenticación, que puede comprender, por ejemplo, un teléfono inteligente, y ha observado una credencial generada por el token de autenticación, no puede adivinar el código de acceso del usuario.
Detalles:
En algunas realizaciones, el usuario puede contactar con el servidor y puede iniciar el procedimiento de activación. El procedimiento de activación o el protocolo de activación puede comprender las siguientes etapas:
Etapa 1: En algunas realizaciones, el servidor puede generar un mensaje de activación y puede transferir el mismo desde el servidor al cliente de la siguiente manera:
S -> C: {Versión, ID de servicio, ID de usuario, IV,
ENC(KSENC, IV, {Transacción, Tipo, “nonce”, MAC_de_activación})}
donde:
Versión = VERSION
ID de servicio = IDSS
ID de usuario = IDSU
IV = IV(CS)
Transacción = IENCODE(0, 212)
Tipo =MSG_ACTIVATION_CHALLENGE
“nonce” = PRNG(128)
MAC_de_activación = HMAC(KSMAC, {Versión, Tipo, Transacción, “nonce”, IV}); en algunas realizaciones, MAC_de_activación puede truncarse a 64 bits.
Etapa 2: la clave KTACT y el estado SSRES pueden actualizarse en el servidor S: SSRES, KTACT: =UPDATE(SSRES)
Etapa 3: el cliente puede recibir y decodificar el mensaje de activación.
Etapa 4: el cliente puede verificar si IDCU es o no igual a IDSU. Si IDCU != IDSU, entonces el cliente puede mostrar un mensaje de error y salir.
Etapa 5: el cliente puede desencriptar la parte encriptada del mensaje de activación y puede verificar MAC_de_activación; el cliente puede salir si esto falla.
Etapa 6: El cliente puede extraer el contador desde el vector IV inicial y, si ese contador (extraído desde IV) < = último valor conocido del contador, o > último valor conocido del contador 100, el cliente puede abortar.
Etapa 7: El cliente puede obtener el elemento de datos de enmascaramiento de código de acceso. Por ejemplo, si el cliente todavía no tiene un valor del elemento de datos de enmascaramiento de código de acceso, puede generar el elemento de datos de enmascaramiento de código de acceso como un número aleatorio. Por ejemplo, en una realización particular: C: Si PR= =<> entonces PR: =PRNG(128)
Etapa 8: El cliente puede solicitar al usuario que proporcione el valor del código de acceso y puede capturar el código de acceso proporcionado por el usuario. En algunas realizaciones, puede solicitarse al usuario que proporcione el código de acceso dos veces para su confirmación y el cliente puede estar adaptado para verificar que los dos valores del código de acceso proporcionados por el usuario son consistentes.
Etapa 9: El estado y la clave pueden actualizarse en el cliente (esto puede repetirse dependiendo de la diferencia entre el valor para el contador extraído desde IV y el último valor conocido del contador):
C: SCRES, K:=UPDATE(SCRES)
Etapa 10: Respuesta generada:
C -> ENC(K, 0, {V, HMAC(KCACT, {Versión, Tipo, Transacción, V})
donde:
Versión = VERSION
Tipo = MSG_ACTIVATION_RESPONSE
Transacción = IENCODE(0, 212)
V = HMAC(PR, código de acceso) (truncado a 30 bits)
HMAC(KCACT, msg) se trunca a 15 bits
Etapa 11: S: El servidor puede desencriptar la respuesta con KTACT, y puede verificar la misma con KCACT, y puede establecer PV:=V
Sub-protocolo de autenticación:
Sumario:
Este sub-protocolo de autenticación puede realizarse para permitir a los usuarios autenticarse a sí mismos o autorizar una transacción particular. El resultado puede ser, por ejemplo, que el servidor, tras una verificación exitosa de la credencial de autenticación proporcionada por el usuario, concluya que el usuario ha visto los detalles de transacción correctos y ha introducido el código de acceso correcto. El servidor no debería conocer el propio código de acceso. Un espía que graba toda la comunicación no debería poder obtener el código de acceso, incluso después de robar el teléfono (ya que la clave MAC se descarta después de su uso).
Detalles:
Etapa 1: En algunas realizaciones, el usuario puede contactar con el servidor y puede iniciar una autenticación o una transacción.
Etapa 2: El cliente puede obtener el valor de una variable dinámica. En algunas realizaciones, el valor de la variable dinámica puede basarse en un contador mantenido por el cliente. En algunas realizaciones, el cliente puede sincronizar su valor de dicho contador con el valor de contador correspondiente mantenido por el servidor. En algunas realizaciones, el valor de la variable dinámica puede basarse en un elemento de datos externo que el cliente puede recibir, por ejemplo, en un mensaje desde el servidor. El elemento de datos externo puede comprender, por ejemplo, un desafío de autenticación y/o “nonce” que puede ser generado por el servidor. El elemento de datos externo puede comprender también, por ejemplo, datos de transacción que representan una transacción a ser autorizada por el usuario. En algunas realizaciones, el servidor puede autenticar el mensaje, por ejemplo, añadiendo un código de autenticación de mensaje (MAC). En algunas realizaciones, el servidor puede encriptar también el mensaje del servidor. Por ejemplo, en una realización particular, el servidor puede generar y enviar un mensaje de desafío de autenticación al cliente de la siguiente manera:
S -> C: {Versión, ID de servicio, ID de usuario, IV,
ENC(KSENC, IV, {Transacción, Tipo, “nonce”, MAC_de_desafío})}
donde:
Versión = VERSION
ID de servicio = IDSS
ID de servicio = IDSU
IV = IV(CS)
Transacción = puede comprender los detalles codificados de la transacción a ser autorizada; en algunos casos, 'Transacción' puede codificarse con un desafío de autenticación (aleatorio) que puede carecer de sentido para el usuario, o puede codificarse con un valor predeterminado, por ejemplo, si el sub-protocolo de autenticación se usa para autenticar al usuario en lugar de para autorizar una transacción particular.
Tipo=MSG_CHALLENGE
“nonce” = PRNG(128)
MAC_de_desafío = HMAC(KSMAC, {Versión, Tipo, Transacción, “nonce”, IV}), truncado a 64 bits
Etapa 3: La clave K y el estado SSRES pueden actualizarse en el servidor:
S: SSRES, K:=UPDATE(SSRES)
Etapa 4: El servidor puede generar una respuesta esperada (que en algunas realizaciones puede truncarse a 30 bits), que puede servir como un valor de referencia de credencial a ser comparado con una credencial de autenticación que el servidor puede recibir posteriormente desde el cliente:
S: E = HMAC(K, {Versión, Tipo, Transacción, “nonce”, IV, PV}) donde:
Versión = VERSION
Tipo = MSG_RESPON SE
Transacción, “nonce”, IV se toman desde el mensaje de desafío de autenticación
Etapa 5: El cliente puede decodificar el mensaje de desafío de autenticación recibido.
Etapa 6: C: Si IDCU!=IDSU, entonces mostrar un mensaje de error y salir,
Etapa 7: El cliente puede desencriptar el mensaje de desafío de autenticación recibido y verificar el MAC_de_desafío para autenticar el origen del mensaje. Si esta verificación falla, entonces el cliente puede abortar.
Etapa 8: Si el contador (extraído desde IV) <= último contador, o > último contador 100, entonces el cliente puede abortar.
Etapa 9a: El cliente puede presentar al usuario los datos de transacción codificados en Transacción y puede solicitar al usuario que autorice los datos de transacción presentados. Si Transacción no contiene datos significativos (como un valor codificado o un valor hash), entonces puede omitirse esta etapa. Si el usuario no autoriza los datos de transacción presentados, el cliente puede abortar.
Etapa 9b: El cliente puede solicitar al usuario que proporcione el código de acceso. Si el usuario no proporciona el código de acceso, el cliente puede abortar. En algunas realizaciones, el usuario puede indicar implícitamente la autorización (por ejemplo, de los datos de transacción presentados) proporcionando el código de acceso.
Etapa 10: la clave K y el estado SCRES pueden actualizarse en el cliente (con el fin de sincronizar el estado del cliente con el estado del servidor, esto puede repetirse varias veces en base al contador):
C: SCRES, K:=UPDATE(SCRES);
Etapa 11: El cliente puede generar una credencial de autenticación en respuesta a la recepción del mensaje de desafío de autenticación desde el servidor y el cliente puede devolver la credencial de autenticación generada al servidor de la siguiente manera: C -> S: HMAC(K, {Versión, Tipo, Transacción, “nonce”, IV, V})
donde:
Versión = VERSION (puede rellenarse con ceros a la izquierda hasta 8 bits) Tipo = MSG_RESPONSE
Transacción, “nonce”, IV se toman desde el mensaje de desafío de autenticación V = HMAC(PR, código de acceso)
En algunas realizaciones, la credencial generada puede truncarse a 30 bits.
Etapa 12: el servidor puede verificar si la credencial de autenticación coincide con la respuesta E esperada. En algunas realizaciones, el servidor puede generar una señal que indica si la verificación de la credencial de autenticación ha sido exitosa o no.
Posibles variantes:
En algunas realizaciones, el ID de usuario y/o el ID de servicio pueden incluirse en el MAC para su integridad.
En algunas realizaciones, el tipo de mensaje puede moverse al inicio del mensaje, de manera que pueda usarse para decidir cómo debería decodificarse el resto del mensaje.
En algunas realizaciones de la invención, el código de acceso puede comprender información secreta proporcionada por un usuario, tal como, por ejemplo, un PIN o una contraseña. En otras realizaciones, el código de acceso puede comprender otra información que puede estar relacionada con el usuario o que puede ser específica del usuario y que puede tener una naturaleza confidencial y debería permanecer confidencial, tal como, por ejemplo, algunos tipos de información biométrica.
Breve descripción de los dibujos
Lo indicado anteriormente y otras características y ventajas de la invención serán evidentes a partir de la siguiente descripción más particular de las realizaciones de la invención, tal como se ilustra en los dibujos adjuntos.
La Figura 1 ilustra esquemáticamente un aparato ejemplar según un aspecto de la invención.
La Figura 2 ilustra esquemáticamente un sistema ejemplar según un aspecto de la invención.
La Figura 3 ilustra esquemáticamente un método ejemplar según un aspecto de la invención.
La Figura 4 ilustra esquemáticamente un método ejemplar para verificar una credencial de autenticación dinámica según un aspecto de la invención.
Descripción detallada
A continuación, se describen algunas implementaciones de la presente invención. Aunque se describen implementaciones específicas, debería entenderse que esto se hace solo con propósitos ilustrativos. Una persona experta en la técnica relevante reconocerá que pueden usarse otros componentes y configuraciones sin apartarse del alcance de la invención.
La Figura 1 ilustra esquemáticamente un aparato o token (100) ejemplar de la invención según un aspecto de la invención.
En algunas realizaciones, el aparato o token (100) puede comprender un token de autenticación fuerte. En algunas realizaciones, el aparato o token puede comprender, por ejemplo, un dispositivo de hardware electrónico dedicado cuya función principal o única es proporcionar servicios de autenticación para un usuario legítimo del dispositivo. En algunas realizaciones, el aparato o token (100) puede comprender un dispositivo informático general personal, tal como un PC (ordenador personal), un ordenador de tipo tableta, un teléfono inteligente o un reloj inteligente. En algunas realizaciones, el aparato o token (100) puede comprender cualquiera de los tokens de autenticación fuertes o clientes de autenticación descritos más detalladamente en otras partes de la presente descripción. En algunas realizaciones, el aparato o token (100) puede estar adaptado para realizar cualquiera de las etapas o acciones del método realizadas por cualquiera de los tokens de autenticación fuerte o clientes de autenticación descritos más detalladamente en otras partes de la presente descripción.
El aparato o token (100) puede comprender una interfaz (120) de entrada de usuario humano, una interfaz (130) de salida de usuario humano, una interfaz (140) de entrada de datos, un procesador (150) de datos, un componente (160) de memoria y un componente (170) para proporcionar el valor de una variable dinámica.
Procesador (150) y memoria (160):
El token puede comprender un componente (150) de procesamiento de datos digitales que puede estar adaptado para ejecutar un conjunto de instrucciones de procesamiento de datos, por ejemplo, para implementar una o más de las funciones atribuidas a cualquiera de los tokens de autenticación fuerte o clientes de autenticación descritos más detalladamente en otras partes de la presente descripción. En algunas realizaciones, el componente (150) de procesamiento de datos puede comprender, por ejemplo, uno o más microprocesadores, microcontroladores, chips de procesador de señal digital (DSP), matrices de puertas programables en campo (FPGA), circuitos integrados de aplicación específica (ASIC), etc.
El token puede comprender un componente (160) de memoria. El componente (160) de memoria puede estar conectado al componente (150) de procesamiento de datos digitales. En algunas realizaciones, el componente de memoria puede comprender un componente de memoria de programa que está adaptado para almacenar software o firmware a ser ejecutado por el componente de procesamiento de datos. En alguna realización, la funcionalidad que admite el token puede estar definida por el software o el firmware almacenado en su memoria.
En algunas realizaciones, el componente (160) de memoria puede comprender un componente de memoria de datos que está adaptado para almacenar datos de manera permanente o temporal. En algunas realizaciones, el componente de memoria de datos puede estar adaptado para almacenar de manera segura datos secretos, tales como claves criptográficas o un elemento de datos de enmascaramiento de código de acceso. En algunas realizaciones, el componente de memoria de datos puede estar adaptado para almacenar los datos de múltiples instancias de token.
El componente de memoria puede comprender, por ejemplo, memoria RAM (memoria de acceso aleatorio), memoria ROM (memoria de solo lectura), memoria EPROM (memoria de solo lectura programable y borrable), memoria programable una sola vez, memoria flash, memoria de estado sólido, un disco duro, etc.
El token puede comprender además un generador de números aleatorios o pseudoaleatorios que el token puede usar, por ejemplo, para generar un elemento de datos de enmascaramiento de código de acceso.
Interfaz (120, 130) de usuario:
En algunas realizaciones, el token de autenticación fuerte puede comprender una interfaz (120, 130) de usuario para interactuar con un usuario, por ejemplo, para intercambiar datos, información y/o comandos con un usuario. La interfaz (120, 130) de usuario puede conectarse al componente (150) de procesamiento de datos digitales.
En algunas realizaciones, la interfaz de usuario del token de autenticación fuerte puede comprender una interfaz (130) de salida de usuario para presentar información y/o datos (tales como instrucciones o mensajes para el usuario, datos de transacciones a ser aprobados por el usuario, una credencial dinámica generada por el token de autenticación fuerte) a un usuario del token de autenticación fuerte. En algunas realizaciones, la interfaz de salida de usuario puede comprender, por ejemplo, una pantalla (130) o una interfaz de salida de audio. En algunas realizaciones, la interfaz de usuario del token de autenticación fuerte puede comprender una interfaz (120) de entrada de usuario para recibir entradas desde un usuario, tales como, por ejemplo, datos de entrada (tal como un desafío de autenticación o datos de transacción) o instrucciones (tales como una confirmación, autorización o cancelación) o un código de acceso. En algunas realizaciones, la interfaz de entrada de usuario puede comprender, por ejemplo, un teclado (120). En algunas realizaciones, la interfaz de usuario del token de autenticación fuerte puede comprender una pantalla táctil que puede estar adaptada para ofrecer las funciones tanto de una interfaz de salida de usuario como de una interfaz de entrada de usuario.
Interfaz (140) de entrada de datos:
En algunas realizaciones, el token de autenticación fuerte puede comprender una interfaz de entrada de datos digitales. La interfaz (140) de entrada de datos puede conectarse al componente (150) de procesamiento de datos digitales. En algunas realizaciones, la interfaz de entrada de datos digitales del token de autenticación fuerte puede estar adaptada para recibir mensajes de datos digitales. En algunas realizaciones, la interfaz de entrada de datos digitales puede comprender, por ejemplo, una conexión a Internet. En algunas realizaciones, la interfaz de entrada de datos digitales puede comprender, por ejemplo, una conexión de datos por cable local, tal como una conexión de bus serie universal (USB). En algunas realizaciones, la interfaz de entrada de datos digitales puede comprender una interfaz de datos inalámbrica local, tal como, por ejemplo, una interfaz BLUETOOTH o Wi-Fi. En algunas realizaciones, la interfaz de entrada de datos digitales puede comprender una interfaz de red de comunicación de datos móviles. En algunas realizaciones, el token de autenticación fuerte puede comprender, por ejemplo, un teléfono inteligente. En algunas realizaciones, la interfaz de entrada de datos puede comprender un componente (140) de adquisición de imágenes ópticas. En algunas realizaciones, el componente de adquisición de imágenes ópticas puede comprender una cámara. En algunas realizaciones, el token de autenticación fuerte puede estar adaptado para capturar, con el componente de adquisición de imágenes ópticas, imágenes que pueden codificarse con un mensaje de datos digitales. En algunas realizaciones, la imagen puede comprender un código de barras bidimensional. En algunas realizaciones, el formato de la imagen puede estar definido en un estándar. Por ejemplo, en algunas realizaciones, la imagen óptica puede ser un código QR.
En otras realizaciones, la interfaz de entrada de datos digitales puede comprender una interfaz acústica adaptada para capturar señales acústicas que pueden codificarse con mensajes o comandos para el token. En algunas realizaciones, la interfaz acústica puede comprender un micrófono. En algunas realizaciones, la interfaz acústica puede comprender un convertidor analógico-a-digital para convertir la señal electrónica analógica en una señal digital que puede ser procesada adicionalmente, por ejemplo, por el componente de procesamiento de datos digitales descrito anteriormente.
En algunas realizaciones, el aparato o token (100) puede estar adaptado para usar la interfaz (140) de entrada de datos para recibir cualquiera de los mensajes de autenticación, descritos más detalladamente en otras partes de la presente descripción, que pueden haber sido generados por un servidor de autenticación y enviados al aparato o al token, por ejemplo, en forma de un código de barras bidimensional que, por ejemplo, puede ser visualizado por un dispositivo de acceso, tal como se explica más detalladamente en otras partes de la presente descripción.
Generación de credenciales:
El token puede estar adaptado para generar credenciales dinámicas, tal como se explica más detalladamente en otras partes de la presente descripción. En algunas realizaciones, el componente (150) de procesamiento de datos puede estar adaptado para realizar cálculos criptográficos para generar las credenciales dinámicas. En algunas realizaciones, el token puede estar adaptado para generar credenciales dinámicas usando claves criptográficas que pueden almacenarse de manera permanente o temporal en el componente (160) de memoria o que el token puede derivar a partir de datos almacenados de manera permanente o temporal en el componente (160) de memoria. En algunas realizaciones, el token puede estar adaptado para generar credenciales dinámicas usando datos que forman parte de una instancia de token almacenada en el componente (160) de memoria. En algunas realizaciones, el token puede estar adaptado para usar un algoritmo criptográfico simétrico para generar las credenciales dinámicas. En algunas realizaciones, este algoritmo criptográfico para generar credenciales dinámicas puede parametrizarse con una o más claves de generación de credenciales criptográficas secretas simétricas. En algunas realizaciones, las claves de generación de credenciales pueden compartirse con un servidor, tal como, por ejemplo, un servidor de verificación de credenciales o un servidor de autenticación.
En algunas realizaciones, el token puede estar adaptado para generar credenciales dinámicas usando una variable dinámica que puede comprender un valor interno proporcionado por el token. Por ejemplo, en algunas realizaciones, el token puede comprender un reloj (170) y el token puede usar, como valor interno, el valor de tiempo proporcionado por ese reloj. En algunas realizaciones, el token puede mantener un contador y el token puede estar adaptado para usar el valor de ese contador como un valor interno para generar una credencial dinámica para esa instancia y actualizar el valor de ese contador (por ejemplo, aumentando o disminuyendo el mismo) cada vez que el token usa el valor de ese contador para generar una credencial dinámica.
En algunas realizaciones, el token puede estar adaptado para generar credenciales dinámicas usando una variable dinámica que puede comprender un valor externo proporcionado al token. En algunas realizaciones, dicho valor externo puede comprender un desafío de autenticación o un “nonce” generado por un servidor o datos de transacción a ser firmados. En algunas realizaciones, el valor externo puede ser proporcionado manualmente al token por el usuario usando la interfaz de entrada de usuario del token. Por ejemplo, el token puede capturar un desafío de autenticación o datos de transacción que el usuario puede introducir como una cadena de caracteres en un teclado incluida en el token. En algunas realizaciones, el valor externo se proporciona comprendido en un mensaje o un comando que es recibido por el token por medio de su interfaz de entrada de datos.
En algunas realizaciones, el token puede estar adaptado para presentar la credencial dinámica generada al usuario. Por ejemplo, en algunas realizaciones, el token puede mostrar la credencial dinámica generada como una cadena de caracteres legibles en su pantalla. En algunas realizaciones, la cadena puede comprender solo caracteres decimales. En otras realizaciones, la cadena puede comprender caracteres alfanuméricos.
Token de hardware dedicado seguro:
En algunas realizaciones, el token (100) puede ser un dispositivo de hardware dedicado. En algunas realizaciones, el token puede estar dedicado para ser usado en métodos para asegurar el acceso de un usuario a una aplicación (que puede ser una aplicación basada en ordenador o automatizada) o para asegurar la interacción de un usuario con dicha aplicación. En algunas realizaciones, el objetivo principal del dispositivo de autenticación es el de ser usado en métodos para asegurar el acceso de un usuario a una aplicación o para asegurar la interacción de un usuario con dicha aplicación. En algunas realizaciones, con el fin de garantizar la dedicación del dispositivo de autenticación a su uso como dispositivo de seguridad, el dispositivo de autenticación puede estar adaptado para que sea imposible alterar su firmware. En algunas realizaciones, con el fin de garantizar la dedicación del dispositivo de autenticación a su uso como dispositivo de seguridad, cualquier cambio o actualización de su firmware solo es posible mediante un protocolo de actualización de firmware seguro que está diseñado para garantizar que solo una parte de control de confianza autorizada pueda actualizar o cambiar el firmware del dispositivo de autenticación. Esto permite que la parte de control de confianza garantice que no se produzca ninguna actualización de firmware que deshaga o comprometa la dedicación del dispositivo de autenticación a su uso en métodos para asegurar el acceso de un usuario a una aplicación o para asegurar la interacción de un usuario con dicha aplicación. Los dispositivos en los que los usuarios pueden instalar software adicional que no está autorizado por una parte de control de confianza no pueden considerarse como dispositivos dedicados. Los dispositivos cuyo objetivo principal es ofrecer servicios de telecomunicaciones no pueden considerarse dispositivos dedicados a ser usados en métodos para asegurar el acceso de un usuario a una aplicación y su interacción con la misma. Los PCs de uso general, los ordenadores portátiles, los ordenadores de tipo tableta y los teléfonos inteligentes no pueden considerarse dispositivos dedicados.
En algunas realizaciones, el token (100) es un dispositivo de hardware seguro. En algunas realizaciones, el dispositivo de hardware seguro está adaptado para garantizar la detección de, y/o para resistir a, los intentos de manipulación del dispositivo de hardware seguro. En algunas realizaciones, la carcasa del dispositivo de hardware seguro está adaptada para resistirse a la apertura de la carcasa y/o para aumentar la probabilidad de que un usuario perciba los intentos de abrir la carcasa gracias a una deformación de la carcasa (evidencia de manipulación). En algunas realizaciones, las partes que conforman entre sí la carcasa pueden soldarse o pegarse unas a otras, de manera que los intentos de separar estas partes conducirán típicamente a una deformación obvia de la carcasa. En algunas realizaciones, el dispositivo de hardware seguro comprende un interruptor que detecta la apertura de la carcasa. En algunas realizaciones, el dispositivo de hardware seguro está adaptado para realizar una acción apropiada tras detectar un intento de manipulación. En algunas realizaciones, el dispositivo de hardware seguro puede borrar ciertos datos confidenciales, tales como claves criptográficas, un elemento de datos de enmascaramiento de código de acceso, o el dispositivo de hardware seguro puede (posiblemente de manera irreversible) entrar en un modo de error o puede dejar de funcionar tras la detección de un supuesto intento de manipulación del dispositivo de hardware seguro.
El dispositivo de hardware seguro puede tener una interfaz de salida de usuario segura (por ejemplo, una pantalla segura) y una interfaz de entrada de usuario segura (por ejemplo, un teclado seguro). En algunas realizaciones, el dispositivo de hardware seguro tiene una interfaz de salida que es segura en el sentido de que está completamente controlada por el dispositivo de hardware seguro y que no puede usarse para presentar datos o información a un usuario por parte de un proceso externo al dispositivo de hardware seguro o que solo puede usarse para presentar datos o información a un usuario por parte de un proceso externo al dispositivo de hardware seguro si esta acción está autorizada y controlada por el dispositivo de hardware seguro. En algunas realizaciones, el dispositivo de hardware seguro tiene una interfaz de entrada de usuario que es segura en el sentido de que está totalmente controlada por el dispositivo de hardware seguro y que no puede usarse para obtener datos o información desde un usuario por parte de un proceso externo al dispositivo de hardware seguro o que solo puede usarse para obtener datos o información desde un usuario por parte de un proceso externo al dispositivo de hardware seguro si esta acción está autorizada y controlada por el dispositivo de hardware seguro. En algunas realizaciones, la seguridad de las interfaces de entrada y salida de usuario seguras es mantenida por el dispositivo de hardware seguro que no permite ningún cambio en su firmware o que proporciona un mecanismo de actualización de firmware seguro que solo permite cambios en su firmware mediante un protocolo seguro que garantiza que el dispositivo de hardware seguro solo acepte actualizaciones de firmware autorizadas desde una fuente confiable.
En algunas realizaciones, el token no es un dispositivo de hardware dedicado. En algunas realizaciones, el token puede comprender un dispositivo de consumo electrónico cuyo propósito principal puede no ser proporcionar la funcionalidad de autenticación, pero que puede comprender software para proporcionar la funcionalidad de token de autenticación fuerte descrita en la presente descripción. Por ejemplo, en algunas realizaciones, el token puede comprender un ordenador de tipo tableta o un teléfono inteligente que comprende una aplicación de autenticación que proporciona la funcionalidad de token de autenticación fuerte descrita en la presente descripción.
Factor de forma:
En algunas realizaciones, el token puede comprender una placa de circuito de plástico (PCB) en la que pueden disponerse al menos algunos de los componentes electrónicos comprendidos en el token. Otros componentes electrónicos pueden conectarse galvánicamente a los componentes dispuestos en la placa de circuito (por ejemplo, mediante cables eléctricos). En algunas realizaciones, todos los componentes electrónicos del token están comprendidos en el interior de una única carcasa. En algunas realizaciones, la carcasa puede estar realizada en plástico o en metal o en una combinación de materiales. En algunas realizaciones, el token de autenticación puede ser un dispositivo de una sola pieza. En el contexto de la presente descripción, esto significa que el componente de procesamiento de datos digitales para generar las credenciales dinámicas, el componente de memoria para almacenar los datos de instancia, la interfaz de entrada de usuario, la interfaz de salida de usuario y la interfaz de entrada de datos comprendidos en el token de autenticación están todos ellos comprendidos en un único dispositivo físico. En algunas realizaciones, estos componentes no pueden ser eliminados por el usuario como parte del funcionamiento ordinario del token de autenticación. En algunas realizaciones, estos componentes no pueden eliminarse sin causar un cambio irreversible en el token de autenticación. En algunas realizaciones, estos componentes no pueden eliminarse sin dañar permanentemente el token de autenticación.
En algunas realizaciones, el token puede comprender más de un dispositivo electrónico, de manera que las diversas funcionalidades del token puedan ser realizadas por los diferentes dispositivos. Por ejemplo, en algunas realizaciones, el token puede comprender un elemento seguro, tal como una tarjeta inteligente y un dispositivo de lectura, de manera que el elemento seguro pueda realizar el almacenamiento de elementos de datos sensibles para la seguridad, tales como datos relacionados con la clave secreta y/o elementos de datos de enmascaramiento de código de acceso. El elemento seguro puede estar adaptado además para realizar parte o la totalidad de los cálculos criptográficos para la generación de una credencial de autenticación dinámica. El lector puede comprender, por ejemplo, una interfaz de entrada de usuario y una interfaz de salida de usuario, y una interfaz de entrada de datos. El elemento seguro puede comprender una interfaz de comunicación de datos para comunicarse con el lector, y el lector puede comprender una interfaz de comunicación de datos complementaria para comunicarse con el elemento seguro. El elemento seguro y el lector pueden estar adaptados para cooperar y para proporcionar conjuntamente todas las funcionalidades del token descritas en otras partes de la presente descripción.
Tamaño y peso:
En algunas realizaciones, el token tiene un peso y unas medidas espaciales tales que el token puede considerarse como un dispositivo portátil, de bolsillo, de mano. En algunas realizaciones, el lector tiene un peso y unas medidas espaciales tales que el token pueda enviarse al usuario por correo a un coste moderado. Por ejemplo, en algunas realizaciones, el dispositivo de autenticación puede tener un espesor de menos de 2 cm, una anchura de menos de 10 cm, una longitud de menos de 15 cm y un peso de menos de 200 gramos. En otras realizaciones, el dispositivo de autenticación puede tener un espesor de menos de 1,5 cm, una anchura de menos de 7 cm, una longitud de menos de 13 cm y un peso de menos de 110 gramos. En algunas realizaciones, la longitud y la anchura del dispositivo de autenticación pueden exceder la longitud, respectivamente, la anchura, de una tarjeta de crédito estándar de tamaño completo en no más del 10 por ciento. En algunas realizaciones, el dispositivo de autenticación puede tener la longitud y la anchura de una tarjeta de crédito estándar de tamaño completo. En algunas realizaciones, el dispositivo de autenticación puede tener la longitud, la anchura y el espesor de una tarjeta de crédito estándar de tamaño completo dentro de los márgenes aplicables para las tarjetas de crédito estándar de tamaño completo (por ejemplo, que tenga las dimensiones de una tarjeta inteligente de tamaño ID-1 según lo especificado por la norma ISO/IEC 7810).
Fuente de alimentación:
En algunas realizaciones, el dispositivo de autenticación comprende una fuente de energía eléctrica autónoma. En algunas realizaciones, la fuente de energía puede comprender una batería. En algunas realizaciones, la batería puede ser reemplazable.
La Figura 2 ilustra esquemáticamente un sistema (200) ejemplar de la invención según un aspecto de la invención.
En algunas realizaciones, el sistema puede comprender un token (220) de autenticación fuerte y un servidor (230) de autenticación. En algunas realizaciones, el sistema puede comprender además un servidor (250) de aplicaciones. En algunas realizaciones, el sistema puede comprender además un dispositivo (260) de acceso. En algunas realizaciones, el sistema puede comprender además una red (270) informática.
En algunas realizaciones, el token (220) de autenticación fuerte puede comprender cualquiera de los tokens de autenticación fuerte o los clientes de autenticación descritos más detalladamente en otras partes de la presente descripción. En particular, el token (220) de autenticación fuerte puede comprender el aparato (100) descrito con relación a la Figura 1.
En algunas realizaciones, el servidor (230) de autenticación puede comprender cualquiera de los servidores de autenticación o los servidores o entidades de verificación de credenciales descritos más detalladamente en otras partes de la presente descripción. En algunas realizaciones, el servidor (230) de autenticación puede estar adaptado para realizar cualquiera de las etapas o acciones del método realizadas por cualquiera de los servidores de autenticación o servidores o entidades de verificación de credenciales descritos más detalladamente en otras partes de la presente descripción. El servidor (230) de autenticación puede comprender uno o más dispositivos informáticos, tales como ordenadores servidores. En algunas realizaciones, el servidor de autenticación puede estar adaptado para realizar cálculos criptográficos. En algunas realizaciones, el servidor de autenticación puede estar adaptado para verificar la validez de una credencial de autenticación dinámica generada por un cliente o token. En algunas realizaciones, el servidor de autenticación tiene acceso a información específica de usuario y/o de token. Dicha información específica de usuario y/o de token puede incluir, por ejemplo, un elemento de datos de identificación de usuario (ID de usuario), datos secretos tales como un verificador de código de acceso, datos relacionados con la clave para generar u obtener el valor de una clave criptográfica que el token ha usado (presumiblemente) para generar la credencial de autenticación dinámica. Por ejemplo, en algunas realizaciones, el token puede generar la clave criptográfica como una función del valor de una variable de estado mantenido por el token y el servidor de autenticación puede tener acceso a una variable de estado que representa el valor de la variable de estado del token. En algunas realizaciones, el servidor de autenticación puede almacenar estos elementos de datos en una base de datos que puede estar comprendida en o conectada al servidor de autenticación.
El servidor (250) de aplicaciones puede estar adaptado para albergar la parte de servidor de una aplicación basada en ordenador accesible de manera remota. La interacción entre un usuario y la aplicación basada en ordenador accesible de manera remota puede garantizarse usando el token (220) de autenticación y el servidor (230) de autenticación con cualquiera de los métodos de autenticación descritos más detalladamente en otras partes de la presente descripción. El servidor (250) de aplicaciones puede comprender un servidor web y la aplicación basada en ordenador accesible de manera remota puede ser una aplicación basada en la web, tal como, por ejemplo, una aplicación de banca web o de banca por Internet.
El dispositivo (260) de acceso puede estar adaptado para permitir que un usuario (290) acceda e interactúe con la aplicación basada en ordenador accesible de manera remota alojada en el servidor (250) de aplicaciones. En algunas realizaciones, el dispositivo (260) de acceso puede comprender, por ejemplo, un navegador web para interactuar con la aplicación basada en ordenador accesible de manera remota alojada en el servidor (250) de aplicaciones. En algunas realizaciones, el dispositivo (260) de acceso puede comprender, por ejemplo, un PC, un ordenador de tipo tableta o un teléfono inteligente.
En algunas realizaciones, la red (270) informática puede comprender una LAN (red de área local) y/o una WAN (red de área amplia) y/o Internet y/o una red de telecomunicaciones de datos inalámbrica, tal como, por ejemplo, una red de telefonía móvil. La red (270) informática puede vincular dos o más dispositivos informáticos, tales como el token (220) de autenticación fuerte, el servidor (230) de autenticación, el servidor (250) de aplicaciones y el dispositivo (260) de acceso, y puede estar adaptada para permitir que estos dispositivos informáticos se comuniquen entre sí e intercambien datos y mensajes, tales como, por ejemplo, cualquiera de los diversos mensajes intercambiados por cualquiera de los clientes de autenticación o tokens de autenticación y cualquiera de los servidores de autenticación descritos más detalladamente en otras partes de la presente descripción.
La Figura 3 ilustra esquemáticamente un método (300) ejemplar para generar una credencial dinámica.
En algunas realizaciones, el método para generar una credencial dinámica comprende las siguientes etapas: obtener (310) desde un usuario un valor de código de acceso, recuperar (320) un valor almacenado de un elemento de datos de enmascaramiento de código de acceso, calcular (330) un verificador de código de acceso combinando criptográficamente el valor del código de acceso obtenido y el valor recuperado del elemento de datos de enmascaramiento de código de acceso, calcular (340) una credencial dinámica combinando criptográficamente el verificador de código de acceso calculado con una clave secreta almacenada y una variable dinámica.
En algunas realizaciones, la clave secreta puede comprender la variable dinámica. En algunas realizaciones, el método puede comprender además actualizar el valor de la clave secreta con un nuevo valor. En algunas realizaciones, el método puede comprender: actualizar una variable de estado calculando un valor nuevo para la variable de estado en base al valor anterior de la variable de estado, borrar el valor antiguo de la variable de estado, borrar la variable antigua de la clave, calcular una nueva variable para la clave secreta en base al nuevo valor de la variable de estado.
En un aspecto de la invención, se proporciona un método para generar una credencial de autenticación dinámica. En algunas realizaciones, parte o la totalidad de las etapas del método pueden ser realizadas por cualquiera de los clientes de autenticación o tokens de autenticación descritos en otras partes de la presente descripción. En algunas realizaciones, el método puede comprender parte o la totalidad de los métodos de cualquiera de los métodos para generar una credencial de autenticación dinámica descritos en otras partes de la presente descripción. En particular, en algunas realizaciones, el método puede comprender parte o la totalidad de las etapas de los métodos descritos con relación a la Figura 3.
En algunas realizaciones, el método (300) puede comprender las etapas de: obtener (310) el valor de un código de acceso, obtener (320) el valor de un elemento de datos de enmascaramiento de código de acceso, obtener el valor de una variable dinámica, obtener el valor de una clave de generación de credencial criptográfica, calcular (330) el valor de un elemento de datos de verificador de código de acceso a partir del valor de código de acceso obtenido y el valor del elemento de datos de enmascaramiento de código de acceso obtenido, calcular (340) la credencial de autenticación dinámica a partir del valor del elemento de datos de verificador de código de acceso calculado, el valor de la variable dinámica obtenido y el valor de la clave de generación de credencial criptográfica obtenido.
En algunas realizaciones, la obtención del valor del código de acceso puede comprender recibir el valor del código de acceso desde un usuario, por ejemplo, como una entrada proporcionada por el usuario a través de una interfaz de entrada de usuario de un token de autenticación o un dispositivo de cliente de autenticación. En algunas realizaciones, el valor del código de acceso puede comprender un valor de PIN (número de identificación personal) o un valor de contraseña.
En algunas realizaciones, la obtención del valor del elemento de datos de enmascaramiento de código de acceso puede comprender leer el valor del elemento de datos de enmascaramiento de código de acceso desde una memoria de, por ejemplo, un token de autenticación o un cliente de autenticación que está realizando el método. En algunas realizaciones, el elemento de datos de enmascaramiento de código de acceso puede haber sido generado y almacenado, por ejemplo, en la memoria de un token de autenticación o cliente de autenticación que está realizando el método, por ejemplo, como parte de una fase de inicialización de dicho token de autenticación o cliente de autenticación, antes de generar las credenciales de autenticación dinámicas. En algunas realizaciones, el valor del elemento de datos de enmascaramiento de código de acceso puede generarse como un elemento de datos de alta entropía. Por ejemplo, en algunas realizaciones, la entropía del elemento de datos de enmascaramiento de código de acceso puede ser de al menos 64 bits; en otras realizaciones, la entropía puede ser de al menos 128 bits; en todavía otras realizaciones, la entropía puede ser de al menos 256 bits. En algunas realizaciones, el valor del elemento de datos de enmascaramiento de código de acceso puede generarse usando un número aleatorio o pseudoaleatorio que puede ser generado por un generador de números aleatorios o pseudoaleatorios.
En algunas realizaciones, la obtención del valor de la variable dinámica puede comprender recibir un mensaje, por ejemplo, desde un servidor, tal como un servidor de autenticación, y determinar el valor de la variable dinámica como una función de un elemento de datos, tal como un desafío de autenticación o un “nonce” o datos de transacción, que está comprendido en el mensaje recibido. En algunas realizaciones, la obtención del valor de la variable dinámica puede comprender determinar la variable dinámica como una función de los datos de transacción y presentar los datos de transacción a un usuario para su aprobación y obtener la aprobación del usuario.
En algunas realizaciones, el cálculo del valor del elemento de datos de verificador de código de acceso puede comprender calcular el valor del elemento de datos de verificador de código de acceso como una función criptográfica del valor del código de acceso obtenido y el valor del elemento de datos de enmascaramiento de código de acceso obtenido. En algunas realizaciones, el cálculo del valor del elemento de datos de verificador de código de acceso puede comprender calcular el valor del elemento de datos de verificador de código de acceso como resultado de la aplicación de una función irreversible (criptográfica) al valor de código de acceso obtenido y al valor del elemento de datos de enmascaramiento de código de acceso obtenido. En algunas realizaciones, la aplicación de la función irreversible puede comprender la aplicación de una función hash criptográfica (segura) a una combinación del valor de código de acceso obtenido y el valor del elemento de datos de enmascaramiento de código de acceso obtenido. Por ejemplo, en algunas realizaciones, la función hash criptográfica (segura) puede comprender una de las familias de funciones SHA-2 o SHA-3 (algoritmo hash seguro). En algunas realizaciones, la aplicación de la función irreversible puede comprender la aplicación de una función hash criptográfica segura con clave al valor de código de acceso obtenido usando el valor del elemento de datos de enmascaramiento de código de acceso obtenido como una clave para la función hash con clave. Por ejemplo, en algunas realizaciones, la función hash con clave puede comprender la función HMAC (código de autenticación de mensaje basado en hash o código de autenticación de mensaje basado en hash con clave). En algunas realizaciones, la aplicación de la función irreversible puede comprender la aplicación de una función de encriptación (o desencriptación) criptográfica segura al valor de código de acceso obtenido usando el valor del elemento de datos de enmascaramiento de código de acceso obtenido como una clave de encriptación (o desencriptación). Por ejemplo, en algunas realizaciones, la función de encriptación puede comprender el algoritmo de encriptación AES (estándar de encriptación avanzado).
En algunas realizaciones, el cálculo de la credencial de autenticación dinámica a partir del valor del elemento de datos de verificador de código de acceso calculado, el valor de la variable dinámica obtenido y el valor de la clave de generación de credencial criptográfica obtenido puede comprender el cálculo de la credencial de autenticación dinámica como una función criptográfica del valor del elemento de datos de verificador de código de acceso calculado, el valor de la variable dinámica obtenido y el valor de la clave de generación de credencial criptográfica obtenido. En algunas realizaciones, el cálculo de la credencial de autenticación dinámica a partir del valor del elemento de datos de verificador de código de acceso calculado, el valor de la variable dinámica obtenido y el valor de la clave de generación de credencial criptográfica obtenido puede comprender el cálculo de la credencial de autenticación dinámica como resultado de la aplicación de una función irreversible (criptográfica) al valor del elemento de datos de verificador de código de acceso calculado, el valor de la variable dinámica obtenido y el valor de la clave de generación de credencial criptográfica obtenido. En algunas realizaciones, la aplicación de la función irreversible puede comprender la aplicación de una función hash criptográfica (segura) a una combinación del valor del elemento de datos de verificador de código de acceso calculado, el valor de la variable dinámica obtenido y el valor de la clave de generación de credencial criptográfica obtenido. Por ejemplo, en algunas realizaciones, la función hash criptográfica (segura) puede comprender una de las familias de funciones SHA-2 o SHA-3 (algoritmo hash seguro). En algunas realizaciones, la aplicación de la función irreversible puede comprender la aplicación de una función hash criptográfica segura con clave a una combinación del valor del elemento de datos de verificador de código de acceso calculado y el valor de la variable dinámica obtenido usando el valor de clave de generación de credencial criptográfica obtenido como una clave para la función hash con clave. Por ejemplo, en algunas realizaciones, la función hash con clave puede comprender la función HMAC (código de autenticación de mensaje basado en hash o código de autenticación de mensaje basado en hash con clave). En algunas realizaciones, la aplicación de la función irreversible puede comprender la aplicación de una función de encriptación (o desencriptación) criptográfica (segura) a una combinación del valor del elemento de datos de verificador de código de acceso calculado y el valor de la variable dinámica obtenido usando el valor de la clave de generación de credencial criptográfica obtenido como una clave de encriptación (o desencriptación). Por ejemplo, en algunas realizaciones, la función de encriptación puede comprender el algoritmo de encriptación AES (estándar de encriptación avanzado).
En algunas realizaciones, el método puede comprender además la etapa de descartar el valor de código de acceso obtenido después de la etapa de cálculo del valor del elemento de datos de verificador de código de acceso. En algunas realizaciones, el descarte del valor de código de acceso obtenido puede comprender el borrado de todas las copias del valor de código de acceso obtenido de una memoria de, por ejemplo, un token de autenticación o un cliente de autenticación que está realizando el método.
En algunas realizaciones, el método puede comprender además la etapa de descartar el valor del elemento de datos de verificador de código de acceso calculado después de la etapa de cálculo de la credencial de autenticación dinámica. En algunas realizaciones, el descarte del valor del elemento de datos de verificador de código de acceso calculado puede comprender el borrado de todas las copias del valor del elemento de datos de verificador de código de acceso calculado de una memoria de, por ejemplo, un token de autenticación o un cliente de autenticación que está realizando el método.
En algunas realizaciones, la obtención del valor de la clave de generación de credencial criptográfica puede comprender la determinación del valor de la clave de generación de credencial criptográfica como una función del valor de una variable de estado. En algunas realizaciones, el método puede comprender además el mantenimiento y el almacenamiento en la memoria del valor de la variable de estado. En algunas realizaciones, la determinación del valor de la clave de generación de credencial criptográfica como una función del valor de una variable de estado puede comprender la lectura del valor de la variable de estado desde una memoria de, por ejemplo, un token de autenticación o un cliente de autenticación que está realizando el método. En algunas realizaciones, la determinación del valor de la clave de generación de credencial criptográfica como una función del valor de una variable de estado puede comprender el establecimiento del valor de la clave de generación de credencial criptográfica al valor de la variable de estado. En otras realizaciones, la determinación del valor de la clave de generación de credencial criptográfica como una función del valor de la variable de estado puede comprender el cálculo del valor de la clave de generación de credencial criptográfica como resultado de la aplicación de una función irreversible al valor de la variable de estado. Por ejemplo, en algunas realizaciones, la función irreversible puede comprender una función hash criptográfica (segura) que puede comprender una de las familias de funciones SHA-2 o SHA-3 (algoritmo hash seguro). En algunas realizaciones, la aplicación de la función irreversible puede comprender la aplicación de una función de encriptación (o desencriptación) criptográfica (segura) a un valor fijo usando el valor de la variable de estado como una clave de encriptación (o desencriptación). Por ejemplo, en algunas realizaciones, la función de encriptación puede comprender el algoritmo de encriptación AES (estándar de encriptación avanzado).
En algunas realizaciones, el método puede comprender además actualizar el valor de la variable de estado con un nuevo valor que se calcula como una función del valor actual de la variable de estado (en el que el valor actual ha pasado a ser el valor anterior después de la actualización). En algunas realizaciones, el cálculo del nuevo valor de la variable de estado como una función del valor actual (anterior) de la variable de estado puede comprender el cálculo del nuevo valor de la variable de estado como resultado de la aplicación de una función irreversible al valor actual (anterior). de la variable de estado. Por ejemplo, en algunas realizaciones, la función irreversible puede comprender una función hash criptográfica (segura) que puede comprender una de las familias de funciones SHA-2 o SHA-3 (algoritmo hash seguro). En algunas realizaciones, la aplicación de la función irreversible puede comprender la aplicación de una función de encriptación (o desencriptación) criptográfica (segura) a un valor fijo usando el valor actual (anterior) de la variable de estado como una clave de encriptación (o desencriptación). Por ejemplo, en algunas realizaciones, la función de encriptación puede comprender el algoritmo de encriptación AES (estándar de encriptación avanzado).
En algunas realizaciones, el método puede comprender además descartar el valor actual (anterior) de la variable de estado después de dicho cálculo del nuevo valor de la variable de estado como una función del valor actual de la variable de estado. En algunas realizaciones, la etapa de descarte del valor actual (anterior) de la variable de estado puede realizarse después de la realización del cálculo del nuevo valor de la variable de estado y de la determinación del valor de la clave de generación de credencial criptográfica como una función del valor actual (anterior) de una variable de estado. En algunas realizaciones, el descarte del valor actual (anterior) de la variable de estado puede comprender el borrado de todas las copias del valor actual (anterior) de la variable de estado de una memoria de, por ejemplo, un token de autenticación o un cliente de autenticación que está realizando el método.
En algunas realizaciones, el método puede comprender además descartar el valor de la clave de generación de credencial criptográfica después de dicho cálculo de la credencial de autenticación dinámica. En algunas realizaciones, el descarte del valor de la clave de generación de credencial criptográfica puede comprender el borrado de todas las copias del valor de la clave de generación de credencial criptográfica de una memoria de, por ejemplo, un token de autenticación o un cliente de autenticación que está realizando el método. En algunas realizaciones, el método puede comprender además descartar, después de dicho cálculo de la credencial de autenticación dinámica, el valor de la variable de estado a partir del cual se ha derivado el valor de la clave de generación de credencial criptográfica. En algunas realizaciones, el descarte del valor de la variable de estado puede comprender el borrado de todas las copias del valor de la variable de estado de una memoria de, por ejemplo, un token de autenticación o un cliente de autenticación que está realizando el método.
En otro aspecto de la invención, se proporciona un método de verificación de un valor de una credencial de autenticación dinámica. En algunas realizaciones, parte o la totalidad de las etapas del método pueden ser realizadas por cualquiera de los servidores de autenticación descritos en otras partes de la presente descripción. En algunas realizaciones, el método puede comprender parte o la totalidad de las etapas de cualquiera de los métodos de verificación de un valor de una credencial de autenticación dinámica descritos en otras partes de la presente descripción.
En algunas realizaciones, el valor de la credencial de autenticación dinámica puede haber sido generado por cualquiera de los métodos de generación de una credencial de autenticación dinámica descritos en la presente descripción.
En la Figura 4 se ilustra una realización ejemplar del método.
En algunas realizaciones, el método (400) puede comprender las etapas de: recibir (410) el valor de la credencial de autenticación dinámica; obtener (420) el valor de una variable dinámica; obtener (430) los valores de un elemento de datos de verificador de código de acceso y de una clave de generación de credencial criptográfica; calcular (440) un valor de referencia de credencial a partir del valor del elemento de datos de verificador de código de acceso obtenido, el valor de la variable dinámica obtenido y el valor de la clave de generación de credencial criptográfica obtenido; y verificar (450) si el valor de la credencial de autenticación dinámica recibida coincide o no con el valor de referencia de credencial calculado. En algunas realizaciones, el método puede comprender además la etapa de generar una señal que indica si el valor de la credencial de autenticación dinámica recibido coincide o no con el valor de referencia de credencial calculado. En algunas realizaciones, la variable dinámica puede comprender o puede derivarse a partir de los datos de transacción representativos de una transacción a ser autorizada por la credencial de autenticación dinámica.
En alguna realización, el cálculo (440) del valor de referencia de credencial a partir del valor del elemento de datos de verificador de código de acceso obtenido, el valor de la variable dinámica obtenido y el valor de la clave de generación de credencial criptográfica obtenido puede comprender el cálculo del valor de referencia de credencial como una función criptográfica del valor del elemento de datos de verificador de código de acceso obtenido, el valor de la variable dinámica obtenido y el valor de la clave de generación de credencial criptográfica obtenido. En algunas realizaciones, el cálculo del valor de referencia de credencial a partir del valor del elemento de datos de verificador de código de acceso obtenido, el valor de la variable dinámica obtenido y el valor de la clave de generación de credencial criptográfica obtenido puede comprender el cálculo del valor de referencia de credencial como resultado de la aplicación de una función irreversible (criptográfica) al valor del elemento de datos de verificador de código de acceso obtenido, al valor de la variable dinámica obtenido y al valor de la clave de generación de credencial criptográfica obtenido. En algunas realizaciones, la aplicación de la función irreversible puede comprender la aplicación de una función hash criptográfica (segura) a una combinación del valor del elemento de datos de verificador de código de acceso obtenido, el valor de la variable dinámica obtenido y el valor de la clave de generación de credencial criptográfica obtenido. Por ejemplo, en algunas realizaciones, la función hash criptográfica (segura) puede comprender una de las familias de funciones SHA-2 o SHA-3 (algoritmo hash seguro). En algunas realizaciones, la aplicación de la función irreversible puede comprender la aplicación de una función hash criptográfica segura con clave a una combinación del valor del elemento de datos de verificador de código de acceso obtenido y el valor de la variable dinámica obtenido usando el valor de la clave de generación de credencial criptográfica obtenido como una clave para la función hash con clave. Por ejemplo, en algunas realizaciones, la función hash con clave puede comprender la función HMAC (código de autenticación de mensaje basado en hash o código de autenticación de mensaje basado en hash con clave). En algunas realizaciones, la aplicación de la función irreversible puede comprender la aplicación de una función de encriptación (o desencriptación) criptográfica (segura) a una combinación del valor del elemento de datos de verificador de código de acceso obtenido y el valor de la variable dinámica obtenido usando el valor de la clave de generación de credencial criptográfica obtenido como una clave de encriptación (o desencriptación). Por ejemplo, en algunas realizaciones, la función de encriptación puede comprender el algoritmo de encriptación AES (estándar de encriptación avanzado).
En algunas realizaciones, la verificación de si un primer valor coincide o no con un segundo valor puede comprender o puede consistir en verificar si el primer valor es igual al segundo valor. En algunas realizaciones, la verificación de si un primer valor coincide o no con un segundo valor puede comprender o puede consistir en verificar si una primera función del primer valor es igual a una segunda función del segundo valor. Por ejemplo, en algunas realizaciones, la verificación de si un primer valor coincide o no con un segundo valor puede comprender o puede consistir en verificar si una primera representación de cadena de bits del primer valor es igual a una versión truncada de una segunda representación de cadena de bits del segundo valor. En algunas realizaciones, la verificación de si un primer valor coincide o no con un segundo valor puede comprender o puede consistir en verificar si se cumple o no una relación matemática entre el primer valor y el segundo valor.
En algunas realizaciones, la obtención de los valores de un elemento de datos de verificador de código de acceso y de una clave de generación de credencial criptográfica puede comprender la obtención de un conjunto de datos específicos de usuario o de cliente de autenticación asociados con un usuario particular del cliente de autenticación y la recuperación o derivación de los valores del elemento de datos de verificador de código de acceso y de la clave de generación de credencial criptográfica a partir de este conjunto de datos específicos de usuario o de cliente de autenticación. En algunas realizaciones, el conjunto de datos específicos de usuario o de cliente de autenticación está asociado con un usuario del cliente de autenticación desde el cual se supone que se ha recibido el valor de credencial de autenticación dinámica recibida. En algunas realizaciones, el método puede comprender además almacenar y mantener el conjunto de datos específicos de usuario o de cliente de autenticación en una memoria o base de datos que puede estar comprendida en o conectada a, por ejemplo, un servidor de autenticación que está realizando las etapas del método, y la obtención del conjunto de datos específicos de usuario o de cliente de autenticación puede comprender la lectura del conjunto de datos específicos de usuario o de cliente de autenticación desde esta memoria o base de datos.
En algunas realizaciones, el conjunto de datos específicos de usuario o de cliente de autenticación puede comprender un valor de una variable de estado y la obtención del valor de la clave de generación de credencial criptográfica puede comprender la determinación del valor de la clave de generación de credencial criptográfica como una función del valor de la variable de estado que está comprendida en el conjunto de datos específicos de usuario o de cliente de autenticación. En algunas realizaciones, la determinación del valor de la clave de generación de credencial criptográfica como una función del valor de la variable de estado puede comprender establecer el valor de la clave de generación de credencial criptográfica al valor de la variable de estado. En otras realizaciones, la determinación del valor de la clave de generación de credencial criptográfica como una función del valor de la variable de estado puede comprender el cálculo del valor de la clave de generación de credencial criptográfica como resultado de la aplicación de una función irreversible al valor de la variable de estado. Por ejemplo, en algunas realizaciones, la función irreversible puede comprender una función hash criptográfica (segura) que puede comprender una de las familias de funciones SHA-2 o SHA-3 (algoritmo hash seguro). En algunas realizaciones, la aplicación de la función irreversible puede comprender la aplicación de una función de encriptación (o desencriptación) criptográfica (segura) a un valor fijo usando el valor de la variable de estado como una clave de encriptación (o desencriptación). Por ejemplo, en algunas realizaciones, la función de encriptación puede comprender el algoritmo de encriptación AES (estándar de encriptación avanzado).
En algunas realizaciones, el método puede comprender además la etapa de actualizar el valor de la variable de estado con un nuevo valor que se calcula como una función del valor de la variable de estado que está comprendido en el conjunto de datos específicos de usuario o de cliente de autenticación y reemplazar el valor de la variable de estado que está comprendido en el conjunto de datos específicos de usuario o de cliente de autenticación con este nuevo valor calculado. En algunas realizaciones, el método puede comprender además la etapa de almacenar el conjunto de datos específicos de usuario o de cliente de autenticación que comprende el valor actualizado de la variable de estado en una memoria o base de datos que puede estar comprendida en o conectada a, por ejemplo, un servidor de autenticación que está realizando las etapas del método. En algunas realizaciones, el cálculo del nuevo valor de la variable de estado como una función del valor de la variable de estado que está comprendido en el conjunto de datos específicos de usuario o de cliente de autenticación puede comprender el cálculo del nuevo valor de la variable de estado como resultado de la aplicación de una función irreversible al valor de la variable de estado que está comprendido en el conjunto de datos específicos de usuario o de cliente de autenticación. Por ejemplo, en algunas realizaciones, la función irreversible puede comprender una función hash criptográfica (segura) que puede comprender una de las familias de funciones SHA-2 o SHA-3 (algoritmo hash seguro). En algunas realizaciones, la aplicación de la función irreversible puede comprender la aplicación de una función de encriptación (o desencriptación) criptográfica (segura) a un valor fijo usando el valor de la variable de estado que está comprendido en el conjunto de datos específicos de usuario o de cliente de autenticación como una clave de encriptación (o desencriptación). Por ejemplo, en algunas realizaciones, la función de encriptación puede comprender el algoritmo de encriptación AES (estándar de encriptación avanzado).
En algunas realizaciones, el método puede comprender además descartar el valor de la variable de estado que está comprendido en el conjunto de datos específicos de usuario o de cliente de autenticación después de dicho cálculo del nuevo valor de la variable de estado como una función del valor de la variable de estado que está comprendido en el conjunto de datos específicos de usuario o de cliente de autenticación. En algunas realizaciones, el descarte del valor de la variable de estado que está comprendido en el conjunto de datos específicos de usuario o de cliente de autenticación puede comprender el borrado de todas las copias del valor de la variable de estado que está comprendido en el conjunto de datos específicos de usuario o de cliente de autenticación de un memoria o base de datos que puede estar comprendida en o conectada a, por ejemplo, un servidor de autenticación que está realizando las etapas del método.
En algunas realizaciones, el método puede comprender además la etapa de descartar el valor de la clave de generación de credencial criptográfica después de la etapa de cálculo del valor de referencia de credencial. En algunas realizaciones, el descarte del valor de la clave de generación de credencial criptográfica puede comprender el borrado de todas las copias del valor de la clave de generación de credencial criptográfica de una memoria o base de datos que puede estar comprendida en o conectada a, por ejemplo, un servidor de autenticación que está realizando las etapas del método. En algunas realizaciones, el método puede comprender además la etapa de descarte, después de la etapa de cálculo del valor de referencia de credencial, del valor de la variable de estado a partir del cual se ha derivado el valor de clave de generación de credencial criptográfica. En algunas realizaciones, el descarte del valor de la variable de estado a partir del cual se ha derivado el valor de la clave de generación de credencial criptográfica puede comprender el borrado de todas las copias de este valor de la variable de estado de una memoria o base de datos que puede estar comprendida en o conectada a, por ejemplo, un servidor de autenticación que está realizando las etapas del método.
En otro aspecto de la invención, se proporciona un método para asegurar la interacción de un usuario con una aplicación basada en ordenador. En algunas realizaciones, el método puede comprender la realización por parte de un token de autenticación o un cliente de autenticación de parte o la totalidad de las etapas de cualquiera de los métodos de generación de una credencial de autenticación dinámica descritos en otras partes de la presente descripción, y la realización por parte de un servidor de autenticación de parte o la totalidad de las etapas de cualquiera de los métodos de verificación de una credencial de autenticación dinámica descritos en otras partes de la presente descripción.
Etapa de autenticación
En algunas realizaciones, el método comprende la realización, durante una etapa de autenticación, de las etapas de: obtener, por parte de un cliente de autenticación, un valor de cliente de la variable dinámica; obtener, por parte de un cliente de autenticación, un valor de cliente de la clave de generación de credencial criptográfica; recuperar, por parte del cliente de autenticación, desde la memoria un valor del elemento de datos de enmascaramiento de código de acceso; recibir, por parte del cliente de autenticación, un valor de código de acceso desde el usuario; calcular, por parte del cliente de autenticación, un valor de cliente del elemento de datos de verificador de código de acceso como una primera función de cliente irreversible del valor del elemento de datos de enmascaramiento de código de acceso recuperado y el valor de código de acceso recibido; calcular, por parte del cliente de autenticación, una credencial de autenticación dinámica como una segunda función de cliente irreversible del valor de cliente de la variable dinámica obtenido, el valor de cliente de la clave de generación de credencial criptográfica obtenido y el valor de cliente del elemento de datos de verificador de código de acceso calculado; y, recibir, por parte de un servidor de autenticación, la credencial de autenticación dinámica; obtener, por parte del servidor de autenticación, un valor de servidor de la variable dinámica; obtener, por parte del servidor de autenticación, un valor de servidor de la clave de generación de credencial criptográfica; obtener, por parte del servidor de autenticación, un valor de servidor del elemento de datos de verificador de código de acceso; calcular, por parte del servidor de autenticación, un valor de referencia de credencial como una función de servidor irreversible del valor de servidor de la variable dinámica obtenido, el valor de servidor de la clave de generación de credencial criptográfica obtenido y el valor de servidor del elemento de datos de verificador de código de acceso obtenido; comparar, por parte del servidor de autenticación, la credencial de autenticación dinámica recibida con el valor de referencia de credencial calculado para verificar si la credencial de autenticación dinámica recibida coincide o no con el valor de referencia de credencial calculado. En algunas realizaciones, el método puede comprender además la etapa de generar, por parte del servidor de autenticación, una señal que indica si la credencial de autenticación dinámica recibida coincide o no con el valor de referencia de credencial calculado. En algunas realizaciones, el método puede comprender además la etapa de la realización por parte de la aplicación basada en ordenador de una primera acción si la credencial de autenticación dinámica recibida coincide con el valor de referencia de credencial calculado y una segunda acción si la credencial de autenticación dinámica recibida no coincide con el valor de referencia de credencial calculado.
En algunas realizaciones, el valor de cliente de la variable dinámica puede ser el mismo que el valor de servidor de la variable dinámica, el valor de cliente de la clave de generación de credencial criptográfica puede ser el mismo que el valor de servidor de la clave de generación de credencial criptográfica, el valor de cliente del elemento de datos de verificador de código de acceso puede ser el mismo que el valor de servidor del elemento de datos de verificador de código de acceso, y la segunda función de cliente irreversible para el cálculo de la credencial de autenticación dinámica puede ser sustancialmente la misma que la función de servidor irreversible para calcular el valor de referencia de credencial. En este contexto, que la segunda función de cliente irreversible para calcular la credencial de autenticación dinámica sea sustancialmente la misma que la función de servidor irreversible puede entenderse que significa que, si la segunda función de cliente irreversible y la función de servidor irreversible se aplican al mismo conjunto de datos de entrada, entonces el resultado de aplicar la segunda función de cliente irreversible coincidirá con el resultado de aplicar la función de servidor irreversible.
En algunas realizaciones, el valor de cliente de la variable dinámica puede basarse en datos de transacción que representan una transacción a ser autorizada por el usuario y el método puede comprender además las etapas de representar, por parte del cliente de autenticación, los datos de transacción al usuario y recibir, por parte del cliente de autenticación y desde el usuario una aprobación de los datos de transacción representados. En algunas realizaciones, la etapa de cálculo de la credencial de autenticación dinámica puede estar condicionado a que el usuario apruebe los datos de transacción representados. En algunas realizaciones, el método puede comprender además la etapa de que la aplicación basada en ordenador acepte la transacción si la credencial de autenticación dinámica recibida coincide con el valor de referencia de credencial calculado y rechace la transacción si la credencial de autenticación dinámica recibida no coincide con el valor de referencia de credencial calculado.
En algunas realizaciones, el método puede comprender además la realización, durante la etapa de autenticación, de las etapas de: almacenar, por parte del cliente de autenticación, un valor de cliente de la variable de estado actual, de manera que la obtención, por parte del cliente de autenticación, del valor de cliente de la clave de generación de credencial criptográfica puede comprender derivar, por parte del cliente de autenticación, el valor de cliente de la clave de generación de credencial criptográfica a partir del valor de cliente de la variable de estado actual almacenado; calcular, por parte del cliente de autenticación, un nuevo valor de cliente de la variable de estado, como una tercera función de cliente irreversible del valor de cliente de la variable de estado actual; descartar, por parte del cliente de autenticación, el valor de cliente de la clave de generación de credencial criptográfica después del cálculo de la credencial de autenticación dinámica; descartar, por parte del cliente de autenticación, el valor de cliente de la variable de estado actual después del cálculo del nuevo valor de cliente de la variable de estado y la derivación del valor de cliente de la clave de generación de credencial criptográfica; almacenar, por parte del cliente de autenticación, el nuevo valor de cliente de la variable de estado en lugar del valor de cliente de la variable de estado actual descartado; y almacenar, por parte del servidor de autenticación, un valor de servidor de la variable de estado actual, de manera que la obtención, por parte del servidor de autenticación, del valor de servidor de la clave de generación de credencial criptográfica puede comprender derivar, por parte del servidor de autenticación, el valor de servidor de la clave de generación de credencial criptográfica a partir del valor de servidor de la variable de estado actual almacenado; calcular, por parte del servidor de autenticación, un nuevo valor de servidor de la variable de estado, como una segunda función de servidor irreversible del valor de servidor de la variable de estado actual; descartar, por parte del servidor de autenticación, el valor de servidor de la clave de generación de credencial criptográfica después del cálculo del valor de referencia de credencial; descartar, por parte del servidor de autenticación, el valor de servidor de la variable de estado actual después del cálculo del nuevo valor de servidor de la variable de estado y la derivación del valor de servidor de la clave de generación de credencial criptográfica; almacenar, por parte del servidor de autenticación, el nuevo valor de servidor de la variable de estado en lugar del valor de servidor de la variable de estado actual descartado. En algunas realizaciones, el valor de servidor de la variable de estado actual puede ser el mismo que el valor de cliente de la variable de estado actual, el nuevo valor de servidor de la variable de estado puede ser el mismo que el nuevo valor de cliente de la variable de estado, y la segunda función de servidor irreversible puede ser la misma que la tercera función de cliente irreversible.
Etapa de inicialización
En algunas realizaciones, el método puede comprender además la realización, durante una etapa de inicialización anterior a la etapa de autenticación, de las etapas de: generar, por parte del cliente de autenticación, de una manera impredecible, el valor del elemento de datos de enmascaramiento de código de acceso; almacenar, por parte del cliente de autenticación, el valor del elemento de datos de enmascaramiento de código de acceso generado para su uso posterior durante la etapa de autenticación; recibir, por parte del cliente de autenticación, un valor de código de acceso inicial desde el usuario; calcular, por parte del cliente de autenticación, el valor de cliente del elemento de datos de verificador de código de acceso (inicial) como la primera función de cliente irreversible del valor del elemento de datos de enmascaramiento de código de acceso y el valor del código de acceso inicial recibido; y recibir, por parte del servidor de autenticación, el valor de cliente del elemento de datos de verificador de código de acceso calculado (inicial) y almacenar, por parte del servidor de autenticación, el valor de cliente del elemento de datos de verificador de código de acceso (inicial) recibido como el valor de servidor del elemento de datos de verificador de código de acceso para su uso posterior durante la etapa de autenticación.
En algunas realizaciones, el método puede comprender además la realización, durante la etapa de inicialización, de las etapas de: obtener, en el cliente de autenticación, un valor de cliente inicial para el valor de cliente de la variable de estado derivado a partir de un valor semilla de estado inicial, y almacenar, en el cliente de autenticación, el valor inicial obtenido para el valor de cliente de la variable de estado como el valor de cliente de la variable de estado actual; y obtener, en el servidor de autenticación, un valor de servidor inicial para el valor de servidor de la variable de estado derivado también a partir del valor semilla de estado inicial, y almacenar, en el servidor de autenticación, el valor inicial obtenido para el valor de servidor de la variable de estado como el valor de servidor de la variable de estado actual.
En algunas realizaciones, el método puede comprender además la realización, durante la etapa de inicialización, de las etapas de: generar o si no obtener un valor semilla de estado inicial; en el que la obtención, en el cliente de autenticación, de un valor de cliente inicial para el valor de cliente de la variable de estado puede comprender: obtener, en el cliente de autenticación, el valor semilla de estado inicial, y derivar, en el cliente de autenticación, a partir del valor semilla de estado inicial, el valor de cliente inicial para el valor de cliente de la variable de estado; y en el que la obtención, en el servidor de autenticación, de un valor de servidor inicial para el valor de servidor de la variable de estado derivado también a partir del valor semilla de estado inicial puede comprender: obtener, en el servidor de autenticación, el valor semilla de estado inicial, y derivar, en el servidor de autenticación, a partir del valor semilla de estado inicial, el valor de servidor inicial para el valor de servidor de la variable de estado.
En algunas realizaciones, la generación del valor semilla de estado inicial puede comprender generar la semilla de estado inicial como un valor de alta entropía. En algunas realizaciones, la generación del valor semilla de estado inicial puede comprender el uso de un número aleatorio o pseudoaleatorio generado por un generador de números aleatorios o pseudoaleatorios. En algunas realizaciones, la generación del valor semilla de estado inicial puede ser realizada por un servidor, tal como el servidor de autenticación o un servidor asociado con el servidor de autenticación.
En algunas realizaciones, el método puede comprender además la realización, durante la etapa de autenticación, de la etapa de sincronizar el valor de cliente de la variable de estado y el valor de servidor de la variable de estado. En algunas realizaciones, la etapa de sincronizar el valor de cliente de la variable de estado y el valor de servidor de la variable de estado puede comprender recibir, por parte del cliente de autenticación, un elemento de datos de sincronización indicativo del valor de servidor de la variable de estado, y actualizar, por parte del cliente de autenticación, el valor de cliente de la variable de estado en base al valor del elemento de datos de sincronización recibido para sincronizar el valor de cliente de la variable de estado con el valor de servidor de la variable de estado. En algunas realizaciones, el elemento de datos de sincronización puede comprender un valor de contador, que puede indicar, por ejemplo, cuántas veces se ha actualizado el valor de servidor de la variable de estado. En algunas realizaciones, la etapa de sincronización del valor de cliente de la variable de estado y del valor de servidor de la variable de estado puede comprender recibir, por parte del servidor de autenticación, un elemento de datos de sincronización indicativo del valor de cliente de la variable de estado, y actualizar, por parte del servidor de autenticación, el valor de servidor de la variable de estado en base al valor del elemento de datos de sincronización recibido para sincronizar el valor de servidor de la variable de estado con el valor de cliente de la variable de estado. En algunas realizaciones, el elemento de datos de sincronización puede comprender un valor de contador, que puede indicar, por ejemplo, cuántas veces se ha actualizado el valor de cliente de la variable de estado.
En otro aspecto de la invención, se proporciona un aparato para generar una credencial de autenticación dinámica. En algunas realizaciones, el aparato puede comprender cualquiera de los tokens de autenticación o clientes de autenticación descritos en otras partes de la presente descripción. En particular, en algunas realizaciones, el aparato puede comprender cualquiera de los aparatos (100) descritos con relación a la Figura 1. En algunas realizaciones, el aparato puede estar adaptado para realizar cualquiera de los métodos de generación de una credencial de autenticación dinámica descritos en otras partes de la presente descripción.
En algunas realizaciones, el aparato (100) puede comprender: una interfaz (120) de entrada de usuario adaptada para recibir un código de acceso desde un usuario del aparato; un procesador (150) de datos adaptado para realizar cálculos criptográficos; y una memoria (160) para almacenar un valor del elemento de datos de enmascaramiento de código de acceso y un valor de la variable de estado; de manera que el aparato puede estar adaptado para, en una etapa de inicialización: obtener y almacenar en la memoria el valor del elemento de datos de enmascaramiento de código de acceso y obtener un valor inicial para el valor de la variable de estado y almacenar en la memoria el valor inicial como el valor de la variable de estado actual; y de manera que el aparato puede estar adaptado además para, en una etapa de autenticación: obtener un valor de variable dinámico; recibir a través de la interfaz de entrada de usuario el código de acceso del usuario; leer desde la memoria el valor del elemento de datos de enmascaramiento de código de acceso; calcular un valor del elemento de datos de verificador de código de acceso como una primera función irreversible del código de acceso recibido y el valor del elemento de datos de enmascaramiento de código de acceso; leer desde la memoria el valor de la variable de estado actual y derivar una clave de generación de credencial criptográfica a partir del valor de la variable de estado actual leído desde la memoria; calcular una credencial de autenticación dinámica como una segunda función irreversible del valor de variable dinámico obtenido, el valor del elemento de datos de verificador de código de acceso calculado y la clave de generación de credencial criptográfica derivada; descartar la clave de generación de credencial criptográfica derivada después del cálculo de la credencial de autenticación dinámica; generar un nuevo valor para el valor de la variable de estado como una tercera función irreversible del valor de la variable de estado actual; y, después de la derivación de la clave de generación de credencial criptográfica a partir del valor de la variable de estado actual y la generación del nuevo valor a partir del valor de la variable de estado, descartar el valor de la variable de estado actual y almacenar el nuevo valor generado del valor de la variable de estado en lugar del valor de la variable de estado actual.
En algunas realizaciones, el aparato puede comprender además una interfaz (130) de salida de usuario para presentar datos al usuario.
En algunas realizaciones, el aparato puede estar adaptado además para: recibir datos de transacción representativos de una transacción a ser aprobada por el usuario; presentar los datos de transacción recibidos al usuario a través de la interfaz de salida de usuario; recibir desde el usuario una aprobación de los datos de transacción presentados a través de la interfaz de entrada de usuario. En algunas realizaciones, el cálculo de la credencial de autenticación dinámica puede estar condicionado a que el aparato reciba la aprobación del usuario de los datos de transacción presentados.
En algunas realizaciones, el aparato puede estar adaptado además para hacer que la credencial de autenticación dinámica generada esté disponible para su verificación por parte de un servidor de autenticación. En algunas realizaciones, el aparato puede estar adaptado para presentar la credencial de autenticación dinámica generada al usuario a través de la interfaz de salida de usuario para que el usuario la reenvíe al servidor de autenticación. En algunas realizaciones, el aparato puede estar adaptado para enviar la credencial de autenticación dinámica generada directa o indirectamente al servidor de autenticación.
En algunas realizaciones, el aparato puede comprender además un generador de números aleatorios o pseudoaleatorios y el aparato puede estar adaptado además para, en la etapa de inicialización, obtener un número aleatorio o pseudoaleatorio generado por el generador de números aleatorios o pseudoaleatorios y para obtener el valor del elemento de datos de enmascaramiento de código de acceso como una función del número aleatorio o pseudoaleatorio.
En otro aspecto de la invención, se proporciona un aparato para verificar una credencial de autenticación dinámica. En algunas realizaciones, el aparato puede comprender cualquiera de los servidores de autenticación descritos en otras partes de la presente descripción. En algunas realizaciones, el aparato puede estar adaptado para realizar cualquiera de los métodos de verificación de una credencial de autenticación dinámica descritos en otras partes de la presente descripción.
En algunas realizaciones, el aparato puede comprender: una memoria adaptada para almacenar al menos un conjunto de datos que está asociado con un usuario particular o un cliente de autenticación particular, y un componente de procesamiento de datos adaptado para realizar operaciones criptográficas; y el aparato puede estar adaptado para, en una etapa de autenticación: recibir una credencial de autenticación dinámica; obtener un valor de servidor de la variable dinámica; leer desde la memoria un conjunto de datos asociado con un usuario particular o un cliente de autenticación particular; obtener desde el conjunto de datos leído un valor de servidor de la clave de generación de credencial criptográfica; obtener desde el conjunto de datos leído un valor de servidor del elemento de datos de verificador de código de acceso; calcular un valor de referencia de credencial como una función de servidor irreversible del valor de servidor de la variable dinámica obtenido, el valor de servidor del elemento de datos de verificador de código de acceso obtenido y el valor de servidor de la clave de generación de credencial criptográfica obtenido; comparar la credencial de autenticación dinámica recibida con el valor de referencia de credencial calculado para verificar si la credencial de autenticación dinámica recibida coincide o no con el valor de referencia de credencial calculado.
En algunas realizaciones, el aparato puede comprender un servidor de autenticación y la memoria puede comprender una base de datos comprendida en o accesible por el servidor de autenticación.
En algunas realizaciones, el aparato puede estar adaptado además para, en la etapa de autenticación: generar una señal que indica si la credencial de autenticación dinámica recibida coincide o no con el valor de referencia de credencial calculado.
En algunas realizaciones, el aparato puede estar adaptado además para almacenar en la memoria el valor de servidor del elemento de datos de verificador de código de acceso como parte del conjunto de datos asociado con un usuario particular o un cliente de autenticación particular.
En algunas realizaciones, el aparato puede estar adaptado además para almacenar y mantener en la memoria un valor de servidor de la variable de estado actual como una parte del conjunto de datos asociado con el usuario particular o el cliente de autenticación particular, y para, en la etapa de autenticación: obtener el valor de servidor de la variable de estado actual desde el conjunto de datos leído; determinar el valor de servidor de la clave de generación de credencial criptográfica como una función del valor de servidor de la variable de estado actual obtenido; descartar el valor de servidor de la clave de generación de credencial criptográfica después del cálculo del valor de referencia de credencial; calcular un nuevo valor de servidor de la variable de estado como una segunda función de servidor irreversible del valor de servidor de la variable de estado actual obtenido; descartar el valor de servidor de la variable de estado actual después de la determinación del valor de servidor de la clave de generación de credencial criptográfica y del cálculo del nuevo valor de servidor de la variable de estado; y escribir en la memoria el nuevo valor de servidor de la variable de estado en lugar del valor de servidor de la variable de estado actual como una parte del conjunto de datos asociado con el usuario particular o el cliente de autenticación particular.
En algunas realizaciones, el aparato puede estar adaptado además para, en una etapa de inicialización: recibir un valor del elemento de datos de verificador de código de acceso y para escribir el valor del elemento de datos de verificador de código de acceso recibido en la memoria como el valor de servidor del elemento de datos de verificador de código de acceso como parte del conjunto de datos asociado con el usuario particular o el cliente de autenticación particular.
En algunas realizaciones, el aparato puede estar adaptado además para, en una etapa de inicialización: obtener un valor de servidor de la variable de estado inicial y para escribir el valor de servidor de la variable de estado inicial en la memoria como el valor de servidor de la variable de estado actual como parte del conjunto de datos asociado con el usuario particular o el cliente de autenticación particular.
En otro aspecto de la invención, se proporciona un sistema para asegurar la interacción de un usuario con una aplicación basada en ordenador. En algunas realizaciones, el sistema puede comprender cualquiera de los sistemas descritos en otras partes de la presente descripción. En particular, en algunas realizaciones, el sistema puede comprender cualquiera de los sistemas descritos con relación a la Figura 2. En algunas realizaciones, el sistema puede comprender una pluralidad de cualquiera de los tokens de autenticación o clientes de autenticación descritos en otras partes de la presente descripción, y cualquiera de los servidores de autenticación descritos en otras partes de la presente descripción. En algunas realizaciones, el sistema puede comprender cualquiera de los aparatos de generación de una credencial de autenticación dinámica descritos en otras partes de la presente descripción, y cualquiera de los aparatos de verificación de una credencial de autenticación dinámica descritos en otras partes de la presente descripción. En algunas realizaciones, el sistema puede estar adaptado para realizar una o más etapas de cualquiera de los métodos para asegurar la interacción de un usuario con una aplicación basada en ordenador descritos en otras partes de la presente solicitud.
En algunas realizaciones, el sistema (200) puede comprender un cliente (220) de autenticación y un servidor (230) de autenticación, de manera que el cliente de autenticación puede comprender: una interfaz (120) de entrada de usuario adaptada para recibir un código de acceso desde un usuario del cliente de autenticación; un procesador (150) de datos de cliente adaptado para realizar cálculos criptográficos; y una memoria (160) de cliente para almacenar un valor del elemento de datos de enmascaramiento de código de acceso y un valor de cliente de la variable de estado; de manera que el cliente de autenticación puede estar adaptado para, en una etapa de inicialización: obtener y almacenar en la memoria el valor del elemento de datos de enmascaramiento de código de acceso y obtener un valor de cliente inicial para el valor de cliente de la variable de estado y almacenar en la memoria el valor de cliente inicial como el valor de cliente de la variable de estado actual; y de manera que el cliente de autenticación puede estar adaptado además para, en una etapa de autenticación: obtener un valor de cliente de la variable dinámica; recibir a través de la interfaz de entrada de usuario el código de acceso del usuario; leer desde la memoria de cliente el valor del elemento de datos de enmascaramiento de código de acceso; calcular un valor de cliente del elemento de datos de verificador de código de acceso como una primera función de cliente irreversible del código de acceso recibido y el valor del elemento de datos de enmascaramiento de código de acceso; leer desde la memoria del cliente el valor de cliente de la variable de estado actual y derivar un valor de cliente de la clave de generación de credencial criptográfica a partir del valor de cliente de la variable de estado actual leído desde la memoria del cliente; calcular una credencial de autenticación dinámica como una segunda función de cliente irreversible del valor de cliente de la variable dinámica obtenido, el valor de cliente del elemento de datos de verificador de código de acceso calculado y el valor de cliente de la clave de generación de credencial criptográfica derivado; descartar el valor de cliente de la clave de generación de credencial criptográfica derivado después de calcular la credencial de autenticación dinámica; generar un nuevo valor para el valor de cliente de la variable de estado como una tercera función de cliente irreversible del valor de cliente de la variable de estado actual; y, después de la derivación del valor de cliente de la clave de generación de credencial criptográfica a partir del valor de cliente de la variable de estado actual y la generación del nuevo valor del valor de cliente de la variable de estado, descartar el valor de cliente de la variable de estado actual y almacenar el nuevo valor generado del valor de cliente de la variable de estado en lugar del valor de cliente de la variable de estado actual; y de manera que el servidor de autenticación puede comprender: una memoria de servidor adaptada para almacenar al menos un conjunto de datos que está asociado con el usuario o el cliente de autenticación, y un componente de procesamiento de datos del servidor adaptado para realizar operaciones criptográficas; y de manera que el servidor de autenticación puede estar adaptado para, en la etapa de inicialización: recibir un valor de inicialización del elemento de datos de verificador de código de acceso y para escribir el valor de inicialización del elemento de datos de verificador de código de acceso recibido en la memoria como el valor de servidor del elemento de datos de verificador de código de acceso como parte del conjunto de datos asociado con el usuario o el cliente de autenticación; y obtener un valor de servidor de la variable de estado inicial y escribir el valor de servidor de la variable de estado inicial en la memoria como el valor de servidor de la variable de estado actual como parte del conjunto de datos asociado con el usuario o el cliente de autenticación; y de manera que el servidor de autenticación puede estar adaptado además para, en la etapa de autenticación: recibir la credencial de autenticación dinámica generada; obtener un valor de servidor de la variable dinámica; leer desde la memoria de servidor el conjunto de datos asociado con el usuario o el cliente de autenticación; obtener el valor de servidor de la variable de estado actual desde el conjunto de datos leído; derivar un valor de servidor de la clave de generación de credencial criptográfica como una función del valor de servidor de la variable de estado actual obtenido; obtener desde el conjunto de datos leído un valor de servidor del elemento de datos de verificador de código de acceso; calcular un valor de referencia de credencial como una primera función de servidor irreversible del valor de servidor de la variable dinámica obtenido, el valor de servidor del elemento de datos de verificador de código de acceso obtenido y el valor de servidor de la clave de generación de credencial criptográfica derivado; comparar la credencial de autenticación dinámica recibida con el valor de referencia de credencial calculado para verificar si la credencial de autenticación dinámica recibida coincide o no con el valor de referencia de credencial calculado; descartar el valor de servidor de la clave de generación de credencial criptográfica después del cálculo del valor de referencia de credencial; calcular un nuevo valor de servidor de la variable de estado como una segunda función de servidor irreversible del valor de servidor de la variable de estado actual obtenido; descartar el valor de servidor de la variable de estado actual después de la derivación del valor de servidor de la clave de generación de credencial criptográfica y del cálculo del nuevo valor de servidor de la variable de estado; y escribir en la memoria del servidor el nuevo valor de servidor de la variable de estado en lugar del valor de servidor de la variable de estado actual como una parte del conjunto de datos asociado con el usuario o el cliente de autenticación.
En algunas realizaciones, la variable dinámica puede basarse en un valor de tiempo, y el cliente de autenticación puede estar adaptado para obtener el valor de cliente de la variable dinámica como una función de un valor de tiempo de un reloj de cliente comprendido en el cliente de autenticación, y el servidor de autenticación puede estar adaptado para obtener el valor de servidor de la variable dinámica como una función de un valor de tiempo de un reloj del servidor comprendido en el servidor de autenticación, de manera que el reloj del cliente y el reloj del servidor puedan estar sincronizados. En algunas realizaciones, la variable dinámica puede basarse en un contador, y el cliente de autenticación puede estar adaptado para obtener el valor de cliente de la variable dinámica como una función de un valor de contador de cliente mantenido por el cliente de autenticación, y el servidor de autenticación puede estar adaptado para obtener el valor de servidor de la variable dinámica como una función de un valor de contador de servidor mantenido por el servidor de autenticación, de manera que el cliente de autenticación y el servidor de autenticación pueden estar adaptados para sincronizar el valor de contador de cliente y el valor de contador de servidor. En algunas realizaciones, la variable dinámica puede basarse en un valor, tal como un desafío de autenticación, y el servidor de autenticación puede estar adaptado para generar este valor y obtener el valor de servidor de la variable dinámica como una función de este valor y enviar este valor al cliente de autenticación, y el cliente de autenticación puede estar adaptado para recibir este valor (por ejemplo, como una entrada proporcionada por el usuario o comprendido en un mensaje recibido desde el servidor de autenticación), y obtener el valor de cliente de la variable dinámica como una función de este valor. En algunas realizaciones, la variable dinámica puede basarse en datos de transacción, y el servidor de autenticación puede estar adaptado para recibir los datos de transacción, por ejemplo, desde una aplicación basada en ordenador que gestiona la transacción, y obtener el valor de servidor de la variable dinámica como una función de la datos de transacción, y el cliente de autenticación puede estar adaptado para recibir los datos de transacción (por ejemplo, como una entrada proporcionada por el usuario o comprendidos en un mensaje recibido desde el servidor de autenticación o la aplicación basada en ordenador), y obtener el valor de cliente de la variable dinámica como una función de los datos de la transacción.
En algunas realizaciones, el sistema puede comprender además un servidor de aplicaciones adaptado para albergar la aplicación basada en ordenador y el servidor de autenticación puede estar adaptado además para, en la etapa de autenticación: indicar a la aplicación basada en ordenador si la credencial de autenticación dinámica recibida coincide o no con el valor de referencia de credencial calculado; y la aplicación basada en ordenador puede estar adaptada para realizar una acción si la credencial de autenticación dinámica recibida coincide con el valor de referencia de credencial calculado y otra acción si la credencial de autenticación dinámica recibida no coincide con el valor de referencia de credencial calculado. Por ejemplo, en algunas realizaciones, la aplicación basada en ordenador puede conceder una solicitud de inicio de sesión o puede conceder al usuario acceso a ciertos datos o puede autorizar al usuario a realizar ciertas acciones o puede realizar una determinada transacción que puede haber sido enviada por el usuario si la credencial de autenticación dinámica recibida coincide con el valor de referencia de credencial calculado, y la aplicación basada en ordenador puede rechazar realizar estas acciones si la credencial de autenticación dinámica recibida no coincide con el valor de referencia de credencial calculado.
En algunas realizaciones, una función irreversible puede comprender una función unidireccional, es decir, una función matemática para la cual es computacionalmente fácil calcular el resultado cuando se conoce la fecha de entrada, pero para la cual es computacionalmente difícil obtener una fecha de entrada coincidente dado un valor particular del resultado de la función. Computacionalmente fácil puede significar en algunas realizaciones que el dispositivo electrónico destinado a hacer los cálculos necesita menos de 5 segundos para obtener el resultado de la función. Computacionalmente difícil puede significar en algunas realizaciones que se necesita al menos un factor de un millón más de esfuerzo computacional para obtener una fecha de entrada coincidente dado un valor particular del resultado de la función que lo que se necesita para calcular el resultado dada la fecha de entrada. Computacionalmente difícil puede significar en algunas realizaciones que la única manera conocida de obtener una fecha de entrada coincidente dado un valor particular del resultado de la función es mediante una búsqueda exhaustiva. Para los propósitos de la presente descripción, una operación de encriptación o desencriptación criptográfica parametrizada por una clave secreta puede considerarse también como una función irreversible, ya que puede ser computacionalmente difícil deshacer una operación de encriptación o desencriptación sobre un elemento de datos de entrada si se desconoce el valor de la clave secreta de parametrización.
Ventajas de las realizaciones de la invención
Si un valor de código de acceso se almacena en algún componente de un sistema de autenticación, puede verse comprometido, por ejemplo, por un atacante capaz de acceder a la memoria de dicho componente. Debido a que, típicamente, el código de acceso puede tener una entropía relativamente baja, podría ser también vulnerable a un ataque de búsqueda exhaustiva, de fuerza bruta, si un atacante obtiene el valor de un elemento de datos que es una función del código de acceso.
La invención proporciona mejoras en otros métodos y sistemas para asegurar la interacción de un usuario con una aplicación basada en ordenador, basados en credenciales dinámicas y que usan un código de acceso, en el sentido de que protege la confidencialidad del valor del código de acceso contra diversos ataques.
Debido a que una credencial de autenticación dinámica se genera como una función de un valor de código de acceso, el valor de una credencial de autenticación dinámica podría usarse como un punto de partida para un ataque de búsqueda exhaustiva para recuperar el valor del código de acceso. Sin embargo, debido a que la credencial de autenticación dinámica se calcula como una función irreversible no solo del valor del código de acceso, sino también del valor del elemento de datos de enmascaramiento de código de acceso de alta entropía y el valor de la clave de generación de credencial criptográfica de alta entropía, dicho ataque de búsqueda exhaustiva sería computacionalmente inviable.
El conocimiento del valor de un elemento de datos de enmascaramiento de código de acceso y/o del valor de una clave de generación de credencial criptográfica, por sí solo, no permite obtener el valor de un código de acceso, ni siquiera mediante una búsqueda exhaustiva, ya que los valores del valor del elemento de datos de enmascaramiento de código de acceso y del valor de la clave de generación de credencial criptográfica son independientes del valor del código de acceso. Por lo tanto, debido a que un token de autenticación o un cliente de autenticación según los aspectos de la invención descarta el código de acceso proporcionado por el usuario y descarta el elemento de datos de verificador de código de acceso calculado después de haber sido usado para la generación de una credencial dinámica, un atacante que obtiene el contenido de la memoria del token de autenticación o del cliente de autenticación (y que, de esta manera, puede haber obtenido el valor del elemento de datos de enmascaramiento de código de acceso almacenado) todavía no puede obtener el código de acceso del usuario.
Debido a que un elemento de datos de verificador de código de acceso se genera como una función de un valor de código de acceso, el valor de un elemento de datos de verificador de código de acceso podría usarse como un punto de partida para un ataque de búsqueda exhaustiva para recuperar el valor del código de acceso. Sin embargo, debido a que el elemento de datos de verificador de código de acceso se calcula como una función irreversible no solo del valor del código de acceso, sino también del valor del elemento de datos de enmascaramiento de código de acceso de alta entropía, dicho ataque de búsqueda exhaustiva sería computacionalmente inviable. Por lo tanto, el conocimiento de un elemento de datos de verificador de código de acceso, por sí mismo, no permite obtener el valor de un código de acceso. Debido a que el valor de la clave de generación de credencial criptográfica, por una parte, y los valores del código de acceso y del elemento de datos de verificador de código de acceso, por otra parte, son independientes entre sí, el conocimiento combinado del valor del elemento de datos de verificador de código de acceso y del valor de una clave de generación de credencial criptográfica correspondiente, por sí solo, tampoco permite obtener el valor de un código de acceso. Por lo tanto, un atacante que obtiene un valor del elemento de datos de verificador de código de acceso y/o un valor de la clave de generación de credencial criptográfica correspondiente almacenado en un servidor de autenticación todavía no puede obtener el código de acceso del usuario. Debido a que el valor de una credencial de autenticación dinámica está completamente determinado por (y, por lo tanto, no añade ninguna información a) la combinación de los valores de un valor del elemento de datos de verificador de código de acceso y un valor de la clave de generación de credencial criptográfica correspondiente, incluso un atacante que ha interceptado el valor de una credencial de autenticación dinámica y que ha obtenido el valor del elemento de datos de verificador de código de acceso correspondiente y/o el valor de la clave de generación de credencial criptográfica correspondiente almacenado en un servidor de autenticación todavía no puede obtener el código de acceso del usuario.
Debido a que el valor de una credencial de autenticación dinámica es una función del valor del código de acceso, del valor de la variable dinámica, del valor del elemento de datos de enmascaramiento de código de acceso y del valor de la clave de generación de credencial criptográfica, y debido a que el valor de una variable dinámica podría ser fácil de obtener o de adivinar o podría tener en la práctica una entropía baja, un atacante que pudiera obtener, por una parte, un valor de credencial de autenticación dinámica y, por otra parte, tanto el valor del elemento de datos de enmascaramiento de código de acceso como el valor de la clave de generación de credencial criptográfica que se usaron en la generación de ese valor de credencial de autenticación dinámica, podría usar ese valor de credencial dinámica para montar un ataque de búsqueda exhaustiva potencialmente factible. Sin embargo, debido a que un token de autenticación o un cliente de autenticación según los aspectos de la invención descarta cualquier valor de clave de generación de credencial criptográfica y el valor de la variable de estado a partir de la cual este valor de clave de generación de credencial criptográfica particular puede haberse derivado después de haberse usado ese valor de clave de generación de credencial criptográfica para generar una credencial de autenticación dinámica, incluso un atacante que obtiene, por una parte, los valores del elemento de datos de enmascaramiento de código de acceso, la clave de generación de credencial criptográfica y la variable de estado almacenada en un token de autenticación o cliente de autenticación particular y, por otra parte, los valores de cualquiera de o de todas las credenciales de autenticación dinámica que han sido generadas hasta ese momento por ese token de autenticación o cliente de autenticación particular, todavía no tiene la combinación de, por una parte, un valor de credencial de autenticación dinámica y, por otra parte, tanto el valor del elemento de datos de enmascaramiento de código de acceso como el valor de la clave de generación de credencial criptográfica particular que se usaron en la generación de ese valor de credencial de autenticación dinámica y, por lo tanto, todavía no podría montar un ataque de búsqueda exhaustiva factible para recuperar el código de acceso del usuario de ese token de autenticación o cliente de autenticación particular.
Se han descrito una serie de implementaciones. No obstante, se entenderá que pueden realizarse diversas modificaciones. Por ejemplo, los elementos de una o más implementaciones pueden combinarse, eliminarse, modificarse o complementarse para formar implementaciones adicionales. Por consiguiente, otras implementaciones están dentro del alcance de las reivindicaciones adjuntas. Además, aunque una característica particular puede haberse divulgado con respecto a solo una de las diversas implementaciones, dicha característica puede combinarse con una o más características diferentes de las otras implementaciones según se desee y sea ventajoso para cualquier aplicación dada o particular. Aunque anteriormente se han descrito diversas realizaciones, debería entenderse que se han presentado solo a modo de ejemplo, y no como limitación. En particular, por supuesto, no es posible describir cada combinación de componentes o metodologías concebible con el fin de describir el asunto reivindicado, pero una persona experta en la técnica puede reconocer que son posibles muchas combinaciones y permutaciones adicionales. De esta manera, la amplitud y el alcance de las enseñanzas del presente documento no deberían estar limitados por ninguna de las realizaciones ejemplares descritas anteriormente.

Claims (13)

REIVINDICACIONES
1. Método para asegurar la interacción de un usuario (290) con una aplicación basada en ordenador, que comprende:
realizar, por parte de un cliente de autenticación, durante una etapa de inicialización previa a una etapa de autenticación, las etapas de
generar un valor del elemento de datos de enmascaramiento de código de acceso; almacenar el valor del elemento de datos de enmascaramiento de código de acceso generado para su uso posterior durante la etapa de autenticación, en el que el elemento de datos de enmascaramiento de código de acceso no se almacena en el servidor de autenticación;
recibir un valor de código de acceso inicial desde el usuario; y
calcular un valor de cliente del elemento de datos de verificador de código de acceso como una primera función de cliente irreversible del valor del elemento de datos de enmascaramiento de código de acceso y el valor de código de acceso inicial recibido;
realizar, por parte de un servidor de autenticación, durante la etapa de inicialización, las etapas de:
recibir el valor de cliente del elemento de datos de verificador de código de acceso calculado; y
almacenar el valor de cliente del elemento de datos de verificador de código de acceso recibido como un valor de servidor del elemento de datos de verificador de código de acceso para su uso posterior durante la etapa de autenticación; realizar, por parte del cliente (100; 220) de autenticación, durante la etapa de autenticación, las etapas de:
obtener un valor de cliente de la variable dinámica;
obtener un valor de cliente de la clave de generación de credencial criptográfica; recuperar (320) desde la memoria un valor del elemento de datos de enmascaramiento de código de acceso;
recibir (310) un valor de código de acceso desde el usuario;
calcular (330) un valor de cliente del elemento de datos de verificador de código de acceso como una primera función de cliente irreversible del valor del elemento de datos de enmascaramiento de código de acceso recuperado y el valor de código de acceso recibido;
calcular (340) una credencial de autenticación dinámica como una segunda función de cliente irreversible del valor de cliente de la variable dinámica obtenido, el valor de cliente de la clave de generación de credencial criptográfica obtenido y el valor de cliente del elemento de datos de verificador de código de acceso calculado; y,
realizar, por parte del servidor (230) de autenticación, durante la etapa de autenticación, las etapas de:
recibir (410) la credencial de autenticación dinámica;
obtener (420) un valor de servidor de la variable dinámica;
obtener (430) un valor de servidor de la clave de generación de credencial criptográfica;
obtener (430) el valor de servidor del elemento de datos de verificador de código de acceso;
calcular (440) un valor de referencia de credencial como una primera función de servidor irreversible del valor de servidor de la variable dinámica obtenido, el valor de servidor de la clave de generación de credencial criptográfica obtenido y el valor de servidor del elemento de datos verificador de código de acceso obtenido;
verificar (450) si la credencial de autenticación dinámica recibida coincide o no con el valor de referencia de credencial calculado.
2. Método según la reivindicación 1, en el que el valor de cliente de la variable dinámica es el mismo que el valor de servidor de la variable dinámica, el valor de cliente de la clave de generación de credencial criptográfica es el mismo que el valor de servidor de la clave de generación de credencial criptográfica, el valor de cliente del elemento de datos de verificador de código de acceso es el mismo que el valor de servidor del elemento de datos de verificador de código de acceso, y la segunda función de cliente para calcular la credencial de autenticación dinámica es sustancialmente la misma que la primera función de servidor para calcular el valor de referencia de credencial.
3. Método según la reivindicación 1 o la reivindicación 2, en el que el valor de cliente de la variable dinámica está basado en datos de transacción que representan una transacción a ser autorizada por el usuario y el método comprende además las etapas de: representar, por parte del cliente de autenticación, los datos de la transacción al usuario; y
recibir, por parte del cliente de autenticación, desde el usuario una aprobación de los datos de transacción representados.
4. Método según cualquiera de las reivindicaciones 1 a 3 que comprende, además: realizar, por parte del cliente de autenticación, durante la etapa de autenticación, las etapas de:
almacenar un valor de cliente de la variable de estado actual, de manera que la obtención del valor de cliente de la clave de generación de credencial criptográfica comprende derivar, por parte del cliente de autenticación, el valor de cliente de la clave de generación de credencial criptográfica a partir del valor de cliente de la variable de estado actual almacenado;
calcular un nuevo valor de cliente de la variable de estado, como una tercera función de cliente del valor de cliente de la variable de estado actual; almacenar el nuevo valor de cliente de la variable de estado en lugar del valor de cliente de la variable de estado actual;
realizar, por parte del servidor de autenticación, durante la etapa de autenticación, las etapas de:
almacenar un valor de servidor de la variable de estado actual, de manera que la obtención, por parte del servidor de autenticación, del valor de servidor de la clave de generación de credencial criptográfica comprende derivar, por parte del servidor de autenticación, el valor de servidor de la clave de generación de credencial criptográfica a partir del valor de servidor de la variable de estado actual almacenado;
calcular un nuevo valor de servidor de la variable de estado, como una segunda función de servidor del valor de servidor de la variable de estado actual; almacenar el nuevo valor de servidor de la variable de estado en lugar del valor de servidor de la variable de estado actual.
5. Método según la reivindicación 4, en el que la tercera función de cliente y la segunda función de servidor son funciones irreversibles.
6. Método según la reivindicación 4 o 5 que comprende, además
realizar, por parte del cliente de autenticación, durante la etapa de autenticación, las etapas de:
descartar el valor de cliente de la clave de generación de credencial criptográfica después del cálculo de la credencial de autenticación dinámica;
descartar el valor de cliente de la variable de estado actual después del cálculo del nuevo valor de cliente de la variable de estado y la derivación del valor de cliente de la clave de generación de credencial criptográfica; y
realizar, por parte del servidor de autenticación, durante la etapa de autenticación, las etapas de:
descartar el valor de servidor de la clave de generación de credencial criptográfica después del cálculo del valor de referencia de credencial; descartar el valor de servidor de la variable de estado actual después del cálculo del nuevo valor de servidor de la variable de estado y la derivación del valor de servidor de la clave de generación de credencial criptográfica.
7. Método según cualquiera de las reivindicaciones 4 a 6, en el que el valor de servidor de la variable de estado actual es el mismo que el valor de cliente de la variable de estado actual, el nuevo valor de servidor de la variable de estado es el mismo que el nuevo valor de cliente de la variable de estado, y la segunda función de servidor es la misma que la tercera función de cliente.
8. Método según cualquiera de las reivindicaciones 4 a 7, que comprende además realizar, durante la etapa de inicialización, las etapas de:
obtener, en el cliente de autenticación, un valor de cliente inicial para el valor de cliente de la variable de estado que se deriva a partir de un valor semilla de estado inicial; almacenar, en el cliente de autenticación, el valor inicial obtenido para el valor de cliente de la variable de estado como el valor de cliente de la variable de estado actual; obtener, en el servidor de autenticación, un valor de servidor inicial para el valor de servidor de la variable de estado que se deriva a partir del valor semilla de estado inicial; y
almacenar, en el servidor de autenticación, el valor inicial obtenido para el valor de servidor de la variable de estado como el valor de servidor de la variable de estado actual.
9. Método según cualquiera de las reivindicaciones 4 a 8, que comprende además la etapa de:
sincronizar el valor de cliente de la variable de estado y el valor de servidor de la variable de estado durante la etapa de autenticación.
10. Aparato (100) para generar una credencial de autenticación dinámica para su verificación por parte de un servidor (230) de autenticación, comprendiendo el aparato: una interfaz (120) de entrada de usuario adaptada para recibir un código de acceso desde un usuario (290) del aparato;
un procesador (150) de datos adaptado para realizar cálculos criptográficos; y una memoria (160) para almacenar un valor del elemento de datos de enmascaramiento de código de acceso;
de manera que el aparato está adaptado para, en una etapa de inicialización:
obtener y almacenar en la memoria el valor del elemento de datos de enmascaramiento de código de acceso,
en el que el elemento de datos de enmascaramiento de código de acceso no se almacena en el servidor de autenticación; y
de manera que el aparato está adaptado además para, en una etapa de autenticación: obtener un valor de la variable dinámica; recibir (310) a través de la interfaz de entrada de usuario el código de acceso del usuario; leer (320) desde la memoria el valor del elemento de datos de enmascaramiento de código de acceso; calcular (330) un valor del elemento de datos de verificador de código de acceso como una primera función irreversible del código de acceso recibido y el valor del elemento de datos de enmascaramiento de código de acceso; obtener una clave de generación de credencial criptográfica; calcular (340) una credencial de autenticación dinámica como una segunda función irreversible del valor de la variable dinámica obtenido, el valor del elemento de datos de verificador de código de acceso calculado y la clave de generación de credencial criptográfica obtenida.
11. Aparato según la reivindicación 10 adaptado además para, en la etapa de inicialización, obtener un valor inicial para un valor de la variable de estado y almacenar en la memoria el valor inicial como el valor de la variable de estado actual; y adaptado además para, en la etapa de autenticación:
leer desde la memoria el valor de la variable de estado actual y obtener la clave de generación de credencial criptográfica derivando la clave de generación de credencial criptográfica a partir del valor de la variable de estado actual leído desde la memoria; descartar la clave de generación de credencial criptográfica derivada después de calcular la credencial de autenticación dinámica; generar un nuevo valor para el valor de la variable de estado como una tercera función irreversible del valor de la variable de estado actual; y, después de la derivación de la clave de generación de credencial criptográfica a partir del valor de la variable de estado actual y la generación del nuevo valor del valor de la variable de estado, descartar el valor de la variable de estado actual y almacenar el nuevo valor generado del valor de la variable de estado en lugar del valor de la variable de estado actual.
12. Aparato según la reivindicación 10 u 11 que comprende además una interfaz de salida de usuario para presentar datos al usuario, y adaptado además para: recibir datos de transacción representativos de una transacción a ser aprobada por el usuario; presentar los datos de transacción recibidos al usuario a través de la interfaz de salida de usuario; recibir desde el usuario una aprobación de los datos de transacción presentados a través de la interfaz de entrada de usuario.
13. Sistema (200) para asegurar la interacción de un usuario (290) con una aplicación basada en ordenador que comprende:
un cliente (100; 220) de autenticación; y
un servidor (230) de autenticación;
de manera que el cliente (100; 220) de autenticación comprende:
una interfaz (100) de entrada de usuario adaptada para recibir un código de acceso desde un usuario del cliente de autenticación;
un procesador (150) de datos de cliente adaptado para realizar cálculos criptográficos; y
una memoria (160) de cliente para almacenar un valor del elemento de datos de enmascaramiento de código de acceso y un valor de cliente de la variable de estado
de manera que el cliente (100; 220) de autenticación está adaptado para, en una etapa de inicialización:
obtener y almacenar en la memoria el valor del elemento de datos de enmascaramiento de código de acceso,
en el que el elemento de datos de enmascaramiento de código de acceso no se almacena en el servidor de autenticación, y obtener un valor de cliente inicial para el valor de cliente de la variable de estado y almacenar en la memoria el valor de cliente inicial como el valor de cliente de la variable de estado actual; y de manera que el cliente (100; 220) de autenticación está adaptado además para, en una etapa de autenticación:
obtener un valor de cliente de la variable dinámica; recibir (310) a través de la interfaz de entrada de usuario el código de acceso del usuario; leer (320) desde la memoria del cliente el valor del elemento de datos de enmascaramiento de código de acceso; calcular (330) un valor de cliente del elemento de datos de verificador de código de acceso como una primera función de cliente irreversible del código de acceso recibido y el valor del elemento de datos de enmascaramiento de código de acceso; leer desde la memoria del cliente el valor de cliente de la variable de estado actual y derivar un valor de cliente de la clave de generación de credencial criptográfica a partir del valor de cliente de la variable de estado actual leído desde la memoria del cliente; calcular (340) una credencial de autenticación dinámica como una segunda función de cliente irreversible del valor de cliente de la variable dinámica obtenido, el valor de cliente del elemento de datos de verificador de código de acceso calculado y el valor de cliente de la clave de generación de credencial criptográfica derivada; descartar el valor de cliente de la clave de generación de credencial criptográfica derivada después de calcular la credencial de autenticación dinámica; generar un nuevo valor para el valor de cliente de la variable de estado como una tercera función de cliente irreversible del valor de cliente de la variable de estado actual; y, después de la derivación del valor de cliente de la clave de generación de credencial criptográfica a partir del valor de cliente de la variable de estado actual y la generación del nuevo valor del valor de cliente de la variable de estado, descartar el valor de cliente de la variable de estado actual y almacenar el nuevo valor generado del valor de cliente de la variable de estado en lugar del valor de cliente de la variable de estado actual; y
de manera que el servidor (230) de autenticación comprende:
una memoria de servidor adaptada para almacenar un conjunto de datos que está asociado con el usuario o el cliente de autenticación, y
un componente de procesamiento de datos de servidor adaptado para realizar operaciones criptográficas; y
de manera que el servidor (230) de autenticación está adaptado para, en la etapa de inicialización:
recibir un valor de inicialización del elemento de datos de verificador de código de acceso y escribir el valor de inicialización del elemento de datos de verificador de código de acceso recibido en la memoria como un valor de servidor del elemento de datos de verificador de código de acceso como parte del conjunto de datos asociado con el usuario o el cliente de autenticación; y obtener un valor de servidor de la variable de estado inicial y escribir el valor de servidor de la variable de estado inicial en la memoria como un valor de servidor de la variable de estado actual como parte del conjunto de datos asociado con el usuario o el cliente de autenticación; y
de manera que el servidor (230) de autenticación está adaptado además para, en la etapa de autenticación:
recibir la credencial de autenticación dinámica generada; obtener un valor de servidor de la variable dinámica; leer desde la memoria del servidor el conjunto de datos asociado con el usuario o el cliente de autenticación; obtener el valor de servidor de la variable de estado actual desde el conjunto de datos leído; derivar un valor de servidor de la clave de generación de credencial criptográfica como una función del valor de servidor de la variable de estado actual obtenido; obtener desde el conjunto de datos leído el valor de servidor del elemento de datos de verificador de código de acceso;
calcular un valor de referencia de credencial como una primera función de servidor irreversible del valor de servidor de la variable dinámica obtenido, el valor de servidor del elemento de datos de verificador de código de acceso obtenido y el valor de servidor de la clave de generación de credencial criptográfica derivado; verificar si la credencial de autenticación dinámica recibida coincide o no con el valor de referencia de credencial calculado; descartar el valor de servidor de la clave de generación de credencial criptográfica después del cálculo del valor de referencia de credencial; calcular un nuevo valor de servidor de la variable de estado como una segunda función de servidor irreversible del valor de servidor de la variable de estado actual obtenido;
descartar el valor de servidor de la variable de estado actual después de la derivación del valor de servidor de la clave de generación de credencial criptográfica y del cálculo del nuevo valor de servidor de la variable de estado; y escribir en la memoria del servidor el nuevo valor de servidor de la variable de estado en lugar del valor de servidor de la variable de estado actual como una parte del conjunto de datos asociado con el usuario o el cliente de autenticación
ES16826678T 2015-12-30 2016-12-30 Un método, un sistema y un aparato que usan criptografía de seguridad hacia adelante para la verificación de códigos de acceso Active ES2952534T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201562273138P 2015-12-30 2015-12-30
PCT/US2016/069464 WO2017117520A1 (en) 2015-12-30 2016-12-30 A method, system and apparatus using forward-secure cryptography for passcode verification

Publications (1)

Publication Number Publication Date
ES2952534T3 true ES2952534T3 (es) 2023-11-02

Family

ID=57799953

Family Applications (1)

Application Number Title Priority Date Filing Date
ES16826678T Active ES2952534T3 (es) 2015-12-30 2016-12-30 Un método, un sistema y un aparato que usan criptografía de seguridad hacia adelante para la verificación de códigos de acceso

Country Status (6)

Country Link
US (1) US10511438B2 (es)
EP (1) EP3398289B1 (es)
JP (1) JP6927981B2 (es)
CN (1) CN109075965B (es)
ES (1) ES2952534T3 (es)
WO (1) WO2017117520A1 (es)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102014015814B4 (de) * 2014-10-24 2016-05-04 Unify Gmbh & Co. Kg Verfahren zum Authentifizieren eines Benutzergeräts bei der Anmeldung an einem Server
EP3376421A1 (en) * 2017-03-17 2018-09-19 Gemalto Sa Method for authenticating a user and corresponding device, first and second servers and system
JP2019054466A (ja) * 2017-09-15 2019-04-04 株式会社 エヌティーアイ 通信システム、第1通信装置、第2通信装置、方法、コンピュータプログラム
WO2019147251A1 (en) * 2018-01-25 2019-08-01 Visa International Service Association Token offline provisioning
US10389708B1 (en) * 2019-01-03 2019-08-20 Capital One Services, Llc Secure authentication of a user associated with communication with a service representative
GB2585010B (en) * 2019-06-24 2022-07-13 Blockstar Developments Ltd Cryptocurrency key management
FR3105481B1 (fr) * 2019-12-24 2022-12-16 Thales Sa Procédé de vérification du mot de passe d'un dongle, programme d'ordinateur, dongle et terminal utilisateur associés
JP2021141460A (ja) * 2020-03-05 2021-09-16 キヤノン株式会社 被認証装置、認証システムおよび認証方法

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7085840B2 (en) * 2001-10-29 2006-08-01 Sun Microsystems, Inc. Enhanced quality of identification in a data communications network
US8281378B2 (en) * 2006-10-20 2012-10-02 Citrix Systems, Inc. Methods and systems for completing, by a single-sign on component, an authentication process in a federated environment to a resource not supporting federation
CN101163014A (zh) * 2007-11-30 2008-04-16 中国电信股份有限公司 一种动态口令身份认证***和方法
US20090210712A1 (en) * 2008-02-19 2009-08-20 Nicolas Fort Method for server-side detection of man-in-the-middle attacks
US8302167B2 (en) * 2008-03-11 2012-10-30 Vasco Data Security, Inc. Strong authentication token generating one-time passwords and signatures upon server credential verification
WO2012005744A1 (en) * 2010-06-27 2012-01-12 King Saud University One-time password authentication with infinite nested hash claims
US8832807B1 (en) * 2010-08-05 2014-09-09 Christine E. Kuo Method and apparatus for asynchronous dynamic password
US8756706B2 (en) * 2010-10-12 2014-06-17 Blackberry Limited Method for securing credentials in a remote repository
US8683562B2 (en) * 2011-02-03 2014-03-25 Imprivata, Inc. Secure authentication using one-time passwords
US9225717B1 (en) * 2013-03-14 2015-12-29 Emc Corporation Event-based data signing via time-based one-time authentication passcodes
IN2015KN00466A (es) * 2012-08-03 2015-07-17 Vasco Data Security Int Gmbh
US9218476B1 (en) * 2012-11-07 2015-12-22 Amazon Technologies, Inc. Token based one-time password security
US9124433B2 (en) * 2012-12-28 2015-09-01 Vasco Data Security, Inc. Remote authentication and transaction signatures
CN103258312B (zh) * 2013-03-20 2015-10-28 东北大学 具有快速密钥流生成机制的数字图像加密方法
WO2015102880A1 (en) * 2013-12-30 2015-07-09 Vasco Data Security, Inc. An authentication apparatus with a bluetooth interface
EP3090521B1 (en) * 2013-12-31 2020-04-01 OneSpan International GmbH A method and apparatus for securing a mobile application
CN103916234B (zh) * 2014-04-11 2016-09-07 中国人民解放军***总医院 一种应用于隐私保护的混沌医学图像加密方法
CN104753682B (zh) * 2015-04-03 2019-05-14 北京奇虎科技有限公司 一种会话秘钥的生成***及方法

Also Published As

Publication number Publication date
EP3398289C0 (en) 2023-06-07
CN109075965A (zh) 2018-12-21
EP3398289A1 (en) 2018-11-07
WO2017117520A1 (en) 2017-07-06
WO2017117520A8 (en) 2018-08-30
CN109075965B (zh) 2022-02-15
JP6927981B2 (ja) 2021-09-01
US10511438B2 (en) 2019-12-17
JP2019506789A (ja) 2019-03-07
US20170195316A1 (en) 2017-07-06
EP3398289B1 (en) 2023-06-07

Similar Documents

Publication Publication Date Title
ES2952534T3 (es) Un método, un sistema y un aparato que usan criptografía de seguridad hacia adelante para la verificación de códigos de acceso
ES2953529T3 (es) Testigo de autenticación fuerte multiusuario
JP6514337B2 (ja) モバイルアプリケーションを安全にするための方法および装置
CN106575326B (zh) 利用非对称加密实施一次性密码的***和方法
US20200358614A1 (en) Securing Transactions with a Blockchain Network
ES2816324T3 (es) Método que usa un único dispositivo de autenticación para autenticar a un usuario a un proveedor de servicios entre una pluralidad de proveedores de servicios y dispositivo para realizar dicho método
US7770018B2 (en) Setting up a security access system
CN105144626B (zh) 提供安全性的方法和设备
US10650373B2 (en) Method and apparatus for validating a transaction between a plurality of machines
JP2019512961A (ja) 改善されたセキュリティーを伴うユーザ認証のための方法およびシステム
KR101012479B1 (ko) 입력값에 따른 otp 발생키를 생성하여 otp를 발생하는 장치 및 방법
JP7476131B2 (ja) 効率的なデータアイテム認証
US10530583B2 (en) Method for putting a first device in secure communication with a second device
Molla Mobile user authentication system (MUAS) for e-commerce applications.
JP2022124424A5 (es)
Malaysia Suggested Mechanisms for Understanding the Ideas in Authentication System
Kochovski et al. CSCI468/968 Advanced Network Security Multi-Factor Authentication
BR112017014014B1 (pt) Método e sistema de personalização de token