Núcleo de la chispa y abridor de garaje Android. Menos la nube de chispas. (12 / 19 paso)

Paso 12: SparkRandomNumberGenerator

Como comentamos en el paso anterior, el núcleo de la chispa debe tener la capacidad para generar vectores de inicialización y Nonces desafío. Esto requiere un algoritmo PRNG (generador de números pseudoaleatorio). Por suerte, la función de rand48 está disponible en libc.

Sin embargo, debe ser sembrada un PRNG con una semilla aleatoria. Es muy importante para esta semilla a ser impredecible y no se repiten durante un período razonable de tiempo. Si el atacante puede predecir nuestra semilla, pueden predecir los números al azar, que también significa que puede averiguar nuestro desafío Nonces y vectores de inicialización.

Por ejemplo, si usamos siempre la misma semilla para poner en marcha nuestro PRNG, entonces todo el atacante tiene que hacer es capturar cualquier mensaje cifrado y luego fuerza nuestra chispa para reiniciar. Después de que el atacante simplemente repite el mensaje capturado, hasta que la chispa llega el mismo número al azar que se utilizaron para construir el mensaje grabado, y estamos hackeados.

El uso de más de una semilla no resuelve el problema, b y c el mismo ataque descrito aún obras, si el atacante tiene la capacidad de reiniciar continuamente la chispa tantas veces como hay semillas previamente computadas.

Por esta razón siempre debemos mezclar nuestras semillas previamente computados con una verdadera fuente de entropía. Es fácil lo suficiente en un ordenador complejo grande, pero el núcleo de la chispa es demasiado simple que alguna verdadera entropía en su propia memoria, por lo que la entropía debe provenir de una fuente externa.

Hay dedicados dispositivos que puede suministrar esta entropía amplificando el ruido cuántico en una ensambladura de semiconductor parcial inverso o dedicada de fichas de seguridad, pero eso sería excesivo para este proyecto.

En su lugar podemos utilizar la entropía inherente a la velocidad con la que mover paquetes sobre una red, así como utilizando la entropía del tiempo cuando una solicitud es ser precesión.

Algoritmo de

Por lo tanto, el algoritmo utilizado por SparkRandomNumberGenerator para generar un número aleatorio es el siguiente:

La entropía utilizada para sembrar la función PRNG (seed48) se mezcla de 3 fuentes diferentes:

  1. rand48 se siembra con una de 65536 semillas previamente computadas de 48 bits, almacenadas en Flash externo. Cada vez que la chispa se reinicia, se utiliza la siguiente semilla. La rotación de semillas puede desactivarse comentando a ROTATE_SEED en SparkRandomNumberGenerator.h: 35.
  2. 5 veces (por defecto es 8.8.8.8) es hacer ping a un servidor de red especificada. Cada vez que ping se utiliza como una ronda de HMAC (Master_Key, ping_time). Los primeros 128 bits de HMAC resultante es la entropía adicional XORed con cada llamada a rand48. Entropía de la red encuentro etapa es responsable de un retraso bastante larga en la primera solicitud del núcleo de la chispa después de que inicie. Para desactivar esta etapa comente PING_TEST_SERVER en SparkRandomNumberGenerator.h: 34.
  3. El número aleatorio de 128 bits generado es XORed con los primeros 128 bits de HMAC (Master_key, Current_Timestamp). Hasta el momento en que se solicitó el número aleatorio se utiliza para entropía adicional.

Todo lo que necesitamos hacer ahora es guardar las semillas previamente computadas en Flash externo. Ver los pasos a seguir.

Artículos Relacionados

IoT controlada inteligente salida lámpara utilizando el núcleo de la chispa y IFTTT

IoT controlada inteligente salida lámpara utilizando el núcleo de la chispa y IFTTT

Yo quería tener una lámpara de noche que se enciende después del atardecer y apagará en medio de la noche. Los temporizadores disponibles en homedepot u otras ferreterías sólo permite establecer un tiempo. Ya que en USA existe horario, tuvo que ser c
Remoto control humano (proporcionado por el núcleo de la chispa)

Remoto control humano (proporcionado por el núcleo de la chispa)

En este Instructable, usaremos una base de chispa, un TENS (estimulación eléctrica transcutánea del nervio) unidad y un simple relé para controlar remotamente un súbdito humano través de WiFi. Mwuahahaha!El núcleo de la chispa se conecta a tu minion
Núcleo de la chispa / fotón y CloudMQTT

Núcleo de la chispa / fotón y CloudMQTT

