如何在智能卡上执行终端身份验证?
我正在尝试使用智能卡电子签名应用程序对文档进行数字签名。它是国民身份证,我遵循 ICAO 9303
和 TR-03110
规范。如果我没记错的话,在选择eSign
应用程序之前,我应该预先将Terminal Authentication
作为Signature Terminal
执行。
在ICAO 9303
中规定:
The following sequence of commands SHALL be used with secure messaging to implement Terminal Authentication:
MSE:Set DST
PSO:Verify Certificate
MSE:Set AT
Get Challenge
External Authenticate
Steps 1 and 2 are repeated for every CV certificate to be verified (CVCA Link Certificates, DV Certificate, Terminal Certificate).
要执行MSE:设置DST
,应使用以下APDU
:
INS - 0x22
P1/P2 - 0x81B6
Data - 0x83 Reference of a public key, ISO 8859-1 encoded name of the public key to be set
它是数据部分我不明白。我到底需要在那里提供什么?如何找到公钥或其名称?
I am trying to digitally sign document using the smart card eSign application. It is a national ID card, and I am following ICAO 9303
and TR-03110
specifications. If I am not mistaken, before selecting the eSign
application I should perform Terminal Authentication
as Signature Terminal
beforehand.
In ICAO 9303
it is stated:
The following sequence of commands SHALL be used with secure messaging to implement Terminal Authentication:
MSE:Set DST
PSO:Verify Certificate
MSE:Set AT
Get Challenge
External Authenticate
Steps 1 and 2 are repeated for every CV certificate to be verified (CVCA Link Certificates, DV Certificate, Terminal Certificate).
To Perform MSE:Set DST
the following APDU
should be used:
INS - 0x22
P1/P2 - 0x81B6
Data - 0x83 Reference of a public key, ISO 8859-1 encoded name of the public key to be set
It is the Data
part I do not understand. What exactly do I need to provide there? How do I find the public key or its name?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
在开始 TA 之前,您应该确保终端拥有自己的有效 CV 证书链 + 正确的私钥:
TA 的初始步骤是证书链验证:
现在芯片知道终端的公钥,并可以用它来验证终端用其私钥签名的密码。
证书持有者参考 (CHR) 和证书授权参考 (CAR) 是编码为字符串值的 ID。
Before start TA you should be sure that terminal has its own valid chain of CV-certificates + proper private key:
Initial step of TA is certificate chain verificattion:
Now chip knows terminal's public key and can use it to verify a cryptogram signed by terminal with its private key.
Certificate holder reference (CHR) and certificate authourity reference (CAR) are IDs encoded as string values.
jmrtd库可以提供帮助:
jmrtd:机器可读文档的开源Java实现
强>简单单词以完成终端身份验证的步骤就像以下:
这样,IC就可以验证终端并授予对敏感数据组的访问。
JMRTD Library Can help:
JMRTD: An Open Source Java Implementation of Machine Readable Travel Documents
The steps in simple words to complete the terminal authentication is like following:
In this way the IC authenticate the terminal and grant access to sensitive data groups.