【问题标题】:How to set and update ICC card PIN with APDU command如何使用 APDU 命令设置和更新 ICC 卡 PIN
【发布时间】:2019-12-09 11:42:51
【问题描述】:

我有一个接触式智能卡。(我不知道上面安装了什么样的小程序。但我可以使用标准 APDU 命令验证、读取、更新和验证 pin。)我想对 PIN 做一些更改。 所以,我的问题是:

  • 如果卡有 PIN,则使用新值更新 PIN。如果卡没有任何 PIN,则设置 PIN。

标准更新命令不适用于 PIN 文件。我收到来自 ICC 卡的 6982 响应消息。那么,在上述情况下,成功的方法是什么。 我在互联网上搜索过它,但我没有找到任何有用的文档和文章。

【问题讨论】:

  • ISO 7816-4 有专门的命令Change Reference Data。但是如果没有任何关于您的特定卡及其上的内容的文档(因此在涉及哪个 PIN/密钥的身份验证之后允许进行哪些操作),取得实质性进展的机会很小。
  • 其实我的目的是学习各种卡片的步骤。大多数情况下它们是相同的。如果我们考虑任何银行信用卡,更改 PIN 的方法是什么?我在卡上进行身份验证。之后我发送 00 24 00 10 10 OLD_PIN + NEW_PIN,然后我收到 6982 错误。所以...有什么提示吗?
  • 对于银行卡检查 EMV 规范。我不同意它们大多是相同的;卡之间仍然有很大的不同,只有 EMV 实现相似的详细规格。您提供 10 作为 PIN id - 不知道这是否正确。

标签: authentication smartcard apdu icc emv


【解决方案1】:

错误 6982 代表“不满足安全条件”。

PIN 永远不会像您在数据包中提到的那样直接传输。对于用户和 ICC 之间涉及的软件,它们总是加密的,可以偷偷摸摸数据包。必须使用 GET_CHALLENGE 命令获取公钥并用于加密 PIN。

根据 EMV 规范,用于 PIN 更改的 APDU 是

CLA = 8C or 84;
INS = 24
P1 = 00
P2 = 01/ 02
Lc = Number of data bytes
Data = Enciphered PIN data component, if present, and MAC data component; 
  • CLA 和数据将根据 EMV 手册 2 中指定的安全消息进行编码
  • P2 = 01 => 使用当前 PIN 生成的 PIN 数据
  • P2 = 02 => 不使用当前 PIN 生成的 PIN 数据
  • 新的 PIN 封装在数据字段中

【讨论】:

    【解决方案2】:

    我终于找到了解决方案,我将答案放在这里。

    首先,我们需要选择 PIN FILE。为此

    • 选择 MF(主文件)
    • 选择 DF(专用文件)
    • 选择 PIN EF(基本文件)

    选择应用主文件:00 A4 00 00 02 XX XX

    选择应用程序专用文件:00 A4 00 00 02 XX XX

    选择应用密码文件:00 A4 00 00 02 XX XX

    更改密码命令:00 24 [TM] [KN] [LN] XX XX .. ..

    TM:传输模式(清除传输):00 KN:密钥编号:10 LN: 总管脚长度(每次 16 个字节):10

    例如(旧引脚为“1234”,我们想将引脚更改为 “5678”:

    更改引脚:00 24 00 10 10 31 32 33 34 FF FF FF FF 35 36 37 38 FF FF FF FF(FF:填充值)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-19
      • 1970-01-01
      相关资源
      最近更新 更多