具有分区加密功能SD卡固件设计.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
具有分区加密功能SD卡固件设计

具有分区加密功能SD卡固件设计   摘要摘要:设计一种基于SD控制器S281的固件,具有外部认证、分区加密功能。利用控制器中内置3DES和AES加密算法,可以实现对数据的硬件加密,具有更高的安全性。介绍控制器的内部结构及固件实现分区加密的原理,并在固件上实现闪存的均衡算法以及坏块管理,保证闪存的合理使用。经过实验测试,该分区加密SD卡在可靠性测试、读写速率测试和功能实现测试上均满足要求 关键词关键词:SD控制器;分区加密;SD固件设计;NAND Flash DOIDOI:10.11907/rjdk.171096 中图分类号:TP309.7 文献标识码:A文章编号文章编号2017)005016803 0引言 SD卡主要由控制器和闪存芯片组成,其具有体积小、数据传输速率快、可热插拔等优良特性,被广泛应用于便携式设备如电子词典、移动电话、数码相机、汽车导航系统[1]。计算机技术的快速发展使得信息的传递越来越迅速、便捷,同时人们对信息存储介质的安全性要求也越来越高,普通SD卡已不能满足人们对于安全存储的需求。本文设计的SD卡创新性地将SD的存储空间划分为两个分区,分别为普通区和保密区,同一时间只显示一个分区。上电完成后默认显示普通区,若需要切换至保密区则需要通过专用上层软件输入密码完成外部认证。外部认证采用3DES加密算法,数据存储采用目前公认的AES256加密算法[2]。这样不仅满足了普通数据存储的需求,同时满足机密数据保护需求 1硬件架构 1.1总体框架 SD卡主要由存储单元和控制单元组成。本文存储介质采用Micron 4GB NAND Flash存储芯片MT29F32G08CBACA,主控采用华澜微自主研发的符合SD2.0标准的设备控制器S281。本设计总体硬件架构图如图1所示 1.2控制器芯片S281简介 S281固件设计具有一定复杂度,深入理解控制器的内部结构有助于设计出更好的固件。S281拥有一个32bit的嵌入式精简CPU执行算术及逻辑运算,它从ROM和SRAM中获取指令,解码并执行,同时管理CPU及闪存接口的控制和状态信号。CPU控制SD接口、NAND Flash接口、FIFO的总线操作,不同模块间通过不同总线实现数据路由。同时S281控制器内置随机数发生器和硬件加密模块,为后续固件设计提供便利 2固件设计 SD卡的固件主要是辅助或控制硬件完成上电初始化及数据传输[3],而分区加密的SD卡还要在固件上实现分区切换以及全盘数据加密。由于Flash在使用过程中易产生坏块,难以管理,且有擦除次数的限制。本文在固件设计中通过逻辑表动态建立坏块表,完成Flash的坏块管理,根据物理擦除次数选择空块实现Flash的均衡算法,延长闪存的使用周期,实现闪存的合理化使用 2.1?x操作固件设计 SD协议中读命令包括CMD17和CMD18[4],CMD17读取单个数据块到SD接口,而CMD18在指控制器未接收到CMD12(停止命令)前读取多个数据块。当S281接收到CMD17时,首先调用地址解析函数将命令参数中的地址转换成逻辑地址,分别用cluster.logic、block.logic、page.logic代表逻辑簇地址、逻辑块地址和逻辑页地址。再调用地址转换函数建立映射表,通过查找映射表将逻辑地址转换成物理地址,其中映射表包括簇映射表、块映射表和页映射表。根据页映射表中逻辑页所对应的物理页flag(标志位)判断页中是否含有有效数据,即物理页有没有被写过。若页中不存在数据,根据NAND Flash的特性,即页内数据全部为0xFF,则在FIFO中需要将数据传送到SD接口的内存空间,全部用0xFF填充。如flag表明此页已被编辑过,即页中存在有效数据则发送Flash的读命令(00~30h)读取页中的数据,并通过DMA总线将数据传送到FIFO中,此时数据为采用AES256加密的密文,需要调用加解密函数解密FIFO中的数据。最后将FIFO中的数据通过主机数据总线发到SD接口完成单块读操作 当S281接收到CMD18命令后,其操作与CMD17基本一致,只是在没有收到CMD12之前,CMD18固件内部页内逻辑地址会自动增加,并传送数据到SD接口。若页内逻辑地址增加导致需要切换逻辑块或逻辑簇,则需要重新调用地址转换函数建立映射表 2.2写操作固件设计 由于Flash的物理页只能编程一次,不能对物理页多次编写[5],即写入的数据必须是物理页大小的整数倍,所以写操作的固件设计更加复杂。当逻辑页中的数据有部分更新时就需要将新旧数据一起写入物理页中,这就需要在固件上实现Flash的PreCopy和PostCopy两个操作。当写命令的起始逻辑地址不

您可能关注的文档

文档评论(0)

docman126 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档