aes加解密算法(rijndael算法)对待加密的明文先进行分段然后加密,明文的长度可以是l28位、192位或256位。同样,用于加密的密钥长度也有l28位、192位或256位。根据明文及密钥长度不同的组合,加密的轮次有10轮、12轮和l4轮。在圈函数的每一圈迭代中,包括4步变换,分别是字节代换运算、行变换、列混合以及圈密钥的加法变换。经过验证,选用l28位的明文和密钥是几种组合中加解密速度快的[2]。所以在本系统设计中使用的为128位明文和128位密文的组合。由于aes为对称加解密,所以在此文中我们只讨论aes的加密方法,解密就是与aes对称的方式来进行的。在本系统中,使用了fpga的硬件描述语言(vhdl)来实现了aes的加解密算法,aes分别为轮密钥加、字节代换、行移位、列混淆、密钥扩展,下面为5个用硬件描述语言实现的小模块的分别介绍。由于列混淆模块、行移位模块、轮密钥加与文献[4]中算法相同在此不做讨论。此模块为aes中的每一个字节提供了一个非线性代换。任一非零字节被函数所代替。如果x是零字节,y=b就是subbytes变化的结果。在本设计中,为了加快算法速度,将s盒预先写入ram中,直接用地址来指示替代的字节,利用空间来换时间,达到了加快用算的目的。
本设计采用了xilinxip核singleblockram位宽32,深度64,在程序的开始,由用户设置的初始密钥系统按照密钥扩展算法生成的10轮扩展密钥,将生成的密钥按照地址次序从低到高放入ram中,在每一轮执行addroundkey时取出对应轮数的密钥,与明文相加(异或)。在本系统中采用ti公司的cc2420来实现数据的无线通信cc2420工作于免授权的2.4ghz频段,33个16位配置寄存器、15个命令选通寄存器、1个128字节的rxram、1个128字节的txram、1个112字节的安全信息存储器。tx和rxram的存取可通过地址或者用两个8位的寄存器。主机可通过spi总线设置其工作在normal模式,通过spi总线mosi,miso接口对txfifo和rxfifo及状态进行写和读的操作,将数据写入和读出ram来实现与cc2420的数据传输,通过触发cc2420stxon,srxon来实现数据的无线发送和接收。表二是本系统cc2420涉及的寄存器及其功能。
microblaze是一款由xilinx公司开发的嵌入式处理器软核,其采用risc(reducedinstructionsetcomputer)优化架构。它符合ibmcoreconnect标准,能够与ppc405系统无缝连接[3]。microblaze是一个非常简化却具有较高性能的软核,在spartan3e系列fpga中它只占400个slice,相当于10万门fpga容量的1/3。其为哈佛结构,32位地址总线,独立的指令和数据缓存,并且有独立的数据和指令总线连接到ibm的plb总线,使得它能很容易和其它外设ip核一起完成整体功能。支持spi、i2c、pci、can总线,支持重置、硬件异常、中断、用户异常、暂停等机制,可配置uart、gpio等接口。