微波EDA网,见证研发工程师的成长!
首页 > 通信和网络 > 通信网络技术文库 > 基于MEMS强链和FPGA的USB移动硬盘数据加解密系统

基于MEMS强链和FPGA的USB移动硬盘数据加解密系统

时间:09-25 来源:与非网 点击:
随着信息量的急剧增长,信息安全日益受到人们重视。一个完整的数据加解密系统应该 具备安全可靠的密码认证机制和加解密算法。本文基于MEMS 强链、USB 控制器和FPGA 设 计了一种USB 接口的高效数据加解密系统,采用AES 加密算法。普通IDE 硬盘挂接该系统后 成为安全性极高的加密USB 移动硬盘,其平均数据吞吐率接近普通U 盘,达到10MB/s.
 
1. 系统结构布局

该系统由Cypress CY7C68013 USB2.0 控制器、Altera EP2C35 FPGA 和MEMS 强链构成, 图1 描述了整个系统的硬件布局。

MEMS 强链负责对用户输入的密码进行验证。CY7C68013 USB 控制器内含增强型51 核,它不 但能高效处理USB 协议事务,而且是整个系统的控制中心。EP2C35 FPGA 一端连接USB 控制 芯片的GPIF 接口,一端连接IDE 硬盘,它负责从IDE 总线中区分出控制信号、读写硬盘寄存器的数据信号和读写硬盘扇区的数据信号,然后仅对写入硬盘扇区的数据作加密处理,对读出 硬盘扇区的数据作解密处理。


2. MEMS 强链

MEMS 强链的棘爪能卡住棘轮,从而能精确定位到固定的位置,棘爪装有电磁驱动型电机, 使其具有误码鉴别与自复位功能,因而可用于信息安全,实现密码锁的功能。鉴码机构由两组 电磁型微步进电机驱动反干涉齿轮集A 和B,反干涉码轮集中机械固化了密码。反干涉齿轮集 在正确解码时,码齿之间互相没有接触;当出现错码时,码齿相互干涉,反干涉齿轮集卡死。 使用光电耦合机构,在正确接收到24 位密码时光电能量耦合,系统开启。图2 是MSMS 强链 结构图。

3. 物理密钥与密码认证

  物理密钥是相对于逻辑密钥而言的,逻辑密钥通常以二进制形式存在于芯片内部ROM 区, 容易被破解。而物理密钥固化在机械结构内部。本设计采用的反向啮合齿轮集鉴码机构所蕴含 的密钥就属于物理密钥。它的结构相当隐含,不是专业人士即使知道了鉴码机构,也很难推出 其密码。

  密码认证开始时,USB 控制器把接收到的来自PC 的24 位待验证二进制密码以脉冲的形 式传递给强链。强链的电机会根据脉冲驱动码轮。若密码正确,反干涉齿轮*无摩擦的走通 一周回到原位;只要有一位密码错误,反干涉齿轮*在该位卡死。USB 控制器根据强链的反 馈信号作出判断,如果验证通过,则将该系统枚举成一个可移动磁盘,并把该正确密码传递给 FPGA,作为AES 加密算法的密钥;否则向PC 机返回验证失败的信息。

  4. ATA 协议控制器的实现

  从密码认证通过,枚举开始的那一刻起,USB 控制器得到了对硬盘的访问权。 根据 ATA 协议,对支持Ultra DMA 传输方式的IDE 硬盘而言,操作归结为两种,对硬盘接 口寄存器读写以及对硬盘扇区进行Ultra DMA 批量扇区。为了对硬盘数据进行加解密,我们把 FPGA 插入连接GPIF 接口和硬盘接口的IDE 总线,这样所有控制信号和数据信号都要通过 FPGA,受到FPGA 的监视和控制。

  FPGA 必须实现有限状态机,能够对信号进行协议解析,区 分出那些需要加解密的扇区数据,也就是在Ultra DMA 传输过程中出现在数据总线上的数据。 在PIO 状态时,FPGA 让所有信号保持直通,因而读写硬盘接口寄存器的操作不受任何影响,但状态机监测对硬盘接口寄存器的写入操作。一旦发现写入命令寄存器的命令代码为DMA 读 (0xC8 或0x25)或DMA 写(0xCA 或0x35)命令,则有限状态机进入DMA 状态。

  因为考虑到数据经加解密模块会有200ns 左右的延时,如果控制信号仍然直通一定不能满 足DMA 传输协议的时序要求,所以理想的办法是把控制信号也延时相应的时间。

  延时多少的确定很困难,况且也没有必要,我们采取的方法是设计了三个主要模块:数据 接收模块、数据处理模块和数据发送模块,连成一条处理流水线,这样既能对数据流进行完全 时序化的控制,又能维持较高的数据吞吐。如图3 所示。数据接收模块的任务是把硬盘发送过来的读扇区数据或者USB 控制器发送来的写扇区数 据正确的接收和缓存;数据处理模块的任务是对扇区数据进行加密或解密处理;数据发送模块 的任务是把处理完的结果数据发送出去。


由于数据流是双向的,所以两个方向上各有一条数据 收发流水线。在一次DMA 传输中,只有一条流水线是工作的,且它们暂时获得IDE 总线的控 制权。

  不失一般性,我们讨论下执行DMA 读命令的全过程。首先,在PIO 状态下将DMA 读命 令的代码0xC8(或0x25)写入硬盘的命令寄存器。此后状态机进入DMA 读状态,总线切换给 DMA 读数据接收模块和DMA 读数据发送模块。DMA 读数据接收模块与硬盘进行握手确认, 启动UDMA 读传输,此后每当硬盘DMA strobe 信号(DMA 同步信号)发生跳变,就对16 位 硬盘数据总线进行采样,并更新CRC 接收校验;每采样8 次则整合成一个128 位并行数据,提 供给AES 解密模块,该模块取走这128 位数据开始新一轮AES 解密迭代运算,同时输出前一 轮处理完的128 位解密数据,并拆分为8 个16 位并行数据,陆续存入一个16 位宽的FIFO。与 此同时,DMA 读数据发送模块查询到FIFO 中出现了数据,就开始不断的从中读取,并放在16 位数据总线上提供给USB 控制器,每放一次数据,便翻转一次DMA strobe 电平使得USB 控制 器的GPIF 接口能够同步接收数据,同时更新CRC 发送校验。

  当硬盘把所有指定数量的加密数据都发送给FPGA 后会收到FPGA 的CRC 接收校验反馈, 若与硬盘内部的CRC 校验一致,则硬盘认为这次DMA 读命令被正确执行。

  当 FPGA 把所有处理完的解密数据都发送给USB 控制器后也会收到USB 控制器的CRC 校 验反馈,若与FPGA 内部的CRC 发送校验一致,则可以认为一次完整的含解密的DMA 读命令 被正确执行。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top