电子签章过程中的原始数据处理
电子签章中需要对原文数据处理的地方主要存在于三种程中:
- 签名或验签
- 电子签章中的原文摘要
- 电子印章的使用者证书在电子印章中的保存方式
现在我们分别来看这三种情况下对原始数据的处理。
1、签名和验签
按照标准GM/T 0009-2012中规定,对待签名消息需要进行预处理,分成两步:
A、使用签名方用户ID和签名方公钥计算得到z值。
B、使用第一步得到的z值和待签名消息通过sm3运算得到杂凑值。
最后对这个杂凑值进行签名或验签。
2、电子签章结构体中的原文杂凑值
在密码规范GB/T 38540-2020中规定电子签章结构体中要有原文杂凑值一项。如下图:
如果从字面意思来说,dataHash中存储的值应该是原文数据通过sm3运算得到的杂凑值。但实际中仍然会有如果签名或验签过程中的数据处理方式,即先使用签名方公钥和签名者ID运算得到Z值,然后使用z值和原文通过sm3运算得到杂凑值。
3、电子印章中的使用者证书项
在密码规范GB/T 38540-2020中规定,电子印章结构体中可以保存使用者签名证书或使用者签名证书的杂凑值:
如果certListType等于2,那么certList的子项肯定要包含签章者证书的杂凑值。那么者签章者证书的杂凑值计算仍然可能会有两种情况:单纯使用sm3运算,或者先计算Z值,然后在使用sm3运算得到杂凑值。
上述三种情况下,如果要计算Z值,用户ID可以使用默认值,这样第三方可以自行开发验签程序,GM/T 0009-2012中规定,用户ID默认值为:
0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38
如果用户ID不使用默认值,那只能视情况而定,或者干脆无法验证了。
电子签章过程中的原始数据处理
电子签章中需要对原文数据处理的地方主要存在于三种程中:
- 签名或验签
- 电子签章中的原文摘要
- 电子印章的使用者证书在电子印章中的保存方式
现在我们分别来看这三种情况下对原始数据的处理。
1、签名和验签
按照标准GM/T 0009-2012中规定,对待签名消息需要进行预处理,分成两步:
A、使用签名方用户ID和签名方公钥计算得到z值。
B、使用第一步得到的z值和待签名消息通过sm3运算得到杂凑值。
最后对这个杂凑值进行签名或验签。
2、电子签章结构体中的原文杂凑值
在密码规范GB/T 38540-2020中规定电子签章结构体中要有原文杂凑值一项。如下图:
如果从字面意思来说,dataHash中存储的值应该是原文数据通过sm3运算得到的杂凑值。但实际中仍然会有如果签名或验签过程中的数据处理方式,即先使用签名方公钥和签名者ID运算得到Z值,然后使用z值和原文通过sm3运算得到杂凑值。
3、电子印章中的使用者证书项
在密码规范GB/T 38540-2020中规定,电子印章结构体中可以保存使用者签名证书或使用者签名证书的杂凑值:
如果certListType等于2,那么certList的子项肯定要包含签章者证书的杂凑值。那么者签章者证书的杂凑值计算仍然可能会有两种情况:单纯使用sm3运算,或者先计算Z值,然后在使用sm3运算得到杂凑值。
上述三种情况下,如果要计算Z值,用户ID可以使用默认值,这样第三方可以自行开发验签程序,GM/T 0009-2012中规定,用户ID默认值为:
0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38
如果用户ID不使用默认值,那只能视情况而定,或者干脆无法验证了。