| 基于TMS320VC5410和SLE5542型IC卡的DES加密系统 为了满足信息安全和加密型数据采集系统的密钥的有效存储,设计基于 TMS320VC5410系 列DSP和SLE5542型IC卡的DES加密系统。采用MeBSPl接口与CD4066开关电源设计了IC卡读卡器,并通过 CCS开发环境编写、下栽和调试应用程序,完成了DSP与SLE5542卡之间的IS07816-3通信协议。另外通过McBSPO连接MAX232电平 转换器,以软件形式实现了目标板从RS232接口接收来自PC机的明文数据,系统对其进行DES加密后输出密文。实验结果表明系统可以正确读取IC卡中的 64位密钥,完成数据加密后准确地显示在接收端,符合设计要求。
数据加密是为了保证所传输信息的安全而在特定参数(称为密钥)的控制下按照某种规律对原始数据进行的人为扰乱,将其转换成秘密形式的信息。数据加密标准 (Data Encrvption Standard,DES)是第一个广泛应用于商用数据保密的、公开的密码算法,在其公布和正式实施后,成为许多国家政府、银行和标准组织的信息安全处理 标准。然而DES实现信息保密的前提是对于密钥的有效管理,这就要求基于DES的加密系统必须提供可靠、方便的密钥保存设备。同时在近20年,DSP处理 器的性能得到很大改善,软件和开发工具也得到相应发展,价格大幅下降,应用也越来越广泛。本文选用TI公司TMS320VC54x系列DSP,采用软件方 式实现DES加密算法,同时以集成电路卡(Integrated Circuit Card)作为密钥存储设备。为了解决DSP的通用IO口较少的问题,使DSP片上的一些特殊功能引脚工作在通用输入输出引脚状态显得尤为重要。本文结合 DSP运算速度快、片上资源多的特点,研究并实现基于DSP的DES加密系统及其与IC卡以及终端PC机之间的通信协议。
1 DES算法简介 DES作为美国国家标准的加密算法,既可用于加密又可用于解密。其加密过程主要分为3个部分,如图1所示。首先把输入的数据比特流以每64 bit为一组进行分组得到明文x,之后是一个初始置换,IP,记为Xo=IP(x)=LoRo(Lo代表左边32 bit,Ro代表右边32 bit);然后以每一组作为加密单元,在16个子密钥(每个子密钥的长度为48 bit)的控制下根据下列规则计算LiRi(1≤i≤16),进行16轮的非线性变换:  每轮中都有换位和代替运算;最后再经过一个逆初始置换IP-1(为IP的逆变换)输出一组64 bit长的密文。

对于数据较大的文件加密要求芯片具有很高的处理速度。出于保密通信系统的需求,该系统设计以IC卡作为密钥的存储设备,采用TI公司 TMS320VC54x系列DSP实现对来自PC机的明文数据进行DES加密处理。该方案运算速度快、保密性好,具有很高的可扩展性,用于保密的数据采集 系统中,对来自数据采集模块的信号进行DES加密后,传输给PC机。 2 系统硬件设计 结合运算速度,外设接口以及性价比等方面的考虑,选用TI公司TMS320VC54x系列16位定点TMS320VC5410型DSP作为实现DES加密 的硬件平台。它具有较低的功耗与杰出的性能,时钟最高频率可以达到100 MHz。另外,TMS320VC5410片上提供了3个可以设置为GPIO接口的多通道缓冲串口(McBSP),这对外围设备接口子系统的设计至关重要。 系统中除TMS320VC5410基本的工作外围电路如电源晶振模块、Flash模块和JT-AG接口模块以外,还主要包括以下2部 分:1)TMS320VC541O与SLE5542型IC卡片的接口模块,主要用于系统工作时IC卡向DSP传送用于数据加密的密钥和卡片存储的其他一些 用户信息;2)DSP与PC主机的通信接口模块,它是DSP与个人电脑的通信接口,主要用于DSP接收明文数据以及将加密后的数据反馈至PC机。 2.1 McBSP简介 TMS320VC5410片内包含了3个全双工的多通道缓冲串口(Multichannel Buffered Serial Ports,McBSP),分别为McBSP0、McBSPI和McB-SP2。它们可以提供全双工通信、连续数据流的双缓冲数据寄存器、接收和发送独立 的帧和时钟,可以直接和系统中的其他器件接口连接并可以配置为通用IO口。McBSP与外设的数据交换,通过DX引脚发送,RX引脚接收。通信的时钟与帧 信号由CLKX、CLKR、FSX及FSR引脚来控制。T-MS320VC5410对McBSP的控制由2个16 bit的串口控制寄存器(SPCR[1,2])和引脚控制寄存器(PCR)来实现。DSP的CPU或DMA从数据接收寄存器(DRR [1,2])读取接收数据;发送时,向数据发送寄存器(DXR[1,2])写数据,数据写入后通过传输移位寄存器(XSR[1,2]),移位输出到DX 上。同样,从DR上接收的数据,移位存储到接收移位寄存器(RSR[1,2]),并复制到接收缓存寄存器(RBR[1,2])。然后,再由 (RBR[1,2])复制到DRR[1,2]。DRR[1,2]可以由CPU或DMA读出。 2.2 DSP与IC卡连接模块 选用西门子公司SLE5542型卡片,其引脚定义和功能说明如表1所示。它是一种按字节操作的多存储器逻辑加密卡,应答复位符合ISO78 16-3标准。该型卡片内置了3个存储器:32×1 bit的PROM型保护存储器、256×1 bit的EEPROM型主存储器以及32x1 bit的EEPROM型加密存储器。主存储器可重复擦除使用,按字节操作,并分为保护数据区和应用数据区,读出均不受限制,但应用数据区的擦除和写入则受 加密存储器中的密码及密码计数器保护。

