CMS签名研究(openssl)
来源:互联网 发布:外包淘宝客服招聘女装 编辑:程序博客网 时间:2024/05/20 06:23
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值总是变化的。
- CMS签名研究(openssl)
- cms研究
- OpenSSL命令---CMS
- openssl rsa加密签名
- OpenSSL 签名认证机制
- openssl rsa公钥验签名
- openssl rsa加密签名
- openssl rsa公钥验签名
- 开始研究CMS系统
- CMS的比较研究
- iOS -- OpenSSL生成RSA双密匙+签名证书(流程)
- openssl md5 rsa 签名和签名验证
- openssl研究-1
- OpenSSL库验证PKCS7签名
- 用openssl自签名证书
- 用Openssl计算ECDSA签名
- OpenSSL库验证PKCS7签名
- openssl自签名的证书
- python逆序截取
- memset使用
- layDate日期控件简单使用方法
- nginx源代码分析 - 红黑树实现
- mysql为例,操作数据库(一)
- CMS签名研究(openssl)
- 8732_sobs request failed
- 共享内存实现(shmget shmat shmdt shmctl)
- 服务器读取不到POST的数据
- OTPServer项目采集信息小结
- 使用PowerDesigner软件逆向生成C# .NET类图
- JS干货--几个容易忽视的知识点
- php连接mysql
- 不带表头节点的单链表编程(1)