Biblioteca de cifrado para Arduino

8

Estoy usando un Arduino para leer un teclado y abrir una huelga eléctrica al ingresar el PIN del teclado. Para este boceto, quería usar algún tipo de cifrado ligero para almacenar los PIN en EEProm. ¿Alguien sabe de tal biblioteca? He oído que puede ser posible usar TwoFish.

    
pregunta mad_z

7 respuestas

12

No quieres cifrar las contraseñas (PIN), quieres hash . Cuando alguien ingresa una contraseña, hash esa contraseña, y la comparas con el hash almacenado. La ventaja de este método (utilizado durante más de 30 años) es que incluso si alguien se apodera de la fuente y los hashes, aún no puede decir qué PIN coinciden con los hashes, siempre y cuando elija un valor suficientemente fuerte función de hash .

No desea implementar el cifrado usted mismo: desea utilizar la biblioteca de otra persona, especialmente una con una implementación abierta que haya sido probada por una gran comunidad. El cifrado es difícil, las pruebas son difíciles, y la prueba del cifrado es muy difícil, así que pídale a otra persona que lo haga por usted.

Debería revisar la AVR Crypto Library , que tiene licencia con GPLv3. También hay una implementación de Skein para AVR .

    
respondido por el Craig Trader
9

Ese enlace que Hristos publicó, aunque posiblemente sea útil, ciertamente no cuenta como "cifrado". Es realmente solo "ofuscación".

La criptografía adecuada es notoriamente fácil de equivocar, incluso para las personas que saben las matemáticas.

En respuesta a la publicación original, ¿cuáles son los métodos de ataque que permitirían que alguien tenga acceso a los PIN en el EEProm? Seguramente, si tienen eso en sus dispositivos electrónicos, ¿pueden simplemente "cortar el cable rojo" y abrir la puerta?

Si de alguna manera tiene un sistema en el que los atacantes pueden obtener los contenidos de EEProm sin tener suficiente acceso para abrir su puerta, es probable que desee rediseñarla. Usted podría ver funciones hash de una manera similares al hash de contraseñas de Unix, de esa manera el EEProm no necesita t contener una clave de descifrado. El problema es que el espacio de búsqueda de PIN es muy small: si puedo descargar la versión con hash del PIN, puedo probar rápidamente los 10,000 PIN posibles, sospecho que cualquier portátil moderno se ejecutará en unos segundos.

    
respondido por el bigiain
1

El problema que presento es que si pueden ver sus pines, también pueden ver su programa que cifra / verifica / descifra sus pines. Además, si tienen su chip, ¿no pueden solo alterar el programa para dar siempre un resultado positivo (efectivamente omitiendo la verificación) para cualquier pin ingresado?

    
respondido por el Amos
1

¿Cómo planea descifrar los PIN cifrados para verificar si el usuario ingresó un PIN válido? Deberá almacenar la clave de descifrado ... en ese momento, si el atacante puede leer su eeprom, también puede leer su flash para encontrar la clave de cifrado. Básicamente, hacer todo su cifrado completamente inútil. También, como dijeron otras personas, si él ya tiene la capacidad de leer tu chip, podría escribir un nuevo programa. Es mucho más simple simplemente patear la puerta para abrirla, dudo que alguien se tome la molestia de intentar piratear tu chip.

    
respondido por el davr
1

Aquí es un método de encripción simple en C que se puede transferir fácilmente al Arduino. Esta parece ser la forma más fácil de cifrar datos con los recursos limitados de arduino.

-EDIT- Para mantener la llave fuera de tu programa, puedes hacer que la mitad del PIN sea la clave. Esto significa que su programa toma la mitad de la clave del PIN para descifrar el 1/2 PIN cifrado almacenado en EEProm. Si la clave desencriptada de EEProm coincide con la parte de su pin que no es la clave, la puerta se desbloquearía. Esto solo funcionaría en una situación en la que no sea posible que los intrusos derriben la puerta o reprogramen el Arduino.

    
respondido por el Hristos
1

Estos comentarios son realmente acertados. No hay nada de malo en intentar experimentar para aprender sobre el cifrado, pero este no es realmente un buen proyecto para aprender tales cosas. Realmente quieres un buen libro de texto y una computadora, y como dice @bigiain, la matemática es muy fácil de equivocar.

Para una mejor comprensión de cómo funciona la criptografía y con qué se enfrenta, el Manual de criptografía aplicada es excelente y gratuito: enlace

Si solo quiere asegurar su proyecto, esta es una forma ineficiente de hacerlo. Si está interesado en la criptografía, comience con este libro y una computadora.

    
respondido por el Lou
1

Odio no responder la pregunta mientras hago otra pregunta, pero ...

¿Hay alguna razón por la que su dispositivo no sea a prueba de manipulación? He visto interruptores de botón en los orificios de los tornillos implementados 'en el banco' para detectar el tipo de manipulación que le preocupa. Entonces ... aquí viene el niño con una micro antorcha de butano que logra obtener su chip sin desatornillar nada (o dañar el chip) .. de alguna manera, conocía el diseño de su sistema a prueba de manipulaciones que (también, con suerte) incluye detectar cambios en Luz ambiental y / o sonido. Cuando se quita la cubierta, ambos se vuelven bastante diferentes ... día o noche.

Si ese es el caso, debería ser un sistema de dos partes donde las piezas expuestas se comuniquen con algo donde el cifrado se implementa más fácilmente. Además, las sumas de comprobación (ayuda) representan al niño con la antorcha.

Creo que le estás pidiendo a un destornillador que sea un martillo.

    
respondido por el Tim Post

Lea otras preguntas en las etiquetas

Comentarios Recientes

Pepel ha agregado una biblioteca para Arduino basada en la biblioteca openSSL de LeCate. Permite el cifrado del lado del servidor utilizando la misma funcionalidad de JavaScript que openSSL. En resumen, esto le permite cifrar su tráfico web entre el lado del cliente y el lado del servidor. También hay una biblioteca de cliente ZRTP, que proporciona soporte para RTP, que envuelve completamente a LeCate protocolo RTSP cifrado. Podría ser mi información faltante aquí, pero si bien pensé que resultó bastante agradable... Lees verder