ES2953589T3 - Un método para generar un número aleatorio, circuito de generación de número aleatorio y programa de ordenador - Google Patents

Un método para generar un número aleatorio, circuito de generación de número aleatorio y programa de ordenador Download PDF

Info

Publication number
ES2953589T3
ES2953589T3 ES19202781T ES19202781T ES2953589T3 ES 2953589 T3 ES2953589 T3 ES 2953589T3 ES 19202781 T ES19202781 T ES 19202781T ES 19202781 T ES19202781 T ES 19202781T ES 2953589 T3 ES2953589 T3 ES 2953589T3
Authority
ES
Spain
Prior art keywords
servers
server
specific
random number
npc
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES19202781T
Other languages
English (en)
Inventor
Haya Shulman
Michael Waidner
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.)
Fraunhofer Gesellschaft zur Forderung der Angewandten Forschung eV
Original Assignee
Fraunhofer Gesellschaft zur Forderung der Angewandten Forschung eV
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 Fraunhofer Gesellschaft zur Forderung der Angewandten Forschung eV filed Critical Fraunhofer Gesellschaft zur Forderung der Angewandten Forschung eV
Application granted granted Critical
Publication of ES2953589T3 publication Critical patent/ES2953589T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/582Pseudo-random number generators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/588Random number generators, i.e. based on natural stochastic processes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • 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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computing Systems (AREA)
  • Computational Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Stereo-Broadcasting Methods (AREA)

Abstract

Un método para generar un número aleatorio comprende seleccionar un grupo de al menos dos servidores dentro de una red; recibir una cadena específica del servidor de al menos dos servidores del grupo; y usar las cadenas específicas del servidor para generar el número aleatorio. (Traducción automática con Google Translate, sin valor legal)

Description

