公钥密码RSA

公钥加密体制模型

  • 发送方A查找接收方B的公钥;
  • A采用公钥加密算法用B的公钥对明文进行加密;
  • A通过不安全信道将密文发送给B;
  • B收到密文后使用自己的私钥对密文解密还原出明文。

单向陷门函数

  • 给定x,计算 y=f(x) 是容易的
  • 给定y,计算 x 使得 y=f(x) 是困难的
  • 存在δ,已知δ时,对给定的任何y,若相应的x存在,则计 算 x 使 y=f(x) 是容易。

注意:

  • 仅满足(1)、(2)两条的称为单向函数;第(3)条称为陷门性,δ 称为陷门信 息。
  • . 当用陷门函数f作为加密函数时,可将f公开,这相当于公开加密密钥。此时 加密密钥便称为公钥,记为Pk。 f函数的设计者将δ 保密,用作解密密钥,此时δ 称为私钥,记为Sk。由于加密函数是公开的,任何人都可以将信息x加密成y=f(x), 然后送给函数的设计者(当然可以通过不安全信道传送);由于设计者拥有Sk, 他自然可以解出 x = f − 1 ( y ) x=f^{-1}(y) x=f1(y)
  • 单向陷门函数的第(2)条性质表明窃听者由截获的密文y=f(x)推测x是不可行的

公钥体制基本原理(单向陷门函数)

  • 正向计算很容易,如果知道公开秘钥 P k P_{k} Pk和消息M容易计算: C = f P k ( M ) C=f_{P_{k}}(M) C=fPk(M)
  • 在不知道私有秘钥 S K S_{K} SK的情况下,方向计算不可行。就算你知道加密后的消息C而不知道私有秘钥 S K S_{K} SK,也计算不出明文 M = f − 1 ( C ) M=f^{-1}(C) M=f1(C)
  • 在知道私有秘钥 S K S_{K} SK的情况下,反向计算很容易。有消息C和私有秘钥 S K S_{K} SK,容易计算 M = f − 1 ( C ) M=f^{-1}(C) M=f1(C) S K S_{K} SK相当于陷门,它和公开密钥 P K P_{K} PK配对使用。

RSA加密算法

在Diffie和Hellman提出公钥密码体制的设想两年后,先后 有MH背包公钥密码,Rivest、Shamir、Adleman联合提出 的RSA公钥密码算法,这是目前应用最广的一种公钥密码
RSA的理论基础是欧拉定理,其安全性依赖于大整数的素 因子分解的困难性

基本知识

欧拉定理
  • 欧拉函数φ(m):当 m > 1时,φ(m)表示比m小且与m互素的正整数的个数。比如:m = 4,互为素数的数有1,3。φ(m)=2特别强调1要算进去。
  • m是素数时:φ(m) = m-1
  • m = pq,且p和q都是素数时: φ ( m ) = φ ( p ) φ ( q ) = ( p − 1 ) ( q − 1 ) \varphi (m)=\varphi (p)\varphi (q)=(p-1)(q-1) φ(m)=φ(p)φ(q)=(p1)(q1)
  • 对于任何互素的两个整数a和n,有: α φ ( n ) = 1   m o d   n \alpha^{\varphi(n)}=1\,mod \, n αφ(n)=1modn 例 如 : a = 3 , n = 8. 求 3 4 = 81 = 1 m o d   8 ( 此 时 φ ( n ) = φ ( 8 ) = n u m 1 , 3 , 5 , 7 = 4 ) 例如:a=3,n=8.求3^{4}=81=1mod\,8(此时\varphi(n)=\varphi(8)=num{1,3,5,7}=4) a=3,n=8.34=81=1mod8(φ(n)=φ(8)=num1,3,5,7=4)
  • 当n = p时, a p − 1 = 1   m o d   p   a^{p-1}=1\,mod\,p\, ap1=1modp是费马定理,其中 P 是质数, a a a 不是 p 的倍数。
