【问题标题】:Two OwnerPIN object in Java CardJava Card 中的两个 OwnerPIN 对象
【发布时间】:2015-05-07 16:51:29
【问题描述】:

我正在开发一个 Java Card 应用程序,我们的要求是在卡中保留一些静态数据和余额。

为了安全起见,我想制作 2 个 OwnerPIN 对象。一个对象是终端认证(即终端需要发送8个字节的数据来认证自己),另一个对象是用户认证(即用户需要输入一个4位的PIN来认证自己)

只有两个认证都成功了,我们才能读取数据或者更新余额。

或者对于如何在卡上实施安全性以避免被盗有任何其他建议?

还有在小程序开发过程中选择专有类和指令字节的指南吗?

【问题讨论】:

  • 在小程序开发过程中选择专有类和指令字节时有什么指导方针-我不明白...你能换句话解释一下吗?
  • 我的意思是,我可以为类/INS BYTE 选择任何值,例如 0xa0 或 0xc0 或 0x44 等等......?????
  • PIN 用于基于知识的身份验证。我不建议将它用于终端身份验证,因为简单的线路嗅探器可能会造成严重问题。而是使用为此目的设计的挑战-响应测试。

标签: security smartcard javacard apdu pin-code


【解决方案1】:

对于用户身份验证,OwnerPIN 无疑是一种不错的方式(当然还有其他选择,但 OwnerPIN 提供了安全功能(例如,撕裂保护),否则您必须手动实施)。

对于终端身份验证,没有什么可以阻止您使用基于 OwnerPIN 实例的方法。但是,根据您的安全要求,您可能希望选择某种形式的相互身份验证,而不是简单的 PIN 码。如果终端只是简单地发送一个 PIN 码(特别是如果它以纯文本形式发送),攻击者可以简单地拦截该 PIN 码(当发送到卡时),然后使用发现的 PIN 码来创建他们自己的(恶意)终端。

关于类和指令字节(尤其是关于 PIN 码验证等标准操作),我建议您坚持标准。 ISO/IEC 7816-4 为此类标准操作定义了许多指令。

【讨论】:

  • 实际上我需要将 PAN、NAME 等数据存储在单独的命令中(一个存储 PAN 的命令,另一个存储 NAME 的命令)。我可以在这里选择 0x12 、 0x14 或 0x16 作为 INS。为我的目的选择任何 INS 字节有什么问题吗???
  • 对于 INS,您几乎可以选择任何您想要的值。但是,正如我上面已经写过的,我强烈建议您阅读 ISO/IEC 7816-4 以了解已经存在哪些标准化格式。通常不需要重新发明轮子。
  • INS 代码 6x 和 9x 由于 ISO 7816-3 中的规范而无效;它们可能工作,但绝对不推荐用于实际部署。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-12
  • 1970-01-01
  • 1970-01-01
  • 2012-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多