CMS签名研究(openssl)

CMS签名研究

材料:
这里写图片描述

描述:
使用CMS对u-boot.imx文件进行签名,生成签名signature文件

查看rfc5652(Cryptographic Message Syntax (CMS))文档,其中提及生成签名的过程Useful Attributes。包括以下几个:content-type、message-digest、signing-time、countersignature

追寻openssl中代码可以看到使用了以上属性:

这里写图片描述

这里写图片描述

这里写图片描述


使用SHA256 With RSA Encryption生成的签名。
下面进行解析生成的签名signature文件。

signature文件是一个ASN.1编码格式的文件。

将signature文件使用工具解析(http://lapo.it/asn1js/,也可以使用asn1view工具),可以看到如下内容:
这里写图片描述

其中我们可以看到
(32 byte)
B02DA0E6F62067A41FCF90CEE9E9764E20B8C12CDD206EC7A13CB6004203AEA9
使用SHA256对u-boot.imx计算出来的HASH值

(256 byte)
7865F5D3D37CF5235CD612475CDFE03BC1631571237793491AC8C4578A68B428516AC…等等
是对
(rsa encrypt buf)
00 01 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 00 30 31 30 0D 06 09 60 86 48 01 65 03 04 02 01 05 00 04 20 27 8E 43 A5 4E 3A FF 45 3A 1A 44 57 71 C9 2C 59 2C 76 A0 A8 72 2A CC 7D B9 74 8B 12 63 3B 50 D0
数据进行RSA加密得出的结果

(rsa encrypt buf)中红色部分是使用SHA256对Attributes计算出来的HASH值。

Attributes部分,其中的内容为:

这里写图片描述

这段数据在生成签名中的位置(从30 82开始)是:offset start = 126, end = 232。总计107个字节

31 69 30 18 06 09 2A 86 48 86 F7 0D 01 09 03 31 0B 06 09 2A 86 48 86 F7 0D 01 07 01 30 1C 06 09 2A 86 48 86 F7 0D 01 09 05 31 0F 17 0D 31 36 31 31 30 31 31 31 33 31 34 33 5A 30 2F 06 09 2A 86 48 86 F7 0D 01 09 04 31 22 04 20 B0 2D A0 E6 F6 20 67 A4 1F CF 90 CE E9 E9 76 4E 20 B8 C1 2C DD 20 6E C7 A1 3C B6 00 42 03 AE A9

其中红色部分是UTCTime。

其中签名中这段数据第一个字节是0xA0,计算的时候是0x31

总结:
CMS签名流程:

这里写图片描述

第一次的HASH值是不会变的,(只要u-boot内容不变。)

由于signing-time的因素,第二次的HASH值总是变化的

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
openssl cms是一个OpenSSL命令行工具,用于创建和处理CMS(Cryptographic Message Syntax)格式的消息。CMS提供了一种安全的方式来签名、加密和验证电子邮件和其他消息。 引用和提供了使用openssl cms命令进行签名和加密邮件的示例。具体来说,引用展示了如何签名并加密邮件,而引用展示了如何仅仅加密邮件。 在签名并加密邮件的过程中,openssl cms命令首先使用私钥对消息进行签名,然后使用接收者的公钥对消息进行加密。签名和加密后的消息将被输出到mail.msg文件中。 在仅加密邮件的过程中,openssl cms命令只使用接收者的公钥对消息进行加密,并将加密后的消息输出到mail.msg文件中。 具体命令参数的含义可以在OpenSSL的文档中找到详细的解释和用法。 引用提供了一些与证书相关的命令示例,但与openssl cms命令无关。所以,我们无法在这里给出与openssl cms命令相关的详细信息。如果您有任何关于openssl cms的具体问题,请提供更多的上下文,我们将尽力帮助您。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [OpenSSL命令---CMS](https://blog.csdn.net/as3luyuan123/article/details/13612917)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *3* [使用openssl制作证书和进行CMS格式数字签名](https://blog.csdn.net/qq_17585545/article/details/114859305)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值