模基本运算规则

在这里插入图片描述

  • 结合律 ( ( a + b ) % p + c ) % p = ( a + ( b + c ) % p ) % p ((a+b)\%p+c)\%p=(a+(b+c)\%p)\%p ((a+b)%p+c)%p=(a+(b+c)%p)%p ( ( a b ) % p ∗ c ) % p = ( a ∗ ( b c ) % p ) % p ((ab)\%p * c)\%p= (a * (bc)\%p)\%p ((ab)%pc)%p=(a(bc)%p)%p
  • 交换律
    在这里插入图片描述 - 分配律在这里插入图片描述
欧拉函数应用举例

在这里插入图片描述

算法描述——密钥生成

  1. 选取两个互异大素数p,q
  2. 计算n=pq和欧拉函数值 φ ( n ) = ( p − 1 ) ( q − 1 ) \varphi(n)=(p-1)(q-1) φ(n)=(p1)(q1)
  3. 选一个整数e,1<e< φ ( n ) \varphi(n) φ(n),使得gcd(φ(n),e)=1
  4. 在模φ(n)下,计算e的逆元d,使得ed≡ 1mod φ(n)

我们以(n,e)为公钥,d为密钥,p,q不再需要可以销毁.
g c d ( a , b ) 非 负 整 数 a , b 的 最 大 公 因 数 gcd(a,b)非负整数a,b的最大公因数 gcd(a,b)a,b

在第一步中有素性检测,第四步有欧几里得算法: d e + k   φ ( n ) = 1      d e = 1   m o d   φ ( n ) de+k\,\varphi(n)=1\,\,\,\,de=1\,mod\,\varphi(n) de+kφ(n)=1de=1modφ(n)

具体算法描述

加密:
将明文分组,各组对应十进制数 m<n,计算
C = E(m) ≡ m e m^{e} me mod n
解密:
m = D© ≡ C d C^d Cd mod n
注意:

“≡”是数论中表示同余的符号(注意!!这个不是恒等号),

同余的定义是这样的:

给定一个正整数n,如果两个整数a和b满足a-b能被n整除,即(a-b)modn=0,
那么就称整数a与b对模n同余,记作a≡b(modn),同时可成立amodn=b。

也就是相当于a被n整除余数等于b的意思。

RSA算法解密过程的正确性

在这里插入图片描述在这里插入图片描述

RSA举例:

在这里插入图片描述准备好草稿本溜一圈儿,或许你没懂!!!
那么请问d是怎么来的?

逆元d的求解
  • 用扩展的欧几里德算法(辗转相除法)
    在这里插入图片描述

求乘法逆元e=1234,φ(n)=11111,求d?
在这里插入图片描述RSA算法的一些计算问题

  • 如何计算 m e   m o d   n m^{e}\,mod\,n memodn?
  • 如何判定一个给定的整数是素数?
  • 如何找到足够大的素数p,q?

计算 m e   m o d   n m^{e}\,mod\,n memodn

  1. (a b) mod n = [(a mod n) x (b mod n)] mod n]

在这里插入图片描述在这里插入图片描述

算法归纳

  • 选择两个大素数p和q,通常要求每个均大于 10 0 100 100^{100} 100100
    计算n=p,q和z=φ(n)=(p-1)(q-1)。
    找到一个和z互素的e,把它作为公钥。
    找到一个d满足ed=1 (mod z)。
  • 选好这些参数后,将明文划分成块,使得每个明文报文 P长度m满足0<m<n。加密P时,计算C= P e ( m o d   n ) P^e(mod\,n) Pe(modn),解 密C时计算P= C d ( m o d   n ) C^d(mod\,n) Cd(modn)。由于模运算的对称性,可以 证明,在确定的范围内,加密和解密函数是互逆的。
  • 为实现加密,需要公开(e, n),为实现解密需要(d, n)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值