文章总结: 该文档详细解析RSA加密算法的核心机制,包括RSAES-OAEP和RSAES-PKCS1-v15两种加密方案以及RSASSA-PSS和RSASSA-PKCS1-v15两种签名方案。重点阐述了PKCS1-v1_5和OAEP填充算法的具体流程与安全考量,通过数学原理说明RSA密钥生成、加密解密过程,并指出传统方案的兼容性需求与现代推荐标准。文档还分析了各种方案抵抗特定攻击的安全机制。 综合评分: 75 文章分类: WEB安全,应用安全,技术标准,密码学,安全开发
信息安全-RSA
谈思实验室
2026年4月16日 09:49 上海
在小说阅读器读本章
去阅读
点击上方蓝字谈思实验室
获取更多汽车网络安全资讯
01
简介
SSA = Signature Scheme with Appendix
PSS = Probabilistic Signature Scheme
ES = Encryption Schemes
SSA是填充、封装格式
PSS是私钥签名流程。
ES 是公钥加密流程。
RSA的加密机制:RSAES-OAEP和RSAES-PKCS1-v1_5,PKCS#1推荐在新的应用中使用RSAES- OAEP,保留RSAES-PKCS#1-v1_5跟老的应用兼容。它们两的区别仅仅在于加密前编码的方式不同,而加密前的编码是为了提供了抵抗各种活动的敌对攻击的安全机制。与对称加密算法DES,AES一样,RSA算法也是一个块加密算法( block cipher algorithm),总是在一个固定长度的块上进行操作。但跟AES等不同的是,block length是跟key length有关的。
RSA的签名机制:RSASSA-PSS和RSASSA-PKCS1-v1_5。同样,推荐RSASSA-PSS用于新的应用,而RSASSA-PKCS1-v1_5只用于兼容老的应用。
02
RSA算法详解
- 确认n,选择两个互质的数p=61,q=53,n=p*q=3233,φ(n)=60*52=3120;
- 确认e,1<e<φ(n),且e与φ(n)互质,选择e=17,实际中会选择65537;
- 确认d,e*d%φ(n)=1;(n,e)为公钥,(n,d)为私钥;
本质在于,即使你知道了n,但是只要保证n足够大,就算你知道了n,在不知道p和q的情况下你也求不出φ(n)。
加密:假设发送方向接收方发送信息m,m未加密,我们称之为明文。发送方从接收方获得的公钥为(n,e),加密公式为me=c(mod n)其中,m必须是整数,而且m必须比n小。 m,e,n已知,从上面的公式中计算出c,c就是加密后的信息,我们称之为密文。发送方将密文发送给接收方。
解密:接收方从发送方接收到密文c,用自己的配对私钥(n,d)进行解密,解密公式为cd=m(mod n)已知c,n,d,从上面公式中计算出m,就是发送方发过来的明文;
缺点: 产生密钥麻烦,受到素数产生技术限制,很难做到一次一密;速度太慢,比DSA最低差两个数量级,由于RSA分组长度太大,n至少为600位,使得运算代价很高;
03
填充算法
- OAEP= Optimal Asymmetric Encryption Padding
- PSS = Probabilistic Signature Scheme
RSA加密常用的填充模式有三种:RSA_PKCS1_PADDING, RSA_PKCS1_OAEP_PADDING, RSA_NO_PADDING。签名和加密的填充主要是出于安全性考虑:
1: 例如TLS流程中的RSA公钥加密(client key exchange),client会使用随即算法生成2+46=48字节的pre_master_key。 若不进行填充而直接加密,那么显然相同的pre_master_key,会得到相同的密文。这种在语义上来说,是不安全的。
2: 加密流程
加密方加密m:c = m^e mod n,传输c
解密方解密c:m = c^d mod n,还原m
由于c在网络上传输,如果网络上有人对其进行c’ = c*k^e mod n,这样的替换那么解密方得到的结果是
即中间人有办法控制m。
04
RSAES-PKCS1-v1_5 加密流程
EM = 0x00 || 0x02 || PS || 0x00 || M
作用:RSA公钥加密
加密过程:
1:待加密数据为M,规范要求M必须不大于k-11,其中k是模数n的字节数。
2:若1满足,则计算不存在字节0的随机值PS,显然根据下面的等式可以推算出,PS的长度是 k – M_len – 3
EM = 0x00 || 0x02 || PS || 0x00 || M
EM作为RSA运算的底数M,进行运算。C = EM ^e mod n;
解密过程:
1:校验C的长度,C必须是k字节长度。
2:C ^d mod n得到EM
EM理论上是0x00 || 0x02 || PS || 0x00 || M这种格式的,所以校验的方法也相对比较简单。
先判断开头2字节是否是0x00 0x02,然后找到第一个0x00,这个0x00后面的值就是解密后的明文。
05
RSASSA-PKCS1-V1_5-SIGN签名流程
EM = 0x00 || 0x01 || PS || 0x00 || T
该签名流程,使用了EMSA-PKCS1-v1_5 封装格式;
1:计算M的哈希值,H = hash(M),哈希可能是MD5、SHA1、SHA2等算法。
2:H并不会简单的进行模幂运算,而是需要进行封装后才会进行,它需要ASN1编码,下面段数据T的数据组织(OID指的具体HASH算法的id,oid_size表示这个id的长度)
RFC中举例了各个常用算法组织成的 T:
3:EM = 0x00 || 0x01 || PS || 0x00 || T
到此,EMSA-PKCS1-v1_5规范定义完毕,下一步才是真正的签名
4:计算C = EM^d mod n,得到C就是签名的最后结果。
06
RSASSA-PSS签名流程
作用:RSA私钥签名
RSASSA-PSS 签名流程 使用了 EMSA-PSS 封装格式。
我们先描述 EMSA-PSS 封装格式,因为这是 RSASSA-PSS签名流程的一部分。
签名:若要对数据M进行签名 ,步骤:
1:计算 mHash = Hash(M),其长度为hashlen
2:计算slen长度的随机值salt,这里slen取hashlen。
3:计算 M’ = Hash(00 00 00 00 00 00 00 00 || mHash || salt)
4:计算 DB = PS || 0x01 || salt,PS是字节0。PS的长度是nLen – 2*hashlen – 2 。然后 到这里,待签名数据的内存布局如下
看上面这种内存布局,也就好理解为什么PS的长度是 nLen – 2*hashlen – 2 了。
5:进行MGF运算
5-1: 计算hash值mask
5-2:
5-3: 执行5-1,5-2,直到 ptr 中的 salt 也被 mask 异或运算 为止。最后的结果是 EM。
换句话说,不考虑counter以及hash函数,maskDB, 是由M’亦或得到的。
6:执行 EM^d mod n 得到签名结果C。注意:RFC上,对EM的首字节还需要特殊处理,但是实际应用中,都是一个固定的操作,这里不说了。(具体见 9.1.1 节的 step 11 )。
验签:
1:解密C,得到的结果是 EM。
2:解封装EM。EM解密出的结果是EM = maskDB || M’ || 0xBC,验证签名没有EMSA-PKCS1-v1_5那么简单,因为EMSA-PKCS1-v1_5封装格式中没有随机值。所以这里需要进行文字描述。EMSA-PSS解封装的核心就是需要恢复salt,就是封装时的那个随机值。 如何恢复salt, 我们回顾签名第四步的ptr,salt就是M’前的hashlen字节的值,只是被mask亦或了。我们只需要再被mask亦或一次,就能恢复salt。那mask是什么,我们回顾签名第5-1步,mask = Hash(M’ || counter);我们的EM 中是存在M’的,所以,验证签名的一方能够计算mask。换句话说,dataA ^ dataB = dataC,dataC ^ dataB = dataA,这个是简单的数学原理。既然我们有 dataC(EM), dataB(hash(M’+counter)),自然能得到 DataA。
3:执行MGF, 也就是签名流程的第5步,他的结果就是我们能够得到 签名流程第四步的ptr。即能够得到salt。
4:至此我们从EM得到salt,M’,然后我们的入参又有 M,接下来的步骤就是使用 salt 和 M 生成, M”,理论上 M” 和 M’ 是相等的。这就是验证的流程。
07
RSAES-OAEP原理
RSA中的一个短信息可以导致密文易遭受短信息攻击。也已经说明简单地给信息填充伪数据(填充位)也许就会使敌手的工作变得十分困难,但是通过更进一步的努力,她还可以对密文进行攻击。解决这种攻击的办法就是应用称为最优非对称加密填充(OAEP)的过程。下图,就是该过程的简单版本,执行时也许要用更为完善的版本。
来源:CSDN@qq_24925595
https://blog.csdn.net/qq_24925595/article/details/104941516?spm=1001.2014.3001.5502
end
谈思汽车媒体门户
精品活动推荐
AutoSec系列沙龙
专业社群
部分入群专家来自:
新势力车企:
特斯拉、理想、极氪、小米、零跑汽车、阿维塔汽车、智己汽车、小鹏、岚图汽车、蔚来汽车、吉祥汽车、赛力斯……
外资传统主流车企代表:
大众中国、大众酷翼、奥迪汽车、宝马、福特、戴姆勒-奔驰、通用、保时捷、沃尔沃、现代汽车、日产汽车、捷豹路虎、斯堪尼亚……
内资传统主流车企:
吉利汽车、上汽乘用车、长城汽车、上汽大众、长安汽车、北京汽车、东风汽车、广汽、比亚迪、一汽集团、一汽解放、东风商用、上汽商用……
全球领先一级供应商:
博世、大陆集团、联合汽车电子、安波福、采埃孚、科世达、舍弗勒、霍尼韦尔、大疆、日立、哈曼、华为、百度、联想、联发科、普瑞均胜、德赛西威、蜂巢转向、均联智行、武汉光庭、星纪魅族、中车集团、潍柴集团、地平线、紫光同芯、字节跳动、……
二级供应商(500+以上):
中科数测、ETAS、BlackDuck、NXP、上海软件中心、Deloitte、奇安信、为辰信安、云驰未来、信长城、泽鹿安全、纽创信安、复旦微电子、天融信、奇虎360、中汽中心、中国汽研、上海汽检、加特兰微电子、浙江大学……
人员占比
公司类型占比
文章
不要错过哦,这可能是汽车网络安全产业最大的专属社区!
关于涉嫌仿冒AutoSec会议品牌的律师声明
一文带你了解智能汽车车载网络通信安全架构
网络安全:TARA方法、工具与案例
汽车数据安全合规重点分析
浅析汽车芯片信息安全之安全启动
域集中式架构的汽车车载通信安全方案探究
系统安全架构之车辆网络安全架构
车联网中的隐私保护问题
智能网联汽车网络安全技术研究
AUTOSAR 信息安全框架和关键技术分析
AUTOSAR 信息安全机制有哪些?
信息安全的底层机制
汽车网络安全
Autosar硬件安全模块HSM的使用
首发!小米雷军两会上就汽车数据安全问题建言:关于构建完善汽车数据安全管理体系的建议
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:谈思实验室 《信息安全-RSA》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。








评论