常使用的用户识别法是输入一个秘密号码,一般使用个人识别码PIN(Perst,nalIdentification Number),也有时用持卡人CHV(Card Holder Verification)来表示。
PIN通常是一个4位数字,用十进制的数字0~9来组成,使用纯数字输人的理由很简单,卡终端只需有数字 键盘。用终端键盘或计算机键盘输人PIN后,再送到智能卡,把接收到之值和内部存储的基准值相比较并将 结果给终端。
PIN的输入被认为是保密的关键所在,特别是在金融交易中。因此,凡关系到该应用领域需求的特殊键盘 通常被称作“PIN键盘”。如在德国欧陆卡的PIN只能用有特殊机构和加密保护的键盘才能输人。PIN键盘具 有安全模块的全部特点,诸如加装有传感器和防止人为破坏的金属外壳,并可对输人的PIN立即直接加密, 以便在输入PIN时去阻止利用键盘的篡改。
在静态的和可变的PIN间可产生一个差别,静态PIN不可能由用户改变,所以用户必须要牢牢记住它,如果 一旦被大家知道,用户就应当毁掉该卡并领取一个有不同的固定的PIN的新卡。可变的PIN能按照用户的愿望 予以改变,或是变成一个用户觉得好记的数字。这里有一个潜在危险,因为很多人认为容易记住的是“1234 ”“4711”和“0815”。智能卡不能对这些数字的重复使用做出限制,因为没有足够的存储容量可用来存储 必要的表格。然而,完全可以使终端禁止使用这些数字的PIN。为了改变PIN,必须要输人原来的PIN,否则 一个攻击者就能用它自己的PIN来替换任何已有的PIN了。
“管理PIN”或个人开锁密钥PUK(Personal Unblocking Key)的情况是不同的,它们通常比实际的PIN要 多上几位(一个典型值为6位),用来使达到极大值的ΠN重试计数器复位为零。当输入PUK时,也要输人一 个新的PIN。如果用户忘掉了PIN时,对重试计数器的复位不会有太大的帮助。因为,重试计数器达到其 值是极其常见的情形。
某些应用中也使用传送的PIN,智能卡用一个随机的PIN个人化,持卡人由信件中接收到此PIN之值,第1次 使用卡时,用户被迫选择一个PIN来代替卡个人化时所用的PIN。还有一个类似的方法,称为“空PIN法,卡 中预先装人的是一个无实用价值的PIN,“诸如0000”,而用户在第1次用卡时改变为所需的PIN。这两种方 法都避免了卡的个人化PIN被“窃知”,而留做后用的可能性。
遵照ISO 9564 - I标准的推荐,PIN应由4~12位数字字符组成,以降低经反复试验来寻找正确PIN的概率。实际上在许多场合非数字符号的输人在技术上是不可能的,因为只有数字小键盘可用。
PIN的数码位的多少不仅取决于所期待的安全水平,而且在很大程度上还依赖于用户卡的平均数量。多年来 ,人们已经习惯于使用4位PIN,这就是说要改变成6位或更多位的P[N将是件十分困难的事。实际上,认为6 位或8位PIN将增加安全性可能是纯理论的结果。很多人感到难于记住这样长的数字,尤其是在不经常使用它 们之时,而结果是把它们写在卡上或是写在和卡保存在一起的纸条上,于是长PIN的安全水平明显地降到了 短PIN的水平之下。
完全有理由坚持认为周期性改变PIN会遇到相类似的命运,在一项只有少数用户的高安全性应用的情况下, 它可以工作得不错。但在接受大容量的市场应用时却遇上了致命的问题,后者的目的是尽可能地简化过程以 适应那些记忆力不好的人们。
在这方面,还有另一层的含意。很多情况下,输人与验证PIN代码并不仅仅涉及用户的识别以及对卡的占有 的合法性的证明。同时它还代表了用户意图的一种陈述,他以PIN的输人宣布了对某项交易的同意。一个很 好的例子是向自动提款机输人PIN,一方面用对PIN的了解验证了卡的用户,另一方面它也代表了用户的某种 意图的声明,即他同意从他的账户上支付某数额的现金。在联系到某些生物特征时,这一点十分重要,因为 其中有一些并不需要表白对某一意图的声明,用不着有关人员的承诺就能检验到。
1,猜中PIN的概率
对PIN的简单的攻击,除了偷窥它的输人之外,就是猜测了。成功的概率部分取决于所猜PIN的长度以及 用以组成的符号数和允许尝试的次数。在三次试猜中,正确猜中4位P[N的概率是0.03%,并不太高。这里 给出了猜测口令的两个基本公式,它们可用来在实践中估计应用某一独特的口令时相关的风险,公式中各变 量的意义见表1。
x=m2 (1)
P=i/mn (2)
表1 公式(1)和(2)中各变量的定义与说明
m、n和x之间的相互关系,在表2中可以看得很清楚。
顺便提及,关于猜测口令,还有在很长一段时间里被忽略的第4个因素。它就是一个PIN在应用中分布的均 匀性,也就是说,如果知道某些PIN比其他的要常用时,就会比较容易地猜中一PIN。由于关系到德国的欧陆 卡,使这个重要的第4因素的实际意义几乎在1977年的一夜之间就变得明显了。虽然,从欧陆卡磁条中所存 数据计算PIN的详细步骤仍旧是一个秘密,但至少过程中的少量一般性步骤已经都知道了。从这些信息,可 以得出所产生的PIN不是均匀分布的结论。由于算法所采取的步骤使得由0~5要比6~9显然要经常得多,而 且还知道PIN的算法在产生PIN时排除了用0打头。这种非均匀分布的结果使得当允许猜错3次时,不需要3333 次尝试就可以正确猜中一四位的PIN,仅仅150次[Karten 97]就够了。10.5%的卡的分布是如此的拙劣,如果考虑到PIN产生算法的特点[Schindler 97],猜测次数还可少些,可以减少到只 需要72次。所有这些导致的结果是一个改进了的PIN产生算法被用于新的欧陆卡,而原来用的DES算法被3重 DES算法所代替。
表2 有不同长度的编码的PIN和口令,以及可能的组合数
2.产生PIN
为了给智能卡注入一PIN,需要一个随机数发生器,以及把随机数转换为所需长度的ASCII编码的PIN算法。 然后,用一个已知的组合表来确定/丢掉那些没有价值的PIN的编码,再把PIN存人智能卡中。作为一种必要 的步骤,用VERIFY命令,去比较一下刚刚输人的PIN。
如果在一个系统中用的不是智能卡而是磁卡,PIN的产生要略微复杂些。因为,必需用存在磁条上的数据来 测试输入的PIN,以便使自动提款机能离线工作。智能卡则不受这一需求的影响,但所有的借记卡(诸如欧 陆卡)即使是有微控制器的,为了兼容之故都还有磁条。对于具有芯片和磁条的复合卡也要决定它们产生 PIN的算法,即对一组给定的输入,必须产生出相同的结果,而不用随机数发生器。
于是需要有一种方法能产生磁条数据的PIN,为了避免使系统的安全性依赖于方法本身,在计算中必须包括 一个秘密密钥。图1说明了一种类似于德国欧陆卡所用的算法。其输人包括银行顺序安排编码(roututg oode),卡的账号和序列号,这个算法采用了具有密钥的DES去产生一个4位的PIN。但是,这个方法保留了 前面谈到的缺点,所产生的PIN在其全部可能的数码空间(对于4位的PIN的情况来说是“0000”至“9999” )的分布是不均匀的,这是因为在加密之后把十六进制数(‘A’、‘B’、‘C’、‘D’、‘E’和‘F’) 转换为十进制数的变换规则之故。当然,这些缺点很容易用更好的变换规则来避免。部分地使用了DES的混 乱和扩散特性,因为是密钥而不是方法必须保密。
图1 用DES算法和三个卡特有的数据元素(银行J顷序安排编号,账号和卡序列号)产生四位PIN之例。所说明的方法有着产生的PIN不是均匀分布的缺点
(即某些P1N比另外的一些要出现频繁些),这是由于所用变换规则之故,例中所用之值均表示在方括号内,这个方法间接地类似于德国欧陆卡所用之方法。
来源于DieDatensc·hleuder中的两篇论文[Muller-Maguhn97a,Mulller-Maguhn97b]
3,测试终端的真实性
众所周知,用户的身份是用输入PIN来验证的。然而,用户也希望能验证终端的真实性。例如,顾虑自动提 款机可能是假的,怀有欺骗意图的人可能使用一台机器来收集不加怀疑就输入的用户的PIN,然后用从假自 动提款机获得的PIN从持卡人的账户上提取现金,这完全是可能的,因为用户并没有办法来测试终端的真实 性。
有一种方法可用来抵御这种类型的攻击,它是在卡的文件中存储一个口令,只有卡的用户才知道这个口令 ,而且也只有用户才能改变它。只有在终端被卡鉴别之后,智能卡操作系统才被允许读出该文件。用户所选 择的名字或编号可用来作为此口令。
在用户把智能卡插人终端后所发生的第1件事件就是卡和终端之间的相互鉴别过程。如果成功,则每一方都 知道其对手是真实的。于是,卡允许对含有用户秘密口令的文件进行读访问,而后它将显示在终端上,用户 看到他的口令,知道终端是真实的就可以安全地输人PIN了。否则,终端就不能访问含有口令的文件。
图2 确保PIN仅用一真正终端输人的方法(前提是终端正确显示口令前,持卡人不输人PIN)
这一过程作为防止把PIN输入到一个假冒终端中去的简单方法,任何任意的字词或数码都可用作口令。持卡 人能够按照其意图修改口令,以防潜在攻击者侦知的可能,这个过程也可以按需要加以扩充或修改以满足类 似的需求。
欢迎转载,信息来源维库电子市场网(www.dzsc.com)
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。