Est-il possible de contrôler un module SRAM via les broches GPIO?

13

Je voudrais attacher un module SRAM au RasPi.

Mon idée est de stocker des données sensibles (cryptées) sur la carte SD mais de garder la clé sur un module SRAM. Il aurait sa propre batterie de secours (ou supercondensateur ) et un interrupteur anti-sabotage qui effacerait le contenu si le boîtier était ouvert.

Existe-t-il un moyen de s'interfacer à la SRAM avec uniquement les 8 lignes GPIO disponibles?

Le module SRAM lui-même aurait besoin d'une capacité d'au moins 128 bits (la taille de la plus petite clé AES ) mais même une mémoire large de 1 bit semble nécessiter 7 lignes d'adresse et une ligne de données plus 2 ou 3 lignes de contrôle.

Peut-on le faire? Je pense qu'il peut être possible de tricher en réutilisant une ligne d'E / S conçue pour autre chose.

finnw
la source

Réponses:

4

Pour installer SRAM, je suggère d'utiliser un module I2C / SPI ( exemple , au lieu d'utiliser les lignes GPIO. Bien que potentiellement plus lent, cela signifie que vous avez les autres lignes GPIO pour d'autres choses et que votre SRAM peut être assez volumineuse.

Il y a cependant un gros inconvénient à utiliser SRAM. Supposons que vous stockiez des informations vraiment précieuses sur votre RPi et je suis vraiment méchant. Supposons que je puisse pirater votre RPi et exécuter du code arbitraire, alors je pourrais récupérer votre clé de la SRAM, qui est nécessaire pour déchiffrer les données. Il s'agit d'un risque pour la sécurité. Alternativement, vous pouvez utiliser un coprocesseur AVR / PIC, que vous communiquez via I2C / SPI / UART. Au lieu de faire le chiffrement / déchiffrement sur le RPi, vous enverriez vos données au coprocesseur et vous assurer qu'il n'y a aucune instruction pour envoyer la clé à votre RPi. Il peut cependant y avoir une instruction pour générer une nouvelle clé, et bien sûr, vous pouvez avoir plusieurs clés stockées sur le coprocesseur. Cela pourrait faire un petit projet sympa.

Alex Chamberlain
la source
Merci, mais les données sensibles doivent de toute façon passer par le CPU (donc elles sont déjà compromises si quelqu'un obtient un accès root au Pi.)
finnw
Je suis d'accord jusqu'à un certain point. Si vous avez un mot de passe sur la clé, il n'y a aucun moyen de décrypter les données que vous avez déjà stockées.
Alex Chamberlain
2
Il est inutile. Les données n'y seront pas plus sécurisées qu'en mémoire normale. Quiconque a rooté le système d'exploitation pouvait l'obtenir à n'importe quel endroit. Quiconque n'a pas pu l'obtenir dans aucun des deux endroits.
David Schwartz
@David Schwartz: Le fait est que (1) l'enracinement du système d'exploitation vous oblige à ouvrir le boîtier (2) l'ouverture du boîtier ouvre un commutateur qui efface la SRAM. Quiconque enracine le système d'exploitation a désormais accès à (a) les données de la mémoire principale et du flash et (b) à un tas de zéros sur la SRAM externe, alors ils n'ont plus la clé pour décrypter les données flash. De toute évidence, nous devons toujours protéger le système d'exploitation contre l'enracinement via le réseau (comme nous le faisons déjà.)
finnw
1
Ensuite, vous pouvez utiliser le MCP79410 . Il possède une interface série à deux broches (horloge et données), 64 octets de SRAM et une broche pour l'entrée d'une batterie externe. Assurez-vous simplement que votre interrupteur anti-sabotage coupe la batterie et la tension d'alimentation!
David Schwartz
4

Vous pouvez simplement utiliser un petit microcontrôleur pour émuler la RAM sur SPI ou I2C.

Tous les micros, sauf les plus petits, auraient 128 bits de RAM pour stocker la clé

par exemple

MSP430G2001 a 128 octets de RAM
PIC12F508 a 50 octets de RAM (16 octets pour la clé, 34 octets libres)
PIC10F202 a 24 octets de RAM (16 octets pour la clé, 8 octets libres)

Si vous préférez vraiment la RAM série, elles existent aussi

23K640 est 64kbits / 2,7-3,6V

John La Rooy
la source
2

Vous supposez qu'il n'y a que 8 lignes gpio disponibles sur le Pi. En fait, il est possible d'en avoir jusqu'à 17.

Je ne connais pas les détails pour y accéder, mais vous pouvez trouver plus d'informations ici

http://elinux.org/RPi_Low-level_peripherals

David Sykes
la source
1
Je viens de rétrograder (je pense que je devrais expliquer), parce que vous venez de donner un lien, je ne l'ai pas expliqué. (Je ne sais pas si vous apprécierez cela, mais j'aime bien les gens qui me disent pourquoi ils ont voté.)
ACarter
Je pensais que savoir que vous pouvez obtenir plus de 8 lignes io est assez utile, mais j'apprécie le commentaire
David Sykes
0

Vous pouvez utiliser des modules I 2 C SRAM, comme le PCF8570P £ 1.50ish 256x8Bit SRAM. Il fonctionne entre 2,5 V et 6,0 V, dispose d'un mode d'économie d'énergie qui consomme aussi peu que 50 nA et peut être empilé pour créer plus de RAM si nécessaire.

Connectez-le directement à I2C ou à un maître pour plusieurs appareils I2C. Utilise uniquement 2 GPIO, Power et Negative, avec l'option de mise hors tension du microcontrôleur avec une petite batterie.

entrez la description de l'image ici

Le problème de sécurité d'Alex Chamberlains doit être pris au sérieux si vous souhaitez protéger la clé privée. Penser éventuellement à créer une sorte d'isolement dans votre code qui nécessite une escalade pour accéder à la SRAM.

Piotr Kula
la source