ES2288863T3 - Regeneracion asistida por servidor segura de un secreto fuerte a partir de un secreto debil. - Google Patents

Regeneracion asistida por servidor segura de un secreto fuerte a partir de un secreto debil. Download PDF

Info

Publication number
ES2288863T3
ES2288863T3 ES00948590T ES00948590T ES2288863T3 ES 2288863 T3 ES2288863 T3 ES 2288863T3 ES 00948590 T ES00948590 T ES 00948590T ES 00948590 T ES00948590 T ES 00948590T ES 2288863 T3 ES2288863 T3 ES 2288863T3
Authority
ES
Spain
Prior art keywords
data
server
secret
client
user
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.)
Expired - Lifetime
Application number
ES00948590T
Other languages
English (en)
Inventor
Warwick S. Ford
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.)
Verisign Inc
Original Assignee
Verisign Inc
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 Verisign Inc filed Critical Verisign Inc
Application granted granted Critical
Publication of ES2288863T3 publication Critical patent/ES2288863T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • CCHEMISTRY; METALLURGY
    • C07ORGANIC CHEMISTRY
    • C07KPEPTIDES
    • C07K14/00Peptides having more than 20 amino acids; Gastrins; Somatostatins; Melanotropins; Derivatives thereof
    • C07K14/435Peptides having more than 20 amino acids; Gastrins; Somatostatins; Melanotropins; Derivatives thereof from animals; from humans
    • C07K14/46Peptides having more than 20 amino acids; Gastrins; Somatostatins; Melanotropins; Derivatives thereof from animals; from humans from vertebrates
    • C07K14/47Peptides having more than 20 amino acids; Gastrins; Somatostatins; Melanotropins; Derivatives thereof from animals; from humans from vertebrates from mammals
    • 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/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • AHUMAN NECESSITIES
    • A01AGRICULTURE; FORESTRY; ANIMAL HUSBANDRY; HUNTING; TRAPPING; FISHING
    • A01KANIMAL HUSBANDRY; AVICULTURE; APICULTURE; PISCICULTURE; FISHING; REARING OR BREEDING ANIMALS, NOT OTHERWISE PROVIDED FOR; NEW BREEDS OF ANIMALS
    • A01K2217/00Genetically modified animals
    • A01K2217/05Animals comprising random inserted nucleic acids (transgenic)
    • AHUMAN NECESSITIES
    • A61MEDICAL OR VETERINARY SCIENCE; HYGIENE
    • A61KPREPARATIONS FOR MEDICAL, DENTAL OR TOILETRY PURPOSES
    • A61K38/00Medicinal preparations containing peptides

