¿Es una buena idea generar números aleatorios usando la cámara de un teléfono inteligente?

38

Perdone mi ignorancia sobre el tema, pero deseo saber más y hacer preguntas (estúpidas) es una forma. Estaba leyendo enlace y esta idea me vino a la cabeza (antes del fragmento sobre las lámparas de lava, que puede ser la misma idea, tal vez no, recuerda, soy ignorante :)

Teniendo en cuenta lo siguiente:

  • Cosas como las propiedades atmosféricas y la vida "real" en general son supuestamente aleatorias en el sentido más verdadero, cuentan como TRNG.
  • Los generadores de números pseudoaleatorios de las computadoras no son tan aleatorios (de ahí el pseudo) y, a juzgar por todas las revelaciones de NSA / GHCQ últimamente, no es de fiar.
  • Los teléfonos inteligentes tienen cámaras cada vez más sensibles.
  • Las fotos de teléfonos inteligentes generalmente se toman a mano.

¿Tomar una foto con un teléfono inteligente y usar los bytes del archivo RAW sería una buena manera de obtener un gran número aleatorio rápidamente? La sensibilidad y la posición naturalmente diferente harían que incluso varias fotos de la misma cosa fueran muy diferentes, y las fotos son del mundo real, por lo que son tan aleatorias como las cosas a las que apuntan (antes de la pérdida introducida por la cámara).

Si es una buena manera de obtener un gran número aleatorio, podría ver que sería una manera accesible y fácil para que un Joe promedio genere una clave. Un beneficio adicional sería que podría usarse como una clave, o un número aleatorio para una clave, que el titular podría reconocer de vista y, sin embargo, también podría negar que era una clave, ya que es solo una foto.

Finalmente, dado que las fuerzas del mercado y el aumento de la tecnología significan que las cámaras más sensibles se generalizarán, ¿sería esta una forma de protegerse contra la introducción de fallas intencionales? Imagino que la mala calidad de la cámara se notaría rápidamente y se podría probar fácilmente (el artículo vinculado dio un ejemplo de cómo los humanos son buenos para probar cosas visualmente), y sería una noticia que dañaría la adopción de un modelo (sucedió que Apple al menos una vez, aunque no estoy seguro de si eso desanime a la gente). Por lo tanto, las fuerzas del mercado podrían actuar contra la introducción de fallas.

Si esto es estúpido, diga por qué (trate de ser amable :) y apúnteme a un recurso para obtener más información. Si no es así, voy a escribir una aplicación para hacer esto :)

Editar:

Gracias a todos los que respondieron o comentaron, me han dado algunas ideas y otras cosas para considerar y analizar.

    
pregunta Iain 14.09.2013 - 12:31
fuente

4 respuestas

38

Usar una cámara como fuente aleatoria es una buena idea (no una nueva, pero es una buena idea). Sin embargo, debe hacerlo correctamente: tome la foto, luego córtela con una función hash criptográfica por ejemplo SHA-256. Luego use la salida como semilla para un PRNG criptográficamente seguro para generar tantos bytes aleatorios como sea necesario.

El uso del archivo tamaño producirá muy pocos bits de entropía de su imagen: si una imagen típica se comprime a un tamaño alrededor de 2 MB, más o menos 128 kB en promedio, entonces obtendrá como máximo 18 bits de entropía del tamaño. Con una función de hash, puedes cosechar toda la entropía que hay en la propia foto, hasta el límite interno de la función de hash (aproximadamente 255 bits para una salida de 256 bits), que es mucho más que lo que es necesario para todos los realistas. propósitos.

Una sola foto debe contener mucha entropía, a menos que la salida de la cámara esté cubierta de alguna manera y la imagen sea uniformemente negra. Sin embargo, una advertencia: si el hash de la foto se usa como un secreto (y ese es el caso si quiere usarlo como semilla para que un PRNG produzca claves), entonces esa foto debe permanece confidencial: hash it, pero nunca deja que se escriba como un archivo en la memoria Flash del teléfono. La foto debe obtenerse solo en RAM, con hash y luego descartada. No sé qué API para aplicaciones de captura de fotos tiene en un teléfono típico; Parece probable que puedes obtener la foto sin tener que tocar Flash de ninguna manera, pero te invito a que la compruebes.

    
respondido por el Thomas Pornin 14.09.2013 - 15:07
fuente
9

¿Tomar una foto con un teléfono inteligente y usar los bytes del archivo RAW sería una buena manera de obtener un gran número aleatorio rápidamente?

  

