我正在尝试使用智能卡执行数字签名,我的问题是当我尝试以下命令集时:
Select Application: 00A4040410E828BD080F*********
Verify Pin: 0020008506*******
Set SE for CRT HT: 002241AA03800110
Set SE for CRT DST: 002241b606800112840105
Store Hash: 002a90a00890008004AAAAAAAA // AAAAAAAA are Just a random 4 bytes for the card to compute then store
Sign: 002a9e9a00我不能通过将安全环境设置为CRT-DST或CRT-HT来签名,前者返回6a88(SE问题),后者返回6a95(未找到哈希)。我一直在遵循IAS_ECC_v1.0.1,但是还不清楚在设置散列然后签名的情况下应该使用哪种安全环境。我也尝试了SHA-256的命令,但结果相同。
我习惯于设置安全环境,然后执行数字签名,但这是我第一次遇到预先存储的散列类型的卡。
发布于 2020-12-13 20:30:21
至少要澄清一些问题:您所描述的不是预先计算的哈希值,而是通常在方案中应用的中间哈希值,其中卡至少在哈希计算中有一些影响。它应该通过考虑给定的最后一个数据字节来更新给定的中间散列。这是卡散列所有输入数据(可能,但由于有限的I/O带宽很少吸引人)和从外部提供最终散列值(不受卡的影响)之间的一种中间点。
这样的中间散列在DO 90中需要与位计数器连接的8字节长的中间散列值。对于SHA-256,这意味着40字节(32字节散列后跟比特计数器)。这与DO 80相结合,提供了最终数据。
您的示例(store hash至少是一个误导性的术语)提供了DO 90为空,然而,这与中间散列的意图相矛盾。
https://stackoverflow.com/questions/65200763
复制相似问题