公钥密码--RSA

公钥密码--RSA

博主是初学公钥密码,本意是想整理一些经典的密码系统,加深记忆也方便日后查找;整理成一个系列公钥密码,方便检索。
如果有错,欢迎指正。

RSA非对称加密算法是由Rivest,Shamir,Adleman三人在1978年的“A Method for Obtaining Digital Signatures and Public-Key Cryptosystems”一文中提出,Euler’s Theorem、Fermat Little Theorem、循环群都和RSA公钥密码系统有关。RSA的思想是公钥加密,私钥解密

常用符号

  • p k pk pk:公钥public key
  • s k sk sk:私钥secret key
  • m m m:明文message
  • c c c:密文ciphertext

加密方案

密钥

  • pk ( n , e ) (n,e) (n,e)
    • n:根据 φ ( m n ) = φ ( m ) φ ( n ) φ(mn)=φ(m)φ(n) φ(mn)=φ(m)φ(n),且素数 p p p的既约剩余系个数为 “ p − 1 ” “p-1” p1,我们知道找两个素数 p , q p,q p,q,相乘得到 n = p q n=pq n=pq,那么 φ ( n ) = φ ( p q ) = φ ( p ) φ ( q ) = ( p − 1 ) ( q − 1 ) \varphi(n)=\varphi(pq)=\varphi(p)\varphi(q)=(p-1)(q-1) φ(n)=φ(pq)=φ(p)φ(q)=(p1)(q1)
    • e:随机选取整数 1 < e < φ ( n ) 1<e<\varphi(n) 1<e<φ(n),使得 ( e , φ ( n ) ) = 1 (e,\varphi(n))=1 (e,φ(n))=1
  • sk d d d
    • d d ≡ e − 1 ( d\equiv e^{-1}( de1(mod φ ( n ) ) \varphi(n)) φ(n))

加密

c ≡ m e ( c\equiv m^e( cme(mod n ) n) n)

解密

m ≡ c d ( m\equiv c^d( mcd(mod n ) n) n)

正确性

d ≡ e − 1 ( d\equiv e^{-1}( de1(mod φ ( n ) ) → e d ≡ 1 ( \varphi(n))\\ \rightarrow ed\equiv 1( φ(n))ed1(mod φ ( n ) ) → e d = 1 + k ⋅ φ ( n ) \varphi(n))\\ \rightarrow ed=1+k·\varphi(n) φ(n))ed=1+kφ(n)

c d ( c^d( cd(mod n ) ≡ ( m e ) d ( n)\\ \equiv(m^e)^d( n)(me)d(mod n ) ≡ m e d ( n)\\ \equiv m^{ed}( n)med(mod n ) ≡ m 1 + k ⋅ φ ( n ) ( n)\\ \equiv m^{1+k·\varphi(n)}( n)m1+kφ(n)(mod n ) ≡ m ⋅ m k ⋅ φ ( n ) ( n)\\ \equiv m·m^{k·\varphi(n)}( n)mmkφ(n)(mod n ) ≡ m ⋅ ( m φ ( n ) ) k ( n)\\ \equiv m·(m^{\varphi(n)})^k( n)m(mφ(n))k(mod n ) n) n)

  • ( m , n ) = 1 (m,n)=1 (m,n)=1,则根据欧拉定理 m φ ( n ) ≡ 1 ( m^{\varphi(n)}\equiv 1( mφ(n)1(mod n ) → m ⋅ ( m φ ( n ) ) k ≡ m ( n)\rightarrow m·(m^{\varphi(n)})^k\equiv m( n)m(mφ(n))km(mod n ) n) n)
  • ( m , n ) ≠ 1 (m,n)\neq 1 (m,n)=1,因为 p , q p,q p,q是素数,则根据费马小定理 m p ≡ m ( \\ m^p\equiv m( mpm(mod p ) → m p − 1 ≡ 1 ( p)\\ \rightarrow m^{p-1}\equiv 1( p)mp11(mod p ) → m φ ( p ) ≡ 1 ( p)\\ \rightarrow m^{\varphi(p)}\equiv 1( p)mφ(p)1(mod p ) → ( m φ ( p ) ) φ ( q ) ⋅ k ≡ 1 ( p)\\ \rightarrow (m^{\varphi(p)})^{\varphi(q)·k}\equiv 1( p)(mφ(p))φ(q)k1(mod p ) → m k ⋅ φ ( n ) ≡ 1 ( p)\\ \rightarrow m^{k·\varphi(n)}\equiv 1( p)mkφ(n)1(mod p ) → m ⋅ ( m φ ( n ) ) k ≡ m ( p)\\ \rightarrow m·(m^{\varphi(n)})^k\equiv m( p)m(mφ(n))km(mod n ) n) n)

所以 c d ≡ m ( c^d\equiv m( cdm(mod n ) n) n)

安全性

RSA的安全性基于大整数素因子分解的困难假设

  • 大整数素因子分解问题: p , q p,q p,q为大素数, n = p ⋅ q n=p\cdot q n=pq,已知 n n n,想要求解 p , q p,q p,q
  • 因为RSA的私钥 d ≡ e − 1 d\equiv e^{-1} de1 mod ϕ ( n ) \phi(n) ϕ(n) ϕ ( n ) = ϕ ( p ) ϕ ( q ) = ( p − 1 ) ( q − 1 ) \phi(n)=\phi(p)\phi(q)=(p-1)(q-1) ϕ(n)=ϕ(p)ϕ(q)=(p1)(q1),所以只要能由 n n n分解出 p , q p,q p,q,就可以计算出 ϕ ( n ) \phi(n) ϕ(n),因为 e e e是公开的,从而可计算出 d d d,求解明文 m m m

大整数素因子分解问题属于 N P NP NP复杂性类。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值