freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

RSA算法基础
2021-10-25 10:02:37

文章目录

前言
相关介绍
一、变量
二、公式
三、RSA
[1]. 发布公钥(n,e)
[2]. 发布密文(c)
[3]. RSA解密
四、总结

前言

文章首发于CSDN,安全-RSA算法基础
此篇文章的内容是从书本上概况下来的
每轮信息发送时,攻击者、接收者、发送者得到的新信息以高亮的形式体现

相关介绍

yafu大素数分解

一、变量

先介绍一下RSA算法当中可能会出现的变量,顺序从A-Z

变量介绍
c中间量,可通过m、e、n计算得到
d中间量,可通过e、φ(n)计算得到
dp中间量,可通过d、p计算得到
dq中间量,可通过d、q计算得到
e一个素数,通常指定值=65537,取值范围为(1,φ(n)),且与φ(n)互素
m明文的hex值
n中间量,可通过p、q计算得到
p大素数
q大素数
φ(n)欧拉函数,可通过p、q计算得到

二、公式

^表示次方
mod表示取模,即求余数

n = p*q

φ(n) = (p-1)*(q-1)

c = ( m^e ) mod n

d = 1 mod φ(n) / e

m = ( c^d ) mod n

dp = d * (p - 1)

dq = d * (q - 1)

三、RSA

为了方便理解,分成了发布者、接收者、攻击者来模拟现实的情况。

[1]. 发布公钥(n,e)

刚开始时,发布者先广播了一条内容:我有消息需要发给接收者
然后接收者和攻击者都明白了发布者要发布内容。

接收者为了让发布者能更好地隐藏内容,提议使用RSA算法
然后接收者先确定了两个素数p和q,再确定了一个素数e
通过p和q,由公式计算出了n,接收者就在网络中发布了公钥(n,e)

此时网络中的三人所拥有的信息如下:

用户已知信息
发布者n、e
接收者n、e、p、q、φ(n)
攻击者n、e

用到的公式

n = p*q
φ(n) = (p-1)(q-1)

[2]. 发布密文(c)

当接收到了公钥(n,e)之后,发布者先将需要传输的内容通过hex等方法转换成了数字m
由公式计算出了c,并通过广播发布了(c)

此时网络中的三人所拥有的信息如下:

注:表格高亮处为此步骤中用户新得知的内容

用户已知信息
发布者n、e、m、c
接收者n、e、p、q、φ(n)、c
攻击者n、e、c

用到的公式

c = ( m^e ) mod n

[3]. RSA解密

接收者接收了c之后,就可以开始解密的步骤了
先由公式计算出中间量d,然后再由公式计算出m
最后将m进行hex的方式进行转码后,得到了明文
私钥即为(n,d)

此时网络中的三人所拥有的信息如下:

用户已知信息
发布者n、e、m、c
接收者n、e、p、q、φ(n)、c、d、m
攻击者n、e、c

用到的公式|

d = 1 mod φ(n) / e

m = ( c^d ) mod n

四、总结

如果公钥(n,e)中的n数值过小时,对应的p和q就容易通过脚本爆破出来
攻击者得到了p和q时,同样能够进行RSA解密的操作
通常来说2048位以上的n是安全的,你可以参考yafu大素数分解来将n分解成p和q

# 密码学 # 非对称加密
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录