18910140161

RSA签名的PSS模式

顺晟科技

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握手的服务器密钥交换阶段)

相关文章
我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航