DESCRIPCIÓN
Un método para generar un número aleatorio, circuito de generación de número aleatorio y programa de ordenador
Campo
Las realizaciones ejemplares se refieren a métodos para generar un número aleatorio y los aparatos correspondientes.
Antecedentes
Los generadores pseudoaleatorios (PRG) pueden basarse en valores semilla como entrada inicial para generar números aleatorios en ocasiones posteriores.
La aleatoriedad puede desempeñar un papel clave en el diseño de los mecanismos de seguridad. Por ejemplo, la seguridad de las claves criptográficas, los números arbitrarios SSL/TLS, los vectores de inicialización para el cifrado simétrico, la generación de contraseñas, los números de secuencia y los puertos en los sistemas operativos, la aleatorización del espacio de direcciones para evitar las vulnerabilidades de corrupción de la memoria y más, pueden depender de secuencias impredecibles de bits aleatorios. Sin embargo, el acceso a bits perfectamente aleatorios puede ser difícil de realizar en la práctica. Por lo tanto, típicamente, los sistemas prácticos pueden recopilar semillas aleatorias cortas y usar generadores pseudoaleatorios (PRG) para estirar las semillas aleatorias en cadenas o bits pseudoaleatorios más largos.
A pesar del papel fundamental que puede desempeñar la generación segura de cadenas pseudoaleatorias impredecibles, existe una larga historia de ataques exitosos que explotan errores y vulnerabilidades en los PRG. Las causas de las vulnerabilidades en la generación de cadenas pseudoaleatorias incluyen implementaciones defectuosas, generación de pseudoaleatoriedad en entornos virtualizados y reutilización de la aleatoriedad.
Las fallas de aleatoriedad y las vulnerabilidades siguen siendo un problema importante en la práctica y se invierten esfuerzos significativos en la detección de vulnerabilidades. Aunque puede haber grandes esfuerzos para mejorar la generación de aleatoriedad, los errores y las fallas de diseño siempre pueden persistir y las estrategias adversarias maliciosas pueden ser difíciles de prever y contrarrestar. Otra fuente de falla puede ser que los desarrolladores a menudo desarrollan un sistema para una configuración con acceso a algunas fuentes aleatorias, y es posible que no anticipen su uso en otras plataformas, que pueden carecer de esas fuentes, por ejemplo, falta de entradas de teclado o mouse en los enrutadores o en plataformas en la nube.
Por ejemplo, se pueden generar números aleatorios analizando un proceso aleatorio. Dichos procesos aleatorios pueden ser, por ejemplo, procesos de deterioro físico, en los que el análisis puede requerir hardware especial que genere altos costes. Del mismo modo, los procesos adecuados pueden ser, por ejemplo, procesos de sistema de un sistema operativo en ordenadores personales. Sin embargo, tales procesos solo pueden proporcionar una baja entropía, especialmente cuando los componentes del sistema tienen recursos limitados. Otro método puede ser proporcionar dispositivos recién fabricados con una cadena de números aleatorios. Este proceso puede ser relativamente complejo y puede requerir una personalización de los dispositivos.
El documento US 2006/072747 A1 divulga un sistema, un aparato y un método para mejorar la entropía en un generador de números pseudoaleatorios (PRNG) utilizando fuentes remotas.
El documento CN 108 306 732 A divulga un método y dispositivo de generación de números aleatorios y el equipo pertinente.
El documento WO 2007/026287 A1 divulga un método para generar semillas aleatorias iniciales para generadores de números aleatorios (RNG) comprendidos en dispositivos.
Por lo tanto, los conceptos avanzados para la generación de números aleatorios impredecibles y estadísticamente distribuidos equitativamente pueden ser necesarios para aplicaciones que garanticen la ciberseguridad de los sistemas mediante el uso de métodos criptográficos.
Resumen
Una realización de un método para generar un número aleatorio comprende seleccionar un grupo de al menos dos servidores dentro de una red y recibir una cadena específica de servidor de al menos dos servidores del grupo. El método comprende además el uso de cadenas específicas del servidor para generar el número aleatorio. El uso de cadenas específicas de servidor de dos o más servidores en una red puede garantizar la generación de un número aleatorio impredecible o semilla, incluso si algunos de los servidores o partes de la red pueden verse comprometidos o controlados por un atacante malicioso.
La realización comprende además recibir una cadena específica de servidor desde un servidor que comprende negociar una conexión segura con el servidor. De esta forma, se puede explotar un escenario existente para obtener una cadena pseudoaleatoria de un servidor sin ningún esfuerzo adicional de implementación.
La realización comprende además recibir una clave pública específica del servidor desde el servidor como la cadena específica del servidor.
La realización comprende además transmitir una clave pública local al servidor y combinar la clave pública local y la clave pública específica del servidor para generar un secreto específico del servidor.
La realización comprende además generar una combinación XOR de secretos específicos del servidor para generar un valor semilla. La aleatoriedad se logra combinando diferentes números aleatorios de diferentes servidores, que pueden no ser predecibles y difíciles de comprometer. Si al menos uno de los servidores usados no está comprometido, se puede suponer que el valor inicial generado es seguro y desconocido.
La realización comprende además usar el valor semilla como semilla para calcular el número aleatorio. De esta manera, se puede generar un número aleatorio basado en una semilla segura y aleatoria.
Seleccionar el grupo de servidores comprende además elegir los servidores de modo que las rutas de red a los servidores dentro del grupo no se crucen.
En otro ejemplo adicional, seleccionar el grupo de servidores puede comprender elegir los servidores de manera que puedan estar ubicados en diferentes redes de operadores.
De esta forma, el número aleatorio no solo puede generarse de manera impredecible sino también segura. Incluso si todas las redes de operadores, excepto una, deben ser controladas por un atacante malicioso, el número aleatorio aún puede ser desconocido para el atacante debido a su contribución del servidor restante dentro de la red no comprometida. Se aplican consideraciones similares para rutas de red potencialmente comprometidas.
En otro ejemplo opcional, el uso de cadenas específicas del servidor puede comprender la generación de una combinación XOR de cadenas específicas del servidor para mantener la aleatoriedad y la seguridad, incluso si varias cadenas específicas del servidor deben verse comprometidas.
Algunas realizaciones pueden implementarse en circuitos específicos. Por ejemplo, un circuito de generación de números aleatorios puede comprender una interfaz de comunicación configurada para recibir cadenas específicas del servidor desde al menos dos servidores de un grupo de al menos dos servidores dentro de la red, y un circuito combinado configurado para usar las cadenas específicas del servidor para generar el número aleatorio.
Otro ejemplo adicional puede comprender además un circuito de comunicación seguro configurado para negociar una conexión segura con los al menos dos servidores.
En un ejemplo adicional, el circuito de comunicación segura puede configurarse para recibir una clave pública específica del servidor desde un servidor como la cadena específica del servidor.
En un ejemplo opcional, el circuito de comunicación segura puede configurarse para transmitir una clave pública local al servidor y combinar la clave pública local y la clave pública específica del servidor para generar un secreto específico del servidor.
En otro ejemplo adicional, el circuito de combinación está configurado para generar una combinación XOR de secretos específicos del servidor para generar un valor semilla y usar el valor semilla como semilla para calcular el número aleatorio.
Puede haber una demostración que proporcione un concepto mejorado para generar números aleatorios que sean impredecibles.
La invención está definida por las reivindicaciones adjuntas.
Breve descripción de las figuras
A continuación se describirán algunos ejemplos de aparatos y/o métodos únicamente a modo de ejemplo, y con referencia a las figuras adjuntas, en las que
Figura 1 ilustra un ejemplo de un diagrama de flujo de un método para generar un número aleatorio;
Figura 2 ilustra un ejemplo de una comunicación para recibir una cadena específica del servidor;
Figura 3 ilustra un ejemplo de una red; y
Figura 4 ilustra un ejemplo de un circuito de generación de números aleatorios;
Figura 5 muestra la evaluación de los atacantes en ruta (número de atacantes, expresado en %, que capturan el tráfico de más del 90 % de los servidores web);
Figura 6 ilustra un gráfico que muestra la atracción de servidores web frente a la atracción de sistemas autónomos (AS) en Internet;
Figura 7 muestra los resultados de pruebas estadísticas sobre secuencias producidas por nodos TOR, servidores Alexa y Mac OS, y la comparación con una secuencia aleatoria y no aleatoria; y
Figura 8 ilustra un histograma que muestra la probabilidad de aparición de diferentes valores en la secuencia recopilada de los nodos TOR.
Descripción detallada
A continuación se describirán diversos ejemplos con más detalle con referencia a los dibujos adjuntos en los que se ilustran algunos ejemplos. En las figuras, los grosores de las líneas, capas y/o regiones pueden estar exagerados para mayor claridad.
En consecuencia, mientras que otros ejemplos son capaces de diversas modificaciones y formas alternativas, algunos ejemplos particulares de los mismos se muestran en las figuras y posteriormente se describirán en detalle. Sin embargo, esta descripción detallada no limita otros ejemplos a las formas particulares descritas. Otros ejemplos pueden cubrir todas las modificaciones, equivalentes y alternativas que caen dentro del alcance de la divulgación. Los números iguales o similares se refieren a elementos semejantes o similares a lo largo de la descripción de las figuras, que pueden implementarse de forma idéntica o modificada cuando se comparan entre sí mientras proporcionan la misma funcionalidad o una similar.
Se entenderá que cuando se hace referencia a un elemento como “conectado” o “acoplado” a otro elemento, los elementos pueden estar conectados o acoplados directamente o a través de uno o más elementos intermedios. Si dos elementos A y B se combinan usando un “o”, debe entenderse que esto divulga todas las combinaciones posibles, es decir, solo A, solo B, así como A y B, si no se definen explícita o implícitamente de otra manera. Una redacción alternativa para las mismas combinaciones es “al menos uno de A y B” o “A y/o B”. Lo mismo se aplica, mutatis mutandis, para combinaciones de más de dos elementos.
La terminología utilizada en el presente documento con el fin de describir ejemplos particulares no pretende ser limitante para ejemplos adicionales. Cada vez que se usa una forma singular como “un”, “una” y “el” y el uso de un solo elemento no se define explícita o implícitamente como obligatorio, otros ejemplos también pueden usar elementos plurales para implementar la misma funcionalidad. Asimismo, cuando se describe posteriormente que una funcionalidad se implementa utilizando múltiples elementos, otros ejemplos pueden implementar la misma funcionalidad utilizando un solo elemento o entidad de procesamiento. Se entenderá además que los términos “comprende”, “que comprende”, “ incluye” y/o “que incluye”, cuando se usan, especifican la presencia de las características, números enteros, etapas, operaciones, procesos, actos, elementos y/o o componentes, pero no excluyen la presencia o adición de una o más características, números enteros, etapas, operaciones, procesos, actos, elementos, componentes y/o cualquier grupo de los mismos.
A menos que se defina de otro modo, todos los términos (incluidos los términos técnicos y científicos) se utilizan en este documento en su significado habitual del arte al que pertenecen los ejemplos.
La figura 1 ilustra un ejemplo de un diagrama de flujo de un método para generar un número aleatorio. El método comprende seleccionar 102 un grupo de al menos dos servidores dentro de una red, recibir 104 una cadena específica de servidor de al menos dos servidores del grupo; y usar 106 las cadenas específicas del servidor para generar el número aleatorio.
El uso de cadenas específicas de servidor de dos o más servidores en una red puede garantizar la generación de un número aleatorio impredecible o semilla, incluso si algunos de los servidores o partes de la red pueden verse comprometidos o controlados por un atacante malicioso. De esta forma, se puede proporcionar la generación de números aleatorios impredecibles y estadísticamente distribuidos equitativamente.
La figura 2 ilustra un ejemplo de un flujo de mensajes 200 en una comunicación para recibir una cadena específica del servidor. La figura 2 ilustra una realización en la que recibir una cadena específica de servidor desde un servidor 203 puede comprender negociar 202 una conexión segura con el servidor. De esta forma, se puede explotar un protocolo existente para obtener una cadena pseudoaleatoria de un servidor con el propósito de una realización descrita en este documento.
Durante la negociación, una clave 204 pública específica del servidor puede recibirse del servidor como la cadena específica del servidor. Además, durante la negociación, se puede transmitir una clave 206 pública local al servidor 203. En un cliente 201, la clave 206 pública local y la clave 204 pública específica del servidor pueden combinarse para generar un secreto 208 específico del servidor. Un ejemplo del proceso descrito en este documento puede ser el protocolo de enlace de seguridad de la capa de transporte (TLS).
La seguridad de la capa de transporte (TLS) es un protocolo de cifrado para proporcionar una comunicación de Internet segura. Un protocolo de enlace TLS es un proceso que inicia una comunicación mediante el cifrado TLS. En este proceso, los mensajes se intercambian entre dos lados que se comunican para reconocerse y verificarse mutuamente, establecer los algoritmos de encriptación que se utilizan y acordar las claves de sesión. El protocolo de enlace TLS es una parte esencial del protocolo de transferencia de hipertexto seguro (HTTPS).
En particular, el protocolo de enlace TLS se inicia con una negociación para acordar un conjunto de cifrado utilizado para la sesión. El cliente envía un mensaje “ClientHello” que contiene la lista de conjuntos de cifrado admitidos y un nonce aleatorio Cr. El servidor selecciona un conjunto de cifrado de la lista del cliente y puede enviar su selección en un mensaje “ServerHello” que también puede contener un nonce aleatorio Sr. El NPC puede realizar un intercambio de claves Diffie-Hellman (DH) dentro del protocolo de enlace TLS y puede recopilar un exponente recibido de cada servidor. Más específicamente, dado un número primo pag y un generador g, el NPC puede seleccionar un 0 ≤ a p (no tiene que ser aleatorio), y puede usarlo en sus intercambios de claves DH con los servidores t. En concreto, puede enviar ga a cada servidor, y a cambio el servidor web el iecimo puede seleccionar un 0 aleatorio
Figure imgf000005_0004
y puede enviar
Figure imgf000005_0002
El NPC puede calcular
Figure imgf000005_0003
Específicamente, el número aleatorio puede definirse como una aleatoriedad, la cadena específica del servidor puede ser una cadena pseudoaleatoria, mientras que la clave pública específica del servidor puede definirse como un número
Figure imgf000005_0001
la clave pública local puede definirse como un número a (0 ≤ a ≤ p), dónde p es un primo.
Además, se pueden combinar múltiples secretos específicos del servidor mediante una combinación XOR de los secretos específicos del servidor para generar un valor semilla.
La figura 3 ilustra un ejemplo de una red para ilustrar la selección del servidor de acuerdo con algunas realizaciones. Seleccionar el grupo de servidores puede comprender elegir los servidores de modo que las rutas de red a los servidores dentro del grupo no se crucen. La red comprende múltiples subredes 302a a 302m. Los servidores 304a a 304e pueden estar ubicados dentro de las subredes 302a a 302e, respectivamente. Se supone que el servidor 304e y la subred 302c están comprometidos. Desde la perspectiva de un cliente ubicado en, por ejemplo, la subred 302g, los servidores se eligen de manera que estén ubicados en diferentes redes de operadores.
Aunque la cadena específica del servidor 304e y la cadena específica del servidor 304c pueden verse comprometidas (ya que la ruta de red desde el cliente en la subred 302g al servidor 304c está comprometida), el número aleatorio generado no estará comprometido debido a las aportaciones de los restantes servidores 304a, 304b y 304d.
La figura 4 ilustra un ejemplo de un circuito 400 de generación de números aleatorios.
El circuito 400 de generación de números aleatorios puede comprender una interfaz 402 de comunicación configurada para recibir cadenas 404a, 404b específicas de servidor desde al menos dos servidores de un grupo de al menos dos servidores dentro de una red. Se puede configurar un circuito 404 de combinación para usar las cadenas específicas del servidor para generar el número aleatorio.
El circuito 400 de generación de números aleatorios puede ser un generador pseudoaleatorio (PRG), un colector de pseudoaleatoriedad (NPC) de red o una combinación de un PRG y un NPC, en modo tándem.
El colector de pseudoaleatoriedad de la red (NPC) recopila la aleatoriedad de los servidores públicos en Internet. El proceso de recopilación no requiere ningún cambio en los servidores ni sincronización con los servidores. Algunos de los servidores pueden estar alojados en redes no confiables, otros pueden estar comprometidos. Los generadores pseudoaleatorios (PRG) son algoritmos deterministas que expanden cadenas aleatorias cortas en secuencias pseudoaleatorias largas cuya distribución debe ser indistinguible de la distribución uniforme para cualquier adversario eficiente.
La interfaz 402 de comunicación puede servir para establecer una conexión entre un servidor y un cliente, ya sea mediante conexión por cable como, por ejemplo, Ethernet, o mediante comunicación inalámbrica como, por ejemplo, WiFi o LTE.
El circuito 404 de combinación puede ser una ordenador o una CPU, y el circuito de comunicación segura puede ser un procesador que realiza el protocolo del protocolo de enlace TLS desde el lado del cliente.
Puede configurarse un circuito de comunicación segura opcional adicional para negociar una conexión segura con los al menos dos servidores.
De acuerdo con algunas realizaciones, el circuito de comunicación segura puede configurarse para recibir una clave pública específica del servidor desde un servidor como la cadena específica del servidor.
De acuerdo con algunas realizaciones, el circuito de comunicación segura puede configurarse para transmitir una clave pública local al servidor; y combinar la clave pública local y la clave pública específica del servidor para generar un secreto específico del servidor.
De acuerdo con algunas realizaciones, el circuito de combinación puede configurarse para generar una combinación XOR de secretos específicos del servidor para generar un valor semilla; y usar el valor semilla como semilla para calcular el número aleatorio.
Aspectos adicionales de la tecnología relacionada con las realizaciones descritas en este documento y realizaciones adicionales se describen en los siguientes párrafos.
En realizaciones ejemplares adicionales, los generadores pseudoaleatorios (PRG) pueden desempeñar un papel importante en la seguridad de los sistemas y mecanismos criptográficos. Se pueden invertir esfuerzos significativos en las comunidades de investigación teórica y práctica para mejorar la seguridad de los PRG, identificar fallas y fuentes de entropía, y detectar vulnerabilidades que permitan ataques contra los PRG.
En el enfoque alternativo descrito en este documento para el problema de generación de pseudoaleatoriedad, se diseña e implementa un colector de pseudoaleatoriedad (NPC) de red que puede recopilar cadenas pseudoaleatorias de servidores en Internet. NPC puede no requerir Corporación ni sincronización de esos servidores. NPC puede ser fácil de usar e integrar en los sistemas existentes. Posteriormente se analizará la seguridad de los NPC y se motivará cómo un NPC puede abordar los principales factores detrás de las vulnerabilidades en los PRG. Además, se realizarán simulaciones extensas en conjuntos de datos derivados empíricamente que pueden validar la seguridad de NPC contra ataques de atacantes realistas de intermediarios (MitM) de Internet. Para una implementación práctica, se describe una biblioteca, denominada “crandom”, que puede implementar un NPC para que uno pueda configurar un servicio público de NPC en línea basado en “crandom”.
Para mitigar los problemas con la generación de aleatoriedad, se puede tomar un enfoque alternativo. Puede diseñarse el colector de pseudoaleatoriedad de red (NPC) para la generación segura de aleatoriedad. NPC puede recopilar aleatoriedad de servidores públicos en Internet. El proceso de recopilación puede no requiera algún cambio en los servidores ni sincronización con los servidores. Algunos de los servidores pueden estar alojados en redes no confiables, otros pueden estar comprometidos. Para que la seguridad de NPC se mantenga, es posible que solo se requiera que no todos los servidores estén dañados al mismo tiempo. La idea puede ser que cuando al menos un servidor pueda proporcionar aleatoriedad segura, NPC puede generar una cadena pseudoaleatoria segura.
NPC se puede utilizar como un mecanismo independiente para la generación de bits pseudoaleatorios y también se puede aplicar para complementar los PRG existentes. Por ejemplo, las cadenas pseudoaleatorias generadas por el NPC se pueden usar junto con los PRG del sistema, por ejemplo a través de operación ©, para mejorar la seguridad de las cadenas pseudoaleatorias producidas de PRG. Alternativamente, NPC puede usarse como una opción alternativa, por ejemplo, cuando los grupos de entropía del sistema pueden agotarse (salvados por un proceso malicioso), o en escenarios donde la entrada del usuario puede no estar disponible y la aleatoriedad puede ser difícil de generar, como en entornos virtuales (por ejemplo, en plataformas en la nube).
Se puede desarrollar una biblioteca basada en NPC, llamada “crandom”, que puede ser utilizada por los sistemas operativos de forma independiente o en conjunto con las bibliotecas existentes, tales como “dev/urandom”. También se puede proporcionar acceso a una herramienta en línea (así como el código de NPC) que se puede configurar en “http://45.76.90.74/random/”. La herramienta puede usar “crandom” para la recopilación de cadenas pseudoaleatorias y puede aplicarlas para generar y emitir una cadena pseudoaleatoria de la longitud solicitada.
Dado que los bits aleatorios pueden ser escasos en la práctica, se pueden utilizar generadores pseudoaleatorios (PRG). Los PRG pueden ser algoritmos deterministas que pueden expandir cadenas aleatorias cortas en secuencias pseudoaleatorias largas cuya distribución puede ser indistinguible de la distribución uniforme para cualquier adversario eficiente. La seguridad de las cadenas pseudoaleatorias producidas por los PRG puede depender del hecho de que el estado interno puede inicializarse con una semilla verdaderamente aleatoria y que puede permanecer en secreto en todo momento. En la práctica, es posible que los sistemas no tengan acceso a la aleatoriedad secreta y perfecta, por ejemplo, la semilla a menudo se puede recolectar después de un reinicio o una reanudación desde fuentes de baja entropía. En entornos virtualizados, la máquina invitada puede usar “ la misma” aleatoriedad cuando se puede reiniciar desde una imagen. También puede haber otras vulnerabilidades y ataques contra PRG.
NPC puede abordar las principales deficiencias de los GPR existentes. Específicamente, NPC puede permitir una generación automática de cadenas pseudoaleatorias, sin depender de las fuentes de entropía o la entrada del usuario. NPC puede proporcionar solidez al evitar la dependencia de un sistema (por ejemplo, que puede ser defectuoso o vulnerable). Por lo tanto, las fallas de algunos de los servidores o los ataques contra algunos de los servidores pueden no subvertir la seguridad de todo el sistema. En un alto nivel, NPC puede establecer una conexión a servidores bien administrados en Internet y puede recolectar datos aleatorios de ellos. Sin embargo, las cadenas recibidas de algunos de los servidores pueden ser “ inseguras” (por ejemplo, no aleatorias o pueden ser conocidas por el atacante). Para garantizar la seguridad, NPC puede realizar un XOR sobre todas las cadenas recibidas. Por lo tanto, la salida puede ser segura (por ejemplo, pseudoaleatoria) siempre que al menos una cadena recibida sea segura.
Se puede considerar un atacante fuerte pero realista MitM (Man in the Middle (ataque de intermediario)), que puede espiar, eliminar o inyectar paquetes en la cadena de comunicación. El atacante también puede dañar los servidores. Dicho atacante puede ser un proveedor de servicios de Internet (ISP) o un sistema autónomo (AS). Los ataques pueden ser perpetrados por ciberdelincuentes o por una agencia gubernamental. El atacante puede controlar algunas de las redes de Internet y puede estar ubicado en algunas de las rutas de comunicación que la víctima puede usar. El atacante puede ser “realista” en el sentido de que no controla todas las redes y servidores de Internet (modelo de atacante, véase la figura 3).
En este sentido, se puede diseñar y desarrollar una red de colectores pseudoaleatorios (NPC). El uso de una selección “ inteligente” de los servidores que un NPC puede consultar, puede permitir generar pseudoaleatoriedad sin ninguna semilla aleatoria inicial. La idea puede ser reemplazar la criptografía a través de suposiciones en sistemas distribuidos. La seguridad de los NPC puede depender de los servidores que los NPC pueden seleccionar para consultar: (1) los servidores pueden proporcionar cadenas pseudoaleatorias “seguras”, y (2) la selección de los servidores puede realizarse de manera que se pueda preservar la seguridad del sistema global. Ambas condiciones pueden estar aseguradas. Las cadenas recopiladas de los servicios, como Alexa y los nodos TOR, pueden tener una seguridad equivalente a un BSD parcheado con acceso a múltiples fuentes de entropía. Para mostrar esto último, se puede diseñar un algoritmo de selección de servidor y se pueden ejecutar simulaciones para demostrar su seguridad frente a fuertes adversarios MitM realistas.
NPC puede implementarse como una nueva biblioteca, “crandom”, y puede probarse en los sistemas operativos Android y UNIX. NPC puede ser un mecanismo eficiente, práctico y fácil de adoptar para la generación de bits pseudoaleatorios. Puede permitir la generación sencilla, eficiente y automatizada de bits pseudoaleatorios para sistemas y servicios, así como para tareas y aplicaciones que puedan necesitar los usuarios finales, como la generación de claves criptográficas.
Muchas fallas y vulnerabilidades de PRG de alto perfil fueron explotadas para ataques. Los ataques contra PRG pueden conducir a la exposición de claves privadas de sistemas criptográficos, la baja entropía puede permitir la recuperación de texto sin formato y puede permitir a los atacantes predecir las claves de sesión efímeras de Diffie Hellman.
Una vulnerabilidad central puede ser una entropía insuficiente, lo que puede ocurrir durante el arranque, o cuando los grupos de aleatoriedad y los sistemas operativos pueden agotarse, por ejemplo, en Linux, cuando se puede alcanzar un límite de descriptor de archivo global, ningún proceso puede acceder a la aleatoriedad del sistema a través de “/dev/random”. La mayoría de las aplicaciones pueden continuar sin la aleatoriedad del sistema operativo. En ese caso, las bibliotecas criptográficas pueden producir claves vulnerables que pueden afectar potencialmente la seguridad de múltiples aplicaciones. En particular, muchos componentes de Open SSL, incluida la generación de secretos premaestros SSL/TLS y la generación de claves RSA, así como la función “arc4random” utilizada para la aleatoriedad criptográfica en FreeBSD, Open BSD y Mac OS, pueden ser todos afectados por este asunto.
Estas vulnerabilidades pueden permitir que un atacante, en función de la salida que pueda recibir de un PRG, prediga la salida futura del PRG y, en algunos casos, incluso el valor de la semilla aleatoria. Los PRG del sistema pueden proporcionar poca seguridad en un entorno virtualizado. Un proceso de espacio de usuario como TLS puede sufrir una pérdida significativa de seguridad cuando se ejecuta en una máquina virtual (VM) que puede reanudarse varias veces desde una instantánea. Los reinicios pueden dar lugar a la exposición de claves secretas generadas después de la reanudación de la instantánea. Entre otros factores que causan la debilidad, las fuentes de entropía del software pueden ser más débiles en un entorno virtualizado, por ejemplo, debido a la falta de entradas de mouse y teclado.
Una medición de Internet a gran escala de las claves SSH y TLS generadas por sistemas sin cabeza o integrados y tarjetas de administración de servidores encontró vulnerabilidades en las claves criptográficas causadas por entradas y entropía insuficientes para los PRG. Las causas de los problemas pueden ser principalmente implementaciones defectuosas que pueden generar claves automáticamente en el primer arranque sin haber recopilado suficiente entropía. En las Pc tradicionales, es menos probable que ocurran los problemas. Sin embargo, una evaluación reciente de la generación de claves puede mostrar vulnerabilidades en la generación de claves DNSSEC en grandes registradores bien establecidos y proveedores de alojamiento de DNS y puede rastrear los problemas hasta la reutilización de material criptográfico y los intentos de ahorrar en la aleatoriedad.
NPC puede mitigar los problemas en PRG adoptando un enfoque alternativo a la generación de pseudoaleatoriedad.
El objetivo de un recopilador de pseudoaleatoriedad (NPC) de red es recopilar cadenas pseudoaleatorias de servidores públicos de Internet y, en función de esas cadenas, generar y emitir cadenas pseudoaleatorias. Las cadenas se pueden recopilar de servidores web, nodos TOR y, en general, de cualquier servidor que esté dispuesto a aceptar y establecer conexiones criptográficamente protegidas con clientes.
El NPC puede recibir una lista de entrada de servidores que admiten HTTPS, puede seleccionar un subconjunto t de servidores de la lista y puede consultarlos por pseudoaleatoriedad. Al recibir una cadena pseudoaleatoria de cada servidor, el NPC puede XOR todas las cadenas recibidas y puede generar el resultado.
Una parte crítica del protocolo puede ser la selección del servidor, que puede garantizar la seguridad contra protectores de red realistas, por ejemplo, incluso si el atacante puede ser un gran proveedor de servicios de Internet (ISP) o puede operar una red de distribución de contenido (CDN).
Para garantizar eso, el NPC puede seleccionar los servidores de tal manera que no se puedan ubicar dos servidores en la misma red y las rutas de comunicación entre el NPC y los servidores no se superpongan. Para garantizar esto, el NPC puede usar el gráfico de nivel CAIDA AS derivado empíricamente (que contenía 57K ASes en julio de 2018). El gráfico está anotado con relaciones comerciales bilaterales. El NPC identifica los AS que alojan los servidores asignando las direcciones IP de los servidores a los números de AS mediante RIPE (https://stat.ripe.net) y almacena los AS donde se encuentran los servidores en AS-servers-list. El NPC también asigna su propia dirección IP a un número de AS (lo almacena en “own-AS”). El algoritmo entonces procede de la siguiente manera:
Figure imgf000008_0002
El algoritmo puede ejecutar t iteraciones. En cada iteración, el algoritmo puede seleccionar un servidor de la lista de entrada “servers-AS-list” , puede verificar que no esté ubicado en la misma red que ninguno de los servidores seleccionados y que la ruta hacia él no se superponga con ningún otro servidor. Finalmente, el algoritmo puede generar la lista “lista” que puede contener el conjunto de servidores que el NPC puede consultar para las cadenas pseudoaleatorias.
El NPC puede revisar la lista de servidores, puede establecer una conexión TCP con cada uno de ellos, iniciando posteriormente un establecimiento de conexión TLS. El protocolo de enlace TLS se inicia con una negociación para acordar un conjunto de cifrado utilizado para la sesión. El cliente envía un mensaje “ClientHello” que contiene la lista de conjuntos de cifrado admitidos y un nonce aleatorio Cr. El servidor selecciona un conjunto de cifrado de la lista del cliente y puede enviar su selección en un mensaje “ServerHello” que también puede contener un nonce aleatorio Sr. El NPC puede realizar un intercambio de claves Diffie-Hellman (DH) dentro del protocolo de enlace TLS y puede recopilar un exponente recibido de cada servidor. Más específicamente, dado un número primo p y un generador g, el NPC puede seleccionar un 0 ≤ a p (no tiene que ser aleatorio), y puede usarlo en sus intercambios de claves DH con los servidores t. En concreto, puede enviar ga a cada servidor, y a cambio el servidor web iscimo puede seleccionar un 0 aleatorio ≤ bi p y puede enviar gbi. El NPC puede calcular gabi.
Al finalizar el protocolo, NPC puede obtener valores t (ga b1, ..., gab), dónde ga bi puede ser el valor obtenido durante la ejecución del protocolo iecimo con el servidor web i. Cada cadena puede ser pseudoaleatoria y tener una longitud mínima de 128 bytes (1024 bits). NPC entonces puede calcular un vector de cadenas s como un OR exclusivo: s = (gab1 ® ...® gab') y puede almacenar la semilla s.
El uso de servidores t puede garantizar la seguridad incluso si algunos de los servidores pueden verse comprometidos o pueden proporcionar una aleatoriedad “vulnerable”, o si el atacante puede espiar algunas de las redes o rutas. El cálculo de un OR exclusivo de la cadena con cadenas aleatorias puede dar como resultado una cadena aleatoria, por lo que se supone que al menos uno de los servidores puede proporcionar un gb pseudoaleatorio, la salida s del NPC durante una ejecución de este tipo puede ser una cadena pseudoaleatoria de 1024 bits. La seguridad de la salida se mantiene debido a la propiedad Dh . El NPC también puede estar seguro contra robos pasados y futuros. Comprometer el sistema puede no ayudar a comprometer conexiones pasadas o futuras, ya que las cadenas aleatorias pueden no generarse localmente sino recopilarse de forma remota.
Puede calcularse la probabilidad de que al menos uno de los t servidores proporcione una “buena” aleatoriedad. Se pueden realizar simulaciones para demostrar la resiliencia frente a atacantes activos y pasivos, lo que demuestra la importancia de la selección del servidor para garantizar la seguridad. Para las simulaciones (así como en la implementación) se pueden usar los mejores servidores web 10K de Alexa.
La probabilidad, al seleccionar /servidores, que al menos uno de los /servidores pueden proporcionar “buena” pseudoaleatoriedad es alta. Denotando el conjunto de todos los servidores potenciales con n, fuera de ellos, G es el conjunto de buenos servidores y C es el conjunto de servidores dañados. Primero, el atacante puede seleccionar el conjunto C de servidores dañados, luego, cuando se puede determinar el conjunto de servidores dañados, el NPC selecciona el conjunto / de servidores. Puede surgir la pregunta, cuál puede ser la probabilidad de que al menos un servidor de / pueda ser bueno. El problema puede caracterizarse con una distribución hipergeométrica, con una variable aleatoria probabilística X.
Figure imgf000008_0001
El numerador puede decir que dado el conjunto de servidores dañados C, / puede ser seleccionado de los restantes servidores N - C tales que / puede contener 0 servidores de los servidores dañados. El denominador puede contar todas las formas posibles de seleccionar / servidores de los N servidores. Para la seguridad de retener el NPC, puede ser suficiente que al menos uno de los servidores / seleccionados pueden ser buenos, es decir, PR [X > 1]. Asumiendo que N = 1000, número de servidores dañados C = 50 y el NPC puede seleccionar 10 servidores, entonces Pr [X > 1] = 0.999. Esto muestra que incluso para un grupo relativamente limitado de servidores (por ejemplo, 1000) con 50 servidores dañados, la probabilidad de que al menos uno sea bueno es alta.
En realidad, no es fácil para un atacante dañar múltiples servidores: los servidores pueden ejecutar diferentes software y sistemas operativos, pueden ser operados y propiedad de diferentes entidades y estar ubicados en diferentes redes. Este cálculo significa que incluso si un atacante dado puede dañar un conjunto de servidores de un gran grupo de servidores (tal como la lista de servidores de Alexa), la probabilidad de que al menos un servidor seleccionado sea bueno es alta.
Aquí, puede surgir la pregunta, qué tan fuerte puede ser el atacante para poder interceptar todas las cadenas enviadas por los servidores. Además, puede surgir la pregunta de si un atacante MitM realista puede observar o secuestrar todas las cadenas pseudoaleatorias. Para responder a estas preguntas, se puede cuantificar la capacidad de un atacante en la ruta para interceptar casi todas las cadenas pseudoaleatorias de los servidores al NPC. Las simulaciones se pueden realizar utilizando, por ejemplo, los mejores servidores web 10K de Alexa que admiten HTTPS.
Las simulaciones se pueden ejecutar en diferentes pares de NPC atacantes (es decir, se pueden seleccionar diferentes ubicaciones de atacante y n Pc ) y la fracción de servidores Alexa cuya ruta BGP a n Pc atraviesa el atacante. Las simulaciones con los cálculos de ruta BGP se pueden ejecutar en el gráfico CAIDA AS - level derivado empíricamente (se utilizó el conjunto de datos de abril de 2017, que contiene 57256 ASes). Las mediciones se promediaron durante 106 combinaciones de pares attacker NPC AS, seleccionándolos aleatoriamente. Para identificar los AS que alojan servidores web, los números de IP a AS se asignaron mediante RIPE.
Las simulaciones pueden evaluar todas las posibilidades de que un atacante en ruta cubra casi todas las rutas entre el NPC y los servidores web. Los AS se pueden clasificar en cuatro clases: AS grandes con más de 250 clientes, AS medianos que tienen entre 25 y 250 clientes, AS pequeños con 1 a 25 clientes y AS auxiliares que no tienen clientes. El gráfico correspondiente tenía en total 57256 nodos y 246143 aristas.
Para cada combinación de pares attacker-NPC ASes, se midió la fracción de los pares en los que el atacante puede capturar tráfico de más del 90 % de los servidores web. Este sería un atacante muy fuerte, sin embargo, se muestra que el NPC aún estaría seguro. En la práctica, los atacantes son, por supuesto, mucho más débiles. Las simulaciones muestran que solo el 0.1 % de los atacantes pueden estar en la ruta entre el NPC y el 90 % o más de los servidores y, por lo tanto, pueden capturar el tráfico entre el NPC y los servidores. Ningún atacante puede capturar el 90 % del tráfico a los servidores cuando el NPC está en un AS grande. Los atacantes que pueden ser pequeños ISP o auxiliares no pueden lanzar ataques exitosos. Los resultados de la simulación se resumen en la figura 5.
Dado que un atacante de MitM no puede socavar la seguridad del NPC, también puede intentar realizar secuestros de prefijos del protocolo de puerta de enlace de borde de lanzamiento (BGP) para atraer tráfico de Internet de otras redes que no puede controlar. Es posible que se sepa que BGP es vulnerable a los ataques de secuestro de prefijos. En los secuestros de prefijos, el atacante puede secuestrar todo el tráfico de una red víctima.
Se puede evaluar la capacidad del atacante para explotar la inseguridad de BGP para secuestrar el tráfico entre la red en la que se puede operar el NPC y los servidores web. En este caso, tanto la víctima como el atacante pueden anunciar el prefijo BGP de la víctima. Se puede evaluar la fracción de los servidores web que el atacante puede atraer. La probabilidad de que el atacante atraiga a más del 90 % de los servidores web es de alrededor del 2%. La simulación también muestra que los atacantes que pueden secuestrar el tráfico del 90 % de los servidores web pueden desconectar a la víctima del resto de Internet. Solo el 0.20 % de los atacantes pueden lanzar con éxito el ataque mientras mantienen sus raíces para ser víctimas para retransmitir paquetes entre la víctima y el resto de Internet para evitar la detección. Esto puede deberse al hecho de que la fracción de los servidores web que el atacante secuestra puede estar cerca de la fracción de los ASes en Internet que el atacante puede atraer al anunciar el prefijo de las víctimas; ver la simulación graficada en la figura 6. Para evitar que el NPC genere aleatoriedad, el atacante puede secuestrar el tráfico de casi todos los servidores y, por lo tanto, interrumpir las partes a la víctima de casi todos los ASes en Internet.
Otra estrategia que puede tomar el atacante puede ser intentar descartar algunas de las respuestas del servidor para que menos de t cadenas pseudoaleatorias puedan llegar al NPC. Puede haber dos formas de lidiar con esto: (1) aumentar la t, por ejemplo k = C * t (donde c puede ser una constante), o (2) usar un retroceso exponencial.
En caso de que no se pueda establecer una conexión con algún servidor web, por ejemplo, el servidor web puede ser inalcanzable, NPC puede seleccionar otros dos servidores web (de la lista de n) servidores e intentar establecer una conexión con ellos. NPC puede continuar, cada vez que aumenta exponencialmente el número de intentos de conexión. Durante el intento i (después i- 1 intentos fallidos) el NPC puede establecer 2'-1 conexiones
Si el NPC establece con éxito j ≤ 2'-1 conexiones (por ejemplo, durante el intento i), podrá almacenar todas las cadenas pseudoaleatorias j recogidas de estas conexiones para uso futuro. Es posible que se necesite un retroceso exponencial para que las redes puedan hacer frente a las altas tasas de pérdida de paquetes, que pueden ser ataques maliciosos en los que el atacante bloquea el acceso a los servidores web.
Puede implementarse un daemon que se ejecuta periódicamente e invoca “crandom” cuando la pseudoaleatoriedad está por debajo de un umbral dado. Las cadenas pseudoaleatorias recopiladas pueden almacenarse y pueden estar disponibles para aplicaciones. Este modo “fuera de línea” para recolectar cadenas pseudoaleatorias puede permitir ofrecer una mayor eficiencia para aplicaciones cuando se necesite aleatoriedad.
La configuración del NPC puede ser flexible y definida a través de parámetros en el archivo de configuración. Se pueden enumerar los principales: (1) la ruta a la lista de n servidores, los predeterminados pueden ser los servidores web de Alexa, que también se pueden usar en la implementación y las simulaciones (se puede usar cualquier servidor compatible con SSL/TLS); (2) k servidores para consultar; (3) el índice inicial i de la k de n servidores para consultar; (4) el número mínimo de respuestas t eso puede ser suficiente para el cálculo de la salida; (5) se puede usar un indicador en el modo por lotes en el tamaño de la cadena pseudoaleatoria que se puede almacenar.
Las cadenas pseudoaleatorias producidas por NPC pueden ser tan seguras como las cadenas pseudoaleatorias recopiladas de los servidores de Internet. Se realizó una evaluación de la seguridad de las series de cadenas producidas por los sitios web de Alexa y por los nodos TOR y se probó si cumplen las pruebas estadísticas de aleatoriedad. El objetivo de las pruebas estadísticas es evaluar que, a largo plazo, la frecuencia de 0 y 1 en la secuencia debe ser casi la misma.
Se utilizó un popular paquete de prueba de software ENT para aplicar pruebas estadísticas en las secuencias generadas. ENT proporciona un análisis integral de las pruebas de aleatoriedad para aplicaciones criptográficas; aplica pruebas estadísticas sobre una secuencia de entrada y produce una salida de acuerdo con las propiedades comunes de aleatoriedad. Para cada prueba, el programa del paquete ENT genera una entropía, valor X2, un valor medio aritmético p, un valor de Monte Carlo para n, y un coeficiente de correlación serial. Estas pruebas miden diferentes propiedades de las cadenas que aparecen en la secuencia probada.
Estas pruebas se aplicaron en una serie de secuencias de cadenas recopiladas de: (1) nodos TOR, (2) 10k de los mejores servidores Alexa, y (3) una biblioteca “/dev/random” parchada actualizada y Mac OS. Para cada una de estas fuentes, se recopilaron cadenas de un tamaño de archivo de 1 MB y se aplicaron las pruebas en cada uno de estos archivos. Los resultados se reportan en la figura 7. A modo de comparación, también se proporcionan los resultados de las pruebas aplicadas a una secuencia verdaderamente aleatoria (generada al cronometrar eventos de desintegración radiactiva, consulte http://www.fourmilab.ch/hotbits/) y a un código c. La abreviatura “excede el % de X2”, en la tabla, es el grado en que se sospecha que la secuencia probada no es aleatoria. Si la cantidad es superior al 99 %, la secuencia no es aleatoria.
También se evalúa la uniformidad de la distribución, es decir, la probabilidad de aparición de diferentes valores en la secuencia. Los resultados se representan en un histograma en la figura 8. El gráfico muestra que la secuencia generada está cerca de una distribución uniforme.
El uso de TOR o de 10k de los mejores servidores Alexa puede producir una entropía de 7.9998 bits/byte, por ejemplo, puede estar estadísticamente muy cerca de una fuente real de aleatoriedad y puede ofrecer la misma entropía que, por ejemplo, Mac OS. Las claves de los sistemas criptográficos simétricos pueden generarse directamente.
La aleatoriedad puede ser esencial para la criptografía de arranque. Sin embargo, a menudo la aleatoriedad puede ser difícil de obtener o generar en la práctica. Se han informado muchas fallas y vulnerabilidades de PRG de alto perfil a lo largo de los años, y los esfuerzos de investigación prácticos y teóricos significativos se centran en mejorar la situación y mejorar la seguridad de los PRG. Sin embargo, algunos problemas prácticos son difíciles de resolver, como la generación de aleatoriedad en plataformas virtuales, donde se puede reutilizar la misma imagen de VM, o donde las fuentes limitadas de aleatoriedad pueden estar disponibles, por ejemplo, en dispositivos que carecen de intervención humana, tales como dispositivos integrados o enrutadores. Además, incluso cuando el hardware no es un problema, la falta de automatización de la generación de entropía también puede representar un riesgo, como lo puede indicar la reutilización de claves por parte de los registradores y los proveedores de alojamiento.
Se toma un enfoque alternativo para la seguridad de arranque. La idea es reemplazar la criptografía a través de suposiciones en sistemas distribuidos. Se diseña e implementa un sistema, denominado colector de pseudoaleatoriedad de red (NPC), para recopilar pseudoaleatoriedad en Internet, utilizando la naturaleza distribuida de Internet y haciendo suposiciones estructurales sobre las capacidades del atacante.
El NPC puede abordar los problemas en los PRG actuales, al tiempo que garantiza una alta eficiencia, automatización y seguridad contra robos pasados y futuros. El NPC se puede usar como un mecanismo independiente o se puede aplicar junto con los PRG del sistema existente, o se puede usar como una opción alternativa, por ejemplo, para evitar que las aplicaciones se detengan en caso de que se agoten los grupos de aleatoriedad del sistema. Esto puede permitir mejorar la seguridad al tiempo que elimina un único punto de falla.
Se puede proporcionar una biblioteca “crandom” implementando el NPC; se puede usar en sistemas operativos junto con “urandom” y “random”. Además, se puede configurar un sitio web “http://45.76.90.74/random/”, que puede estar basado en “crandom” y puede generar cadenas pseudoaleatorias de la longitud solicitada para los clientes.
Para obtener más ejemplos, se pueden proponer algunas direcciones de seguimiento, que pueden ser interesantes de seguir en el contexto de la recopilación aleatoria en Internet. (1) evaluar enfoques para mejorar la eficiencia del uso de NPC en dispositivos móviles (y otros limitados), por ejemplo, para aplicar extractores, para extraer la entropía de las cadenas recopiladas para reducir los requisitos de almacenamiento requeridos en sistemas con recursos limitados y para reducir la cantidad de veces que se debe ejecutar un NPC; (2) otra dirección puede ser optimizar la CPU y otros recursos necesarios para NPC vs p R9. Esto puede ser particularmente importante para los dispositivos móviles donde los enchufes pueden consumir una gran fracción de la vida útil de la batería. Por lo tanto, una pregunta futura relacionada puede ser optimizar la recopilación de cadenas para reducir el tiempo de transmisión, (3) se puede diseñar un NPC para brindar seguridad cuando se opera en redes confiables. Puede surgir la pregunta, qué puede suceder en las redes públicas, como hoteles, aeropuertos, cafés, redes universitarias. Actualmente, la implementación se puede configurar para recopilar cadenas en redes en las que se puede confiar y para procesar por lotes las cadenas recopiladas para su uso posterior en redes que no son de confianza. Una dirección de investigación interesante es considerar enfoques alternativos.
Los aspectos y características mencionados y descritos junto con uno o más de los ejemplos y figuras detallados anteriormente, también pueden combinarse con uno o más de los otros ejemplos para reemplazar una característica similar del otro ejemplo o para introducir adicionalmente la característica al otro ejemplo.
Los ejemplos pueden ser o estar relacionados con un programa informático que tiene un código de programa para realizar uno o más de los métodos anteriores, cuando el programa informático se ejecuta en un ordenador o procesador. Las etapas, operaciones o procesos de diversos métodos descritos anteriormente pueden ser realizados por ordenadores o procesadores programados. Los ejemplos también pueden cubrir dispositivos de almacenamiento de programas tales como medios de almacenamiento de datos digitales, que son legibles por máquina, procesador u ordenador y codifican programas de instrucciones ejecutables por máquina, por procesador o por ordenador. Las instrucciones realizan o hacen que se realicen algunos o todos los actos de los métodos descritos anteriormente. Los dispositivos de almacenamiento de programas pueden comprender o ser, por ejemplo, memorias digitales, medios de almacenamiento magnético tales como discos magnéticos y cintas magnéticas, discos duros o medios de almacenamiento de datos digitales legibles ópticamente. Otros ejemplos también pueden abarcar ordenadores, procesadores o unidades de control programados para realizar los actos de los métodos descritos anteriormente o matrices lógicas programables (de campo) ((F)PLA) o matrices de compuertas programables (de campo) ((F)PGA), programadas para realizar los actos de los métodos descritos anteriormente.
La descripción y los dibujos simplemente ilustran los principios de la divulgación. Además, todos los ejemplos enumerados en este documento tienen la intención principal y expresa de ser solo con fines ilustrativos para ayudar al lector a comprender los principios de la divulgación y los conceptos aportados por el inventor o inventores para promover la técnica. Todas las declaraciones en este documento que citan principios, aspectos y ejemplos de la divulgación, así como ejemplos específicos de los mismos, pretenden abarcar equivalentes de los mismos.
Un bloque funcional denominado “medio para...” que realiza una determinada función puede hacer referencia a un circuito que está configurado para realizar una determinada función. Por lo tanto, un “medio para algo” puede implementarse como un “medio configurado o adecuado para algo”, tal como un dispositivo o un circuito configurado o adecuado para la tarea respectiva.
Las funciones de diversos elementos que se muestran en las figuras, incluidos cualquiera de los bloques funcionales etiquetados como “medios”, “medios para proporcionar una señal”, “medios para generar una señal”, etc., pueden implementarse en forma de hardware dedicado, tal como “un proveedor de señales”, “una unidad de procesamiento de señales”, “un procesador”, “un controlador”, etc., así como hardware capaz de ejecutar software en asociación con el software apropiado. Cuando las proporciona un procesador, las funciones pueden ser proporcionadas por un solo procesador dedicado, por un solo procesador compartido o por una pluralidad de procesadores individuales, algunos de los cuales o todos pueden ser compartidos. Sin embargo, el término “procesador” o “controlador” no se limita al hardware exclusivamente capaz de ejecutar software, sino que puede incluir hardware de procesador de señal digital (DSP), procesador de red, circuito integrado de aplicación específica (ASIC), matriz de puertas programables en campo (FPGA), memoria de solo lectura (ROM) para almacenar software, memoria de acceso aleatorio (RAM) y almacenamiento no volátil. También se puede incluir otro hardware, convencional y/o personalizado.
Un diagrama de bloques puede, por ejemplo, ilustrar un diagrama de circuito de alto nivel que implemente los principios de la divulgación. De manera similar, una gráfica de flujo, un diagrama de flujo, un diagrama de transición de estado, un pseudocódigo y similares pueden representar diversos procesos, operaciones o etapas, que pueden, por ejemplo, representarse sustancialmente en un medio legible por ordenador y así ejecutarse por un ordenador o procesador, ya sea que dicho ordenador o procesador se muestre o no explícitamente. Los métodos divulgados en la memoria descriptiva o en las reivindicaciones pueden implementarse mediante un dispositivo que tenga medios para realizar cada uno de los actos respectivos de estos métodos.
Debe entenderse que la divulgación de múltiples actos, procesos, operaciones, etapas o funciones divulgados en la especificación o las reivindicaciones no puede interpretarse como parte del pedido específico, a menos que se indique explícita o implícitamente lo contrario, por ejemplo, por razones técnicas. Por lo tanto, la divulgación de múltiples actos o funciones no los limitará a un orden particular a menos que dichos actos o funciones no sean intercambiables por razones técnicas. Además, en algunos ejemplos, un solo acto, función, proceso, operación o etapa puede incluir o dividirse en múltiples subactos, funciones, procesos, operaciones o etapas, respectivamente. Dichos subactos pueden incluirse y formar parte de la divulgación de este único acto a menos que se excluyan explícitamente.
Además, las siguientes reivindicaciones se incorporan por la presente a la descripción detallada, donde cada reivindicación puede valer por sí misma como un ejemplo separado. Si bien cada reivindicación puede valerse por sí sola como un ejemplo independiente, se debe tener en cuenta que, aunque una reivindicación dependiente puede hacer referencia en las reivindicaciones a una combinación específica con una o más de otras reivindicaciones, otros ejemplos también pueden incluir una combinación de las reivindicaciones dependientes con la materia objeto de cada una de las otras reivindicaciones dependientes o independientes. Dichas combinaciones se proponen explícitamente en el presente documento a menos que se indique que no se pretende una combinación específica. Además, se pretende incluir también las características de una reivindicación de cualquier otra reivindicación independiente, incluso si esta reivindicación no depende directamente de la reivindicación independiente.

Claims (4)

REIVINDICACIONES
1. Un método para generar un número aleatorio, que comprende:
seleccionar (102) un grupo de al menos dos servidores dentro de una red;
en el que seleccionar el grupo de servidores comprende elegir los servidores de modo que las rutas de red a los servidores dentro del grupo no se crucen;
recibir (104) una cadena específica de servidor desde cada uno de los al menos dos servidores del grupo; usar (106) las cadenas específicas del servidor para generar el número aleatorio;
en el que recibir la cadena específica del servidor de cada uno de los al menos dos servidores (203) comprende: negociar (202) una conexión segura con cada uno de los al menos dos servidores (203);
recibir, durante la negociación (202), una clave pública específica del servidor desde cada uno de los al menos dos servidores como la cadena específica del servidor;
transmitir, durante la negociación (202), una clave pública local a cada uno de los al menos dos servidores; y combinar la clave pública local con cada clave pública específica del servidor recibida para generar secretos específicos del servidor;
generar una combinación XOR de secretos específicos del servidor para generar un valor semilla; y
utilizar el valor semilla como semilla para calcular el número aleatorio.
2. El método de la reivindicación 1, en el que seleccionar el grupo de servidores comprende elegir los servidores de modo que estén ubicados en diferentes redes de operadores.
3. Un circuito (400) de generación de números aleatorios, que comprende:
una interfaz (402) de comunicación configurada para recibir cadenas (404a, 404b) específicas de servidor desde al menos dos servidores de un grupo de al menos dos servidores dentro de una red;
en el que el grupo de servidores comprende una selección de servidores tal que las rutas de red a los servidores dentro del grupo no se cruzan;
un circuito (404) de combinación configurado para usar las cadenas específicas del servidor para generar el número aleatorio;
en el que recibir las cadenas (404a, 404b) específicas del servidor desde al menos dos servidores comprende: un circuito de comunicación seguro configurado para negociar una conexión segura con los al menos dos servidores; en el que el circuito de comunicación segura está configurado para recibir, durante la negociación, una clave pública específica del servidor desde cada uno de los al menos dos servidores como la cadena específica del servidor; en el que el circuito de comunicación segura está configurado para transmitir, durante la negociación, una clave pública local a cada uno de los al menos dos servidores; y combinar la clave pública local con cada clave pública específica del servidor recibida para generar secretos específicos del servidor; y en el que el circuito de combinación está configurado para generar una combinación XOR de secretos específicos del servidor para generar un valor semilla; y usar el valor semilla como semilla para calcular el número aleatorio.
4. Programa informático que tiene un código de programa para, cuando es ejecutado por un procesador programable, realizar el método de una de las reivindicaciones 1 a 3.
ES19202781T 2018-11-13 2019-10-11 Un método para generar un número aleatorio, circuito de generación de número aleatorio y programa de ordenador Active ES2953589T3 (es)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
EP18206017 2018-11-13

Publications (1)

Publication Number Publication Date
ES2953589T3 true ES2953589T3 (es) 2023-11-14

Family

ID=64401983

Family Applications (1)

Application Number Title Priority Date Filing Date
ES19202781T Active ES2953589T3 (es) 2018-11-13 2019-10-11 Un método para generar un número aleatorio, circuito de generación de número aleatorio y programa de ordenador

Country Status (3)

Country Link
US (1) US11907683B2 (es)
EP (1) EP3654173B1 (es)
ES (1) ES2953589T3 (es)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112835554B (zh) * 2020-12-31 2023-11-07 中国科学院信息工程研究所 群组内基于不均匀随机源的随机数生成、再生、追踪方法及电子装置
CN114584393B (zh) * 2022-03-31 2023-10-20 深圳市瑞云科技有限公司 一种自动选择加密协议的方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6628786B1 (en) * 1997-09-30 2003-09-30 Sun Microsystems, Inc. Distributed state random number generator and method for utilizing same
US20060072747A1 (en) * 2001-03-30 2006-04-06 Wood Matthew D Enhancing entropy in pseudo-random number generators using remote sources
US7979707B2 (en) * 2003-07-10 2011-07-12 Emc Corporation Secure seed generation protocol
WO2007026287A1 (en) * 2005-08-30 2007-03-08 Koninklijke Philips Electronics N.V. Method and device for generating random number generator seeds
US20090103726A1 (en) * 2007-10-18 2009-04-23 Nabeel Ahmed Dual-mode variable key length cryptography system
US8699349B2 (en) * 2007-10-26 2014-04-15 Microsoft Corporation Multi-factor optimized routing
US8627083B2 (en) * 2010-10-06 2014-01-07 Motorala Mobility LLC Online secure device provisioning with online device binding using whitelists
US8864578B2 (en) * 2012-10-05 2014-10-21 Scientific Games International, Inc. Methods for secure game entry generation via multi-part generation seeds
US20150372813A1 (en) * 2014-06-23 2015-12-24 Entersekt, LLC System and method for generating a random number
US9569176B2 (en) * 2014-10-30 2017-02-14 Seagate Technology Llc Deriving entropy from multiple sources having different trust levels
US9762479B2 (en) * 2014-11-10 2017-09-12 Maged E. Beshai Distributed routing control in a vast communication network
US9647335B1 (en) * 2015-12-31 2017-05-09 Facebook, Inc. Joint beamforming in point-to-point wireless communication networks
EP3642707B1 (en) * 2017-06-22 2023-05-03 Telefonaktiebolaget LM Ericsson (PUBL) A method for generating operating entropy
CN108306732A (zh) * 2018-04-20 2018-07-20 北京数字认证股份有限公司 一种随机数生成方法、相关设备及系统

Also Published As

Publication number Publication date
EP3654173C0 (en) 2023-08-09
EP3654173A1 (en) 2020-05-20
EP3654173B1 (en) 2023-08-09
US11907683B2 (en) 2024-02-20
US20200167130A1 (en) 2020-05-28

Similar Documents

Publication Publication Date Title
Moghimi et al. {TPM-FAIL}:{TPM} meets Timing and Lattice Attacks
Li et al. Securing SDN infrastructure of IoT–fog networks from MitM attacks
Mohammed et al. A new machine learning-based collaborative DDoS mitigation mechanism in software-defined network
Wustrow et al. Telex: Anticensorship in the network infrastructure
Rothenberger et al. {ReDMArk}: Bypassing {RDMA} security mechanisms
Recabarren et al. Hardening stratum, the bitcoin pool mining protocol
Barbera et al. CellFlood: Attacking Tor onion routers on the cheap
BR112019022714A2 (pt) métodos de troca de pacotes bidirecional por percursos nodais
ES2953589T3 (es) Un método para generar un número aleatorio, circuito de generación de número aleatorio y programa de ordenador
Natarajan et al. Security issues in network virtualization for the future Internet
Quach et al. Investigation of the 2016 linux tcp stack vulnerability at scale
Cohney et al. Practical state recovery attacks against legacy RNG implementations
Abdullaziz et al. HiAuth: Hidden authentication for protecting software defined networks
US11075771B2 (en) Method for generating operating entropy
Berger et al. Flaw label: Exploiting IPv6 flow label
Rao et al. DEC‐LADE: Dual elliptic curve‐based lightweight authentication and data encryption scheme for resource constrained smart devices
Kreutz et al. Increasing the resilience and trustworthiness of openid identity providers for future networks and services
Costea et al. Secure opportunistic multipath key exchange
Walker Internet security
Alturfi et al. A combination techniques of intrusion prevention and detection for cloud computing
Inci et al. Efficient, adversarial neighbor discovery using logical channels on Microsoft Azure.
Salam et al. DC-IIoT: A Secure and Efficient Authentication Protocol for Industrial Internet-of-Things Based on Distributed Control Plane
Majhi et al. An authentication framework for securing virtual machine migration
Dilruba Quantum-safe switch-controller communication in software-defined network
Tennekoon et al. On the effectiveness of IP-routable entire-packet encryption service over public networks (november 2018)