射频识别系统中由于卡片和读写器并不是固定连接为一个不可分割的整体,二者在进行数据通讯前如何确信对方的合法身份就变得非常重要。根据安全级别的要求不同,有的系统不需认证对方的身份,例如大多数的TTF模式的卡片;有的系统只需要卡片认证读写器的身份或者读写器认证卡片的身份,称为单向认证;还有的系统不仅卡片要认证读写器的身份,读写器也要认证卡片的身份,这种认证我们称为相互认证。Mifare系列卡片中的认证就是相互认证。

最常见的认证是使用密码或者叫口令,就像特务见面,只要说对了口令(密码)就可以确信对方是自己人。直接说口令(密码)存在巨大的风险,万一被别人听到了后果不堪设想,所以最好不要直接说出密码,而是通过某种方式(运算)把密码隐含在一串数据里,这样不相干的人听到了也不知道什么意思。为了让隐含着密码的这一串数据没有规律性,对密码运算时一定要有随机数的参加。于是最常见的相互认证是双方见面时一方给另一方一个随机数,让对方利用密码和约定的算法对这个随机数进行运算,如果结果符合预期则认证通过,否则认证不通过。

“3”真是一个神奇的数字:做事的时候“三思而后行”才不会犯大错;刘备“三顾茅庐”才把诸葛亮请出山;TCP协议中经过“三次握手”就可以确信双方的连接是成功的。Mifare系列卡片采用的相互认证机制也被称为“三次相互认证”,如下图所示。


卡片认证读写器的合法性,先向读写器发送一个随机数,读写器用事先约定的有密码参与的算法对随机数进行运算,然后把运算的结果回送给卡片,卡片收到后检查这个结果对不对,如果对就通过认证,不对就没有通过认证,其情形就是上图中的图a。

读写器认证卡片也是向卡片发送一个随机数,卡片用事先约定的有密码参与的算法对随机数进行运算,然后把运算的结果回送给读写器,读写器收到后检查这个结果对不对,如果对就通过认证,不对就没有通过认证,其情形就是上图中的图b。

可见卡片和读写器认证对方时都是给对方一个随机数,对方返回对随机数的运算结果。这样的“一来一回”我们称之为“两次相互认证”。那么卡片与读写器互相认证就需要两个“一来一回”,应该称为“四次相互认证”才对啊?为什么是“三次相互认证”呢?上图中表现的很明显,读写器在回送对卡片随机数的运算结果时搭了一次便车,把自己认证卡片的随机数也一同送了过去,从而减少了一次数据传送,四次相互认证就变成了“三次相互认证”。

完整的相互认证过程如下:卡片先向读写器发送一个随机数B,读写器用事先约定的有密码参与的算法对随机数B进行运算,然后把运算的结果连同随机数A一起送给卡片,卡片收到后先检查读写器对随机数B运算的结果对不对,如果不对就不再往下进行,如果正确就对随机数A用事先约定的有密码参与的算法进行运算,然后把运算的结果送给读写器,读写器收到后检查这个结果对不对,如果对就通过认证,不对就没有通过认证,其情形就是上图中的图c。

认证的过程中多次提到“事先约定的算法”,到底是什么样的算法呢。这个没有具体规定,但有一个要求是必须的,就是这个算法一定要有密码和随机数的参与。比如Desfire中使用3DES算法,卡片的主密钥作为DES密钥对随机数进行DES运算。双方使用的“算法”以及“参加运算的密码”可以相同,也可以不同,这要看双方的约定。

认证完成后随机数也并不是就没有用了,这两个随机数的组合可以作为下一步操作的数据加密密钥,Desfire中就是这样。

本文来自新浪网