En sí mismo, no. Las cámaras digitales están diseñadas para capturar señales en lugar de ruido, por lo que tanto el rango dinámico como la compresión de la paleta están diseñados para adaptarse a la visión humana óptima; Distribución no uniforme del ruido. Si bien una imagen de archivo RAW es una buena idea, deberá omitir el firmware de la cámara, ya que el firmware "ayuda" al hacer una gran parte de la optimización de esta imagen en el chip. Es posible que los datos suministrados al sistema operativo ya hayan sido optimizados y limpiados. de acuerdo a varios criterios.

     

Pero si puede usar directamente el sensor CCD y sintonizarlo para obtener el máximo Ruido (y señal mínima) dentro de un contenedor sin luz: se puede crear una fuente de ruido decente.

El titular podría reconocer de vista y, sin embargo, también podría negar que era una clave.

  

Lamentablemente no , a menos que la clave no sea la imagen completa, sino un flujo de datos esteganográficos incrustados dentro de la imagen, como una imagen al azar, bueno, al azar. Lo que plantearía preguntas en sí mismo para un atacante sospechoso .

Cámaras más sensibles ... ¿sería esta una forma de protegerse contra las fallas intencionales que se introducen?

  

Hay tres cosas diferentes a considerar con las cámaras "más sensibles" y las fuerzas del mercado:

     
  1. Para los clientes, esto significa más megapíxeles; que es una mejora en el ancho de banda del sensor pero no dice nada sobre su entropía inherente (o relación señal / ruido).
  2.   
  3. Para los clientes, "más sensible" puede significar más respuesta a diferentes condiciones de luz. Esto significa más procesamiento de imágenes con la intención de reducir el ruido y los artefactos del sensor.
  4.   
  5. Las personas y, por lo tanto, las fuerzas del mercado tienden a no ser conscientes de cómo los humanos son buenos en los patrones de concordancia y cómo malos los humanos están detectando ruido aleatorio.   
    • Podría manipular los valores de los enteros de píxeles de una manera que pudiera subvertir casi por completo su uso como fuente de números aleatorios criptográficos sin que sea evidente para el ojo del usuario. Por ejemplo, considere una imagen en escala de grises de 10x10 píxeles con un rango de 256 valores. Podría reducir a la mitad o peor (no recuerdo las matemáticas exactas) el nivel de entropía simplemente redondeando cada valor de píxel al valor par más cercano. El ojo humano no podría detectar diferencias tan pequeñas.
    •   
  6.   

Otros pensamientos

El público sin duda podría beneficiarse de una aplicación TRNG para un teléfono móvil. Los teléfonos móviles tienen una amplia variedad de periféricos útiles para la recolección de ruido. La limitación es si estas fuentes son accesibles a un nivel bajo de abstracción.

Probar que una fuente analógica es aleatoria es bastante difícil ; una fuente analógica procesada por un mecanismo inherentemente digital aún más. Cada chip de cámara puede ser sutilmente diferente (incluso en un monocultivo de iPhone), por lo que una aplicación TRNG tendría que tener estas complejas estadísticas integradas para poder "sintonizar" para cada teléfono.

Hay un antagonismo comprensible hacia "rodar tu propio cripto" y crear un RNG es similar; pero si no existe una solución bien verificada publicada para el dominio del problema específico, entonces una aplicación de código abierto es tan buena como otra para iniciar el proceso de revisión por pares.

    
respondido por el LateralFractal 14.09.2013 - 13:42
fuente
4

Es cierto aleatorio, pero obviamente un poco excesivo. El lanzamiento de la cámara y la toma de fotografías es un poco lento, y el usuario se sorprendería si descubriera que la cámara se enciende y se apaga constantemente.

Los teléfonos inteligentes tienen muchos otros sensores que puede utilizar, como el acelerómetro, el sensor de luz ambiental, creo que son mucho más eficientes y, con suerte, más eficientes energéticamente. Creo que he leído en alguna parte que la CPU usa su termistor para adquirir datos aleatorios reales, esta es una gran idea.

    
respondido por el zerox 14.09.2013 - 17:23
fuente
2

Además de la cámara y el micrófono, tenemos una fuente más de enthropy: el usuario o, más específicamente, los intervalos de tiempo de las acciones del usuario.

Le sugiero que combine la imagen en sí, la fecha en que se tomó y el tiempo desde el inicio del sistema (que está disponible en la mayoría de los sistemas).

    
respondido por el Kirill Gamazkov 24.04.2014 - 10:55
fuente

Lea otras preguntas en las etiquetas