Authentication 如何使用APDU命令设置和更新ICC卡PIN

Authentication 如何使用APDU命令设置和更新ICC卡PIN,authentication,smartcard,apdu,icc,emv,Authentication,Smartcard,Apdu,Icc,Emv,我有一张联系人智能卡。(我不知道它安装了什么样的小程序。但我可以用standart APDU命令验证、读取、更新和验证pin。)我想对pin做一些更改。 所以,我的问题是: 如果卡有PIN,则使用新值更新PIN。如果卡上没有PIN,则设置PIN Standart update命令对PIN文件无效。我收到来自ICC卡的6982回复信息。那么,在这种情况下,成功的途径是什么呢。 我在网上搜索了一下,但没有找到任何有用的文档和文章 错误6982表示“未满足安全条件” PIN永远不会像您在数据包中提

我有一张联系人智能卡。(我不知道它安装了什么样的小程序。但我可以用standart APDU命令验证、读取、更新和验证pin。)我想对pin做一些更改。 所以,我的问题是:

  • 如果卡有PIN,则使用新值更新PIN。如果卡上没有PIN,则设置PIN
Standart update命令对PIN文件无效。我收到来自ICC卡的6982回复信息。那么,在这种情况下,成功的途径是什么呢。 我在网上搜索了一下,但没有找到任何有用的文档和文章

错误6982表示“未满足安全条件”

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

根据EMV规范,用于引脚更改的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=>使用当前管脚生成的管脚数据
  • P2=02=>不使用当前管脚生成的管脚数据
  • 新PIN封装在数据字段中
错误6982表示“未满足安全条件”

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

根据EMV规范,用于引脚更改的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=>使用当前管脚生成的管脚数据
  • P2=02=>不使用当前管脚生成的管脚数据
  • 新PIN封装在数据字段中

我终于找到了解决办法,我把答案放在这里

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

  • 选择MF(主文件)
  • 选择DF(专用文件)
  • 选择PIN EF(元素文件)
选择应用程序主文件:00A4 0002 XX

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

选择应用程序Pin文件:00A4 0002 XX

更改销坐标:0024[TM][KN][LN]XX XX

TM:传输模式(清除传输):00KN:键号:10 LN: 引脚总长度(每16字节):10

例如(旧pin为“1234”,我们希望将pin更改为 “5678”:

更改Pin:002400101031323334 FF FF FF FF 35 36 37 38 FF FF(FF:填充值)


最后我找到了解决办法,我把答案放在这里

首先,我们需要选择PIN文件

  • 选择MF(主文件)
  • 选择DF(专用文件)
  • 选择PIN EF(元素文件)
选择应用程序主文件:00A4 0002 XX

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

选择应用程序Pin文件:00A4 0002 XX

更改销钉坐标:00 24[TM][KN][LN]XX XX….

TM:传输模式(清除传输):00KN:键号:10 LN: 引脚总长度(每16字节):10

例如(旧pin为“1234”,我们希望将pin更改为 “5678”:

更改Pin:002400101031323334 FF FF FF FF 35 36 37 38 FF FF(FF:填充值)


ISO 7816-4有专用的命令更改参考数据。但是没有关于您的特定卡及其上的内容的任何文档(因此,在涉及哪个PIN/密钥的认证之后允许哪些操作)实际上,我的目的是学习任何一种卡的步骤。大部分是相同的。如果我们考虑任何银行信用卡,改变PIN的方法是什么?我在卡上进行身份验证。之后我发送00 24×00 10 10 OLDPIN + NeXPIN,然后我得到6982错误。所以……有没有提示?。对于银行卡,请检查EMV规格。我不同意大多数情况下,它们是相同的;卡彼此之间仍然非常不同,只有在EMV达到相似性时才有详细的规格。您给出10作为PIN id-不知道这是否正确。ISO 7816-4有专用的命令更改参考数据。但没有任何文档可供参考检查您的特定卡和卡上的内容(因此,在进行涉及哪个PIN/密钥的身份验证之后,允许进行哪些操作)实际上,我的目的是学习任何一种卡的步骤。大部分是相同的。如果我们考虑任何银行信用卡,改变PIN的方法是什么?我在卡上进行身份验证。之后我发送00 24×00 10 10 OLDPIN + NeXPIN,然后我得到6982错误。所以……有没有提示?。对于银行卡,请检查EMV规格。我不同意大多数情况下,它们是相同的;卡之间仍然非常不同,只有在EMV达到相似性时,才有详细的规格。您给出10作为PIN id-不知道这是否正确。