以ce为例开发sd接口的加密卡,请高手赐教一起完成(一)
本人现要完成课题——手机的安全存储。解决手机上可能发生的艳照门事件。没有相关经验,请高人指点,并会把完成的工作放在网上供大家交流,同时给新人一些经验。
平台:WinCE(只是以CE为例,但目的是通用解决方案)
接口:SD接口(以SD接口为例)
硬件组成:CBM3082(SD控制芯片)+FPGA模块+Flash存储芯片+EEPROM。CBM3082是加密卡的控制芯片,用来控制加密卡的逻辑运算。FPGA组成加密卡的加解密运算模块。Flash用于存储数据。EEPROM用于存储用户密钥。
实现目的:SD接口的加密存储卡。以替代现在的普通SD存储卡。(现在手机大多是mini SD卡,但以SD卡以例,暂不考虑实际情况)
功能实现:一、加密卡要实现访问控制(即在手机平台上实现多用户管理)。二、采用公开密钥算法(ECC算法)和对称密钥算法(AES算法)的组合。算法模块由FPGA来实现。三、用户密钥的安全存储。(密钥存储在EEPROM中,任何时候不能以明文方式出现在卡外)
加密过程:加密卡在第一次使用时,生成用户及用户密钥对(用于ECC算法)。用户的访问控制是基于口令的。当用户需要对数据进行加密时,系统随机生成FEK(文件加密密钥),利用AES算法对数据加密。同时,系统利用用户公钥对FEK利用ECC算法进行加密,并将加密后的FEK和加密数据一起存储。解密时,系统利对私钥将加密后的FEK解密出来,再利用FEK对加密数据进行解密。如对过程不了解,可参见Windows下的EFS加密系统原理。
现阶段求助问题:以上仅是解决方案原理。本人没有相关开发经验。一、请问方案中有什么不正确的地方?二、目前要进行工程阶段,针对方案中的实现,都需要做哪些工作,请高手列计划(请详细一些,本人有一定软硬件经验)。三、用将实现过程一步步写下,以示后人。
我自己考虑是否应完全如下问题:一、开发cos(片内操作系统)。问题是成熟的控制芯片(CBM3082)是否允许用户自行开发cos?如果不能,解决方案是什么?二、开发wince下SD智能卡驱动程序。三、开发FPGA内相应加解密模块。
同时有个问题:密钥存储在EEPROM中,是否安全?(除加解卡本身外不可读)
为什么不直接考虑文件系统等级的文件/目录的加密呢?
一旦工艺公开,做成通用产业后,必然会有对应的破解产业。
卡是可以拆开的,只要将对应的FLASH卸下,放到一个卡座上,就能读出内部的数据了。
引用: 引用 2 楼 shuiyan 的回复:
为什么不直接考虑文件系统等级的文件/目录的加密呢?
一旦工艺公开,做成通用产业后,必然会有对应的破解产业。
卡是可以拆开的,只要将对应的FLASH卸下,放到一个卡座上,就能读出内部的数据了。
回二楼,属于科研,不太注重应用。不过您说的文件系统等级的加密,能给个思路吗?
一般卡都是格式化成FAT32。
windows下很多软件都是可以将文件夹/目录加密的,不知道有没有用过?
WINCE下的没做过,可以参考windows下的方法,对文件及目录等进行加密。
如果研究为主,你的方案当然是可行的。卡怎么做都行,加密怎么实现都行,算法怎么设计都行。做好后,就是wince部分的驱动需要对应的修改,不能用普通的SD卡驱动了。
当然,说的简单,你做起来就要花不少时间精力了,毕竟是一个课题了。
今天,这个topic我不得不mark一下。
很感兴趣,现在还没有能力做呢。
最大的破绽是,密钥不管存储在EEPROM还是FLASH中都不安全
谢谢shuiyan!
引用: 引用 7 楼 singlerace 的回复:
最大的破绽是,密钥不管存储在EEPROM还是FLASH中都不安全
应该这么讲,最大的破绽是加密数据和密钥没有分离是吧?应该这么讲,这个课题是将EFS加密系统用硬件在WinCE上进行了实现。楼上可以好的方法提高其安全性?
加密系统的安全性,肯定是在假设加密数据可以被别人获得的前提下来考量的。换句话说,如果你假定别人连加密数据都拿不到,那也没必要做加密系统了。因此关键在于密钥特别是私有密钥的安全性。如果我来设计的话,我会考虑用带片内ROM和FLASH的单片机来实现,比如ATMEL的AVR系列。加密算法放在片内FLASH上,密钥放在片内ROM上。在你的方案里,相当于用单片机替换FPGA和EEPROM,其他的不变。这样加密算法和密钥都是保密的。当然单片机内的数据也有可能被人破解,但这种破解成本是相当高的,一般人就不要想了。
加密的关键是密钥的保护,密钥对方越难取到越好,可以考虑把实际密钥存放在RAM里,ROM或FLASH存放加密过的密钥,或者干脆用一个用电池供电的RAM存放密钥,如果有人要对机器做手脚,只要电池一断电所以数据都Over,或者监视几个关键芯片的针脚电压,一旦发现异常就使用高电压彻底击穿这些芯片
如果考虑EEPROM能被人接触到,那么FLASH本身也就会被人接触到。那就是我在2楼所说的情况:直接把flash拆下来读出来就好了,没什么需要破解的。
但是lz说了:不考虑这种实际情况。
所以,用FPGA和EEPROM无所谓的,反正不会给别人实际用的。
嗯,我设计之初的方案是flash芯片是存放数据的,可以放加密数据和明文数据。EEPROM是存放密钥的,所以问题的关键是EEPROM中的密钥是否能读出及FPGA中的算法是否能读出。
回楼上,不会实际应用是因为方案中存在不少问题。当然还是安全性是首要的
或者这样说,制作一款带有安全存储功能的手机加密存储卡(要求软硬结合)。楼上各位大大的方案会是什么?
引用: 引用 9 楼 singlerace 的回复:
加密系统的安全性,肯定是在假设加密数据可以被别人获得的前提下来考量的。换句话说,如果你假定别人连加密数据都拿不到,那也没必要做加密系统了。因此关键在于密钥特别是私有密钥的安全性。如果我来设计的话,我会考虑用带片内ROM和FLASH的单片机来实现,比如ATMEL的AVR系列。加密算法放在片内FLASH上,密钥放在片内ROM上。在你的方案里,相当于用单片机替换FPGA和EEPROM,其他的不变。这样加密算法和密钥都是保密的。当然单片…
请问,这种方案将来可以实际应该吗?(做成带有安全存储功能的手机加密存储卡)而不是只在开发板上进行实验
引用: 引用 7 楼 singlerace 的回复:
最大的破绽是,密钥不管存储在EEPROM还是FLASH中都不安全
使用SD MMC 自带的数字权限管理,没有这个问题。
引用: 引用 11 楼 navi_dx 的回复:
加密的关键是密钥的保护,密钥对方越难取到越好,可以考虑把实际密钥存放在RAM里,ROM或FLASH存放加密过的密钥,或者干脆用一个用电池供电的RAM存放密钥,如果有人要对机器做手脚,只要电池一断电所以数据都Over,或者监视几个关键芯片的针脚电压,一旦发现异常就使用高电压彻底击穿这些芯片
——————一个比一个方法牛。
这个像u盘似的加密狗是怎么做的?
工行的什么U盾照各位这么说岂不是不安全的?
只要使用独立的NAND FLASH的,都没法解决加密问题的。除非你的产品是一体化,无法拆开的。不要小瞧那些做破解工作的,行行有状元的。
你倒是可以考虑这样一种芯片:加入了某些控制器的NAND,比如SanDisk公司的iNAND,Micron的eMMC,Samsung的OneNand。这些芯片都是一片封装,无法拆的。不过仍然无法解决加密问题。
另外的可以解决加密问题,但是不知道是否能满足你的需求:
SanDisk公司的mDOC,Hynix/Samsung的类似的,但是忘了具体的叫法。而且不是SD接口的。
这些芯片仍然是内部有控制器的NAND,但是是有加密区域的,而且是与NAND区域硬件隔离的。加密的方法也有多种选择。
不过资料网上是不公开的,必须咨询相应的代理商或者原厂。
引用: 引用 16 楼 xajhuang 的回复:
使用SD MMC 自带的数字权限管理,没有这个问题。
EEPROM和FLASH只是存储单元,跟SD MMC不在同一层次。楼主的课题目的就是要解决安全存储,用这个那他的课题就不要做了,直接用人家的就好了。