为了提高硬件的利用率和解决DSP片上通用IO口较少的问题,本系统设计将MeBSPI配置为通过IO口实现其与IC卡片通信的模块。由于McB-SP引 脚中的DX只能配置用作通用输出脚,DR只能配置用作通用输入脚,不方便程序编写对引脚状态控制。所以在DSP对卡片读写的硬件电路中选择了MeBSP1 的FSR1、CLKR1、CLKX1、和FSX1这4个引脚,它们均可以通过16位的引脚控制寄存器(PCR)配置为通用I/O引脚。FSR1引脚通过 CD4066开关电源芯片来控制SLE5542卡片的上电与掉电;由CLKR1连接卡片的RST触点,卡片复位时改变引脚的高低电平状态;CLKX1引脚 与IC卡片的时钟触点CLK相连,该引脚状态的高低变化为卡片正常工作提供时钟信号;FSX1连接卡片数据I/O触点,负责DSP与IC卡片之间读写命令 字和用户有用数据的传送。注意CLKX1和FSX1引脚要接上拉电阻,且FSX1配置的输入或输出状态要根据DSP与IC卡之间数据流向而定。 为了使McBSP1的相关引脚工作在系统需求的通用I/O状态,首先需要将该串口的控制寄存器SPCR1中的RRST位和SPCR2中的XRST位均设置 为‘O’,使串口复位,串口操作禁止。然后设置引脚控制寄存器PCR中的XIOEN和RIOEN为‘1’,使串口的接收和发送引脚均工作在通用I/0模 式;另外将FSRM、CLKXM和CLKRM位均设置为‘1’,使FSR1、CLKX和CLXR引脚作为通用输出管脚,将要输出的值分别存储在PCR中的 FSRP位、CLKXP和CLKRP;对于FSXM位的设置,则需要根据通信时的具体情况而定。 2.3 DSP与PC通信模块设计 系统设计中选择了McBSP0作为TMS320VC5410从外界PC机接收明文数据和输出密文的通道,直接通过PC机的RS232异步串口与 TMS320VC54 10之间进行加密解密数据的传送。这种方法通过软件实现PC机与DSP之间的串行双工通信,它的硬件设计简单且不会过多占用CPU的时间, 可以实现数据的高速传输。 RS232异步串口采用负逻辑传送数据,以10 V电压状态表示数据‘O’,-10 V电压状态表示数据‘1’;而DSP的IO口则以3.3 V表示高电平‘1’状态或者无数据传送,以0 V表示低电平‘O’状态。因此为了使TMS320VC54lO的多通道缓冲串口与RS232接口进行通信,需要电平转换电路,本文使用了MAXIM公司 MAX232电平转换器,如图3所示。

3 系统软件设计 选用TI公司CCS(Code Composer Studio)作为该加密系统软件设计时的开发和调试工具,使用C语言和汇编混合编程的模式完成软件设计。由于C语言编程具有便于阅读、维护、交流和可移 植性好的特点,因此采用C语言完成整个程序的主框架设计,在对时间要求比较苛刻的地方或对代码运行效率有较大影响的场合采用汇编指令编写。 3.1 DSP读IC卡软件实现 3.1.1 McBSP1串口配置 当把卡片插入卡座时,状态开关选通,并且电路板上提示灯亮表示插卡到位,DSP内存中的读卡状态标志位设置为‘1’。TMS320VC5410开始初始化 McBSP1,使其工作在通用IO口状态,采用子地址寻址的方式对SPCR11(映射地址为0049h,子地址为00h)、SPCR12(子地址为 01h)和PCR1(子地址为0Eh)等寄存器进行配置。配置代码如下: SPCR11=0x0000; SPCR12=0x0000; PCR1=0x3F00; 此时FSR1、FSX1、CLKR1和CLKX1均用作通用输出管脚。把PCR中的FSRP位设置为‘O’,PCR1&=0xFFFB;则卡片Voc触点电平为低,卡片处于掉电状态;通过语句PCR1l=0x0004把FSR1引脚置高电平给卡片上电。 由于DSP的FSX1引脚与卡片的数据I/O触点相连,要求FSX1引脚具有双向传输的功能,但该引脚在同一时刻只能处于输入或输出一种状态,为此定义了以下两个宏实现引脚在输入与输出状态的改变。
3.1.2 复位与复位应答 DSP检测到读卡状态位为& |