来源:中国一卡通网 作者:胡 伟,杜 谦 发布时间:2010-09-30 15:28:49 字体:[大 中 小]
摘 要:研究并设计了一种可联机使用也可单独使用的高安全性无线IC卡读写模块,它以AT89C51单片机为微控制器,以MF RC500芯片为IC卡读写器,构建出了一个使用简单、可联机操作也可单机使用的IC卡读写系统,并对系统中基于MF RC500芯片构成的读写模块,以及微控制器与读写芯片的通讯方式作了详细介绍。本系统的最大特点在于其高安全性的数据加密算法。
引 言
随着门禁系统的发展,它要求更高的安全性、可靠性、高效性、灵活性和方便性。
传统的门禁系统由专门的工作人员对出入人员进行登记放行,这种方法费事、费力又容易出错,而且管理不严格,已经不能满足当前的需要。随着微电子技术的发展,门禁系统逐渐由原来的机械门锁,演变到现在的门禁管理。
目前门禁系统大多使用的是ID卡系统,使用时通过对比主控制器数据库中数据和每张ID卡出厂时就具有的固定序列号,来决定进出门的权利。在这样的系统中, ID卡一旦丢失,那么需要修改在主控制器数据库中的数据才可以消除此卡权限,很不方便。而利用IC卡易擦写性的特点,可以很好地避免此类问题,并且IC卡中还有一定的存储单元,除去必要的密码数据外还可以存储另外一些信息,比如持卡人的信息等,这就方便了管理方的工作,使系统的设计更加智能化。
此外,在此系统的设计过程中充分地考虑了安全问题,数据传输时采用数据加密算法,写入卡中的数据为含密钥的数据,控制器在收到含密钥的数据后再进行解码工作,这种方式必然会提高系统的安全性。
1 非接触式IC卡工作原理
非接触式IC卡可用以存储数字、字母编码信息,具有智能读写和加密通信的功能,卡中存储的需要识别、交互的数据可以随时写入、更改或擦除。它通过无线电波与读写设备进行数据交换,不需要电气触点,读写频率高。卡中的集成电路除了带加密逻辑、串行EEPROM (可擦除、可编程只读存储器) 、微处理器CPU外,还带有射频收发及相关电路。无源非接触式IC卡框图如图1 所示。
非接触式IC卡接收射频脉冲,经整流给电容器充电,再经稳压后作为工作电压。数据解调部分从接收到的射频脉冲中解调出数据送到控制逻辑,控制逻辑接受指令完成存储、发送数据或接收读写器的数据。
图1 无源非接触式IC卡框图
系统以13. 56MHz的工作频率,半双工方式在读写器与IC卡之间双向传递数据。读写器将要发送的信号,编码后加载在频率为13. 56MHz的载波信号上经天线向外发送,进入读写器工作区域的IC卡接收此脉冲信号,一方面卡内芯片中的射频接口模块由此信号获得电源电压、复位信号、时钟信号;同时卡内芯片中的有关电路对此信号进行调制、解码、解密,然后对命令请求、密码、权限等进行判断,若为读命令,控制逻辑电路则从存储器中读取有关信息,经加密、编码、调制后经卡内天线发送给读写器,读写器对接收到的信号进行解调、解码、解密后送至后台计算机处理。若为修改信息的写命令,有关控制逻辑引起的内部电荷泵提升工作电压,提供擦写EEPROM时所需的高压,以便对EEPROM 中的内容进行改写。若经判断其对应的密码和权限不符,则返回出错信息与接触式IC卡相比较。
2 系统硬件设计
系统工作前,通过读写器中的写卡功能对所有的IC卡写入指定的数据,在正式的工作中,由读写卡模块的读卡功能将放入感应区的IC卡中的数据读出,并将数据传输到微处理器中,然后再由微处理器通过对比判断读卡模块上传的数据是否正确,最后根据微处理器得出的结果决定是否开门。系统的原理框图如图2所示。
图2 系统原理图
2. 1 读写卡模块
IC卡读写模块中采用的芯片是MF RC500,它的并行微控制器接口自动检测连接的8 位并行接口的类型,它包含一个易用的双向F IFO 缓冲区和一个可配置的中断输出,这样就为连接各种MCU 提供了很大的灵活性,即使使用非常低成本的器件也能满足高速非接触式通信的要求。
数据处理部分执行数据的并行串行转换,它支持的帧包括CRC和奇偶校验,它以完全透明的模式进行操作,因而支持ISO14443A的所有层,状态和控制部分允许对器件进行配置以适应环境的影响并使性能调节到最佳状态,当与M I2FARE Standard 和M IFARE 产品通信时, 使用高速CRYPTO1 流密码单元和一个可靠的非易失性密匙存储器。模拟电路包含了一个具有非常低阻抗桥驱动器输出的发送部分使得最大操作距离可达100mm。接收器可以检测到并解码非常弱的应答信号 ,由于所采用的接收器已不再是限制操作距离的因素,在此使用的IC卡读写模块具有比较大的科学先进性,比以往使用的ID卡系统拥有更高的性能。
2. 2 微处理器模块
在微处理器上采用了AT89C51单片机为处理芯片。由于系统中IC卡方面的功能已经可以用RC500处理,处理器只负责对读写器的读写和外部通讯,所以此单片机完全符合上述功能。微处理器的P0口连接读写卡模块的一些控制信号端口, P1口连接读写卡模块的数据和地址端口。在单机连接使用时可直接使用微处理器的串口,如果是多机连接时,可再加入串口转RS485模块,这样对每一个使用的系统进行编号处理就构成了多机的联机使用状态,非常适合使用在大型的商场和住宅小区。
3 软件设计
在系统的主程序流程图中主要画出的是微控制器的程序流程,而加密算法作为一个子程序嵌入到主程序当中。在此系统中,微控制器中的程序使用的是C语言,但在编写数据加密系统中使用的是专用的编写程序。由于两种编程语言使用的并不是相同的语言,如何将两种语言在同一系统中体现出各自的功能是本系统软件编写的重点和难点。本系统主程序流程图如图3所示。
图3 主程序流程图
3. 1 微控制器软件设计
此模块中的设计主要是IC卡模块与微控制器之间的通讯设计。其中重要的是密码的写入与读写的操作过程。以下便是本模块的部分原始程序。装载密码的应用程序:
uint8 PCDLoadKey ( uint8 KEYAB, uint8 SecNr, uint8 3
Key)
{
uint8 Status;
SerBfr[CMDTYPE ] = 1;
/ /对IC卡存储芯片写时续操作
SerBfr[COMMAND ] = ′E′;
/ /定义数据长度
SerBfr[LENGTH ] = 8;
/ /写入卡的密码数据
SerBfr[DATA ] = KEYAB;
/ /进行加密操作
SerBfr[DATA + 1 ] = SecNr;
memcopy(&SerBfr[DATA + 2 ] , Key, 6) ;
/ /对写入的数据进行验证
Status =R500_Cmd ( SlvAddr) ;
if ( Status = =OK)
{ / /判断加密操作
Status = SerBfr[ STATUS];
}
return Status;
}
写读卡芯片寄存器的应用程序:
uint8 PCDWriteReg( uint8 RegAddr, uint8 RegValue)
{
uint8 Status;
SerBfr[CMDTYPE ] = 1;
/ /对IC卡存储芯片写时续操作
SerBfr[COMMAND ] = ′F′;
/ /定义数据长度
SerBfr[LENGTH ] = 2;
/ /定义写数据的地址
SerBfr[DATA ] =RegAddr;
/ /调整地址
SerBfr[DATA + 1 ] =RegValue;
/ /调用写数据程序
Status =R500_Cmd ( SlvAddr) ;
if ( Status = =OK)
{ / /验证数据正确性
Status = SerBfr[ STATUS];
}
return Status;
}
读读卡芯片寄存器的应用程序:
uint8 PCDReadReg( uint8 RegAddr, uint8 3 RegValue)
{
uint8 Status;
SerBfr[CMDTYPE ] = 1;
/ /对IC卡存储芯片写时续操作
SerBfr[COMMAND ] = ′G′;
/ /定义数据长度
SerBfr[LENGTH ] = 1;
/ /定义读数据的地址
SerBfr[DATA ] =RegAddr;
/ /调用读数据程序
Status =R500_Cmd ( SlvAddr) ;
if ( Status = =OK)
{
Status = SerBfr[ STATUS];
if ( Status = =OK)
/ /验证数据正确性
3 RegValue = SerBfr[DATA ];
}
return Status;
}
3. 2 数据加密软件设计
私钥加密算法和哈希值加密算法是本设计中用到的加密方法。其中私钥加密中使用单个私钥来加密和解密数据。哈希算法将任意长度的二进制值映射为固定长度的较小二进制值,这个小的二进制值称为哈希值,哈希值是一段数据唯一且极其紧凑的数值表示形式。
在本系统中,数据在读卡系统和微控制器之间相互传输,微控制器接受由读卡系统发送来的用户数据。
数据在读卡系统中,首先对要传送的数据使用哈希算法将得到数据的哈希值,然后使用用户的自有私钥密码对数据和使用哈希算法得到的哈希值加密,然后传到微控制器中,再由微控制器对得到的数据进行解密,恢复传输的原始数据。本模块的设计主要使用的是数据加密算法的专业编程语言。功能是将IC卡模块中的数据进行加密处理,然后将加密的数据传出和对接受的数据进行解密处理。但由于两种语言的不一致性,通过微处理器读取的数据不能直接通过加密算法进行加密处理,所以在此程序中特意编写了与微控制器通讯的通讯端口,将微处理器得到的数据通过此端口传入数据的加密算法程序中,对数据进行加密处理后,再通过此端口将数据传到微处理器中,这样就方便两种语言进行数据的转换和传递。以下便是本模块软件设计的部分原始程序。
生成对称密钥:
Trip leDESCryp toServiceProvider TDES = new Trip leDESCryp2
toServiceProvider( ) ;
TDES. Generate IV ( ) ;
TDES. GenerateKey( ) ;
生成不对称密钥:
RSACryp toServiceProvider RSA = new RSACryp toServicePro2vider ( ) ;
/ /Save the public key information to an RSAParameters
structure.
RSAParameters RSAKeyInfo =RSA. ExportParameters(false) ;
将不对称密钥存储在密钥容器中:
CspParameters cp = new CspParameters( ) ;
cp. KeyContainerName =ContainerName;
RSACryp toServiceProvider rsa = new RSACryp toServicePro2
vider ( cp) ;
/ /得到保存的密钥
RSACryp toServiceProvider rsa = new RSACryp toServicePro2
vider ( cp) ;
rsa. ToXmlString( true) ;
/ /删除保存的密钥
rsa. PersistKeyInCsp = false;
rsa. Clear ( ) ;
4 结束语
现代门禁系统融合各种先进的技术,作为一种出入口安全管理手段,正在得到越来越多的应用。本设计应用成熟的IC卡技术结合数据加密,能很好地达到设计要求,体现了方便、安全、可靠、高效的门禁系统设计理念。本系统的研究正是基于以上几个需求而开发的。目前本系统的调试已经初步完成。由于系统留有通讯扩展接口,所以本系统也可以作为一个小系统,搭配相应的软件就可以应用于大型的带网络的系统中,比如住宅小区、大型商场以及大型的办公楼等。
推荐文章
论坛热帖