基于MD5和DES算法的RFID标签签发和验证机制
扫描二维码
随时随地手机看文章
引 言
RFID(Radio Frequency Identification, 射频识别技术) 是自动识别技术的一种,通过无线射频方式进行非接触双向数据通信,对目标加以识别并获取相关数据。它的主要核心部件是电子标签,通过相距几厘米到几米距离内读写器发射的无线电波,可以读取电子标签内储存的信息,识别电子标签代表的物品、人和器具的身份。射频识别技术具有很多突出的优点 :RFID 技术不需要人工干预、不需要直接接触、不需要光学可视即可完成信息输入和处理,可工作于各种恶劣环境, 可识别高速运动物体并可同时识别多个标签,操作快捷方便, 实现了无源和免接触操作,应用便利、无机械磨损、寿命长。目前 RFID 技术已在仓储、物流、交通、海关、追溯、金融等诸多领域得到了广泛应用,其安全特性的重要性不言而喻, 它决定了各个 RFID 应用项目的成败。
RFID标签的签发是整个RFID应用链的起点和源点,是整个RFID应用的安全体系中最重要的核心环节之一,是后续安全要素的基础和前提。同样,RFID标签的验证也是RFID 应用安全体系的核心环节和重要节点。本文通过引入MD5算法和DES算法,从技术上提高了 RFID标签应用的安全特性, 有效减低了RFID标签被伪造、篡改和攻击的风险。
1 MD5和 DES算法
MD5(Message-Digest Algorithm 5[1], 信息摘要算法 5) 用于确保信息传输完整一致,是计算机广泛使用的摘要算法之一。作为典型应用,MD5 可对一段信息(Message)产生信息摘要(Message-Digest),以防止被篡改。MD5 报文摘要算法将任意长度的信息作为输入值,并将其换算成一个 128 位长度的" 指纹信息" 或" 报文摘要" 值来代表这个输入值,并以换算后的值作为结果。
一般情况下,MD5算法是非常安全的。MD5算法的优势在于其使用不需要支付版权费用的,且已有各种计算机语言的算法实现。
DES(DataEncryptionStandard)[2]是在 1975年由 IBM公司公开发表的。DES是对称加密算法体系中的代表,在计算机网络系统中广泛使用。在DES 算法中,明文按 64位进行分组,密钥长 64位,密钥事实上是 56位参与DES运算分组后的明文组和 56位的密钥按位替代或交换的方法形成密文组的加密方法。
DES 算法具有很高的安全性,到目前为止,除了用穷举搜索法对DES 算法进行攻击外,还没有发现更有效的办法。
由于MD5 算法存在一定的碰撞几率[3],为避免对RFID 标签摘要信息的恶意攻击、复制和克隆,本文提出,在对RFID 核心数据进行散列算法获得摘要信息后,用DES 算法予以加密,从而避免对现有 RFID 标签数据的篡改、复制和克隆,以及非授权RFID 标签的出现,提高了RFID 标签的安全可靠性。
2 RFID标签的签发
RFID 标签的签发,是指对对即将进入RFID 应用领域的标签进行发行机构的数字签发,赋予其应用属性和特征,标明该标签的作用域、适用范围和发行机构,避免与其他标签或业务系统的混用、误用、非授权使用等,并尽量使其具备防伪造、防篡改和防攻击等能力的过程。通常,对RFID 的标签需经过系统权限验证、读取预发行标签的基本特征数据并验证,对标签进行数字签名等若干步骤。在本文中,如图 1 所示, 我们将整个签发过程分为:
①验证标签发行权限 ;②验证使用者权限 ;③读标签特征数据 ;④读标签 TID ;⑤对 TID、系统预设的标签编号以及其他的标签特征数据进行MD5 散列算法并进行DES 加密;
⑥将⑤的结果写入标签发行数据区。
本发行签发模式的最大特点是将RFID 标签固有的物理特征数据TID 纳入了MD5 数据摘要并进行了DES 数据加密, 结合后续的验证机制,可有效避免 RFID 标签被伪造、克隆或篡改,提高了RFID 标签的安全防伪能力。
签发过程的部分核心源码实现如下:
Procedure issue
begin
...
tagValue=tagBasicValue+tagTid ;
tagMD5Value :=MD5Encrypt(tagValue);
//MD5 散列,得到信息摘要
tagDESValue :=DESEncrypt(tagMD5Value,Password);
//DES 加密
Res :=WriteLabelBlock(Handle_Scanner, tagDESValue,USER,@mask,@AccessPassword);
// 结果写入标签
...
end ;
3 RFID标签的验证
RFID 标签的验证是RFID 应用系统对本其使用的RFID 的标签的合法性进行确认的过程。本文提出的RFID 标签的验证基本流程如图 2 所示。
RFID 标签验证的基本流程包括:①验证 RFID 读权限;②读标签 TID、标签编号及其他标签特征数据,读标签发行数据区数据 ;③ DES 解密标签散列数据、HASH(TID+ 标签编号 + 其他标签特征数据);④比较解密数据与 HASH 散列数据 ;⑤签名认证完毕。
结合 RFID 标签的签发流程不难看出, 通过对标签固有的物理特征数据TID、标签编号和其他标签特征数据进行HASH 散列,并将结果与解密后的发行签发数据进行比较, 可有效验证 RFID 标签的合法性,降低了 RFID 标签被伪造和非法入侵的风险,提高了 RFID 应用系统的安全保障。
验证过程的部分核心源码实现如下:
Procedure Verification
begin
res :=ReadWordBlock(Handle_Scanner,USER,@IDTemp, @ nCounter);
if res=_OK then
begin
for j :=0 to nCounter do
begin
VerifyValues := VerifyValues +chr(IDTemp [j]);
End ;
TidMD5Value :=DESDecode(VerifyValues,,Password);
//DES 解密
end ;
ReadLabelID(Handle_Scanner,Tid,Tid_len,@mask,@ IDBuffer,@nCounter);// 读
for j :=0 to nCounter do
begin
TidValues := TidValues +chr(IDBuffer [j]);
End ;
If TidMD5Value = MD5Encrypt(TidValues)then
// 比较 MD5 值
Begin
...
End;
end;
结 语
本文针对 RFID 标签的签发和验证提出了基于DES 和HASH 算法的链式结构,有效解决了 RFID 标签可能存在的 可能被伪造、盗用或非法入侵的安全隐患,提升了 RFID 标签 的安全和可用性。 在现有的诸多 RFID 应用体系框架中,还存在着很多安 全隐患,亟待相关 RFID 从业人员从技术或管理角度予以解决, 这也将是我们下一步的工作内容和研究方向。