PIN初探

<--我XXX又回来了,已经忘记,2年前我还在这里写过些杂文,太意外了-->

<--转移 from cnblog-->

 

这篇随笔是在许多疑问的驱使下完成的,当然也都是一些关于Personal Identification Number(PIN)的基础概念,可能比较白,反正我昨天还是处于发晕的状态。

问题1:常看到一些输入PIN的机器,用户直接在终端输入,这些PIN码存在哪里?怎么去运算比较呢?
问题2:一般智能卡都有2个PIN,一个称之为SO-PIN(securiy officer PIN),另一个为USER-PIN,它们的作用是什么?它们存在哪里?
问题3: 这些PIN是卡片初始化之前还是之后生成的?

关于什么是PIN,wiki可以找到答案,可不是那根针额。需要明确的是PIN的作用是验证持卡者身份,即 holder身份。

怎么解决这些问题,需要不少废话才能说完,我省略掉过程,直接贴结果,不浪费大家的时间--找一张可以初始化的卡片,记录下初始化过程,然后结合卡片的datasheet,分析之,就都清楚了(这里的初始化是从空白卡开始的)。

结论如下:
PIN不是初始化之前或之后生成的,而是在初始化时完成的PIN文件写入,注意:PIN文件也是文件,只是用途特殊的文件。至于这些个文件存放在什么位置,就得看初始化程序如何做了。一般的在根目录(MF)下存在一个全局的PIN,之所以是全局,是其子目录都可以用这个PIN来作为本目录的PIN使用。这个PIN也就是SO-PIN,也称为PUK(Personal Unblocking Key),常用来解锁其他目录被锁的PIN,因为它是全局的,有这种特权。但请注意,这个PIN文件和其他PIN文件相比,没有什么特别,除了它生长的地方。说了SO-PIN,接着就是USER-PIN,其实就是子目录(DF)下的PIN而已。那就是说我们可以有很多个PIN文件咯?理论上是的,不过一般不这样做,一般卡片都是单一应用,一个应用目录就好了,一个目录下一个PIN文件就好了,因此,一个应用PIN(USER-PIN)和一个SO-PIN就够用了。
我们看到读卡器提示用户输入PIN,其实是应用程序已经选择好了卡片上对应的应用目录,输入的PIN也就是该目录所对应的PIN,至于如何运算比较,就是COS的事了。

BTW:
在实际操作中发现一个奇怪的现象,因为是实际工作环境,各位看官只能看看了:大家知道PIN是有错误计数的,当计数器减到0,依赖于该PIN的目录或文件将不能被访问,因为安全条件不会满足了。
卡片如下结构:
      MF(3F00)
      PIN1
            DF(4100)
            PIN2
      在操作中,PIN2输入正确,PIN1计数被重设为初始值。后来发现,原来DF有规则和全局PIN发生了点关联,其实我想说的是,原来子目录也能操作全局PIN的,很废话。

PS: 以上卡片只是ISO7816兼容卡,其他卡我没有接触,不过原理应该不会差到哪里去。不正确的地方欢迎指正。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值