¿Es posible controlar un módulo SRAM a través de los pines GPIO?

13

Me gustaría adjuntar un módulo SRAM al RasPi.

Mi idea es almacenar datos confidenciales (encriptados) en la tarjeta SD pero mantener la clave en un módulo SRAM. Tendría su propia batería de respaldo (o supercondensador ) y un interruptor antisabotaje que borraría el contenido si se abriera el gabinete.

¿Hay alguna forma de interactuar con la SRAM con solo las 8 líneas GPIO disponibles?

El propio módulo SRAM necesitaría una capacidad de al menos 128 bits (el tamaño de la clave AES más pequeña ) pero incluso una memoria de 1 bit de ancho parecería requerir 7 líneas de dirección y una línea de datos más 2 o 3 líneas de control.

Se puede hacer? Estoy pensando que es posible hacer trampa al reutilizar una línea de E / S que fue diseñada para otra cosa.

finnw
fuente

Respuestas:

4

Para instalar SRAM, sugeriría usar un módulo I2C / SPI ( ejemplo , en lugar de usar las líneas GPIO. Aunque es potencialmente más lento, significa que tiene las otras líneas GPIO para otras cosas y su SRAM puede ser bastante grande.

Sin embargo, hay una gran desventaja al usar SRAM. Supongamos que almacena información realmente valiosa en su RPi y soy realmente malo. Supongamos que podría piratear su RPi y ejecutar código arbitrario, luego podría recuperar su clave de la SRAM, que se requiere para descifrar los datos. Este es un riesgo de seguridad. Alternativamente, puede usar un coprocesador AVR / PIC, que comunica a través de I2C / SPI / UART. En lugar de hacer el cifrado / descifrado en el RPi, debe enviar sus datos al coprocesador y asegurarse de que no haya instrucciones para enviar la clave a su RPi. Sin embargo, puede haber una instrucción para generar una nueva clave y, por supuesto, puede tener varias claves almacenadas en el coprocesador. Esto podría hacer un pequeño proyecto genial.

Alex Chamberlain
fuente
Gracias, pero los datos sensibles debe pasar por la CPU de todos modos (por lo que ya se ve comprometida si alguien obtiene acceso a la raíz del Pi.)
finnw
Estoy de acuerdo hasta cierto punto. Si tiene una contraseña en la clave, entonces no hay forma de descifrar los datos que ya ha almacenado.
Alex Chamberlain
2
No tiene sentido. Los datos no estarán más seguros allí que en la memoria normal. Cualquiera que haya rooteado el sistema operativo podría tenerlo en cualquier lugar. Cualquiera que no lo haya podido no pudo conseguirlo en ninguno de los dos lugares.
David Schwartz
@David Schwartz: El punto es que (1) rootear el sistema operativo requiere que abra la caja (2) al abrir la caja se abre un interruptor que borra la SRAM. Quien arraiga el sistema operativo ahora tiene acceso a (a) los datos en la memoria principal y flash y (b) un montón de ceros en la SRAM externa, por lo que ahora no tienen la clave para descifrar los datos flash. Obviamente, aún debemos proteger el sistema operativo de ser rooteado a través de la red (como ya lo hacemos)
Finnw
1
Entonces podrías usar el MCP79410 . Tiene una interfaz en serie de dos pines (reloj y datos), 64 bytes de SRAM y un pin para la entrada de una batería externa. ¡Solo asegúrese de que su interruptor de sabotaje corte la batería y el voltaje de alimentación!
David Schwartz
4

Simplemente puede usar un pequeño microcontrolador para emular la RAM sobre SPI o I2C.

Todos, excepto los micros más pequeños, tendrían 128 bits de RAM para almacenar la clave

p.ej

MSP430G2001 tiene 128 bytes de RAM
PIC12F508 tiene 50 bytes de RAM (16 bytes para clave, 34 bytes libres)
PIC10F202 tiene 24 bytes de RAM (16 bytes para clave, 8 bytes gratis)

Si realmente prefieres RAM serie, también existen

23K640 es 64kbits / 2.7-3.6V

John La Rooy
fuente
2

Asume que solo hay 8 líneas de gpio disponibles en el Pi. De hecho, es posible tener hasta 17.

No conozco los detalles de cómo acceder a ellos, pero puedes encontrar más información aquí.

http://elinux.org/RPi_Low-level_peripherals

David Sykes
fuente
1
Acabo de votar (creo que debería explicarlo), porque prácticamente solo di un enlace, no lo expliqué. (No sé si va a apreciar esto, pero yo denfinately como la gente decía a mi por qué downvoted.)
ACarter
Pensé que saber que puedes obtener más de 8 líneas io es bastante útil, pero agradezco el comentario
David Sykes
0

Puede usar módulos I 2 C SRAM, como el PCF8570P £ 1.50ish 256x8Bit SRAM. Funciona entre 2.5V y 6.0V, tiene un modo de ahorro de energía que consume tan solo 50nA y puede apilarse para crear más RAM si es necesario.

Conéctelo directamente a I2C o a un Master para múltiples dispositivos I2C. Solo usa 2 GPIO, Power y Negative, con la opción de MCU apaga la retención de RAM usando una batería pequeña.

ingrese la descripción de la imagen aquí

La preocupación de seguridad de Alex Chamberlains debe tomarse en serio si desea proteger la clave privada. Posiblemente esté pensando en crear algún tipo de aislamiento en su código que requiera escalación para acceder a la SRAM.

Piotr Kula
fuente