É possível controlar um módulo SRAM através dos pinos GPIO?

13

Gostaria de anexar um módulo SRAM ao RasPi.

Minha idéia é armazenar dados confidenciais (criptografados) no cartão SD, mas manter a chave em um módulo SRAM. Teria sua própria bateria de reserva (ou supercapacitor ) e um interruptor anti-violação que apagaria o conteúdo se o gabinete fosse aberto.

Existe alguma maneira de fazer interface com a SRAM apenas com as 8 linhas GPIO disponíveis?

O próprio módulo SRAM precisaria de uma capacidade de pelo menos 128 bits (o tamanho da menor chave AES ), mas mesmo uma memória de 1 bit exigiria 7 linhas de endereço e uma linha de dados mais 2 ou 3 linhas de controle.

Isso pode ser feito? Eu acho que pode ser possível trapacear reutilizando uma linha de E / S projetada para outra coisa.

finnw
fonte

Respostas:

4

Para instalar a SRAM, sugiro usar um módulo I2C / SPI (por exemplo , em vez de usar as linhas GPIO. Embora potencialmente mais lento, isso significa que você tem as outras linhas GPIO para outras coisas e sua SRAM pode ser bastante grande.

Há uma grande desvantagem no uso da SRAM. Suponha que você armazene algumas informações realmente valiosas no seu RPi e eu sou realmente má. Suponha que eu possa invadir sua RPi e executar um código arbitrário e recuperar sua chave da SRAM, necessária para descriptografar os dados. Este é um risco de segurança. Como alternativa, você pode usar um coprocessador AVR / PIC, que você comunica através de I2C / SPI / UART. Em vez de fazer a criptografia / descriptografia no RPi, você envia seus dados ao coprocessador e garante que não haja instruções para enviar a chave ao seu RPi. Entretanto, pode haver uma instrução para gerar uma nova chave e, é claro, você pode ter várias chaves armazenadas no coprocessador. Isso poderia fazer um pequeno projeto legal.

Alex Chamberlain
fonte
Obrigado, mas os dados sensíveis devem passar pela CPU de qualquer maneira (por isso já está comprometida se alguém tem acesso root ao Pi.)
finnw
Eu concordo até um certo ponto. Se você tiver uma senha na chave, não há como descriptografar os dados que você já armazenou.
Alex Chamberlain
2
Não há sentido. Os dados não estarão mais seguros lá do que na memória normal. Qualquer pessoa que enraizasse o sistema operacional poderia obtê-lo em qualquer lugar. Qualquer um que não o conseguisse em nenhum lugar.
David Schwartz
@ David Schwartz: O ponto é que (1) fazer o root do sistema operacional exige que você abra o gabinete (2) abrir o gabinete abre um comutador que apaga a SRAM. Quem quer que faça raiz no sistema operacional agora tem acesso (a) aos dados na memória principal e ao flash e (b) a vários zeros na SRAM externa; portanto, agora eles não têm a chave para descriptografar os dados do flash. Obviamente, ainda temos que proteger o OS de estar enraizada através da rede (como já fazemos.)
finnw
1
Então você pode usar o MCP79410 . Possui uma interface serial de dois pinos (relógio e dados), 64 bytes de SRAM e um pino para entrada de uma bateria externa. Apenas certifique-se de que o seu interruptor contra sabotagem rompa a bateria e a tensão de alimentação!
David Schwartz
4

Você pode usar apenas um pequeno microcontrolador para emular a RAM por SPI ou I2C.

Todos os micros, com exceção dos menores, teriam 128 bits de RAM para armazenar a chave

por exemplo

MSP430G2001 possui 128 bytes de RAM
PIC12F508 possui 50 bytes de RAM (16 bytes para chave, 34 bytes livres)
PIC10F202 possui 24 bytes de RAM (16 bytes para chave, 8 bytes livres)

Se você realmente prefere RAM serial, eles também existem

23K640 é 64kbits / 2.7-3.6V

John La Rooy
fonte
2

Você está assumindo que existem apenas 8 linhas de gpio disponíveis no Pi. De fato, é possível ter até 17.

Não sei os detalhes de como acessá-los, mas você pode encontrar mais informações aqui

http://elinux.org/RPi_Low-level_peripherals

David Sykes
fonte
1
Acabei de votar (acho que deveria explicar), porque você praticamente deu um link, não explicou. (Eu não sei se você vai apreciar este, mas eu denfinately como as pessoas dizendo a minha por que eles downvoted.)
ACarter
Eu pensei que saber que você pode obter mais de 8 linhas de io é muito útil, mas eu aprecio o comentário
David Sykes
0

Você pode usar os módulos I 2 C SRAM, como o PCF8570P £ 1,50ish SRAM de 256x8Bit. Opera entre 2.5V e 6.0V, possui um modo de economia de energia que consome apenas 50nA e pode ser empilhado para criar mais RAM, se necessário.

Conecte-o diretamente ao I2C ou a um Master para vários dispositivos I2C. Usa apenas 2 GPIO, Energia e Negativo, com a opção de MCU desligar a retenção de RAM usando uma bateria pequena.

insira a descrição da imagem aqui

A preocupação com a segurança de Alex Chamberlains deve ser levada a sério se você quiser proteger a chave privada. Possivelmente pensando em criar algum tipo de isolamento no seu código que exija escalação para acessar a SRAM.

Piotr Kula
fonte