RSA算法

一些数论的定理

完全剩余系(n个不同的剩余类)
  • 剩余系引理2: 若a , b, c为任意3个整数,m为正整数,且(m, c ) = 1, 则当ac ≡ bc (mod m) 时,有a ≡ b (mod m)
    • 简单的证明:ac ≡ bc (mod m) 可得 ac – bc ≡ 0 (mod m) 可得 (a - b)c ≡ 0 (mod m) 因为m, c互质,c可以约去,a – b ≡ 0 (mod m) 可得 a ≡ b(mod m)
  • 剩余系引理7: m是一个整数,且m > 1,b是一个整数且(m, b) = 1。如果a1, a2, a3, a4, … am是模m的一个完全剩余系,则ba1, ba2, ba3, ba4, … bam也构成模m的一个完全剩余系
    • 简单的证明:如果不是完全剩余系,则存在bai ≡ baj (mod m),由于b和m互质 可以得出ai ≡ aj (mod m) 矛盾
欧拉公式(小于等于n的正整数之中,与n构成互质关系的数量(包括1))
  • p为质数 \varphi(p)=p-1
  • p为质数\varphi(p^k)=p^k - p^{k-1}
  • p, q互质\varphi(pq)=\varphi(p)*\varphi(q)
    • 证明:
    • 因为GCD(km+r,m)=GCD(r, m) (gcd(a,b) = gcd(b,a mod b)),所以有\varphi(m)列是和m互质的
    • 根据剩余系定理7得出每列有\varphi(n)和n是互质的
    • 得证
欧拉定律

消去律的证明 同 剩余系引理2

模反元素
  • 如果两个正整数a和n互质,那么一定可以找到整数b,使得 ab-1 被n整除,或者说ab被n除的余数是1
  • a的 φ(n)-1 次方,就是a的模反元素

RSA

RSA公钥加密体制
  • KeyGen(密钥生成算法)
    • 选择大素数p,q N=pq 计算欧拉函数 \varphi(N)=(p-1)(q-1)
    • 取e (1<e<N),计算e的模反元素d
    • 公钥为PK=(N, e),私钥为SK=(N, d)
  • Encrypt(加密算法)
    • CT=M^e \bmod N
  • Decrypt(解密算法)
    • M=CT^d \bmod N (CT^d=M^{ed}=M \bmod N)

例子:

  • 生成密钥
    • p=61,q=53,n=p*q=3233,φ(n) = (p-1)(q-1)=3120
    • e选择17,一般e会选择65537
    • 计算e对于φ(n)的模反元素d:求解 ed - 1 = kφ(n) --> 17d + 3120y = 1
    • 根据扩展欧几里得算法得出 (d,y)=(2753,-15)
    • n=3233,e=17,d=2753,所以公钥就是 (3233,17),私钥就是(3233, 2753)
  • 加密
    • 假设信息m=65
    • CT=65^{17} ≡ 2790 (mod 3233)
  • 解密
    • m=2790^{2753} ≡ 65 (mod 3233)
扩展欧几里得算法计算d
破解私钥

  (1)ed≡1 (mod φ(n))。只有知道e和φ(n),才能算出d。

  (2)φ(n)=(p-1)(q-1)。只有知道p和q,才能算出φ(n)。

  (3)n=pq。只有将n因数分解,才能算出p和q。

私钥解密的证明

证明: c^d ≡ m(mod\ n)

  • m^e = c(mod\ n)
  • c = m^e - kn
  • 证明等同于 (m^e - kn)^d ≡ m (mod\ n)
  • 证明等同于m^{ed} ≡ m (mod\ n)
  • 证明等同于m^{k*\varphi(n)+1} ≡ m (mod\ n)
  • m和n互质的话直接根据欧拉定律得到,不互质时:
    • 由于n等于质数p和q的乘积,所以m必然等于kp或kq,假设m = kp
    • (kp)^{q-1} ≡ 1 (mod\ q)
    • [(kp)^{q-1}]^{h(p-1)} × kp ≡ kp (mod\ q)
    • (kp)^{ed} ≡ kp (mod\ q)
    • (kp)^{ed} = tq + kp
    • t为p的整数倍
    • (kp)^{ed} = t'pq + kp
    • (kp)^{ed} = t'n + kp
    • m^{ed} = m (mod\ n)
RSA签名体制
  • KeyGen(密钥生成算法)
    • 同加密体制但是生成的秘钥一般不一样
  • Sign(签名算法)
    • \sigma = M^d \bmod N
  • Verify(验证算法)
    • M'=\sigma^e \bmod N 比较M和M'一致则验证成功

    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值