一、什麽是PSS模式? 1.1、两种签名方式之一RSA-PSS PSS (Probabilistic Signature Scheme)私钥签名流程的一种填充模式。目前主流的RSA签名包括RSA-PS
顺晟科技
2021-06-16 10:38:57
744
1.什么是PSS模式?
1.1 RSA-PSS,两种签名方法之一
概率签名方案私钥签名过程的填充模式。主流的RSA签名包括RSA-PSS和RSA-PKCS # 1 1 1.5版.对应的PKCS(公钥密码标准)是一种可以自签名的签名,但是PSS不能从签名中恢复原始签名。openssl-1.1.x之后,默认使用更安全PSS的RSA签名模式。
1.2、灌装的必要性
RSA算法速度较慢,一般用于非对称加密的私钥签名和公钥验证。由于RSA算法不添加随机数,当出现重复的原始数据时,攻击者会通过相同的加密密文猜测原始文本,因此引入填充机制来增强安全性。
如果TLS过程中的密钥材料直接加密而不填充,那么显然相同的密钥会得到相同的密文。这在语义上不安全。以下示例说明了无填充模式的安全漏洞。
m:纯文本
e,n: RSA参数(公钥)
D: RSA参数(私钥)
c:网络传输密文
加密器加密m: c=m e mod n,传输c。
解密器解密c: m=c d mod n,还原m。
' c ':篡改密文
k:篡改代码
因为c是在网络上传输的,如果网络上有人用C c'=c*k^e mod n来代替,那就用c来代替
那么解密方就会得到结果
(c*ke)d mod n
=(c^d国防部n)* (k^ed国防部n)
=m*k
也就是中间人有办法控制m。
1.3.电力系统稳定器的基本要素
使用PSS模式的RSA签名过程如下:
图1。RSA-PSS的填充模式
与PKCS#1 v1.5的填充相比,它要简单得多:
图2。RSA-PKCS # 1.5的填充模式
PSS的一些概念:
哈希算法,一般使用SHA-1
MGF函数(掩模生成函数)。默认值为MGF1。
盐的长度,一般由hLen决定。当为0时,签名值变得确定。
截断符号,通常为0xbc
二、RSA签名的实际操作
本例中涉及的文档描述了:
/tmp/通配符_ domain.sports.qq.com.v2.key:私钥
/tmp/pub:公钥
/tmp/data:明文
/tmp/endata:密文
/tmp/sign:签名
/tmp/de_sign:无符号
2.1准备工作:公钥和私钥
从密钥文件中提取公钥
open SSL RSA-in/usr/local/services/SSL _ agent/ca/通配符_ domain . sports . QQ.com . v2 . key-pub out-out/tmp/pub
原始数据:
echo -n '1234567890' /tmp/data
这样就有了一对公钥和私钥,用来测试RSA加解密(加密、解密)和签名验证(签名、验证)
RSA加密的两种算法是RSAES-PKCS-v1_5和RSAES-OAEP。
2.2、加密和解密(加密、解密)
加密:
open SSL RSA outl-publibin-inkey/tmp/data-in/tmp/data-encrypt-out/tmp/endata
解密,用私钥解密,得到原始值:
open SSL RSA utl-inkey/tmp/通配符_ domain . sports . QQ.com . v2 . key-in/tmp/en _ data-decrypt
2.3、签名和验证(签名、验证)
签名过程包括散列和加密。哈希函数一般用sha1。这样输入明文,直接生成签名。
如果是私钥签名,它做的是先哈希再加密。选择一种哈希算法将原始消息计算成ASN1格式,然后用私钥对数据进行加密后发送出去。数据本身没有加密。这种方法主要用于验证数据源是否可信。发送时,将原始数据连同签名一起发送出去。
签名:
open SSL sha1-sign/tmp/通配符_ domain . sports . QQ.com . v2 . key/tmp/data/tmp/data/sign/tmp/data/sign
未签名的签名:
open SSL RSA outl-pubin-inkey/tmp/pub-in sign-verify-out/tmp/de sign _ sign
用公钥解锁签名并保留空白
open SSL RSA utl-pubin-inkey/tmp/pub-in/tmp/sign-encrypt-raw-hex dump
使用解绕ASN1解绕签名,或者在签名后使用ASN1工具解析。
open SSL RSA utl-pubin-inkey/tmp/pub-in/tmp/sign-verify-asn1 parse
或者:
open SSL asn1 parse-inform der-in/tmp/de _ sign
与本地sha1比较
openssl sha1 /tmp/data
如果两个散列结果相同,那么请确保签名发送正确。
2.4.openssl rsautl工具支持的填充模式
Openssl rsautl - help,可以看到支持的填充模式有,可以在rsautl中加入以下选项,重复2.2~2.3的实验。
-ssl使用SSL v2填充
-生的不用衬垫
-pkcs使用PKCS#1 v1.5填充(默认)
-oaep使用PKCS#1 OAEP
三、电力系统稳定器填充模式的特点
PSS是RSA的填充模式之一。
完整登记册系统管理人的填写方式包括:
RSA _ SSLV 23 _ PADDING(SSLV 23 PADDING)
RSA_NO_PADDING(无填充)
RSA _ pkcs1 _ oaep _ padding(RSA es-oaep padding,强制SHA1,加密使用)
RSA_X931_PADDING(X9.31 padding,用于签名)
RSA _ pkcs1 _ PSS _ padding(r sassa-PSS padding,用于签名)
Rsa _ pkcs1 _ padding(由RSA es-pkcs1-v1 _ 5/r sassa-pkcs1-v1 _ 5填充,可使用签名)
主要灌装方式有PKCS1和PSS。
PSS的优缺点如下:
Pcs # 1 v1.5易于实现,但缺乏安全性证明。
PSS更安全,所以新版openssl-1.1.x优先使用PSS进行私钥签名(具体在ssl握手的服务器密钥交换阶段)
16
2021-06
16
2021-06
16
2021-06
16
2021-06
16
2021-06
16
2021-06