我正在开发一个需要使用智能卡对服务器进行客户端身份验证的应用程序。作为指导,我正在使用浏览器跟踪普通的Web身份验证,并且已经看到包含“证书验证”结构的SSL / TLS数据包是使用卡的签名会话创建的。
对发送给读卡器的CCID-APDU数据包进行了分析,我已经看到此转储:
6f 05 01 00 00 00 41 00 01 00 00 2a 80 86 00 01 01 00 00 01 ff ff ........
此命令的答案实际上是发送到“证书验证” SSL / TLS结构的内容。
奇怪的是发送的APDU命令是
00 2a 80 86 00
查看APDU文档,这是一个“ PSO:DECIPHER”命令,但它不应该是一个签名命令吗? ((00 2A 9E 9A xx)
任何人都可以澄清这种行为吗?
TNX
PSO DECIPHER与签名生成共享,认为它应用了私钥。由于它仅限于一个数据块,即i,所以它明显更简单。即APDU的命令数据字段。用于计算数字签名的PSO CDS具有许多其他复杂性,例如链接(将数据拆分为多个命令),哈希(使用各种算法),填充(使用各种填充方案)以确保正确的数据长度等。
因此,似乎您所分析的解决方案针对所需的特定方案进行了优化,并且许多优化的清晰度因副作用而有所降低。