射频识别技术漫谈(12)——三次相互认证【worldsing笔记】的更多相关文章

  1. 射频识别技术漫谈(6)——通讯协议概述【worldsing笔记】

    通讯协议是通讯的双方或多方在交流时遵守的规矩,包括谁先发起通讯,先交流什么,后交流什么,一方如何问,另一方如何答等.在这里通迅的双方指的是读写器和卡片. 首先是谁先发起通讯,很显然有两种,读写器先发言 ...

  2. 射频识别技术漫谈(3)——能量、调制【worldsing 笔记】

    无源和免接触是非接触式IC卡相对于接触式IC卡的两大特点.无源是指卡片上没有电源,免接触是指对卡片的读写操作不必和读写器接触.非接触式智能卡也是IC卡,而卡上的IC即集成电路工作时肯定是需要电源的,卡 ...

  3. 射频识别技术漫谈(9)——动物标签HDX【worldsing笔记】

    半双工(HDX,Half Duplex)技术是ISO11784/11785中规定的另一种标签与读写器之间的通讯方式.读写器先打开射频场对标签充电以激活标签,然后关闭磁场,标签在读写器磁场关闭的情况下向 ...

  4. 射频识别技术漫谈(15)——Mifare1的安全性及7字节序列号M1卡【worlsing笔记】

    Mifare1的安全性主要指卡中数据的安全性,要求卡中的数据不能被非法修改或窃听.数据的安全性主要使用加密技术来保证,加密技术有两个关键因素:加密算法和密钥.现代加密技术的一大特点是加密算法公开,如果 ...

  5. 射频识别技术漫谈(10)——识别号的格式变化【worldsing笔记】

    从事RDID行业的朋友经常会遇到这样的情况,同一张ID卡,在不同厂家生产的读卡器上读出的识别号完全不一样,有时甚至差之千里.ID卡的识别号一般是在出厂时被固化在卡片的ROM里,本身是不会改变的,问题出 ...

  6. 射频识别技术漫谈(15)——Mifare1的安全性及7字节序列号M1卡

    Mifare1的安全性主要指卡中数据的安全性,要求卡中的数据不能被非法修改或窃听.数据的安全性主要使用加密技术来保证,加密技术有两个关键因素:加密算法和密钥.现代加密技术的一大特点是加密算法公开,如果 ...

  7. 射频识别技术漫谈(13)——Mifare S50与Mifare S70

    Mifare S50和Mifare S70又常被称为Mifare Standard.Mifare Classic.MF1,是遵守ISO14443A标准的卡片中应用最为广泛.影响力最大的的一员.而Mif ...

  8. 射频识别技术漫谈(13)——Mifare S50与S70【worldisng笔记】

    Mifare S50和Mifare S70又常被称为Mifare Standard.Mifare Classic.MF1,是遵守ISO14443A标准的卡片中应用最为广泛.影响力最大的的一员.而Mif ...

  9. 射频识别技术漫谈(1)——概念、分类

    现代社会智能卡已经渗透到生活的方方面面,公交卡.考勤卡.身份证.手机卡等等数不胜数.    智能卡按使用时是否和读卡器接触可分为接触式智能卡和非接触式智能卡,接触式智能卡上有6-8个触点,使用时插在卡 ...

随机推荐

  1. update多表陷阱

    今天同学发了个sql题目 A1表 B1表 id num id snum 1 10 1 90 2 2000 3 4000 3 30 B表的数据插入A表当中 最后的结果 A表 1 90 2 2000 3 ...

  2. 113. Path Sum II

    题目: Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the give ...

  3. POJ2513——Colored Sticks(Trie树+欧拉回路+并查集)

    Colored Sticks DescriptionYou are given a bunch of wooden sticks. Each endpoint of each stick is col ...

  4. 利用循环removeChild删除节点只删除一半问题

    <!DOCTYPE html> <html>   <head>     <title>adduser.html</title>        ...

  5. 数据关联分析 association analysis (Aprior算法,python代码)

    1基本概念 购物篮事务(market basket transaction),如下表,表中每一行对应一个事务,包含唯一标识TID,和购买的商品集合.本文介绍一种成为关联分析(association a ...

  6. 你想建设一个能承受500万PV/每天的网站吗?

    (如果感觉有帮助,请帮忙点推荐,添加关注,谢谢!你的支持是我不断更新文章的动力.本博客会逐步推出一系列的关于大型网站架构.分布式应用.设计模式.架构模式等方面的系列文章) 你想建设一个能承受500万P ...

  7. Android开发之全屏显示的两种方法

    1.通过修改清单文件中Theme,实现全屏 <application android:name=".MyApplication" android:allowBackup=&q ...

  8. mysqld -install命令时出现install/remove of the service denied错误的原因和解决办法

    原因:没有使用管理员权限 解决方法:使用管理员权限打开cmd,然后运行mysqld -install,服务安装成功

  9. EDM排版table设置padding在ie7下bug

    今天搞EDM发现一个在ie7下很扯淡的bug,由于以前没遇到过,所以花了点时间来解决下. IE7下bug重现: <table cellpadding="0" cellspac ...

  10. POJ3921

    搜索 每次找出最短路 如果小于等于k 那么必定这里有一点是要被删掉的 枚举这个最短路径上的每一个点 (一般不会超过20) 将其相邻边删除 用dijskra求最短路径并且保存即可 深度搜索 #inclu ...