射频识别系统中由于卡片和读写器并不是固定连接为一个不可分割的整体,二者在进行数据通讯前如何确信对方的合法身份就变得非常重要。根据安全级别的要求不同,有的系统不需认证对方的身份,例如大多数的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. hdu 4794 FIb求循环节

    很容易看出来这道题是求模n意义下fib数列的最小循环节 对于fib数列的最小循环节的求法,我们可以这样: 1.令n=p1^m1 * p2^m2 * p3^m3…… 2.分别计算fib数列在模p1^m1 ...

  2. 内核request_mem_region 和 ioremap的理解

    request_mem_region仅仅是linux对IO内存的管理,意思指这块内存我已经占用了,别人就不要动了,也不能被swap出去.使用这些寄存器时,可以不调用request_mem_region ...

  3. ANDROID_MARS学习笔记_S01_010日期时间控件

    1.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns: ...

  4. 手动添加 memcached.jar包

    由于目前java memcached client没有官方的maven repository可供使用,因此使用时需要手动将其安装到本地repository. java memcached client ...

  5. (转)Redis与Memcached的区别

    如果简单地比较Redis与Memcached的区别,大多数都会得到以下观点: 1 Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储. 2 Redis支持 ...

  6. 根据block取出页号buf_block_get_page_no

    /*********************************************************************//** Gets the page number of a ...

  7. PHP内置的Web Server的使用

    自PHP5.4之后 PHP内置了一个Web 服务器. 让我们来看看php Web Server的简单使用: 启动php Web Server php -S localhost:8080 通过 php ...

  8. shell部分命令缩写

    bin = BINaries /dev = DEVices /etc = ETCetera /lib = LIBrary /proc = PROCesses /sbin = Superuser BIN ...

  9. Gradle使用手册(一):为什么要用Gradle?

    原文地址:http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Using-sourceCompatibility-1. ...

  10. 自杀程序&递归删除目录

    自杀程序,删掉自身,包括执行程序所在的文件夹. 仅在windows下进行了测试,使用语言C# string fileName = Path.GetTempPath() + "killmyse ...