公钥加密体制模型

  • 发送方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, 他自然可以解出公钥 计算 私钥 公钥求私钥_公钥 计算 私钥_02
  • 单向陷门函数的第(2)条性质表明窃听者由截获的密文y=f(x)推测x是不可行的

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

  • 正向计算很容易,如果知道公开秘钥公钥 计算 私钥 公钥求私钥_公钥 计算 私钥_03和消息M容易计算:公钥 计算 私钥 公钥求私钥_bc_04
  • 在不知道私有秘钥公钥 计算 私钥 公钥求私钥_网络安全_05的情况下,方向计算不可行。就算你知道加密后的消息C而不知道私有秘钥公钥 计算 私钥 公钥求私钥_网络安全_05,也计算不出明文公钥 计算 私钥 公钥求私钥_公钥密码_07
  • 在知道私有秘钥公钥 计算 私钥 公钥求私钥_网络安全_05的情况下,反向计算很容易。有消息C和私有秘钥公钥 计算 私钥 公钥求私钥_网络安全_05,容易计算 公钥 计算 私钥 公钥求私钥_公钥 计算 私钥_10公钥 计算 私钥 公钥求私钥_网络安全_05相当于陷门,它和公开密钥公钥 计算 私钥 公钥求私钥_网络安全_12配对使用。

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都是素数时:公钥 计算 私钥 公钥求私钥_网络安全_13
  • 对于任何互素的两个整数a和n,有:公钥 计算 私钥 公钥求私钥_bc_14公钥 计算 私钥 公钥求私钥_公钥 计算 私钥_15
  • 当n = p时,公钥 计算 私钥 公钥求私钥_bc_16是费马定理,其中 P 是质数,公钥 计算 私钥 公钥求私钥_公钥密码_17
模基本运算规则

公钥 计算 私钥 公钥求私钥_公钥加密_18

  • 结合律公钥 计算 私钥 公钥求私钥_公钥密码_19公钥 计算 私钥 公钥求私钥_bc_20
  • 交换律
    - 分配律
欧拉函数应用举例

公钥 计算 私钥 公钥求私钥_公钥 计算 私钥_21

算法描述——密钥生成

  1. 选取两个互异大素数p,q
  2. 计算n=pq和欧拉函数值公钥 计算 私钥 公钥求私钥_公钥密码_22
  3. 选一个整数e,1<e<公钥 计算 私钥 公钥求私钥_网络安全_23,使得gcd(φ(n),e)=1
  4. 在模φ(n)下,计算e的逆元d,使得ed≡ 1mod φ(n)

我们以(n,e)为公钥,d为密钥,p,q不再需要可以销毁.
公钥 计算 私钥 公钥求私钥_公钥密码_24

在第一步中有素性检测,第四步有欧几里得算法:公钥 计算 私钥 公钥求私钥_bc_25

具体算法描述

加密:
将明文分组,各组对应十进制数 m<n,计算
公钥 计算 私钥 公钥求私钥_公钥 计算 私钥_26
解密:
m = D© ≡ 公钥 计算 私钥 公钥求私钥_公钥密码_27
注意:

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

同余的定义是这样的:

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

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

RSA算法解密过程的正确性

公钥 计算 私钥 公钥求私钥_公钥密码_28

公钥 计算 私钥 公钥求私钥_bc_29

RSA举例:

公钥 计算 私钥 公钥求私钥_公钥 计算 私钥_30

准备好草稿本溜一圈儿,或许你没懂!!!

那么请问d是怎么来的?

逆元d的求解
  • 用扩展的欧几里德算法(辗转相除法)

求乘法逆元e=1234,φ(n)=11111,求d?

公钥 计算 私钥 公钥求私钥_网络安全_31

RSA算法的一些计算问题

  • 如何计算 公钥 计算 私钥 公钥求私钥_bc_32?
  • 如何判定一个给定的整数是素数?
  • 如何找到足够大的素数p,q?

计算 公钥 计算 私钥 公钥求私钥_网络安全_33

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

公钥 计算 私钥 公钥求私钥_bc_34

公钥 计算 私钥 公钥求私钥_网络安全_35

算法归纳

  • 选择两个大素数p和q,通常要求每个均大于公钥 计算 私钥 公钥求私钥_公钥 计算 私钥_36
    计算n=p,q和z=φ(n)=(p-1)(q-1)。
    找到一个和z互素的e,把它作为公钥。
    找到一个d满足ed=1 (mod z)。
  • 选好这些参数后,将明文划分成块,使得每个明文报文 P长度m满足0<m<n。加密P时,计算C=公钥 计算 私钥 公钥求私钥_网络安全_37,解 密C时计算P=公钥 计算 私钥 公钥求私钥_bc_38。由于模运算的对称性,可以 证明,在确定的范围内,加密和解密函数是互逆的。
  • 为实现加密,需要公开(e, n),为实现解密需要(d, n)。