首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ePassport芯片认证-如何验证?

ePassport芯片认证-如何验证?
EN

Security用户
提问于 2021-06-02 19:32:06
回答 1查看 323关注 0票数 3

我想为ePassport文档实现芯片身份验证,并希望验证我对它的理解。

通过使用JMRTD库,特别是函数doEACCA(),我成功地启动并运行了它。在检查这个和相关函数的代码时,我注意到它实际上没有验证协议的结果。它按照标准运行CA协议,这将导致一个新的安全消息传递密钥,然后切换内部包装器以继续使用该协议。但似乎在这之后没有实际的验证,之后也没有实际的沟通。因此,如果一个人停在这里,它实际上将导致一个错误的印象,成功的检查系统,因为它不知道它得到了一个与芯片不同的共享密钥。实际上,调用协议芯片身份验证似乎有点不恰当。把它称为密钥交换会更正确。由于所有共享密钥都用于设置一个新的SM隧道,我想(这就是我想通过这个问题来验证的)实际验证首先在发出其他命令时进行。这个命令必须包含SM -关键的是,来自芯片的响应必须有一个包含MAC的有效负载。正是这个MAC的验证,通过检测系统,才真正完成了芯片认证。

似乎选择指挥(除了上面提到的方面)并不重要?如果是的话,你能建议一个命令来运行吗?由于设置的其他方面,我的解决方案运作,它将更好地使用一个简单的,“一次”的命令,其中的命令和响应可以适应在一个单一的APDU等。这将完成我与芯片的通信。

EN

回答 1

Security用户

回答已采纳

发布于 2021-06-02 20:53:09

是的,您是对的,下一个命令--或者更确切地说,下一个命令返回的响应数据和状态字上的MAC命令--是用来验证芯片上有私钥的。这是一种不幸的做法;响应应该包括一个带有其中一个键的MAC集或一个单独派生的密钥。目前,在实现安全消息传递时,您必须做出可怕的设计选择。也许你只是想验证一下芯片。

如果我没有记错的话,这是我当时所指出的,如果我没有记错的话,它应该在使用佩斯-CAM时得到纠正。这就是使用集成芯片身份验证的PACE密码身份验证(我忘记了M是用来做什么的)。

如果您想找一个不应该做任何事情的命令,那么GET质询是一个很好的命令,它只会从芯片中获得一些随机字节,因此不会包含任何用户数据或重置任何安全环境。我将请求一个8字节的挑战,因为这是在BAC身份验证过程中使用的。当然,您需要发送此命令(或任何以下命令),包括安全消息传递。唯一稍微令人担忧的是,GET挑战只能在没有SM的情况下才能实现。

您还可以使用READ二进制文件来读取包含MRZ的DG1。该数据组无论如何都包含所需的知识,您可能希望将其与物理MRZ作为身份验证检查进行比较。

票数 2
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/249993

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档