PKCS#11 智能卡令牌的最大尝试次数

Posted

技术标签:

【中文标题】PKCS#11 智能卡令牌的最大尝试次数【英文标题】:Maximum number of try for PKCS#11 smart card token 【发布时间】:2019-09-25 07:59:55 【问题描述】:

我的任务是找出输入 PKCS#11 智能卡令牌 PIN 码的最大尝试次数。我已经知道here 中提到的 CK_TOKEN_INFO/TokenInfo 中的标志,即 CKF_USER_PIN_COUNT_LOW、CKF_USER_PIN_FINAL_TRY、CKF_USER_PIN_LOCKED。但不知何故,我的主管坚持认为智能卡内部的某个地方包含有关输入 PIN 的最大尝试次数的信息。

真的在里面吗?

【问题讨论】:

【参考方案1】:

当然:卡中的每个 PIN 对象都有各自的错误计数器。否则,一旦涉及多个客户端,就无法确保在给定次数的错误尝试后,PIN 确实会被阻塞。

(PKCS 只是将通用命令转换为相应卡类型的特殊命令的附加层。)

问题在于,以标准化方式提取错误计数器的方法很少,甚至没有。这取决于卡类型及其配置之一。最好的机会是发送带有错误 PIN 数据的VERIFY 命令并查找“63 Cn”状态代码,其中 n 表示剩余的尝试次数。然而,在最坏的情况下,如果还有一次或多次尝试,则卡会响应“63 00”,如果 PIN 被阻止,则卡会响应“69 83”。详情请参考智能卡操作系统手册。

【讨论】:

您提到的确切的VERIFY 命令是什么?很少有人提到here。感谢您的回复。 @NuqieNoila:我指的是 ISO 7816 中的验证,第 4 部分,card 将看到的唯一一个。显然这对应于 PKCS-speak 中的C_Login;但同样:PKCS 并不能真正帮助理解卡级细节作为错误计数器处理。

以上是关于PKCS#11 智能卡令牌的最大尝试次数的主要内容,如果未能解决你的问题,请参考以下文章

支持 pkcs#11 的智能卡和读卡器

MacOSX 上的智能卡 PKCS#11 支持

在 CAPI/CNG 中替换 PKCS #11 智能卡数据对象

使用 pkcs#11 从智能卡读取文本文件

sun.security.pkcs11.SunPKCS11的访问限制

从 PIV 智能卡中提取名称