Landscapes

  • Chemical & Material Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Organic Chemistry (AREA)
  • Engineering & Computer Science (AREA)
  • Biochemistry (AREA)
  • General Health & Medical Sciences (AREA)
  • Zoology (AREA)
  • Gastroenterology & Hepatology (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Biophysics (AREA)
  • Toxicology (AREA)
  • Genetics & Genomics (AREA)
  • Medicinal Chemistry (AREA)
  • Molecular Biology (AREA)
  • Proteomics, Peptides & Aminoacids (AREA)
  • Computer Security & Cryptography (AREA)
  • Storage Device Security (AREA)
  • Treatments For Attaching Organic Compounds To Fibrous Goods (AREA)
  • Chemical Or Physical Treatment Of Fibers (AREA)

Abstract

Un procedimiento para habilitar dispositivos para regenerar de manera segura unos datos secretos fuertes de usuario a partir de datos secretos débiles para el usuario, comprendiendo el procedimiento: la determinación (320) de los datos secretos débiles de usuario; el cálculo (340) de los datos de petición del servidor para al menos un servidor que conserva secretos (130), en el que los datos de petición de servidor son una función de los datos secretos débiles y de un secreto de cliente efímero y los datos de petición de servidor no revelan información acerca de los datos secretos débiles sin el conocimiento del secreto de cliente efímero; la recepción (340) de los datos de respuesta del servidor desde el servidor que conserva secretos, en el que los datos de respuesta de servidor son una función de los datos secretos de servidor para el servidor que conserva secretos y de los datos de petición de servidor, y los datos de respuesta del servidor no revelan información acerca de los datos secretos de servidor sin el conocimiento de los datos secretos débiles y del secreto de cliente efímero; el cálculo (330) de un componente secreto para el servidor que conserva secretos como una función de los datos de respuesta de servidor recibidos desde el servidor que conserva secretos y del secreto de cliente efímero, en el que el componente secreto es una función de los datos secretos débiles y del secreto de servidor pero es independiente del secreto efímero; el cálculo (330) de los datos secretos fuertes de usuario como una función del componente secreto; y la determinación (350) de los datos de verificador para al menos un servidor de verificación (130J - 130N), en el que los datos de verificador habilitan al servidor de verificación para verificar que un dispositivo ha recuperado con éxito los datos secretos fuertes pero no es factible desde el punto de vista computacional para el servidor de verificación el determinar los datos secretos débiles solamente en base al acceso a sus datos de verificador.

Description

Regeneración asistida por servidor segura de un secreto fuerte a partir de un secreto débil.
1. Campo técnico
Esta invención se refiere en general a la regeneración segura de un secreto fuerte de usuario cuando el usuario suministra un secreto débil correspondiente, tal como una contraseña elegida por el usuario. Por ejemplo, en aplicaciones de redes de ordenadores, el secreto fuerte podría ser una clave de encriptado que se usa para proteger los datos privados altamente sensibles del usuario (tales como la clave privada del usuario usada en criptografía de clave pública). En este ejemplo, la invención se refiere a la regeneración segura de la clave de encriptado (y a la recuperación segura de la clave privada de usuario) cuando el usuario suministra su contraseña. Como otro ejemplo, el usuario podría usar el secreto fuerte para autenticarse en un servidor, demostrando al servidor la capacidad del usuario para regenerar el secreto fuerte, sin necesidad de que ese servidor almacene datos que permitan que el secreto débil sea atacado por medio de pruebas exhaustivas.
2. Técnica antecedente
Como resultado del desarrollo continuo de nuevas tecnologías, en particular en las áreas de redes de ordenadores y comunicaciones, el uso de grandes redes tales como Internet se está comenzando a extender ampliamente. Esto ha dado como resultado un aumento en el comercio electrónico y otras transacciones electrónicas dirigidas sobre estas redes. También ha dado como resultado una flexibilidad aumentada para los usuarios, ya que éstos pueden acceder en mayor medida a estas redes desde cualquier número de localizaciones y/o dispositivos. El aumento en las transacciones electrónicas ha dado como resultado una correspondiente necesidad aumentada de seguridad para estas transacciones; pero la flexibilidad aumentada impone requisitos adicionales sobre seguridad ya que cualquier medida de seguridad de manera preferible acomodaría a los usuarios incluso mientras navegan por la red.
En un escenario común, el usuario puede acceder a la red de ordenadores desde muchas localizaciones diferentes y puede desear usar su clave privada desde cada una de las localizaciones. Sin embargo, en cada una de las localizaciones, el usuario puede estar accediendo a la red desde un dispositivo (al que se hace referencia de aquí en adelante en este documento como "terminal de cliente") que no puede almacenar o no almacena datos para el usuario, distintos a datos durante períodos transitorios. Por ejemplo, un empleado podría acceder a una red de ordenadores central de empresa desde terminales diferentes que se encuentren en las instalaciones de la empresa, o un consumidor podría acceder a Internet desde cualquier navegador web o podría acceder a una red privada desde un kiosco de consumidor. De manera típica se puede confiar en el terminal de cliente para ejecutar su código de una manera fiable para mantener el secreto de datos sensibles (por ejemplo, la clave privada del usuario o un secreto compartido con un servidor de aplicaciones) durante el período en el que el usuario esté usando de manera activa ese terminal, y para destruir de manera segura los datos sensibles cuando el usuario haya acabado de usarlos. De esta manera, los datos privados del usuario se podrían usar de manera segura en el terminal de cliente si el terminal de cliente pudiese obtener de algún modo de manera segura una copia de los datos privados.
En un enfoque, los datos privados se almacenan en algún almacenamiento hardware seguro o tarjeta de procesamiento, tal como una tarjeta inteligente. La tarjeta de procesamiento está conectada físicamente al terminal de cliente y los datos privados se hacen accesibles al cliente. Este enfoque sufre de un alto coste y de la inconveniencia para el usuario ya que se requiere un hardware dedicado, haciéndola de esta manera inapropiada para muchas aplicaciones.
En otro enfoque, los datos privados se recuperan con la ayuda de otros dispositivos conectados a la red (denominados de aquí en adelante en este documento como "servidores". En otro ejemplo, la recuperación de los datos privados es parte del proceso de registro de entrada de sesión del usuario. El usuario se autentica presentando un nombre de cuenta de usuario y una contraseña sometida a controles modestos (pero no extremos) de capacidad de adivinación. En particular, cualquier parte que intente un ataque de adivinación de contraseña está limitado a un pequeño número de intentos, y dado este control, se permite a los usuarios elecciones de contraseña razonablemente amigables.
Una vez que el usuario está autenticado, el terminal de cliente recupera los datos privados del usuario con la ayuda de los servidores.
El problema de recuperar datos privados, tales como una clave privada, en un terminal de cliente que no conserva un estado constante entre transacciones se ha tratado en trabajos anteriores mediante el uso de un servidor que almacena datos secretos para el cliente y facilita el proceso de recuperación. Se examinaron varios protocolos para el uso de dichos servidores con diferentes características de seguridad y de funcionamiento en el documento de R. Perlman y C. Kaufman, titulado "Protocolo Seguro basado en Contraseña para la descarga de una Clave Privada", Proc. 1999 Network and Distributed System Security Symposium, Internet Society, enero de 1999. Los protocolos descritos en ese trabajo son principalmente variantes o derivados del protocolo EKE de Bellovin y Merritt (por ejemplo, véase el documento de S. Bellovin y M. Merritt, titulado "Intercambio de clave encriptada: Protocolos basados en contraseña seguros contra ataques de diccionario", Proc. IEEE, Symposium on Research in Security and Privacy, mayo de 1992; y en el documento de S. Bellovin y M. Merritt, "Intercambio aumentado de clave encriptada: un protocolo basado en contraseña seguro contra ataques de diccionario y compromiso de fichero de contraseña", ATT Labs Technical Report, 1994) y el protocolo SPEKE de Jablon (por ejemplo, véase el documento de D. Jablon titulado "Intercambio de clave autenticada sólo con contraseña fuerte", ACM Computer Communications Review, octubre de 1996; y el documento de D. Jablon titulado "Protocolos de contraseña ampliados inmunes a ataques de diccionario", Proc. del WETICE '97 Enterprise Security Workshop, junio de 1997. Patentes relacionadas incluyen la patente de los Estados Unidos número 5.241.599 ("Protocolo criptográfico para comunicaciones seguras" de Bellovin y Merritt) y la patente de los Estados Unidos número 5.440.635 ("Protocolo criptográfico para autenticación remota", de Bellovin y Merritt). Otros protocolos relacionados secretos de recuperación asistidos por un servidor han sido propuestos por Gong y colaboradores (por ejemplo, L. Gong, T. M. A. Lomas, R. M. Needham y J. H. Salzer, "Protección de secretos pobremente elegidos de ataques de adivinación", IEEE Journal on Selected Areas in Communications, volumen 11, número 5, junio de 1993, páginas 648 a 656; L. Gong, "Protocolos Óptimos de Autenticación resistentes a Ataques de Adivinación de Contraseña", Proc. 8° IEEE Computer Security Foundations Workshop, Irlanda, 13 de junio de 1995, páginas 24 a 29; y L. Gong, "Aumento de la disponibilidad y de la seguridad de un servicio de autenticación", IEEEE Journal on Selected Areas in Communications, volumen 11, número 5, junio de 1993, páginas 657 a 662); por Wu (por ejemplo, T. Wu, "El Protocolo de Contraseña Remota Segura", Proc. 1998 Network and Distributed System Security Symposium, Internet Society, enero de 1998, páginas 97 a 111) y por Halevi y Krawcyzk (por ejemplo, S. Halevi y H Krawczyk, "Criptografía de clave pública y protocolos de contraseña". "Criptografía de clave pública y protocolos de contraseña", Proceedings of the Fifth ACM Conference on Computer and Communications Security, 1998).
Sin embargo, todos los procedimientos anteriores sufren un defecto significativo. El servidor representa una vulnerabilidad principal. Si un operador de servidor o alguien que comprometa a un servidor desee determinar una contraseña de usuario o datos privados (tanto la contraseña de usuario como los datos privados habilitando al atacante a hacerse pasar como el usuario), son posibles ataques viables, a pesar de aspectos de algunas aproximaciones que minimizan la sensibilidad de los datos almacenados en el servidor. Por ejemplo, en cierto del trabajo anteriormente mencionado, el servidor no almacena la contraseña del usuario sino que en lugar de esto almacena un valor calculado como una función unidireccional de la contraseña. Cualquiera que aprenda que el valor podría ser capaz de determinar la contraseña por medio de la aplicación exhaustiva de la función unidireccional para averiguar contraseñas y comparar el resultado con el valor almacenado. En términos generales, las aproximaciones anteriormente mencionadas sufren de debilidad en que cualquiera que pueda acceder a la base de datos del servidor o pueda inhabilitar cualquier mecanismo de estrangulación o bloqueo en el servidor puede probar contraseñas de manera exhaustiva hasta que entre en la cuenta del usuario en el servidor.
En algunos escenarios de aplicaciones la debilidad anteriormente mencionada puede socavar de manera significativa el atractivo de la aproximación asistida por servidor para recuperar datos privados. Por ejemplo, el escenario de ataque anterior restringe de manera significativa las propiedades de no repudiación en cualquier otro caso inherentes en tecnología de firma digital. Si un usuario itinerante firma una transacción usando la clave privada de usuario desde un terminal de cliente y posteriormente desea denegar la firma digital de usuario, el usuario puede reclamar de manera convincente que el operador de servidor o alguien que comprometa al servidor obtuvo la clave privada de usuario como se ha descrito anteriormente y que firmó digitalmente la transacción haciéndose pasar por el usuario. Los riesgos y la fiabilidad a las que hace frente un operador de servidor se reducen si puede de manera justificada contrarrestar las peticiones de usuarios que tanto ellos como su personal pueden haberse hecho pasar como el usuario.
De esta manera existe una necesidad de una aproximación que permita a un terminal de cliente recuperar datos privados del usuario con la ayuda de servidores a la vez que permanecen resistentes a ataques en los servidores. De manera más general, el problema de recuperar datos privados en un cliente que no conserva un estado constante entre transacciones se puede ver reducido al problema de generar y regenerar datos secretos fuertes para un usuario a partir de los datos secretos débiles de usuario, tales como una contraseña. El secreto fuerte se puede usar como una clave de encriptado en un criptosistema simétrico para encriptar y recuperar cualquier cantidad de datos privados que se podrían conservar en formato encriptado en un lugar de almacenamiento ampliamente accesible.
Existe también una necesidad de aproximaciones que permitan a un usuario autenticarse en un servidor de aplicaciones desde un terminal de cliente que no conserva un estado constante entre transacciones en base a una contraseña presentada. Aproximaciones actuales, tales como el procedimiento de autenticación Kerberos (por ejemplo, véase el documento de J. T. Kohl y B. C. Neuman, El servicio de autenticación de red Kerberos (V5), Petición de comentarios (RFC) 1510, Internet Activities Board, 1993), implica al usuario para que primero se autentique en un servidor de autenticación y posteriormente en un servidor de aplicaciones usando un "billete" criptográfico del servidor de autenticación. Sin embargo, estas aproximaciones sufren de las deficiencias de que o el servidor de aplicaciones o el servidor de autenticación conservan datos que, si son expuestos a un atacante (ya sea interno o externo a la organización que haga funcionar el servidor), permite que el atacante adivine de manera exhaustiva las contraseñas y probablemente determine la contraseña del usuario. Estos problemas se pueden prevenir si la autenticación de usuario se basa en que un usuario presente una prueba de conocimiento de datos secretos fuertes en lugar de datos secretos débiles al servidor de aplicaciones o al servidor de autenticación.
También existe una necesidad de aproximaciones que permitan a un usuario crear una firma digital desde un terminal de cliente que no conserva un estado constante entre transacciones dentro del que se introduce una contraseña. Una aproximación para satisfacer este requisito es recuperar la clave privada de usuario que está dentro del terminal como se ha esbozado con anterioridad y calcular la firma digital en el terminal de cliente. Otra aproximación para satisfacer el requisito, que no requiere que la clave privada sea juntada en un lugar, implica las comunicaciones con múltiples servidores cada uno de los cuales conserva una parte independiente de la clave privada de firma del usuario. Dichos servidores generan cada uno de ellos una parte de la firma digital y las partes se combinan en el terminal de cliente para dar la firma digital completa. Mientras que otro trabajo pertinente basado en dichos procedimientos consigue el objetivo de no juntar la clave privada en un lugar, dicho trabajo sufre la debilidad de que uno o más servidores que participan en el proceso de señalización conservan datos que permitan que la contraseña del usuario se vea atacada de manera exhaustiva. Por consiguiente, existe un riesgo de que cualquiera que comprometa cualquiera de dichos servidores pueda determinar la contraseña del usuario por medio de la adivinación exhaustiva, lo que, en caso de tener éxito, permite que, el atacante falsifique firmas digitales dando a entender que son de ese usuario. El problema se puede prevenir por medio de la autenticación a los servidores que generan partes de la firma digital demostrando el conocimiento de un secreto de usuario fuerte, que se pueden haber regenerado en base a la presentación de un secreto de usuario débil, en lugar de por medio de la autenticación directamente en base al propio secreto de usuario débil.
De esta manera, existe una necesidad de una aproximación que permita a un terminal de cliente regenerar datos secretos fuertes de usuario a partir de datos secretos débiles con la ayuda de servidores a la vez que permanecen resistentes a ataques en los servidores.
En las reivindicaciones anejas se declaran aspectos de la presente invención.
De acuerdo con una realización, un procedimiento para establecer (200, 500) datos secretos fuertes de usuario (100) para permitir la posterior recuperación (400, 600) de datos secretos fuertes, incluye los siguientes pasos. Se determinan (320) para el usuario (110) datos secretos débiles, por ejemplo una contraseña. El usuario se autentica (310) en los servidores (130), que incluyen a servidores que guardan secretos (de manera preferible al menos dos servidores que guardan secretos). Cada servidor que conserva secretos tiene correspondientes datos de secreto del servidor. Un cliente generador (120) posiblemente ayudado por los servidores que guardan secretos (130) calcula (330, 350) los datos secretos fuertes de usuario. Los datos secretos fuertes son una función de los datos secretos débiles del usuario y de los datos secretos del servidor. En una realización preferida, se calculan los componentes secretos (534) para cada uno de los servidores que guardan secretos. Cada componente secreto es una función de los datos secretos débiles y de los datos secretos fuertes para ese servidor que conserva secretos. Los componentes secretos se combinan (536) para generar los datos secretos fuertes. El cliente generador (120) también determina (350) datos de verificador para los servidores de verificación (130), preferiblemente al menos dos. Los datos de verificador hacen posible a un servidor de verificación (130) verificar (402, 602) si un dispositivo (220) ha recuperado con posterioridad de manera exitosa (400, 600) los datos secretos fuertes. Sin embargo, es desde el punto de vista computacional no factible para el servidor (130) determinar los datos secretos débiles en base solamente al acceso a sus datos de verificador. Los servidores de verificación (130) pueden almacenar (355) los datos de verificador para su uso posterior. El cliente generador (120) puede adicionalmente usar los datos secretos fuertes como una clave criptográfica en un criptosistema simétrico para encriptar (370) otros datos privados para el usuario (110), tales como la clave privada de usuario.
En una realización preferida, los datos secretos fuertes se calculan (330, 350) de la siguiente manera. El cliente generador (120) calcula los datos de petición del servidor para al menos uno de los siguientes servidores que guardan secretos (130). Los datos se petición del servidor son una función de los datos secretos débiles y de un secreto de cliente efímero, pero los datos de petición del servidor no revelan información acerca de los datos secretos débiles sin el conocimiento del secreto de cliente efímero. Como resultado de esto, el cliente generador (120) puede transmitir los datos de petición del servidor al servidor que conserva secretos (130) sin comprometer los datos secretos débiles. El servidor que conserva secretos (130) calcula los datos de respuesta del servidor que son una función de los datos secretos del servidor para el servidor que conserva secretos y de los datos de petición de servidor recibidos. Los datos de respuesta del servidor no revelan información acerca de los datos secretos del servidor sin el conocimiento de los datos secretos débiles y el secreto de cliente efímero. Como resultado de esto, el servidor que conserva secretos (130) puede transmitir los datos de respuesta del servidor al cliente generador (120) sin comprometer sus datos secretos del servidor. El cliente generador (120) calcula un componente secreto para el servidor que conserva secretos como una función de los datos de respuesta del servidor recibidos desde el servidor que conserva secretos y del secreto de cliente efímero. El componente secreto es una función de los datos secretos débiles y de los datos secretos del servidor pero es independiente del secreto de cliente efímero. El cliente generador (120) calcula entonces los datos secretos fuertes de usuario como una función de los componentes secretos.
En un refinado adicional, los datos secretos débiles son una contraseña PWD y los datos secretos del servidor son enteros aleatorios b(i), donde i es un índice para los servidores (130). El cliente generador (120) calcula (534) los datos de petición del servidor que incluyen el valor M = w^{a}. Aquí, w = f(datos secretos débiles), donde f es una función que genera un elemento de un grupo G, y el secreto de cliente efímero incluye el entero aleatorio a para el que existe un correspondiente entero a' tal que x^{aa'} = x para todos los x del grupo G. El grupo G es un grupo finito en el que la exponenciación es eficiente pero el problema del logaritmo discreto es no factible desde el punto de vista computacional, por ejemplo el grupo multiplicativo del conjunto de enteros módulo a prima p o un grupo de puntos sobre una curva elíptica sobre un campo finito. Todas las exponenciaciones se calculan en el grupo G. El servidor que conserva secretos (130) calcula (534) los datos de respuesta del servidor que incluyen el valor c(i) = M^{b(i)}. El cliente generador (120) calcula después (534) componentes secretos de acuerdo con K(i) = h(c(i)^{a'}) donde h es una función. Los datos secretos fuertes de usuario se calculan después (536) como una función de todos los componentes secretos K(i), por ejemplo como la operación O-exclusiva de estos componentes.
En otro aspecto de la invención, los datos secretos fuertes se recuperan (400, 600) a partir de los datos secretos débiles de la siguiente manera. Un cliente de recuperación (220) recibe (410) los datos secretos débiles del usuario. El cliente de recuperación (220) calcula entonces (440, 460) los datos secretos fuertes del usuario, que son una función de los datos secretos débiles del usuario y de los datos secretos del servidor para al menos dos servidores que guardan secretos (130). En una realización preferida, el cálculo se basa en los componentes secretos, como se ha descrito anteriormente. El cliente de recuperación (220) determina también (450, 650) datos de prueba para proporcionar (460, 660) que los datos secretos fuertes se calcularon de manera exitosa (401, 601) y transmite (455, 655) los datos de prueba a los servidores de verificación (130) que pueden o no ser también servidores que guardan secretos. Mediante la validación de los datos de prueba usando los correspondientes datos de verificador, los servidores de verificación (130) pueden determinar (460, 660) si los datos secretos fuertes se recuperaron con éxito (401, 601) y tomar las acciones apropiadas (680). Por ejemplo, parece probable que una entidad (220) que no tenga acceso a los datos secretos débiles esté intentando regenerar (401, 601) los datos secretos fuertes, entonces el servidor de verificación podría dar órdenes a los servidores que guardan secretos (130) para que cesen de participar en cualquier intento adicional de recuperación (400, 600). De manera -alternativa, el servidor de verificación podría ser responsable de generar parte de una firma digital en nombre del usuario (110). En este caso, los datos de prueba podrían estar acompañados por un resumen de mensaje de un mensaje que vaya a ser firmado y el servidor de verificación (130) generará su parte de la firma digital solamente cuando se presente de manera simultánea con los datos de prueba adecuados. Si se encriptaron (370) datos privados adicionales usando los datos secretos fuertes como una clave criptográfica, entonces el cliente de recuperación (220) puede de manera adicional desencriptar (470) los datos privados.
En una realización preferida, los datos secretos fuertes se calculan (440, 640) de la siguiente manera. El cliente de recuperación (220) calcula (420, 620) los datos de petición del servidor para al menos uno y de manera preferible más de un servidor que conserva secretos. Los datos de petición del servidor son una función de los datos secretos débiles de un secreto de cliente efímero, pero no revelan información significativa acerca de los datos secretos débiles sin el conocimiento del secreto de cliente efímero. Los datos de petición del servidor se transmiten (425, 625) al servidor que conserva secretos, que calcula (430, 630) los datos de respuesta del servidor en base a los datos de petición del servidor y a sus datos secretos del servidor. Los datos de respuesta de servidor no revelan información significativa acerca de los datos secretos de servidor sin el conocimiento de los datos de petición de servidor. Los datos de respuesta del servidor se transmiten (435, 635) al cliente de recuperación (220) que recupera (440, 640) los datos secretos fuertes del usuario usando los datos de respuesta del servidor.
En una realización preferida correspondiente a la descrita con anterioridad, el cliente de recuperación (220) genera de manera aleatoria (624) un secreto de cliente efímero a, que es un entero para el que existe un entero correspondiente a' tal que x^{aa'} = x para todo x del grupo G. Calcula (626) los datos de petición del servidor incluyendo el valor M = w^{a}, donde w = f(PWD) corno antes, y transmite (625) estos datos a al menos un servidor que conserva secretos (130). Cada servidor que conserva secretos (130) calcula (630) los datos de respuesta del servidor incluyendo el valor c(i) = M^{b(i)} y transmite (635) esto de vuelta al cliente de recuperación (220). El cliente de recuperación (220) calcula (644) los componentes secretos K(i) = h(c(i)^{a'}), donde h es la misma función que antes. Los componentes secretos se combinan después (646), como en el cliente generador (120), para recuperar los datos secretos
fuertes.
Estos procedimientos (300, 400, 500, 600) son ventajosos porque permiten a un usuario (110) recuperar (400, 600) datos secretos fuertes a partir de datos secretos débiles en muchos clientes de recuperación (220). Estos procedimientos son en general resistentes a ataques, incluyendo ataques sobre los servidores (130) o que comprometan a los mismos. De acuerdo además con la presente invención, software y/o hardware (100, 200) implementa los procedimientos anteriores.
Breve descripción de los dibujos
Éstos y otros objetos y características más detallados y específicos de la presente invención se describen más completamente en la siguiente especificación, con referencia a los dibujos acompañantes, en los que:
La figura 1 es un diagrama de bloques de un sistema de inicialización (100) de acuerdo con la presente inven-
ción;
La figura 2 es un diagrama de bloques de un sistema de recuperación (200) de acuerdo con la presente invención;
La figura 3 es una traza de eventos que ilustra un procedimiento de ejemplo (300) para inicializar el sistema 100, de acuerdo con la presente invención;
La figura 4 es una traza de eventos que ilustra un procedimiento de ejemplo (400) para recuperar datos secretos fuertes que ha sido inicializado usando el procedimiento 300;
La figura 5 es una traza de eventos que ilustra un procedimiento preferido (500) para inicializar el sistema 100 usando exponenciación en un grupo G, de acuerdo con la presente invención;
La figura 6 es una traza de eventos que ilustra un procedimiento preferido (600) para recuperar los datos secretos fuertes que ha sido inicializado usando el procedimiento 500.
\newpage
Descripción detallada de las realizaciones preferidas
Las figuras 1 y 2 son diagramas de bloques que ilustran los sistemas 100 y 200 de acuerdo con la presente invención. Por razones que serán aparentes con posterioridad, se hará referencia al sistema 100 como un "sistema de inicialización" y al sistema 200 como un "sistema de recuperación".
El sistema de inicialización 100 incluye un usuario 110, un terminal de cliente 120, un número de servidores 130A-130N (de manera colectiva, los servidores 130) y opcionalmente también un medio de almacenamiento 140. El usuario 110 puede ser una persona, un grupo de personas, una entidad legal tal como una corporación, un ordenador, etc. El terminal de cliente 120, al que se hará referencia como el "cliente generador" 120, es típicamente algún tipo de dispositivo basado en ordenador. Ejemplos incluyen ordenadores personales, estaciones de trabajo de ordenador y teléfonos sin hilos digitales. Los servidores 130 de manera típica también son dispositivos basados en ordenador. En esta descripción, se hace referencia a los mismos como "servidores" debido al papel que desempeñan, pero esta terminología no significa que implique que sean necesariamente ordenadores de la clase servidor. Al menos un servidor y posiblemente todos los servidores 130 son servidores que guardan secretos. El papel desempeñado por los servidores que guardan secretos se describirá más completamente con posterioridad. En ciertas realizaciones, puede haber un único servidor 130. Las realizaciones alternativas prefieren dos o más servidores que guardan secretos 130. En realizaciones que utilicen múltiples servidores que guardan secretos 130, los servidores que guardan secretos de manera preferible están controlados por diferentes entidades de forma que ninguna entidad individual tenga acceso a todos los servidores que guardan secretos 130, por razones que se tratan más adelante. Ejemplos de medio de almacenamiento 140 incluyen una unidad de disco de red, un servicio de directorio o un servidor de ficheros. El usuario 110, los servidores 130 y el medio de almacenamiento 140 están cada uno de ellos acoplado al cliente generador 120. Las conexiones se pueden hacer por cualquier número de medios, incluyendo sobre redes de ordenadores tales como Internet o por medio de conexiones sin hilos. Las conexiones necesitan no ser permanentes o constantes. De hecho, como se describe con mayor detalle con posterioridad, el cliente generador 120 realiza una tarea particular y una vez que se ha completado la tarea, no hay necesidad de que los otros componentes comuniquen además con el cliente generador 120.
El sistema de recuperación 200 es similar al sistema de inicialización 100, excepto que el cliente generador 120 se sustituye por otro terminal de cliente 220, al que se hará referencia como el cliente de recuperación 220. El cliente de recuperación 220 puede o no ser el mismo dispositivo físico que el cliente generador 120. Ejemplos de clientes de recuperación 220 incluyen ordenadores personales, kioscos digitales, teléfonos digitales sin hilos u otros dispositivos sin hilos, y tarjetas inteligentes.
Los sistemas 100 y 200 implementan la siguiente funcionalidad. El usuario 110 tiene datos secretos fuertes que le gustaría ser capaz de usar desde el cliente de recuperación 220, donde "fuertes" implica datos que no se pueden deducir de manera factible por medio de la adivinación exhaustiva y "secretos" significa datos que nadie que no sea el poseedor secreto (por ejemplo, el usuario en el caso de los datos secretos fuertes de usuario) debería ser capaz de determinar de manera factible. Sin embargo, el cliente de recuperación 220 es un terminal de cliente que no pueda o que no tenga acceso a priori a los datos secretos fuertes del usuario 110. Además, el usuario 110 no sabe directamente sus datos secretos fuertes así, por ejemplo, el usuario 110 no puede simplemente introducir sus datos secretos fuertes dentro del cliente de recuperación 220. Así, el cliente de recuperación 220 debe de alguna manera regenerar o recuperar los datos secretos fuertes de usuario 110 y debe hacerlo así de una manera segura con el fin de mantener el fuerte secretismo de los datos. El usuario 110 conoce ciertos datos secretos débiles, donde "débiles" implica que los datos se pueden adivinar correctamente con un número moderado de intentos. Por ejemplo, puede ser una contraseña especificada por el usuario. El usuario 110 introduce sus datos secretos débiles dentro del cliente de recuperación 220, y en base a los datos secretos débiles del usuario 110, el sistema 200 recupera de manera segura después los datos secretos fuertes, permitiendo de esa manera al usuario 110 usar los datos secretos fuertes desde el cliente de recuperación 220. El sistema 100 y el cliente generador 120 realizan varios pasos de inicialización en base a los datos secretos fuertes y a los datos secretos débiles, de forma que el sistema 200 y el cliente de recuperación 220 puedan recuperar con posterioridad de manera segura los datos secretos fuertes a partir de los datos secretos débiles del usuario 110. Los servidores 130 ayudan en estos procesos.
En una realización preferida, los datos secretos fuertes son una clave criptográfica que se usa en un criptosistema simétrico para encriptar los datos privados de usuario 110 que podrían incluir una clave privada, y los datos secretos débiles son una contraseña. Los datos privados encriptados se almacenen en un medio de almacenamiento 140. Cuando el usuario 110 desee usar sus datos privados desde el cliente de recuperación 220, él suministra su contraseña al cliente de recuperación 220. El cliente de recuperación 220 recupera entonces la clave criptográfica que se usa para desencriptar los datos privados encriptados de usuario. El usuario 110 puede entonces usar sus datos privados como desee, por ejemplo, mediante el uso de su clave privada para firmar digitalmente mensajes dentro del cliente de recuperación 220.
Las figuras 3 y 4 son trazas de eventos que ilustran procedimientos de ejemplo 300 y 400 para realizar la inicialización del sistema 100 y para recuperar los datos secretos fuertes a partir de los datos secretos débiles del usuario 110, respectivamente. El procedimiento 300 usa el sistema 100 y el procedimiento 400 usa el sistema 200. Cada uno de los recuadros en línea discontinua 110, 120, 130, 140 y 220 representa uno de los componentes del sistema 100 o del sistema 200. Los recuadros en línea continua representan varios pasos en los dos procedimientos 300 y 400. La localización de un recuadro en línea continua dentro de un recuadro en línea discontinua generalmente indica que el paso específico es realizado por ese componente específico. Por ejemplo, en la figura 3, el paso 310 está localizado dentro del recuadro con línea discontinua para el cliente generador 120. Esto indica por lo general que el cliente generador 120 realiza el paso 310. Los procedimientos de manera preferible se implementan por medio de software que se ejecuta en los distintos componentes dentro de cada sistema, posiblemente con la ayuda de módulos hardware, pero los módulos de procesado representados en las figuras 3 y 4 también se pueden implementar en hardware y/o firmware.
Con referencia primero a la figura 3, el procedimiento de inicialización 300 se puede descomponer en tres etapas generales 301-303. En la etapa de generación 301, el sistema 100 determina los datos secretos fuertes de usuario, a los que se hará referencia en esta realización como K. Esta etapa 301 incluye los pasos que permiten al sistema 200 regenerar de manera segura con posterioridad el secreto fuerte K. En la etapa de configuración de verificador 302, el sistema 100 ejecuta los pasos que permiten al sistema 200 verificar la posterior recuperación exitosa del secreto fuerte K. En la etapa de almacenamiento 303, el sistema 100 usa el secreto fuerte K para encriptar los datos privados para el usuario (por ejemplo, la clave privada de usuario o el certificado digital de usuario), para una recuperación posterior por parte del cliente 220 de recuperación. No todas las implementaciones utilizarán todas las etapas 301-303, pero éstas se incluyen en este ejemplo para ilustrar varios aspectos de la invención.
En la etapa de generación 301, el cliente generador 120 comienza por autenticar 310 al usuario 110 como un usuario legítimo para una cuenta de usuario U. Esto podría implicar las comunicaciones con otros sistemas, tales como un servidor de autenticación.
El usuario 110 y/o el cliente generador 120 determina 320 los datos secretos débiles del usuario 110, a los que se hace referencia en este documento como PWD. El secreto débil es típicamente una contraseña de usuario en esta realización, y esta descripción la caracterizará como tal. Sin embargo, el secreto débil podría tomar otros formatos y/o ser completamente o parcialmente de otra fuente, tal como datos de firma biométrica almacenados en una tarjeta física o un dispositivo asociado con el usuario 110. En la figura 3, la generación 320 del secreto débil se muestra cubriendo tanto al usuario 110 como al cliente generador 120. Esto es porque cualquiera puede participar en varios grados, dependiendo de la implementación específica. Por ejemplo, en una aproximación, el usuario 110 propone una contraseña PWD y el cliente generador 120 o acepta o rechaza la contraseña, dependiendo de si cumple ciertos criterios de anti-adivinación. En una aproximación diferente, el cliente generador 120 genera la contraseña PWD (por ejemplo, usando un proceso aleatorio) y después la asigna al usuario 110. En cualquier caso, al final del paso 320, tanto el usuario 110 como el cliente generador 120 tienen acceso a la contraseña PWD.
Los datos secretos de servidor b(i) para el usuario 110 se establecen 340 para algunos y quizá para todos los servidores S(i), donde i es un índice para los servidores. Se hace referencia a los servidores 130 para los que se establecen los datos secretos de servidor como servidores de conservan secretos. De manera análoga al paso 320, se muestra el paso 340 cubriendo el cliente generador 120 y los servidores que guardan secretos S(i) porque cada uno de ellos puede participar en distinto grado, dependiendo de la implementación específica, como se describirá además más adelante. Si una implementación específica pide al cliente generador 120 y a los servidores que guardan secretos S(i) intercambiar mensajes con el fin de establecer 340 los datos secretos de servidor, es importante que esos mensajes estén protegidos en su integridad y la fuente de cada mensaje esté autenticada con el fin de mantener la seguridad del protocolo completo. Por ejemplo, el cliente generador y los servidores que guardan secretos S(i) podrían intercambiar mensajes sobre un canal seguro. Al final del paso 340, cada servidor que conserva secretos S(i) tiene acceso a sus correspondientes datos secretos de servidor b(i) y de manera típica serán almacenados de manera segura 345 para su uso futuro en la recuperación de los datos secretos fuertes de usuario. El cliente generador 120 puede tener acceso también a los datos secretos de servidor b(i), dependiendo de la implementación específica. Sin embargo, en este caso, de manera típica usaría los datos secretos de servidor b(i) solamente como parte de la inicialización 300 y después los borraría. El cliente generador 120 no retiene los datos secretos de, servidor b(i) para uso futuro.
El cliente generador 120 calcula 330 los datos secretos fuertes de usuario K. Los datos secretos fuertes K son una función del secreto débil de usuario PWD y de los datos secretos de servidor b(i). De nuevo, el paso 330 cubre tanto el cliente generador 120 como los servidores S(i) porque, dependiendo de la implementación, cada uno de ellos contribuye al cálculo requerido para convertir el secreto débil de usuario PWD y los datos secretos del servidor b(i) en el secreto fuerte K. Sin embargo, aunque los servidores que guardan secretos S(i) pueden calcular valores intermedios, solamente el cliente generador 120 tiene acceso al secreto fuerte final K.
En la etapa de configuración de verificador 302, se determinan 350 los datos de verificador v(i) para algunos y quizá para todos los servidores S(i) y de manera preferible también son almacenados 355 por cada uno de los servidores
S(i). Se hará referencia a los servidores para los que se establecen los datos de verificador como los servidores de verificación 130. Los datos de verificador v(i) habilitan a los servidores de verificación S(i) para verificar si un cliente de recuperación 220 ha recuperado con éxito los datos secretos fuertes del usuario. En una realización preferida, los servidores que guardan secretos son también los servidores de verificación, aunque éste no es necesariamente el caso. De manera alternativa, los servidores de verificación pueden ser físicamente distintos a los servidores que guardan secretos, pero puede que haya un servidor de verificación correspondiente a cada uno de los servidores que guardan secretos. Por propósitos de redundancia, es preferible tener al menos dos servidores de verificación. Los datos de verificador se seleccionan de forma que sea no factible desde el punto de vista computacional que el servidor de verificación determine los datos secretos débiles en base solamente al acceso a sus datos de verificador. En una aproximación, el cliente generador 120 determina 350 los datos de verificador que se transmiten después al servidor 130. En una aproximación alternativa, cada servidor 130 determina sus propios datos de verificador. De manera análoga al paso 340, si una implementación específica pide al cliente generador 120 y al servidor 130 intercambiar mensajes con el fin de determinar 350 los datos de verificador, es importante que estos mensajes estén protegidos en su integridad y la fuente de cada mensaje esté autenticada.
En la etapa de almacenamiento 303, el cliente generador 120 encripta de manera adicional 370 otros datos para el usuario, a los que se hará referencia como los datos privados del usuario. En una realización preferida, los datos secretos fuertes K se usan como una clave criptográfica en un criptosistema simétrico. Por ejemplo, los datos privados podrían ser la clave privada del usuario, un secreto compartido por el usuario y por un servidor de aplicación, los números de cuenta de la tarjeta de crédito del usuario u otros datos privados o datos secretos que el usuario le gustaría usar desde el cliente de recuperación 220. Los datos privados encriptados EPD se almacenan 375 en el medio de almacenamiento 140 para una posterior recuperación. El medio de almacenamiento 140 de manera típica es ampliamente accesible; los datos privados de usuario están asegurados porque se almacenan en formato encriptado. En realizaciones alternativas, los datos secretos fuertes K se pueden usar de otras maneras para almacenar de manera segura los datos privados de usuario.
Haciendo referencia ahora a la figura 4, el procedimiento de recuperación 400 también se puede descomponer en tres etapas generales 401-403 correspondientes a las etapas 301-303 del procedimiento 300, no todas las cuales se requieren en todas las implementaciones. En la etapa 401, el cliente de recuperación 220 recupera el secreto fuerte de usuario K, con la ayuda de los servidores que guardan secretos 130. En la etapa 402, uno o más servidores de verificación 130 determinan si el cliente de recuperación 220 ha recuperado con éxito los datos secretos fuertes K. En la etapa 403, el cliente de recuperación 220 recupera también los datos privados de usuario almacenados en el medio de almacenamiento 140. Una vez más, se selecciona el procedimiento de ejemplo 400 con el fin de ilustrar varios aspectos de la invención, no todos los cuales se requieren para poner en práctica la invención.
El cliente de recuperación 220 recupera 401 los datos secretos fuertes de usuario 110 de la siguiente manera. El usuario 110 introduce 410 su identificador de cuenta de usuario U y los datos secretos débiles PWD en el cliente de recuperación 220. El cliente de recuperación 220 calcula 420 los datos de petición del servidor para cada uno, de los servidores que guardan secretos S(i) y transmite 425 los datos de petición del servidor a los servidores que guardan secretos. Los datos de petición del servidor son una función de los datos secretos débiles PWD y un secreto de cliente efímero a, tal como la salida de la función no revela información acerca del secreto débil a una parte que no conozca el secreto de cliente efímero a. En respuesta a los datos de petición de servidor recibidos, cada servidor que conserva secretos S(i) calcula 430 los datos de respuesta del servidor, que son una función de los datos de petición del servidor y de los datos secretos del servidor b(i), y transmite 435 los datos de respuesta del servidor de vuelta al cliente de recuperación 220. El cliente de recuperación 220 calcula después 440 los datos secretos fuertes del usuario K como una función de los datos de respuesta del servidor recibidos. Como se ha descrito con anterioridad, los datos secretos fuertes son una función de los datos secretos débiles del usuario y de los datos secretos del servidor. El cliente de recuperación 220 tiene acceso directo a los datos secretos débiles de usuario pero no tiene acceso directo a los datos secretos del servidor. Sin embargo, los datos de respuesta del servidor contienen una dependencia de los datos secretos del servidor; de esta manera, el cliente de recuperación 220 tiene un acceso indirecto a los datos secretos de servidor y puede recuperar los datos secretos fuertes del usuario sin requerir el acceso directo a los datos secretos del servidor.
En la etapa de recuperación 403, el cliente de recuperación 220 recupera 475 los datos privados encriptados de usuario EPD y los desencripta 470 usando los datos secretos fuertes recuperados K. De esta manera, el cliente de recuperación 220 también recupera los datos privados de usuario, tales como la clave privada de usuario.
Al final del período de uso legítimo del secreto fuerte K y cualquier otro dato privado recuperado (por ejemplo, al final de la sesión en línea del usuario usando el cliente de recuperación 220), la copia de K y otros datos privados recuperados en el cliente de recuperación 220 son de manera preferible destruidos.
En la etapa de verificación 402, el cliente de recuperación 220 determina 450 los datos de prueba d(i) para probar al menos un servidor de verificación (de manera preferible a al menos dos servidores de verificación) que los datos secretos fuertes se recuperaron con éxito por parte del cliente de recuperación 220. Los datos de prueba d(i) se transmiten 455 a cada uno de los servidores de verificación. Cada servidor de verificación puede entonces verificar 460 si esta abstracción particular del proceso de regeneración 400 recuperó con éxito los datos secretos fuertes del usuario K y puede tomar entonces acciones apropiadas. Por ejemplo, en una realización, un servidor de verificación 130 podría ser responsable de una parte del proceso de generación de una firma digital en nombre del usuario 110. En este caso, los datos de prueba se podrían acompañar por un resumen de mensaje del mensaje orientado a usuario para que sea firmado digitalmente. Al producirse la verificación de los datos de prueba, el servidor de verificación 130 genera su componente de la firma digital y transmite este componente de vuelta al cliente. El cliente determina la firma digital completa en base a los componentes que recibe.
Como otro ejemplo, el servidor de verificación también puede ser un servidor que conserva secretos. Este servidor podría determinar, en base a la historia de pasados intentos sin éxito, que una entidad que no conoce los datos secretos débiles está intentando regenerar los datos secretos fuertes. De acuerdo con esto, el servidor que conserva secretos puede rechazar el participar en intentos de recuperación adicionales de recuperación o tomar otras acciones. En una aproximación, los servidores que guardan secretos conservan un seguimiento de todos los intentos para regenerar los datos secretos fuertes K para cada cuenta de usuario, y en el caso de excesivos intentos fallidos para cualquier cuenta, estrangulará y/o bloqueará intentos adicionales de regeneración sobre esa cuenta hasta que se cambie la contraseña o el administrador local determine que los intentos fallidos no representan una amenaza para la cuenta.
Se pueden usar diferentes tipos de verificación. En una aproximación que use datos de verificador estáticos, los datos de verificador v(i) son una función unidireccional de uno o más elementos de datos que incluyen los datos secretos fuertes K. Los datos de verificador son calculados por el cliente generador 120 o alguna otra parte de confianza y se envían y se almacenan en cada servidor de verificación como parte del proceso de inicialización 300. De manera preferible, se calculan datos de verificador diferentes para cada servidor de verificación 130, por ejemplo, mediante la aplicación de una función de cálculo de clave a la cadena de datos que comprende los datos secretos fuertes K concatenada con un único pero no secreto identificador para el servidor particular 130. En la etapa de verificación 402, el cliente de recuperación 220 calcula 450 los datos de prueba mediante el recálculo de la misma función unidireccional de los datos secretos fuertes regenerados. Si los datos de prueba calculados por el cliente de recuperación 220 coinciden con los datos del verificador almacenados por el servidor, entonces se verifica la recuperación de los datos secretos fuertes.
En una variante de esta aproximación, el cliente de recuperación 220 recalcula primero datos como una función unidireccional del secreto fuerte K y después calcula los datos de prueba como una función unidireccional de uno o más elementos de datos que incluyen los datos de verificador recalculados y un número aleatorio de un solo uso no secreto, tal como una consigna de hora o número aleatorio de un solo uso enviado previamente desde el servidor al cliente de recuperación o junto con los datos de respuesta del servidor (por ejemplo, en el caso de un servidor que conserve secretos) o en un mensaje separado. El servidor de verificación 130 calcula sus propios datos de prueba aplicando la misma función unidireccional a su copia de los datos de verificador y al número aleatorio de un solo uso. Si los datos de prueba calculados por el cliente de recuperación 220 coinciden con los datos de prueba calculados por el servidor de verificación 130, entonces se verifica la recuperación de los datos secretos fuertes. El número aleatorio de un solo uso permite al servidor confirmar que los datos de prueba son recientes y no son una repetición de datos de prueba anteriores para el mismo usuario. En otras palabras, el número aleatorio de un solo uso distingue los datos de prueba actuales de otros casos de datos de prueba para el mismo usuario.
En una aproximación de verificación diferente, asúmase que los datos privados de usuario que se almacenan en un medio de almacenamiento 140 incluyen datos privados (por ejemplo, una clave privada) de un sistema de prueba asimétrico, para los que existen correspondientes datos públicos. El sistema de prueba asimétrico tiene la propiedad de que una entidad que tenga acceso a los datos privados puede comprobar que accede a los datos privados a una segunda entidad con acceso a los datos públicos sin revelar los datos privados a la segunda entidad. El sistema asimétrico de prueba podría ser un sistema de firma digital, tal como RSA o DSA, un sistema de prueba de conocimiento cero en el que la posesión de información se puede verificar sin revelar ninguna parte de esa información, o cualquier otro tipo de sistema asimétrico de prueba. Para los propósitos de describir la invención, se supondrá un sistema de firma digital. En este caso, el cliente de recuperación 220 puede generar datos de prueba que dependan de los datos privados desencriptados, proporcionando de esta manera la recuperación con éxito de los datos privados y, así, también la recuperación con éxito de los datos secretos fuertes (ya que los datos secretos fuertes se necesitan para desencriptar con éxito los datos privados).
Por ejemplo, si los datos privados son la clave de la firma digital privada del usuario, los datos de prueba podrían comprender un mensaje, de manera preferible conteniendo un número aleatorio de un solo uso para permitir la detección de repeticiones, que fueron firmadas de manera digital usando la clave privada. Si los datos de verificador son la correspondiente clave pública, se podrían usar para verificar después con éxito la recuperación de la clave privada. La verificación 460 de la recuperación con éxito de los datos secretos fuertes incluiría entonces la verificación de que se usó la clave privada para firmar digitalmente el mensaje. Si se usa un número aleatorio de un solo uso, entonces la verificación de lo recientes que son los datos de prueba implicaría la verificación de que el mensaje firmado digitalmente contiene el número aleatorio de un solo uso. Como una alternativa, los datos de prueba pueden ser una función de otros datos de usuario que el servidor de verificación pueda autenticar como con origen en el usuario. Otras variaciones del paso de verificación se pueden basar en otras aproximaciones, por ejemplo, en el uso de pruebas de conocimiento cero (por ejemplo, véase J. Nechvatal, "Criptografía de Clave Pública", en G. J. Simmons (Ed.), Criptología contemporánea: La Ciencia de la Integridad de la Información (Nueva York: IEEE Press, 1992), páginas 107 a 126).
Otras variaciones de los procedimientos: 300 y 400 serán aparentes. Sin embargo, con el fin de mantener la resistencia contra ataques, incluyendo el comprometer a los servidores, cualquier protocolo con éxito preferiblemente debería incluir los siguientes atributos. En primer lugar, la observación de cualquiera o de todos los mensajes por parte de un oyente oculto porta suficiente información para el oyente oculto para deducir de una manera factible los datos secretos débiles PWD o los datos secretos fuertes K. En segundo lugar, el conocimiento de cualquier cosa que sea menos que todos los datos secretos del servidor a partir de un número predeterminado de servidores que guardan secretos no permitirá a ninguna parte deducir de una manera factible ni los datos secretos débiles PWD ni los datos secretos fuertes K. "Cualquier parte" incluye a los propios servidores. Esto es, un servidor no puede deducir de una manera factible ni los datos secretos débiles PWD ni los datos secretos fuertes K a menos que un número predeterminado de servidores que guardan secretos interactúen mediante la revelación de sus datos secretos de servidor o fallando en el estrangulamiento o en el bloqueo de la cuenta en el caso de excesivos fallos de intento en la ejecución del protocolo. Como resultado de esto, los procedimientos 300 y 400 son ventajosos porque son resistentes a muchos tipos de ataques, incluyendo el poner en compromiso a un servidor, cuando los datos secretos fuertes dependen de los datos secretos del servidor de al menos dos servidores que guardan secretos.
Las figuras 5 y 6 son trazas de eventos que ilustran realizaciones preferidas 500 y 600 de los procedimientos 300 y 400 respectivamente. Las realizaciones preferidas se basan en cálculos dentro de un grupo finito G en el que la exponenciación es eficiente pero el problema del logaritmo discreto es no factible desde el punto de vista computacional. Un grupo adecuado G es el grupo multiplicativo del conjunto de enteros módulo a prima p, donde p es una prima grande con propiedades que la hacen adecuada como un módulo Diffie-Hellman. En particular, en un mínimo p-1 debe tener un factor prima grande. Una mejor restricción sobre p es que será una prima segura p = 2q + 1, donde q es prima. También son adecuados otros grupos cíclicos incluyendo un grupo de puntos sobre una curva elíptica sobre un campo finito. Los procedimientos se ilustrarán en el contexto en el que se usarán con posterioridad los datos secretos fuertes K como una clave criptográfica usada para encriptar la clave privada de usuario pero, como se ha tratado con anterioridad con los procedimientos 300 y 400, los procedimientos preferidos 500 y 600 no están limitados tampoco a esta aplicación particular. En este ejemplo en particular, cada uno de los servidores 130 funciona tanto como un servidor que conserva secretos como un servidor de verificación.
Con referencia en primer lugar a la figura 5, el procedimiento de inicialización 500 se puede descomponer en tres etapas generales 501-503, análogas a las etapas 301-303 del procedimiento 300. La etapa de generación 501 comienza lo mismo como la etapa de generación 301. El cliente de generador 120 autentica 310 al usuario como un usuario legítimo para la cuenta U. A continuación, se determinan 320 los datos secretos débiles del usuario PWD.
Los datos secretos de servidor b(i) para el usuario 110 se establecen 340 para cada servidor que conserva secretos S(i), donde i es un índice para los servidores 130. En esta realización, los datos secretos de servidor son un entero aleatorio b(i), de manera preferible un número par para evitar contra ataques de subgrupo pequeño que son bien conocidos en los procedimientos Diffie-Hellman. Al final del paso 340, cada servidor que conserva secretos tiene acceso a sus datos secretos de servidor b(i); el cliente generador 120 puede o no tener acceso a los datos secretos de servidor b(i), dependiendo de la implementación específica. En una aproximación en la que tanto un servidor que conserva secretos S(i) como el cliente generador 120 tengan acceso a los datos secretos de servidor de ese servidor b(i), los datos secretos de servidor b(i) son generados o por el cliente generador 120 o por el servidor S(i) y comunicados a la otra parte en un formato encriptado. De manera alternativa, los datos secretos de servidor se calculan por medio de la combinación de valores aleatorios provenientes tanto del cliente generador 120 como del servidor que conserva secretos S(i), por ejemplo, por medio del intercambio de la clave Diffie-Hellman. Las comunicaciones están protegidas de manera preferible de forma que ninguna otra parte pueda aprender el b(i). Por otra parte, si el cliente generador 120 no tiene acceso a los datos secretos de servidor b(i), entonces cada servidor que conserva secretos S(i) podría generar sus datos secretos de servidor b(i) pero no compartirlos con el cliente generador 120 o con los otros servidores S(i). Cualquiera que sea el procedimiento de generación, cada servidor típicamente almacenará de manera segura 345 sus datos secretos de servidor para su uso futuro en la regeneración de los datos secretos fuertes de usuario.
El cliente generador 120 calcula 530 los datos secretos fuertes K de la siguiente manera. En primer lugar, el cliente generador 120 calcula 532 w = f(PWD), donde f es una función unidireccional que genera un elemento de grupo G. A continuación, se calcula el componente secreto K(i) 534 para cada servidor que conserva secretos de acuerdo con la relación K(i) = h(w^{b(i)}). En esta expresión, h es una función unidireccional, tal como una función de cálculo de clave criptográfica, que genera un valor con bits adecuadamente no distorsionados y sin correlar, como podría ser adecuado para el uso con una clave de encriptado simétrica. La exponenciación w^{b(i)} se calcula en el grupo G (es decir, enteros módulo p en este ejemplo). Dependiendo de la implementación, los servidores que guardan secretos pueden o no participar en este cálculo. Nótese que cada componente secreto es una función tanto de los datos secretos débiles de usuario como de los datos secretos fuertes de usuario para el correspondiente servidor que conserva secretos.
Por ejemplo, si el cliente generador 120 tiene un conocimiento directo de los datos secretos del servidor b(i), entonces puede calcular directamente 534 los componentes secretos K(i) = h(w^{b(i)}). De manera alternativa, si el cliente generador 120 no tiene acceso a los datos secretos del servidor b(i), entonces se puede usar el siguiente procedimiento de transacción protegida. El cliente generador 120 selecciona un secreto efímero de cliente que es un entero aleatorio a para el que existe un correspondiente entero a' de forma que x^{aa'} = x para todo x del grupo G. Por ejemplo, si G es el grupo de enteros módulo p, a se puede seleccionar para que sea un elemento del grupo multiplicativo de enteros módulo p-1 y a' sería entonces su inverso multiplicativo. El cliente generador calcula y envía un mensaje M_{1} = w^{a} a cada servidor que conserva secretos S(i). El servidor que conserva secretos S(i) calcula c(i) = M_{1}^{b(i)} = w^{a b(i)} y envía
c(i) al cliente generador 120. El cliente generador 120 calcula el valor a' correspondiente a a y después calcula 534 el componente secreto K(i) = h (c(i)^{a'}) = h(w^{b(i)}). Esta aproximación asegura que no se exponen datos secretos a un oyente oculto, haciendo uso de las propiedades de encriptado de la exponenciación discreta.
Una vez que el cliente generador 120 haya calculado 534 los componentes secretos K(i), calcula después 538 el secreto fuerte K como una función de los componentes secretos K(i) de los servidores que guardan secretos participantes S(i). En este ejemplo, el secreto fuerte K se calcula 536 de acuerdo con una operación O- exclusiva a nivel de bit, K = K(1) \oplus K(2) \oplus . . . \oplus K(N) donde O denota la operación O- exclusiva. El procedimiento de suma binaria y los procedimientos de compartir secreto umbral t de N son otros dos procedimientos para combinar los componentes secretos K(i). En un procedimiento de compartir secreto umbral t de N, existen N servidores que guardan secretos pero los datos secretos fuertes se pueden calcular a partir de la recuperación de datos de solamente t de ellos, donde t es menor que N. Otros procedimientos serán obvios.
En la etapa de almacenamiento 503, los datos secretos fuertes K se usan como una clave criptográfica en un criptosistema simétrico para encriptar 370 unos datos privados de usuario incluyendo la clave privada Priv_{U}. Los datos privados encriptados, denotados por EPD, que incluyen a la clave privada encriptada, denotada por E_{K}(Priv_{U}), donde E_{K} significa encriptado con clave K, se almacenan 375 en el medio de almacenamiento 140.
En la etapa de configuración del verificador 502, la clave pública, Pub_{U}, correspondiente a la clave privada de usuario, Priv_{U} se podría usar como los datos de verificador v(i). En esta realización, cada servidor que conserva secretos también desempeña el papel de un servidor de verificación S(i) y almacena 355 sus datos de verificador v(i) = Pub_{U} o al menos tiene acceso a la clave pública. En una realización alternativa, los datos de verificador
v(i) = h(K, ld(i)), donde ld(i) es un único identificador pero un identificador públicamente conocido para el servidor
S(i) y h es una función unidireccional tal como una función de cálculo de clave.
Con referencia ahora a la figura 6, el proceso de recuperación 600 incluye también tres etapas 601-603. En la etapa 601, el cliente de recuperación 220 recupera el secreto fuerte de usuario K en base a su secreto débil PWD, con la ayuda de los servidores que guardan secretos. En la etapa de verificación 602, el cliente de recuperación 220 demuestra a los servidores de verificación que ha recuperado con éxito el secreto fuerte K. En la etapa 603, el cliente de recuperación 220 recupera la clave privada de usuario, Priv_{U}.
La recuperación 601 del secreto fuerte K comienza con el cliente de recuperación 220 que recibe 410 el identificador de cuenta de usuario U y una contraseña PWD del usuario 110. El cliente de recuperación 220 genera entonces los componentes secretos necesarios K(i) usando el procedimiento de transacción protegido anteriormente descrito. En particular, el cliente de recuperación 220 calcula 622 w = f(PWD), donde f es la misma función unidireccional usada en la etapa de generación 500. El cliente de recuperación 220 selecciona 624 un secreto de cliente efímero que es un entero aleatorio a para el que existe un correspondiente entero a' tal que x^{aa'} = x para todo x del grupo G. Por ejemplo, si G es el grupo de entero módulo p, a se puede seleccionar para que sea un elemento del grupo multiplicativo de enteros módulo p-1 y a' sería entonces su inverso multiplicativo. El cliente de recuperación calcula después 626 los datos de petición de servidor M_{1} = w^{a} y transmite 625 estos datos de petición de servidor al servidor S(i). Nótese que los datos de petición de servidor M_{1} son una función tanto de los datos secretos débiles PWD como del secreto de cliente efímero a. Sin embargo, los datos de petición de servidor M_{1} no revelan información acerca de los datos secretos débiles PWD sin el conocimiento del secreto de cliente efímero a.
El servidor S(i) recibe los datos de petición de servidor M_{1}. El servidor incrementa un contador de intentos de recuperación no verificada para la cuenta de usuario U y la contraseña actual PWD y determina 680 si es probable que una parte sin acceso a la contraseña esté intentando regenerar los datos secretos fuertes. En esta realización, lo hará de esta manera mediante la determinación de si el número de intentos de recuperación no verificada sobrepasa un umbral. En el caso de que lo sobrepase, entonces el servidor inhabilita la cuenta de usuario U y aborta el proceso de recuperación 600. Dependiendo de las propiedades del grupo G, el servidor puede verificar también que los datos de petición del servidor M_{1} satisfacen las propiedades de fuerza necesarias. Si los datos de petición del servidor M_{1} no tienen las propiedades de fuerza requisito, entonces el servidor aborta el proceso de recuperación. Si el proceso de recuperación no se ha abortado, el servidor calcula 630 los datos de respuesta del servidor c(i) = M_{1}^{b(i)} = w^{a b(i)} y envía 635 c(i) al cliente de recuperación 220. El servidor genera también 690 un único índice n(i), o número aleatorio de un solo uso, para la ejemplificación del proceso de recuperación y transmite el número aleatorio de un solo uso al cliente de recuperación 220. El servidor fija un estado variable indicando la verificación pendiente de número aleatorio de un solo uso n(i). En una aproximación preferida, el servidor transmite al cliente de recuperación 220 un único mensaje que se basa tanto en los datos de respuesta del servidor c(i) como en el número aleatorio de un solo uso n(i). De manera similar a los datos de petición del servidor M_{1}, los datos de respuesta del servidor c(i) son una función de los datos secretos del servidor b(i) para el servidor que conserva secretos y de los datos de petición del servidor M_{1} recibidos. Sin embargo, los datos de respuesta del servidor c(i) no revelan información acerca de los datos secretos del servidor b(i)
sin el conocimiento de los datos de petición del servidor M_{1}, o algo equivalentemente, de los datos secretos débiles PWD y del secreto de cliente efímero a.
Al recibirse el mensaje desde el servidor, el cliente de recuperación 220 puede abortar el proceso de recuperación 600 si el mensaje recibido no tiene una fuerza de requisito. En caso contrario, el cliente de recuperación 220 calcula 642 el valor a' que corresponde con a. Después calcula 644 el componente secreto K(i) = h(c(i)^{a'}) = h(w^{b(i)}). Nótese que el uso de un secreto de cliente efímero a hace que las comunicaciones entre el cliente de recuperación 220 y el servidor que conserva secretos 130 sean resistente a ataques destinados a reducir los datos secretos débiles PWD o los datos secretos del servidor b(i). Sin embargo, el componente secreto K(i) es una función tanto de los datos secretos débiles PWD como de los datos secretos de servidor b(i), pero son independientes del secreto de cliente efímero a. Finalmente, el cliente de recuperación 220 calcula 646 los datos secretos fuertes K = K(1) \oplus K(2) \oplus ... \oplus K(N). El cliente de recuperación 220 puede recuperar entonces la clave privada de usuario Priv_{U} mediante la recuperación 475 y el desencriptado 470 EPD usando la clave criptográfica recuperada K.
Como se ha mencionado con anterioridad, se pueden usar diferentes aproximaciones de verificación. Por ejemplo, supóngase que se usa la clave pública de usuario Pub_{U} como los datos de verificador v(i). Entonces, el cliente de recuperación 220 puede regenerar 650 datos de prueba mediante la firma digital de un mensaje que contenga los distintos números aleatorios de un solo uso n(i) usando la clave privada recuperada de usuario Priv_{U}. Cada servidor de verificación verifica 660 la recuperación con éxito de los datos secretos fuertes K mediante la verificación de la firma digital usando la clave pública de usuario Pub_{U} y después verificando que el número aleatorio de un solo uso correcto n(i) está incluido en el mensaje. Por otra parte, supóngase que los datos de verificador v(i) = h(K, ld(i)). Entonces, los datos de prueba se pueden calcular de acuerdo con la expresión g(v(i), n(i)), donde g es una función unidireccional tal como una función de cálculo de clave criptográfica. El servidor de verificación verifica 660 los datos de prueba mediante el cálculo de su propio valor desde su propio conocimiento de v(i) y n(i), y comparando el resultado con el valor recibido.
Al producirse la recepción de los datos de prueba, cada servidor determina si la variable de estado indica la verificación pendiente del número aleatorio de un solo uso n(i). Si la verificación está pendiente, entonces el servidor verifica que los datos de prueba recibidos demuestran con éxito el conocimiento del secreto fuerte K y de la originalidad unida al número aleatorio de un solo uso n(i). Si se verifican ambos, entonces se decrementan el contador de intentos de recuperación no verificada para la cuenta de usuario U y la contraseña PWD. En caso contrario, el proceso de recuperación se considera que no ha tenido éxito.
Los procedimientos 300, 400, 500 y 600 son particularmente ventajosos porque son resistentes a muchos tipos de ataques, incluyendo ataques por los servidores o sobre los servidores S(i). Lo siguiente son algunos tipos de ataques y contramedidas de ejemplo.
Un atacante puede intentar adivinar o en cualquier otro caso comprometer la contraseña PWD de usuario 110. Esto se puede combatir poniendo requisitos acerca de la elección de contraseña PWD con el fin de reducir la oportunidad de que un atacante adivinará la contraseña. Por ejemplo, se puede requerir que la contraseña tenga una longitud mínima o se cambie de manera periódica. En otra contramedida, se selecciona un umbral de intentos que limite el número de intentos de adivinación en la contraseña PWD. De esta manera, un atacante solamente tiene un número limitado de intentos para adivinar la contraseña PWD. Si se sobrepasa un umbral de intentos, el proceso de generación 500 de manera preferible se vuelve a ejecutar, requiriendo una nueva contraseña PWD y la generación de un nuevo secreto fuerte K, frustrando de esta manera al atacante. El umbral de intentos se debería fijar de manera preferible de forma que, dados los requisitos establecidos acerca de la contraseña, la probabilidad de un ataque de adivinación con éxito sea aceptablemente pequeña a la vez que aún se equilibra la realidad de que algunos intentos no exitosos pueden ser legítimos más que derivados de un ataque. Por ejemplo, un intento sin éxito puede ser registrado de manera legítima en ausencia de cualquier ataque, si el usuario 110 teclea de manera incorrecta su contraseña PWD y/o como resultado de un fallo de la comunicación o fallo del sistema.
De manera alternativa, un atacante podría intentar poner en compromiso el protocolo calculando w, a y/o b(i) a partir de los mensajes transmitidos entre varios componentes. Sin embargo, este ataque puede ser frustrado mediante la selección del grupo G para que sea resistente a ataques logaritmo discretos. Por ejemplo, cuando G en el conjunto de enteros módulo a prima p, entonces p se selecciona para que sea un módulo Diffie-Hellman lo suficientemente fuerte (por ejemplo, una prima segura) de acuerdo con reglas bien conocidas. Entonces, dichos ataques no serán factibles debido al problema de logaritmo discreto. Esto también es cierto para un servidor atacante. No es factible para un servidor el calcular w, a, y/o cualquier b(i) distintos a los suyos propios. La selección de una prima fuerte p' también da como resultado un secreto fuerte K, haciendo así que no sea factible atacar directamente texto cifrado encriptado bajo el secreto fuerte K.
En otro tipo de ataque, el atacante podría hacerse pasar como un cliente de recuperación y enviar datos de petición de servidor débiles M_{1} al servidor S(i), con la intención de obtener alguna información acerca de los datos secretos de servidor b(i) cuando el servidor devuelva los datos de respuesta de servidor c(i) = M_{1}^{b(i)}. El principal ataque conocido de este tipo se refiere al ataque de subgrupo pequeño sobre criptosistemas Diffie-Hellman. Esto se puede advertir por varios medios, incluyendo la selección inicial de prima p con propiedades adecuadas, tales como una prima segura de la forma p = 2q + 1, donde q es una prima, y haciendo b(i) siempre un número par. Dependiendo de las propiedades del tipo particular de grupo G, el servidor S(i) puede comprobar también la fuerza de los M_{1} recibidos y rechazar responder si los reconoce como un valor débil.
Un atacante podría intentar cerrar definitivamente o forzar un cambio de contraseña en una cuenta de usuario o en múltiples cuentas soportadas por un servidor S(i) enviando datos de petición de servidor falsos repetidos M_{1}, o interrumpiendo protocolos, por ejemplo, mediante la interceptación y el descarte de mensajes que lleven datos de respuesta del servidor o datos de prueba. El objetivo de este ataque es provocar que el servidor inhabilite una o más cuentas de usuario. El impacto de este ataque se puede reducir teniendo servidores S(i) que "estrangulen" el procesamiento de peticiones M_{1} repetidas para una cuenta de usuario. Esto es, el servidor S(i) suspende o retrasa el procesado para una cuenta de usuario en vista de múltiples intentos no exitosos durante algún período de tiempo.
De manera alternativa, un atacante podría intentar sobrecargar un servidor S(i) mediante el envío de números masivos de M_{1} falsos al servidor, provocando de esta manera que realice números masivos de exponenciaciones inútiles pero intensivas desde el punto de vista computacional. Hasta esta extensión, dichos intentos son para la misma cuenta de usuario, el estrangulamiento (como se ha tratado con anterioridad) combatirá de manera significativa este ataque. De esta manera, el ataque es viable principalmente si se usan números grandes de diferentes cuentas de usuarios. Así, puede resistir haciendo difícil adivinar un identificador de cuenta de usuario válido U, por ejemplo, evitando que identificadores de cuenta de usuario sean sacados de un único número de secuencia.
Como un ejemplo final, un fallo de comunicaciones o un fallo del sistema en un servidor podría causar múltiples fallos de protocolo de recuperación en los otros servidores, dando como resultado la inhabilitación innecesaria y el cambio forzado de contraseña de una o más cuentas de usuario. Para reducir este problema, los servidores de manera preferible deberían estar diseñados para una alta disponibilidad, con redundancia apropiada de sistemas y de caminos de las comunicaciones. Además, si un servidor falla de manera inevitable, los controles de gestión pueden suspender de manera temporal el funcionamiento de otros servidores. El estrangulamiento (como se ha tratado con anterioridad) también reducirá la incidencia de la inhabilitación de la cuenta.
La descripción anterior está incluida para ilustrar el funcionamiento de las realizaciones preferidas y no es significa que limite el alcance de la invención. A partir de la anterior discusión, muchas variaciones serán aparentes para alguien que sea experto en la técnica que serían abarcadas por el alcance de la presente invención. Por ejemplo, se puede requerir la presencia de una tarjeta hardware con el fin de completar el proceso de recuperación 400. En una aproximación, el cliente de recuperación 220 determina si la tarjeta hardware del usuario está presente, y si es así, el cliente de recuperación 220 transmite entonces datos que dan fe o que prueban este hecho a cada uno de los servidores que guardan secretos. Los servidores, a su vez, participan en el proceso de regeneración solamente si reciben estos datos desde el cliente de recuperación 220. Cuando se usen junto con una tarjeta hardware, tal como una tarjeta de respuesta a un reto o un generador de contraseña sincronizado en el tiempo una vez, de tal manera que el cliente de recuperación 220 pruebe adicionalmente la posesión de la tarjeta a uno o a más servidores, la combinación resultante de procedimientos puede servir de manera efectiva en lugar de un procedimiento de tarjeta inteligente en el que se recupere un secreto fuerte de la tarjeta inteligente en respuesta a la presentación de un secreto débil de usuario tal como un PIN. La ventaja de la aproximación primera sobre la aproximación de tarjeta inteligente es una posible reducción mayor en el despliegue y en los costes de mantenimiento ya que los tipos anteriormente mencionados de tarjetas no requieren interfaces hardware especiales, como requieren las tarjetas inteligentes. De esta forma, el alcance de la invención está limitado solamente por las siguientes reivindicaciones.

