网络安全原理笔记之RSA公开密钥密码系统

RSA公开密钥密码系统

上课的时候老师说了这个是重点,然而老师讲的太快啥也没听懂,课后用了一些时间进行了梳理,用此博客进行记录。

RSA密钥产生过程

直接看RSA密钥的产生过程,前置知识将补充讲述。

  1. 选择两个大素数p和q ,p和q应该尽可能大;
  2. 计算乘积n=p*q
  3. 计算Φ(n)=(p-1)*(q-1)
  4. 选择一个数e,满足e∈(1,Φ(n))且e与Φ(n)互质;
  5. 根据等式 e×d mod Φ(n) = 1,求出d;
  6. 公钥是 {e,n} ,私钥是 {d}

解释和补充

这里面有一些容易记不清楚的数学概念(虽然这些作为计算机学习者应该早就烂熟于心,惭愧惭愧)

  1. 素数:当一个不为1的数只能与1和它本身整除时,这个数被称作素数。
  2. 互质:当两个数的公因数只有1时,称这两个数互质。在这个意义上,1虽然不是素数,但他与其他任意大于1的整数互质。
  3. Φ(n)是欧拉函数,表示的是≤n的正整数中与n互质的数的数目,因为素数x在[1,x]上只有x本身能与其整除,因此Φ(x)=x-1。同时,对两个素数x,y有Φ(xy)=Φ(x)Φ(y)。

RSA的加密和解密

加密公式如下:
c i = m i e   m o d   n ; \begin{aligned} c_i=m_i^e \ mod \ n; \end{aligned} ci=mie mod n;

解密公式如下:
m i = c i d   m o d   n ; \begin{aligned} m_i=c_i^d \ mod \ n; \end{aligned} mi=cid mod n;
其中, m i m_i mi表示需要加密的明文, c i c_i ci表示通过公钥{e,n}加密得到的密文。
把表示明文的信息通过公式的计算就可以得到对应的密文。
当我们要把密文还原成可以阅读信息时,我们就可以通过私钥{d}对加密信息进行还原。

分析

根据规定,公钥{e,n}是公开的,任何人可以通过这个公钥对信息进行加密,而私钥{d}是保密的,拥有者可以使用私钥对加密信息进行解密还原。那么,为了保证信息不被泄露,我们必须对私钥进行严格保密。
如果想要破解一个RSA公钥密码系统的私钥,我们需要怎么做呢?
根据密钥的生成过程我们可以知道这个生成关系
p , q → n → Φ ( n ) → e Φ ( n )   &   e → d p,q \to n \to Φ(n) \to e \\ Φ(n) \ \& \ e \to d p,qnΦ(n)eΦ(n) & ed
想要知道私钥d,我们就必须得到Φ(n)和e,其中e是已知的,那么也就是我们需要求出Φ(n)。Φ(n)可以根据p和q得到,那么终极目标就是求出p和q。
p和q是一对素数,我们已知它们的积n,能否试出n的这样一对素数因数呢?
这是一道经典的“大数分解”的问题,这是一个NP问题。
答案是当然是可行的,但是如果p和q都足够大的话,想要求出它们需要耗费的资源是非常非常巨大的,当解密的耗费远大于收益时,从这个维度上我们可以认为这个加密时非常安全的,毕竟没有人会去做赔本的买卖嘛。

RSA公钥密码系统存在的缺陷

两个公式中都包含着指数运算,在数字比较大的情况下,加密的运算非常复杂,效率非常低下。因此在实际使用时,一般把比较关键的信息使用RSA进行加密,而其他主体信息通过更简单的DES等来进行加密。
比如用RSA来交换DES的密钥。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值