《深入浅出HTTPS》读书笔记(18):公开密钥算法RSA(续)

【RSA算法安全性】

幂运算的逆过程就是求对数问题,而模运算可以认为是离散问题,组合起来RSA算法就是离散对数模型,只要密钥长度足够长,离散对数很难破解。

破解私钥有两个方法:

◎公钥持有人有e和n,而要计算出私钥d,需要知道p和q,想通过一个巨大的数字n获取p和q是一个因式分解问题,暴力破解很难。

◎攻击者假如想通过密文和公钥破解私钥,就要求解决离散对数问题,更是难上加难。

对于RSA非对称加密算法来说,一个2048比特长度的密钥对被认为是安全的。

【PKCS标准】

公开密钥算法也有使用标准,公开密钥算法的标准称为PKCS(Public Key Cryptography Standards)

学习RSA算法主要使用PKCS#1标准。

和AES算法一样,RSA算法也有填充标准,使用RSA算法进行加密解密的时候,如果使用不当很容易出现安全问题。比如说同样的明文、同样的密钥经过RSA加密,如果每次得到的密文都是相同的,破解的风险就比较大。为了解决类似的安全问题,PKCS#1标准定义了两种机制,用于处理填充问题,从而保证同样的明文、同样的密钥经过RSA加密,每次的密文都是不一样的。

两种填充机制分别是RSAES-PKCS1-V1_5和RSAES-OAEP。

目前推荐使用的填充标准是RSAES-OAEP, OpenSSL命令行默认使用的标准是RSAES-PKCS1-V1_5。

【RSA加密算法的应用场景】

是公开密钥算法运算很慢,所以很少使用公开密钥算法加密。应用场景如下:

1)单步加密

公钥是公开的,很多客户端知道,而私钥必须由服务器端保密,所以一般客户端用公钥加密的方式传递一些关键数据,比如客户端可以对自己的信用卡号加密,然后传递给服务器端,服务器端解密后无须回应,这就是单步加密的模式。

由于只有服务器端才有私钥,所以攻击者即使获取到加密数据也不能进行反解。

2)双向加密

◎客户端生成一对RSA密钥对,然后连接服务器端,并将自己的公钥(clientPublicKey)发给服务器端。

◎服务器端接收请求后,保存客户端的公钥,然后生成另外一对RSA密钥对,并将公钥(serverPublicKey)发送给客户端。

◎客户端使用服务器的公钥(serverPublicKey)加密身份证号,加密的数据发送给服务器端

◎服务器端接收到数据后,用自己的私钥(serverPrivateKey)解密,然后查询出用户的余额,并用客户端的公钥(clientPublicKey)加密余额,并发送给客户端。

◎客户端用自己的私钥(ClientPrivateKey)解密接收到的数据。

这就是双向加密,如果不考虑性能问题,RSA算法确实可以完成数据加密。

相关推荐
deepseek234 小时前
OpenAI三项科学发现拆解:3-SAT亚指数算法挑战ETH,AI科学声明的验证流水线怎么搭
人工智能·算法·openai
梦帮科技4 小时前
基于幺正李代数连续归一化流的混合量子生成模型 (HQNN-Flow) 完整技术指南(上部分)
网络·人工智能·算法·量子计算
云老大-阿里云国际站代理商4 小时前
阿里云国际站渠道代理商:ECS 怎么对接 OSS?权限、域名、网络路径怎么配置?
网络·阿里云·php
智塑未来4 小时前
PTFE线缆膜低介电低损耗特性助力高频毫米波信号传输及行业趋势解析
1024程序员节
青少儿编程课堂4 小时前
蓝桥杯青少组 + 全国青少年信息素养大赛 + 电子学会图形化考级|校园推箱子大挑战解析
c++·python·算法·bfs·信息学竞赛
Multipath7124 小时前
上车即入院,链路先到院——乾元通多链路聚合,为智慧救护车守住移动中的生命线
网络·人工智能·网络协议·udp·无人机
安全界龙哥4 小时前
P7 DarkSword iOS 漏洞套件:17 条命令远程收割 iCloud 钥匙串与加密钱包
网络安全·1024程序员节
.Bryce.4 小时前
T2-LLM评测不等于Agent评测
android·java·人工智能·后端·gpt·agent·1024程序员节
字节渡客4 小时前
定时任务不是写个 cron 就完事,那些容易被忽略的调度陷阱
1024程序员节
2401_868534784 小时前
论智慧医院网络建设
服务器·网络