是否可以通过GPIO引脚控制SRAM模块?


13

我想将SRAM模块连接到RasPi。

我的想法是将敏感(加密)数据存储在SD卡上,但将密钥保留在SRAM模块上。它会拥有自己的备用电池(或超级电容器)和一个防篡改开关,如果打开了机箱,它将清除其中的内容。

是否只有8条可用的GPIO线与SRAM接口?

SRAM模块本身需要至少128位(最小的AES密钥的大小)的容量,但是即使是1位宽的存储器似乎也需要7条地址线和一条数据线以及2或3条控制线。

能做到吗 我认为通过重新使用为其他目的设计的I / O线可能会作弊。

Answers:


4

要安装SRAM,我建议使用I2C / SPI模块(例如,而不是使用GPIO线。虽然可能较慢,但这意味着您还有其他用于其他用途的GPIO线,并且SRAM可能会很大。

但是使用SRAM有一个很大的缺点。假设您在RPi上存储了一些非常有价值的信息,我的意思是真的。假设我可以入侵您的RPi并运行任意代码,然后可以从SRAM检索您的密钥,这是解密数据所必需的。这是安全隐患。或者,您可以使用AVR / PIC协处理器,通过I2C / SPI / UART进行通信。您可以将数据发送到协处理器,并确保没有用于将密钥发送到RPi的指令,而不是在RPi上进行加密/解密。但是,可能会有一条生成新密钥的指令,当然,您可以在协处理器上存储多个密钥。这可以做一个很棒的小项目。


谢谢,但是敏感数据无论如何都必须通过CPU(因此,如果有人获得对Pi的root访问权,它已经受到威胁。)
finnw 2012年

我在一定程度上同意。如果密钥上有密码,则无法解密已存储的数据。
Alex Chamberlain 2012年

2
毫无意义。那里的数据不会比普通内存中的数据更加安全。植根操作系统的任何人都可以在任一位置获得它。任何人都无法在任何地方得到它。
David Schwartz 2012年

@David Schwartz:关键是(1)操作系统扎根需要您打开外壳(2)打开外壳会打开一个擦除SRAM的开关。现在,无论是谁是root用户,都可以访问(a)主内存和闪存中的数据,以及(b)外部SRAM上的一堆零,因此现在他们没有解密闪存数据的密钥。显然,我们仍然必须保护OS免受通过网络扎根的影响(就像我们已经做的那样。)
finnw 2012年

1
然后,您可以使用MCP79410。它具有两个引脚的串行接口(时钟和数据),64字节的SRAM和一个用于从外部电池输入的引脚。只要确保您的防拆开关切断电池和电源电压即可!
David Schwartz

4

您可以只使用小型微控制器通过SPI或I2C 仿真 RAM。

除了最小的微型以外,所有微型存储器都将具有128位RAM来存储密钥

例如

MSP430G2001具有128 字节的RAM
PIC12F508具有50字节的RAM(密钥为16字节,可用34字节)
PIC10F202具有24字节的RAM(密钥为16字节,可用8字节)

如果您真的更喜欢串行RAM,那么它们也存在

23K64064kbits / 2.7-3.6V


2

您假设Pi上只有8 gpio线可用。实际上,最多可能有17个。

我不知道如何访问它们的详细信息,但是您可以在此处找到更多信息。

http://elinux.org/RPi_Low-level_peripherals


1
我只是投票(我觉得我应该解释),因为您刚才给的只是一个链接,没有解释。(我不知道您是否会欣赏此书,但我绝对喜欢人们告诉我他们为什么
投票反对

我以为知道您可以获得8条以上的io行是非常有用的,但是我对此表示赞赏
David Sykes 2012年

0

您可以使用I 2 C SRAM模块,例如PCF8570P£1.50ish 256x8Bit SRAM。它工作在2.5V至6.0V之间,具有省电模式,其功耗仅为50nA,并可根据需要堆叠以创建更多RAM。

将其直接连接到I2C或多个I2C设备的主机。仅使用2个GPIO(电源和负极),并可以选择使用小电池关闭MCU的RAM保留电源。

在此处输入图片说明

如果您想保护私钥,应该认真考虑Alex Chamberlains的安全问题。可能考虑在代码中创建某种隔离,这需要升级才能访问SRAM。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.