È possibile controllare un modulo SRAM tramite i pin GPIO?


13

Vorrei collegare un modulo SRAM a RasPi.

La mia idea è quella di archiviare dati sensibili (crittografati) sulla scheda SD ma mantenere la chiave su un modulo SRAM. Avrebbe una propria batteria di backup (o supercondensatore ) e un interruttore antimanomissione che cancellerebbe il contenuto se il contenitore fosse aperto.

Esiste un modo per interfacciarsi alla SRAM con solo le 8 linee GPIO disponibili?

Lo stesso modulo SRAM avrebbe bisogno di una capacità di almeno 128 bit (la dimensione della chiave AES più piccola ) ma anche una memoria larga 1 bit sembrerebbe richiedere 7 linee di indirizzo e una linea di dati più 2 o 3 linee di controllo.

Si può fare? Sto pensando che potrebbe essere possibile imbrogliare riutilizzando una linea I / O progettata per qualcos'altro.

Risposte:


4

Per installare SRAM, suggerirei di utilizzare un modulo I2C / SPI ( esempio , invece di utilizzare le linee GPIO. Sebbene potenzialmente più lento, significa che hai altre linee GPIO per altre cose e la tua SRAM può essere abbastanza grande.

Tuttavia, c'è un grosso svantaggio nell'uso di SRAM. Supponiamo che tu memorizzi alcune informazioni davvero preziose sul tuo RPi e io sono davvero cattivo. Supponiamo che potrei hackerare il tuo RPi ed eseguire codice arbitrario, quindi potrei recuperare la tua chiave dalla SRAM, che è necessaria per decrittografare i dati. Questo è un rischio per la sicurezza. In alternativa, è possibile utilizzare un coprocessore AVR / PIC, che si comunica su I2C / SPI / UART. Invece di eseguire la crittografia / decrittografia su RPi, invieresti i tuoi dati al coprocessore e ti assicureresti che non ci siano istruzioni per inviare la chiave al tuo RPi. Tuttavia, può esserci un'istruzione per generare una nuova chiave e, naturalmente, è possibile che sul coprocessore siano memorizzate più chiavi. Questo potrebbe rendere un piccolo progetto interessante.


Grazie, ma i dati sensibili devono comunque passare attraverso la CPU (quindi è già compromesso se qualcuno ottiene l'accesso root al Pi.)
finnw,

Sono d'accordo in una certa misura. Se si dispone di una password per la chiave, non è possibile decrittografare i dati già memorizzati.
Alex Chamberlain,

2
Non ha senso. I dati non saranno più sicuri lì che nella memoria normale. Chiunque abbia effettuato il root del sistema operativo potrebbe trovarlo in entrambi i posti. Chi non è riuscito a trovarlo in nessuno dei due posti.
David Schwartz,

@David Schwartz: il punto è che (1) il rooting del sistema operativo richiede l'apertura del case (2) l'apertura del case apre un interruttore che cancella la SRAM. Chiunque esegua il root del sistema operativo ora ha accesso a (a) i dati nella memoria principale e flash e (b) un gruppo di zeri sulla SRAM esterna, quindi ora non hanno la chiave per decrittografare i dati flash. Ovviamente dobbiamo ancora proteggere il sistema operativo dal root sulla rete (come già facciamo).
fin

1
Quindi è possibile utilizzare MCP79410 . Ha un'interfaccia seriale a due pin (orologio e dati), 64 byte di SRAM e un pin per l'input da una batteria esterna. Assicurati solo che l'interruttore antimanomissione sia in grado di ridurre sia la batteria che la tensione di alimentazione!
David Schwartz,

4

Potresti semplicemente usare un piccolo microcontrollore per emulare la RAM su SPI o I2C.

Tutti i micro, tranne i più piccoli, avrebbero 128 bit di RAM per memorizzare la chiave

per esempio

MSP430G2001 ha 128 byte di RAM
PIC12F508 ha 50 byte di RAM (16 byte per chiave, 34 byte liberi)
PIC10F202 ha 24 byte di RAM (16 byte per chiave, 8 byte liberi)

Se preferisci davvero la RAM seriale, esistono anche

23K640 è 64kbit / 2.7-3.6V


2

Stai assumendo che ci siano solo 8 linee gpio disponibili sul Pi. In effetti è possibile avere fino a 17.

Non conosco i dettagli su come accedervi, ma puoi trovare maggiori informazioni qui

http://elinux.org/RPi_Low-level_peripherals


1
Ho appena annullato il voto (sento che dovrei spiegare), perché praticamente hai appena dato un link, non ho spiegato. (Non so se lo apprezzerai, ma a me piace decisamente la gente che mi dice perché hanno
votato verso il basso

Pensavo che sapere che fosse possibile ottenere più di 8 linee io fosse abbastanza utile, ma apprezzo il commento
David Sykes,

0

È possibile utilizzare i moduli SRAM I 2 C, come la SRAM PCF8570P £ 1,50 e 256x8 bit. Funziona tra 2,5 V e 6,0 V, ha una modalità di risparmio energetico che assorbe fino a 50nA e può essere impilata per creare più RAM se necessario.

Collegalo direttamente a I2C o ad un Master per più dispositivi I2C. Utilizza solo 2 GPIO, Power e Negative, con l'opzione MCU di spegnere la conservazione della RAM usando una piccola batteria.

inserisci qui la descrizione dell'immagine

Le preoccupazioni sulla sicurezza di Alex Chamberlains dovrebbero essere prese sul serio se si desidera proteggere la chiave privata. Probabilmente stai pensando di creare un qualche tipo di isolamento nel tuo codice che richiede l'escalation per accedere alla SRAM.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.