En este instructables aprenderá sobre "message queuing" especialmente "MQTT" Protocolo que se utiliza especialmente para aplicaciones de IoT, en nuestro caso el núcleo de la chispa / fotón.Utilizaremos la biblioteca proporcionada por c
Relés de núcleo de la chispa controlado con panel web

Relés de núcleo de la chispa controlado con panel web

¿Cuál es el uso de Internet de las cosas (IoT) si no se controlan artefactos domésticos de internet? ;)Este proyecto surgió de una de las primeras cosas que viene a la mente cuando pensamos en IoT: girar la máquina de café cuando vamos a trabajar por
Núcleo de la chispa activa un arrancador del coche de control remoto por WiFi

Núcleo de la chispa activa un arrancador del coche de control remoto por WiFi

Arrancadores remotos en los coches son impresionantes! Caliente el coche durante el invierno y fresco durante el verano. ¿Es bueno tener un mando a distancia, pero lo que si quiere trabajar más lejos?En mi oficina, mi control remoto no puede llegar h
SparkTwister: Un juego usable con el núcleo de la chispa Spark.io

SparkTwister: Un juego usable con el núcleo de la chispa Spark.io

SparkTwister es un juego de físico para 4 o más jugadores. Cada jugador lleva una pulsera de control simple de un tablero de Spark.io con un escudo de SparkButton y un sensor RGB. Cuando el juego comienza, todos los LEDs en tu pulsera enciende para a
Planta de riego con el núcleo de la chispa

Planta de riego con el núcleo de la chispa

Este proyecto fue inspirado en el original Garduino Instructable. Estoy usando un núcleo de la chispa para publicar la humedad del suelo sobre mis plantas así como la capacidad de distancia de agua cada planta. El Instructable original muestra que se
Núcleo de la chispa - no necesita escribir una aplicación de iPhone!

Núcleo de la chispa - no necesita escribir una aplicación de iPhone!

Bob y yo estamos empezando a trabajar en un nuevo proyecto - más que en un futuro Instructable - y necesita un internet con microcontrolador. Por supuesto el Arduino vino inmediatamente a la mente, sino en conseguir el ' neto puede ser un desafío. Ta
Construcción de un circuito simple con el núcleo de la chispa!

Construcción de un circuito simple con el núcleo de la chispa!

Hemos sido capaces de crear un circuito inalámbrico que fue voluntad de parpadear un LED usando el núcleo de la chispa!Paso 1: Necesitarás algunos materiales...-Núcleo chispa-Tablero de pan sin soldadura-LED bombilla-Resistencia-Alambre-Fuente de ene
Conectar el núcleo de la chispa con un Mac (OS X)

Conectar el núcleo de la chispa con un Mac (OS X)

Hay un poco de recursos sobre cómo conectar su chispa a la Internet o cómo conectarse a la red sin embargo todos ellos parecían que faltan algunas medidas, algunas de las cosas que sin duda se ejecutará en. Espero poder capturar estos al tiempo que m
LED inalámbrico controlador de acuario con chispa. NÚCLEO de la IO en TechShop

LED inalámbrico controlador de acuario con chispa. NÚCLEO de la IO en TechShop

Aquí estoy en TechShop con un increíble controlador micro de Spark.io llamado "Núcleo". Planeaba usar un Arduino para controlar mi acuario de arrecife de agua salada cuando un amigo me mostró la base. Este potente controlador micro pequeño es fá
Núcleo/fotón parte 2 - conexión de la nube de la chispa

Núcleo/fotón parte 2 - conexión de la nube de la chispa

Este instructable fue creado como parte de la noche de construir Instructables con Spark.io en MakeICT.Este es el segundo instructivo en la serie del núcleo de la chispa. Aquí es el primero.Spark.IO ha anunciado el nuevo fotón de chispa que es un pre
Núcleo/fotón parte 1 - configuración de la chispa

Núcleo/fotón parte 1 - configuración de la chispa

Este instructable fue creado como parte de la noche Instructable construir en MakeICT.El núcleo de la chispa es compatible Arduino que puede ejecutar muchas bibliotecas para Arduino, tiene un chip incorporado de WiFi con la antena y a requerimientos
Conseguir un núcleo de chispa sin aplicación de chispa

Conseguir un núcleo de chispa sin aplicación de chispa

El Núcleo de la chispa es una potente herramienta, una CPU de 32 bits, un montón de almacenamiento en chip y fuera del chip para código resultados, requisitos de baja potencia y chip WiFi incorporado y antena. Muchas llamadas de Arduino e incluso muc