基于PCI总线加密卡硬件设计
2.2 ispLSI2064部分
为降低数据被解析的风险,应尽量减少使用分离元件。因此在设计中选用了Lattice公司的CPLD ispLSI2064。该芯片采用EECMOS技术,100引脚TQFP封装,拥有2000个PLD门,64个I/O引脚另加4个专用输入,64个寄存器,3个全局时钟,TTL兼容的输入输出信号。2064具有在系统可编程ISP(In-System Programmable)功能,可方便实现硬件重构,易于升级,降低了设计风险,并且安全性能高。PCI9052与单片机之间的8位数据线进行双向数据传输,不能简单地直接相连,需要进行传输方向控制和数据隔离。故用2064作为PCI9052本地信号与单片机信号进行信号传递的接口,图3给出了8位数据信号双向传输的原理图。2064的开发软件ispDesignExpert 8.2版支持VHDL、Verilog HDL、Abel等语言及原理图输入,且通过专用下载电缆可把最终生成的JEDEC文件写入2064,实现编程。在设计时采用了原理图输入的方法。
原理图中用到的BI18的功能描述为:当OE=1时,XB为输出,A为输入,即XB=A;当OE=0时,XB为输入,Z为输出,即Z=XB。FD28的功能描述为:8位D触发器(带异步清除)。结合PCI9052本地读写时序,可以分析得出,在进行读写操作时,图3实现了LAD[7..0]与D[7..0]之间正常的数据传输;在非读写时,双方数据处于正常隔离状态。
2.3 单片机AT89C51部分
单片机采用ATMEL公司的AT89C51。这是一个8位微处理器,采用CMOS工艺,40引脚DIP封装。它含有4K字节Flash和128字节RAM,且自身具有加密保护功能。单片机不进行外部存储器和RAM的扩展,程序存储和运行均在片内完成,有效地保证了加密强度。
图3 LAD[7..0]与D[7..0]之间的数据传输
基于PCI总线的加密卡,依照PCI总线标准2.1版,通过动态分配4字节I/O空间,实现主处理器与卡上单片机之间的握手通信。被加密软件通过访问加密卡,获取软件正常执行的相关权限。在加密卡不存在的情况下,被加密软件因得不到相关授权而无法运行,从而实现了加密功能。在单片机的存储器里,除了存放密钥之外,设计者还可以把被加密软件的部分程序、算法或常数写入单片机的存储器,在加密卡不存在的情况下,被加密软件的功能是不完整的,从根本上防止了软件破解。