白话RSA算法原理

密码学研究的是加密和解密。

    - 加密就是把明文通过“加密算法”变成密文。
    - 解密就是把密文通过“解密算法” 变成明文。

加密算法,我们可以认为就是在涉及一个算法,使得 明文变成别人看不懂的符号,同时自己有办法看得懂的算法。(从严格上来讲,只要只需要把明文变成别人看不到的符号就可以了,但这样没任何意义。)

解密,则是运用各种手段把别人的密文转变为明文。

解密有很多种手段,尽管我要讲的是“RSA算法”,但是为了更好的理解,RSA算法的设计初衷,有必要了解密的一些知识。

解密算法的手段可以分为:

    - 如果无法获取“明文和密文”样本,同时无法获得加解密算法,直接通过密文,推测明文的意思。

比如 uoy evol i。这种破解方法依赖于我们的常识,运营常识破解,运用常识验证正确性。

    - 如果可以获取“明文密文样本”,但是无法获取加解密算法,收集大量的密文和明文进行比对,分析出加密过程,然后得出解密的算法。

如:love ->【hashmap(x)= x + 2】 —>nqxg,我们可以通过分析明文密文样本得出hashmap(x)的算法。

    - 如果可以获得“明文密文样本”,可以获得加解密算法,但是无法获取加解密算法所依赖的密钥。

这个只能通过分析加解密算法,以及明文密文样本,从而最少的暴力尝试,猜测去这个密钥了或者尝试去寻找这个算法的漏洞,绕过密钥验证。

比如:love ->【hashmap(x)= x^s + 2】 —>nqxg, s为密钥。
.

那么RSA怎么破解呢?
1.RSA的加密算法是公开的,所以加密算法和解密算法是已知的。
2.明文和密文通常是未知了,但是可以通过社工手段获取,所以可以认为是已知的。
3.加密钥匙和解密钥匙有其中一把是已知,另一把是未知的。
4.这个算法不存在漏洞,我们先假定他不存在漏洞,只是我不知他有什么漏洞,大部分人也不知道。

.所以,我们只能通过暴力手段在最少的尝试次数下去,去猜测密钥。哈哈,这几乎不可能猜得中。为什么呢?

因为RSA算法就是为了让你很难暴力猜中才设计的。

RSA算法被设计为:用最低的成本生成钥匙,却要用非常大的成本猜中密钥。

如果,你想要通过暴力去破解,就会进入RSA的陷阱了,所以破解RSA最有效的手段就是通过其他手段获取另一个密钥,比如社工手段。


RSA算法怎么设计呢?首先我们要将RSA的需求一个一个分析出来,然后在根据需求去迭代。就跟软件工程开发一样,满足最小可用性,一个需求一个需求地去迭代。


首选RSA要实现第一个需求:
将一个明文数变成一个密文数,密文数的不能大于n,需求的目的:加密后的密文不能太占用内存。
所以RSA算法为 RSA(x) = x mod n


第二个需求:
算法公开,n也是公开的,但是不能让别人解密,算法公开为了预防算法泄漏之后被别人破解了,所以我们干脆公开算法,但是不能让别人解密。
所以RSA算法为 RSA(x) = x^s mod n,s不能让别人知道。只要别人猜不中s的值,别人就无法知道破解了。

第三个需求:
通过密钥可以很容易解密,解密算法和加密算法一致

若 RSA(x) = x^s mod n, 已知s,RSA(x),n,求X几乎不可能,太难了。
那么是否存在另一个数p,使得 x = RSA(x) ^p mod n 成立呢?如果存在,这个p是多少?

我们可以用反证法,证明这个数存在,

如果存在另一个数p,使得 x = RSA(x) ^p mod n 成立,
那么

x = (x^s mod n) ^p mod n

= (x^s) ^p mod n

= x ^(s*p) mod n ,

设N = s*p,如果存在一个数N,使得
x =x^N mod n 成立

那么p就存在。

x =x^N mod n。然后我们会思考有哪些公式定理和这个长得差不多呢?如果有这样的公式,是否能通过等式变化成【x =x^N mod n】呢?

确实有这样的公式定理,
那就是大名鼎鼎的【欧拉定理】

1 = x^φ(n) mod n


这里开始不白话了,有空再白话

欧拉定理可以转化为 x = x^ ( kφ(n) + 1 ) mod n
所以, N = kφ(n) + 1 ,那么p = N /s = ( kφ(n) + 1)/s
我们只需要 求出 φ(n) 然后通过调整k,因素分解出s,p ,是的s != p 就可以了, s,p分别是2个不相等的密钥。

整个RSA就这样诞生了

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值