Claims (11)

1. Un procedimiento para habilitar dispositivos para regenerar de manera segura unos datos secretos fuertes de usuario a partir de datos secretos débiles para el usuario, comprendiendo el procedimiento:
la determinación (320) de los datos secretos débiles de usuario;
el cálculo (340) de los datos de petición del servidor para al menos un servidor que conserva secretos (130), en el que los datos de petición de servidor son una función de los datos secretos débiles y de un secreto de cliente efímero y los datos de petición de servidor no revelan información acerca de los datos secretos débiles sin el conocimiento del secreto de cliente efímero;
la recepción (340) de los datos de respuesta del servidor desde el servidor que conserva secretos, en el que los datos de respuesta de servidor son una función de los datos secretos de servidor para el servidor que conserva secretos y de los datos de petición de servidor, y los datos de respuesta del servidor no revelan información acerca de los datos secretos de servidor sin el conocimiento de los datos secretos débiles y del secreto de cliente efímero;
el cálculo (330) de un componente secreto para el servidor que conserva secretos como una función de los datos de respuesta de servidor recibidos desde el servidor que conserva secretos y del secreto de cliente efímero, en el que el componente secreto es una función de los datos secretos débiles y del secreto de servidor pero es independiente del secreto efímero;
el cálculo (330) de los datos secretos fuertes de usuario como una función del componente secreto; y
la determinación (350) de los datos de verificador para al menos un servidor de verificación (130J - 130N), en el que los datos de verificador habilitan al servidor de verificación para verificar que un dispositivo ha recuperado con éxito los datos secretos fuertes pero no es factible desde el punto de vista computacional para el servidor de verificación el determinar los datos secretos débiles solamente en base al acceso a sus datos de verificador.
2. El procedimiento de la reivindicación 1, en el que:
los datos secretos de servidor incluyen un entero aleatorio b;
el componente secreto es un valor K = h(w^{b}), en el que h es una función;
w = f(datos secretos débiles), en el que f es una función que genera un elemento de un grupo finito G en el que la exponenciación es eficiente pero el problema del logaritmo discreto no es factible desde el punto de vista computacional; y
la exponenciación w^{b} se calcula en el grupo G;
el secreto de cliente efímero es un entero aleatorio a para el que existe un correspondiente entero a' de forma que x^{aa'} = x para todo x en el grupo G;
los datos de petición de servidor se calculan como el valor M = w^{a} en el que la exponenciación se calcula en el grupo G;
los datos de respuesta del servidor se calculan como el valor c = M^{b}, en los que la exponenciación se calcula en el grupo G; y
el componente secreto se calcula como el valor K = h(c^{a'}) en el que la exponenciación se calcula en el grupo G.
3. El procedimiento de la reivindicación 2 en el que el grupo G se selecciona de:
un grupo multiplicativo del conjunto de enteros módulo p, donde p es una prima grande adecuada como módulo Diffie-Hellman; y
un grupo de puntos sobre una curva elíptica sobre un fichero finito.
4. El procedimiento de la reivindicación 1 comprendiendo de manera adicional:
el encriptado de los datos privados para el usuario usando los datos secretos fuertes como una clave criptográfica en un criptosistema simétrico; en el que
el paso de determinar los datos de verificador incluye la determinación de datos públicos que corresponden a los datos privados de usuario, en el que una primera entidad con acceso a los datos privados puede probar el mencionado acceso a una segunda entidad con acceso a los datos públicos sin revelar los datos privados a la segunda entidad.
5. El procedimiento de la reivindicación 1 en el que el paso de determinar los datos de verificador comprende el cómputo de los datos de verificador como una función unidireccional de los datos secretos fuertes.
6. Un sistema (100) para habilitar dispositivos para regenerar de manera segura datos secretos fuertes de un usuario a partir de datos secretos débiles para el usuario, comprendiendo el sistema:
un cliente generador (120) y al menos un servidor que conserva secretos (130) acoplado al cliente generador, dicho cliente y dicho servidor comprendiendo un medio para ejecutar los siguientes pasos:
el cliente generador determinando los datos secretos débiles de usuario;
el cliente generador calculando y transmitiendo datos de petición de servidor a un servidor que conserva secretos, en el que los datos de petición del servidor son una función de los datos secretos débiles y de un secreto de cliente efímero, y los datos de petición de servidor no revelan información acerca de los datos secretos débiles sin conocimiento del secreto de cliente efímero;
el servidor que conserva secretos calculando y transmitiendo datos de respuesta de servidor al cliente generador, en el que los datos de respuesta del servidor son una función de los datos secretos del servidor para el servidor que conserva secretos y de los datos de petición del servidor, y los datos de respuesta del servidor no revelan información acerca de los datos secretos de servidor sin el conocimiento de los datos secretos débiles y del secreto de cliente efímero;
el cliente generador calculando un componente secreto para el servidor que conserva secretos como una función de los datos de respuesta del servidor recibidos desde el servidor que conserva secretos y del secreto de cliente efímero, en el que el componente secreto es una función de los datos secretos débiles y de los datos secretos de servidor pero es independiente del secreto de cliente efímero;
el cliente generador calculando los datos secretos fuertes de usuario como una función del componente secreto; y
el cliente generador determinando los datos de verificador para al menos un servidor de verificación (130J - 130N),
en el que los datos de verificador habilitan al servidor de verificación para verificar que un dispositivo ha recuperado con éxito los datos secretos fuertes pero no es factible desde el punto de vista computacional para el servidor de verificación el determinar los datos secretos débiles en base solamente al acceso a sus datos de verificador.
7. El sistema de la reivindicación 6 en el que:
los datos secretos de servidor incluyen un entero aleatorio b;
el componente secreto es un valor K = h(w^{b}), en el que h es una función;
w = f(datos secretos débiles), en la que f es una función que genera un elemento de un grupo finito G en el que la exponenciación es eficiente pero el problema del logaritmo discreto no es factible desde el punto de vista computacional; y
la exponenciación w^{b} se calcula en el grupo G;
el secreto de cliente efímero es un entero aleatorio a para el que existe un correspondiente entero a' tal que x^{aa'} = x para todos los x del grupo G;
los datos de petición del servidor se calculan como el valor M = w^{a} en el que la exponenciación se calcula en el grupo G;
los datos de respuesta del servidor se calculan como el valor c = M^{b} en el que la exponenciación se calcula en el grupo G; y
el componente secreto se calcula como el valor K = h(c^{a}') en el que la exponenciación se calcula en el grupo G.
\newpage
8. El sistema de la reivindicación 7 en el que el grupo G se selecciona de:
un grupo multiplicativo del conjunto de entero módulo p, donde p es una prima larga adecuada como un módulo Diffie-Hellman; y
un grupo de puntos sobre una curva elíptica sobre un campo finito.
9. El sistema de la reivindicación 6 en el que los pasos del procedimiento comprenden de manera adicional:
el cliente generador encriptando los datos privados para el usuario que usa los datos secretos fuertes como una clave criptográfica en un criptosístema simétrico; en el que
el paso de determinar los datos de verificador incluye la determinación de datos públicos que corresponden a los datos privados de usuario, en el que una primera entidad con acceso a los datos privados puede confirmar el mencionado acceso a una segunda entidad con acceso a los datos públicos sin revelar los datos privados a la segunda entidad.
10. El sistema de la reivindicación 6 en el que el paso de determinar los datos de verificador comprende el cálculo de los datos de verificador como una función unidireccional de los datos secretos fuertes.
11. Un producto de programa de ordenador que tiene instrucciones ejecutables por un ordenador de cliente generador para dar instrucciones al ordenador de cliente generador para que lleve a cabo todos los pasos de un procedimiento como se reivindica en cualquiera de las reivindicaciones 1 a la 5.
ES00948590T 1999-06-29 2000-06-29 Regeneracion asistida por servidor segura de un secreto fuerte a partir de un secreto debil. Expired - Lifetime ES2288863T3 (es)

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
US14157199P 1999-06-29 1999-06-29
US141571P 1999-06-29
US16745399P 1999-11-23 1999-11-23
US167453P 1999-11-23
US18883400P 2000-03-10 2000-03-10
US188834P 2000-03-10
US574687 2000-05-17
US09/574,687 US6829356B1 (en) 1999-06-29 2000-05-17 Server-assisted regeneration of a strong secret from a weak secret

Publications (1)

Publication Number Publication Date
ES2288863T3 true ES2288863T3 (es) 2008-02-01

Family

ID=27495484

Family Applications (1)

Application Number Title Priority Date Filing Date
ES00948590T Expired - Lifetime ES2288863T3 (es) 1999-06-29 2000-06-29 Regeneracion asistida por servidor segura de un secreto fuerte a partir de un secreto debil.

Country Status (8)

Country Link
US (1) US6829356B1 (es)
EP (1) EP1197032B1 (es)
AT (1) ATE371314T1 (es)
AU (1) AU764909B2 (es)
CA (1) CA2376381C (es)
DE (1) DE60036112T2 (es)
ES (1) ES2288863T3 (es)
WO (1) WO2001001627A2 (es)

Families Citing this family (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FI974341A (fi) * 1997-11-26 1999-05-27 Nokia Telecommunications Oy Datayhteyksien tietosuoja
GB2353682B (en) * 1999-07-15 2004-03-31 Nds Ltd Key management for content protection
IL130963A (en) * 1999-07-15 2006-04-10 Nds Ltd Key management for content protection
US6363480B1 (en) * 1999-09-14 2002-03-26 Sun Microsystems, Inc. Ephemeral decryptability
US7716484B1 (en) * 2000-03-10 2010-05-11 Rsa Security Inc. System and method for increasing the security of encrypted secrets and authentication
US7359507B2 (en) * 2000-03-10 2008-04-15 Rsa Security Inc. Server-assisted regeneration of a strong secret from a weak secret
US8239445B1 (en) * 2000-04-25 2012-08-07 International Business Machines Corporation URL-based sticky routing tokens using a server-side cookie jar
US6934393B2 (en) * 2000-06-09 2005-08-23 Northrop Grumman Corporation System and method for third party recovery of encryption certificates in a public key infrastructure
FR2823398B1 (fr) * 2001-04-04 2003-08-15 St Microelectronics Sa Extraction d'une donnee privee pour authentification d'un circuit integre
US7076656B2 (en) * 2001-04-05 2006-07-11 Lucent Technologies Inc. Methods and apparatus for providing efficient password-authenticated key exchange
FR2825873A1 (fr) * 2001-06-11 2002-12-13 St Microelectronics Sa Stockage protege d'une donnee dans un circuit integre
US7428749B2 (en) * 2001-08-03 2008-09-23 International Business Machines Corporation Secure delegation using public key authorization
KR100398161B1 (ko) * 2002-02-26 2003-09-26 한국정보보호진흥원 서버의 사전 탐색 공격을 고려한 패스워드 기반의 사용자인증 프로토콜
US20030161472A1 (en) * 2002-02-27 2003-08-28 Tong Chi Hung Server-assisted public-key cryptographic method
US20050044413A1 (en) * 2003-02-05 2005-02-24 Accenture Global Services Gmbh Secure electronic registration and voting solution
US7320073B2 (en) 2003-04-07 2008-01-15 Aol Llc Secure method for roaming keys and certificates
US9412123B2 (en) 2003-07-01 2016-08-09 The 41St Parameter, Inc. Keystroke analysis
JP3854954B2 (ja) * 2003-09-05 2006-12-06 キヤノン株式会社 データ共有装置
US7996631B1 (en) * 2004-02-17 2011-08-09 Oracle America, Inc. System and method for accessing storage devices attached to a stateless client
WO2005083610A1 (en) * 2004-02-23 2005-09-09 Verisign, Inc. Token authentication system and method
US10999298B2 (en) 2004-03-02 2021-05-04 The 41St Parameter, Inc. Method and system for identifying users and detecting fraud by use of the internet
US7480803B1 (en) * 2004-07-23 2009-01-20 Sprint Communications Company L.P. System and method for securing system content by automated device authentication
JP5068176B2 (ja) 2005-01-18 2012-11-07 サーティコム コーポレーション デジタル署名と公開鍵の促進された検証
US8467535B2 (en) * 2005-01-18 2013-06-18 Certicom Corp. Accelerated verification of digital signatures and public keys
US8181232B2 (en) * 2005-07-29 2012-05-15 Citicorp Development Center, Inc. Methods and systems for secure user authentication
US7904946B1 (en) 2005-12-09 2011-03-08 Citicorp Development Center, Inc. Methods and systems for secure user authentication
US9002750B1 (en) 2005-12-09 2015-04-07 Citicorp Credit Services, Inc. (Usa) Methods and systems for secure user authentication
US9768963B2 (en) 2005-12-09 2017-09-19 Citicorp Credit Services, Inc. (Usa) Methods and systems for secure user authentication
US8938671B2 (en) 2005-12-16 2015-01-20 The 41St Parameter, Inc. Methods and apparatus for securely displaying digital images
US11301585B2 (en) 2005-12-16 2022-04-12 The 41St Parameter, Inc. Methods and apparatus for securely displaying digital images
US20070143830A1 (en) * 2005-12-20 2007-06-21 International Business Machines Corporation Method, apparatus and system for preventing unauthorized access to password-protected system
DE102006013515A1 (de) * 2006-03-23 2007-10-04 Siemens Ag Kryptographisches Verfahren mit elliptischen Kurven
US8151327B2 (en) 2006-03-31 2012-04-03 The 41St Parameter, Inc. Systems and methods for detection of session tampering and fraud prevention
US9258124B2 (en) * 2006-04-21 2016-02-09 Symantec Corporation Time and event based one time password
US8060750B2 (en) * 2007-06-29 2011-11-15 Emc Corporation Secure seed provisioning
US8059814B1 (en) 2007-09-28 2011-11-15 Emc Corporation Techniques for carrying out seed or key derivation
ES2553412T3 (es) 2007-10-31 2015-12-09 Merck Sharp & Dohme Corp. Antagonistas del receptor P2X3 para el tratamiento del dolor
US8495375B2 (en) * 2007-12-21 2013-07-23 Research In Motion Limited Methods and systems for secure channel initialization
US8452017B2 (en) * 2007-12-21 2013-05-28 Research In Motion Limited Methods and systems for secure channel initialization transaction security based on a low entropy shared secret
US8464058B1 (en) 2008-04-08 2013-06-11 Hewlett-Packard Development Company, L.P. Password-based cryptographic method and apparatus
US8307210B1 (en) 2008-05-02 2012-11-06 Emc Corporation Method and apparatus for secure validation of tokens
US7522723B1 (en) * 2008-05-29 2009-04-21 Cheman Shaik Password self encryption method and system and encryption by keys generated from personal secret information
US8312540B1 (en) * 2008-06-13 2012-11-13 Juniper Networks, Inc. System for slowing password attacks
US9112850B1 (en) 2009-03-25 2015-08-18 The 41St Parameter, Inc. Systems and methods of sharing information through a tag-based consortium
US8606234B2 (en) 2009-12-31 2013-12-10 Symantec Corporation Methods and apparatus for provisioning devices with secrets
US9015489B2 (en) 2010-04-07 2015-04-21 Microsoft Technology Licensing, Llc Securing passwords against dictionary attacks
US20120215658A1 (en) * 2011-02-23 2012-08-23 dBay Inc. Pin-based payment confirmation
GB2490483B (en) * 2011-04-26 2019-05-29 Hewlett Packard Entpr Dev Lp Digital signature method and system
US8745376B2 (en) 2011-10-14 2014-06-03 Certicom Corp. Verifying implicit certificates and digital signatures
US10754913B2 (en) 2011-11-15 2020-08-25 Tapad, Inc. System and method for analyzing user device information
US9633201B1 (en) 2012-03-01 2017-04-25 The 41St Parameter, Inc. Methods and systems for fraud containment
US9521551B2 (en) 2012-03-22 2016-12-13 The 41St Parameter, Inc. Methods and systems for persistent cross-application mobile device identification
EP2880619A1 (en) 2012-08-02 2015-06-10 The 41st Parameter, Inc. Systems and methods for accessing records via derivative locators
US9215072B1 (en) 2012-10-23 2015-12-15 Authernative, Inc. Back-end matching method supporting front-end knowledge-based probabilistic authentication systems for enhanced credential security
US8955074B2 (en) 2012-10-23 2015-02-10 Authernative, Inc. Authentication method of enumerated pattern of field positions based challenge and enumerated pattern of field positions based response through interaction between two credentials in random partial digitized path recognition system
US8868919B2 (en) 2012-10-23 2014-10-21 Authernative, Inc. Authentication method of field contents based challenge and enumerated pattern of field positions based response in random partial digitized path recognition system
WO2014078569A1 (en) 2012-11-14 2014-05-22 The 41St Parameter, Inc. Systems and methods of global identification
US10902327B1 (en) 2013-08-30 2021-01-26 The 41St Parameter, Inc. System and method for device identification and uniqueness
GB2529633A (en) 2014-08-26 2016-03-02 Ibm Password-based generation and management of secret cryptographic keys
US10091312B1 (en) 2014-10-14 2018-10-02 The 41St Parameter, Inc. Data structures for intelligently resolving deterministic and probabilistic device identifiers to device profiles and/or groups
US9813414B2 (en) 2015-11-30 2017-11-07 International Business Machines Corporation Password-based management of encrypted files
US10091190B2 (en) 2015-12-11 2018-10-02 International Business Machines Corporation Server-assisted authentication
US9565020B1 (en) 2016-02-02 2017-02-07 International Business Machines Corporation System and method for generating a server-assisted strong password from a weak secret
US10250591B2 (en) 2016-02-12 2019-04-02 International Business Machines Corporation Password-based authentication
US9917850B2 (en) * 2016-03-03 2018-03-13 Shape Security, Inc. Deterministic reproduction of client/server computer state or output sent to one or more client computers
US10250576B2 (en) 2017-02-08 2019-04-02 International Business Machines Corporation Communication of messages over networks
KR102008482B1 (ko) * 2018-11-21 2019-08-07 제주대학교 산학협력단 Cctv 영상 스마트 감시 시스템 및 그 방법
SE2151305A1 (en) * 2021-10-26 2023-04-27 Assa Abloy Ab Recovering access to a user account

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5315658B1 (en) * 1992-04-20 1995-09-12 Silvio Micali Fair cryptosystems and methods of use
US5623546A (en) * 1995-06-23 1997-04-22 Motorola, Inc. Encryption method and system for portable data
US5666414A (en) * 1996-03-21 1997-09-09 Micali; Silvio Guaranteed partial key-escrow
US5850443A (en) * 1996-08-15 1998-12-15 Entrust Technologies, Ltd. Key management system for mixed-trust environments
US6668323B1 (en) * 1999-03-03 2003-12-23 International Business Machines Corporation Method and system for password protection of a data processing system that permit a user-selected password to be recovered

Also Published As

Publication number Publication date
WO2001001627A3 (en) 2001-10-11
AU6206600A (en) 2001-01-31
ATE371314T1 (de) 2007-09-15
US6829356B1 (en) 2004-12-07
WO2001001627A2 (en) 2001-01-04
AU764909B2 (en) 2003-09-04
DE60036112T2 (de) 2007-12-06
EP1197032B1 (en) 2007-08-22
DE60036112D1 (de) 2007-10-04
CA2376381A1 (en) 2001-01-04
EP1197032A2 (en) 2002-04-17
CA2376381C (en) 2011-06-21

Similar Documents

Publication Publication Date Title
ES2288863T3 (es) Regeneracion asistida por servidor segura de un secreto fuerte a partir de un secreto debil.
US7359507B2 (en) Server-assisted regeneration of a strong secret from a weak secret
KR100769482B1 (ko) 다중 서버를 사용하는 원격 패스워드 인증을 위한 시스템, 방법 및 소프트웨어
US6539479B1 (en) System and method for securely logging onto a remotely located computer
US9118661B1 (en) Methods and apparatus for authenticating a user using multi-server one-time passcode verification
Jablon Password authentication using multiple servers
US6226383B1 (en) Cryptographic methods for remote authentication
ES2266540T3 (es) Aparato metodo de certificacion de datos.
Gong Optimal authentification protocols resistant to password guessing attacks
Chen et al. A robust mutual authentication protocol for wireless sensor networks
Yang et al. A practical password-based two-server authentication and key exchange system
EP0962070B1 (en) Administration and utilization of secret fresh random numbers in a networked environment
US7010692B2 (en) Cryptographic methods for remote authentication
Wu et al. Robust smart‐cards‐based user authentication scheme with user anonymity
US20150195257A1 (en) Securing passwords against dictionary attacks
CN107360571B (zh) 在移动网络中的匿名相互认证和密钥协商协议的方法
Studer et al. Mobile user location-specific encryption (MULE) using your office as your password
Mo et al. An improved anonymous authentication protocol for wearable health monitoring systems
Jain et al. A Comparison Based Approach on Mutual Authentication and Key Agreement Using DNA Cryptography
CN110572257A (zh) 基于身份的抗量子计算数据来源鉴别方法和系统
Li et al. A cloud based dual-root trust model for secure mobile online transactions
Zhu et al. Improvement upon mutual password authentication scheme
Oppliger et al. A proof of concept implementation of SSL/TLS session-aware user authentication (TLS-SA)
Chang et al. Security design for three-party encrypted key exchange protocol using smart cards
Yoon et al. An optimized two factor authenticated key exchange protocol in PWLANs