【问题标题】:PIV Smart Card - GENERAL AUTHENTICATE - Sign a noncePIV 智能卡 - 一般认证 - 签署随机数
【发布时间】:2012-05-03 15:46:46
【问题描述】:

我希望有人可以通过PIV smart card standard 帮助我。

我想通过使用之前生成的 RSA 1024 位模数数字签名密钥 0x9C 签署 PKCS#1 填充随机数来验证智能卡。这是我的测试应用程序的输出:

Requesting Signature
Sending: 0087069C867C84820081800001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00CB441C4A656E071F1FB9F31BC6AB1824324FB42780
Error: (6A80) Incorrect parameters in command data

这是细分:

00 - Not chained (chaining not required because message does not exceed max length)
87 - GENERAL AUTHENTICATE
06 - RSA 1024 Algorithm
9C - Digital Signature Key
86 - Length of data field
  7C - Dynamic Authentication template identifier
  84 - Length of dynamic authentication template
    82 - Response
    00 - Response length 0 (Response requested)
    81 - Challenge
    80 - Challenge length 128
      0001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00CB441C4A656E071F1FB9F31BC6AB1824324FB427 - PKCS #1 padded 20-byte Nonce (Padded with OpenSSL RSA_padding_add_PKCS1_type_1)
80 - Expected response length (128 bytes)

我还使用所有不同的密钥(已经成功生成所有密钥)并使用链式消息与单部分消息运行测试。 进一步查看test data

【问题讨论】:

  • 您确实在 NONCE 周围执行了 PCKS#1 填充,但您确定不需要内部哈希结构吗?也许只需执行 H(NONCE) 并使用 PKCS#1 标准中定义的结构,您可以在解密后简单地比较 H(NONCE) 与 H'(NONCE) 而不是 NONCE 与 NONCE' 来验证身份验证。
  • 我不太明白。你是说我应该在填充之前在我的 Nonce/Hash 周围应用“DigestInfo”DER 编码吗?如果是这样,这也不起作用。你是说我应该在填充之前对我的随机数进行哈希处理吗?因为我的 nonce 和 sha1 哈希都是 20 个伪随机字节,所以这没有区别。
  • "GENERAL AUTHENTICATE 命令应与 PIV 身份验证密钥('9A'、'9B'、'9E')一起用于向客户端应用程序验证卡或卡应用程序(内部验证) " 在我看来,您同时使用了错误的键 错误的 APDU。为什么需要密钥 0x9C,因为规范清楚地指出了其他密钥?
  • 来自 NIST 标准:“GENERAL AUTHENTICATE 命令可用于生成签名。预签名哈希和填充(如果适用)是在卡片之外计算的。PIV 卡应用程序接收哈希值原始消息,应用私有签名密钥(密钥引用'9C'),并将生成的签名返回给客户端应用程序” - 我已经蛮力尝试了每个密钥。您认为我的 APDU 有什么问题?

标签: cryptography rsa smartcard fips nonce


【解决方案1】:

我的智能卡上加载的 PIV 卡小程序存在错误。它不会对任何以 0x00 开头的数据进行签名。如果您将 0x00 更改为其他任何值(只要整数形式的数据小于 RSA 算法要求的整数形式的模数),它将成功签名。所以当然这意味着这些卡不能签署任何标准的 PKCS1 填充数据:(

感谢您的帮助

【讨论】:

  • 您现在应该可以接受您的回答了。太糟糕了,就是这种错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-09
  • 2010-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多