博客
关于我
密码学-课堂笔记4-非对称加密AsymmCrypt之RSA
阅读量:324 次
发布时间:2019-03-04

本文共 3785 字,大约阅读时间需要 12 分钟。

目录

非对称加密之RSA

  • 场景
    • Alice和Bob通过互联网连接。Alice如何在不共享加密密钥的情况下加密给Bob的消息M ?
    • Alice可以使用# email # SMS # post # social media发送密钥给Bob吗?
    • Bob收到一条来自Alice的消息M,Bob如何证明Alice是唯一可能创建信息M的人呢?
    • Alice连接到一个网站。Alice怎么能确定这个网站是真的呢?
  • 所有这些都可以使用非对称密钥加密来解决。

1 非对称密钥加密操作

  • Alice希望加密给Bob的消息M。
  • Bob有一个公私钥对hkB, pub, kB,pri。Bob将他的公钥发送给Alice

Alice------------------------←kB, pub--------------酒吧Bob-------------------
加密M: ---------------------------------------- 解密:------------------------------
C = E(M)kB,pub-------------C→---------------M = D(E(M)kB,pub)kB,pr

  • 如果M用公钥加密,只能用私钥解密,反之亦然。
  • 类比:Bob买了一把挂锁,保留了钥匙,然后把锁送给Alice。Alice拿到一个盒子,把文件放进去,用Bob的挂锁锁住盒子,然后把它送给Bob。此时只有Bob可以用密钥打开盒子并检索文档。

非对称密钥密码技术:2种主要的PKC算法- RSA, DH

  1. 公钥和私钥对,<Kpub, Kpr>。
  2. 单向函数-不可逆转,即给定kpub & C = E(M)kpub -在没有kpr的情况下无法求出E−1
  3. 存在一个活板门函数D,可以很容易地使用kpr反转加密,即D(E(M)kpub, kpr) = M
    有两种主要类型的PKC算法:
    • RSA - Rivest, Shamir, and Adleman (1978)
    • DH - Diffie and Hellmann (1976)
      在这里插入图片描述

2 RSA算法

RSA的数学基础

模算术和等价类

  • 表达式x ≡ y (mod n)表示当y除以n时,余数为x
  • 可以写成y = k·n + r,其中k是一个正整数。
  • 例如4 ≡ 25 mod 7,或用括号(mod 7)写。
  • 等价类:mod 7操作中,4和25是等价的,即25属于等价类4。
  • 同样,{4,11,18,25,32,···}在mod 7中是等价的。
  • 在密码学中使用模块化操作,因为它将所有数字保持在同一个集合中,例如mod 7,所有数字都在{1,···,6}中

数论的一些结果

  • 考虑正整数,即a, b∈{1,···,n−1}。
  • 相对素数:如果gcd(a, b) = 1,则a, b是相对素数(素数)。它们之间的最大公约数是1。例3、5、8、11……相对’。
  • 乘数函数:φ(n)为{1,…中正整数的个数
    例如,当n = 10时,{1,3,7,9}对10是素数,φ(10) = 4。
  • 欧拉定理:如果a相对于n是素数,则a φ(n)≡1 mod n
  • 费马小定理:如果p是素数,那么对于所有a ={1,2,···,p−1},p−1≡1 mod p
    例如,求p = 31,61,389, 571, 709,937

《孙子算经》中的余数思想和中国剩余定理

在这里插入图片描述
“There are certain things whose number is unknown. If we count them by threes, we have two left over; by fives, we have three left over; and by sevens, two are left over. How many things are there?”
这是我们老师放的英文版本,我去找了一下,原文应该是这样一个问题:
“今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?”
用现在的数学符号表示就是:
x ≡ 2 mod 3
x ≡ 3 mod 5
x ≡ 2 mod 7
发展出中国剩余定理(CRT, Chinese remainder theorem)

  • CRT用于证明RSA和解密操作的正确性。

  • 定理:只考虑两个等价性。如果p和q是互质数,给出:
    x ≡ a mod p
    x ≡ b mod q
    然后
    x ≡ z mod pq
    当且仅当 z ≡ (p + q)−1(qa + pb) mod pq 时z有唯一解。

  • 例子:问:哪个数除以5等于4,除以7等于3?

RSA

RSA加解密的详细过程

  1. 选择两个不同的质数p, q,计算n = p·q。
    小于n且相对素数为n的正整数的数目为φ(n) = (p−1)(q−1)
  2. 计算公开指数和私有指数<e, d>
    • 计算e, d小于n,e = d, e·d≡1 mod φ
      即对于整数k e·d = kφ + 1
    • 或选择一个合适的值e,使gcd(e,φ) = 1,
      则d ≡ e−1 mod φ
      密钥对:私钥<d, n>,公钥<e, n>
  3. 加密消息M, C ≡ Memod n
  4. 解密密文Cd ≡ (Me)d mod n

一个简单的例子

  • Bob的公私密钥:选择素数p = 5, q = 13
    计算n = p·q = 5 × 13 = 65
    φ = (p−1)(q−1)= 4 × 12 = 48
    找到不同的e, d < n,使得: e·d ≡ 1(mod 48)
    比如e = 5, d = 29,验算:5 × 2 = 145≡1(mod 48)
    可以得到:
    - 私钥:<d, 65> = <29, 65>
    - 公钥: <e, 65> = <5, 65>
  • Alice获得Bob的公钥<e, n>,加密M = 33发送给Bob
    C ≡ Me ≡ 335(mod 65) = 63
  • Bob获得C,解密
    Cd ≡ 6329(mod 65) = 33 = M

RSA的正确性演算

  • 解密C ≡ Me mod n
  • 如果 gcd(M, n) ≠ 1 ,即M, n是相对素数,设k为整数,得
    P ≡ Cd mod n≡Med mod n≡Mkφ(n)+1 mod n
    根据欧拉定理,Mφ(n)≡1 mod n
    那么 P ≡ M·Mkφ(n)≡M mod n
  • 如果gcd(M, n) ≠ 1
    让P ≡ Cd mod P并且P ≡ Cd mod q
    根据CRT(中国剩余定理)
    P ≡ (p + q)−1(qCd + pCd) mod q≡Cd mod pq
    即 P ≡ Cd mod n
    考虑求解P ≡ Cd mod P而不是 P ≡ Cd mod n
    现在,P ≡ (Me)d≡(M)ed≡Mkφ(n)+1 mod p
    因为p是质数,(Mk(q−1))(p−1) mod p ≡ 1 mod p
    那么P = M·(Mk(q−1))p−1 ≡ M mod P
    类似地,有P ≡ Cd mod q

PKC实现

  • 模运算
    • 求幂 -平方乘,滑动窗口求幂等。
    • 乘法 -空手道法
    • 还原 - Barrett方法,Montgomery算法
  • Openssl库

实现注意事项

  • 使用平方乘的模乘法:例如
  • 使用短的公开指数进行快速加密,例如 e = 3, 17, 2, 16 + 1
  • •如果p和q已知,使用中国剩余定理(CRT)快速解密

发现大质数

  • 一个奇数P1是质数的概率P(p1),根据素数定理是约等于 2/(ln(p1))
    例如,找到512位质数的概率≈1/177
  • 素性测试
  • 费马检验:选择一个数a,如果 ap1-1 ≡ 1 mod p1,那么p1可能是质数
    需要运行几次,并且不能是一个“卡迈克尔数”,它不是质数,但行为像一个,例如561
  • Rabin-Miller测试

3 RSA的安全性

RSA的安全基础

  • 如果n很大(≥1024位),则不可分解为两个质数。2018年,762位的数字被解出。
    • 所需时间随n的大小呈指数增长
    • 如今,使用1024位、2058位或4096位或更多,量子计算机可以轻松快速地分解大数字,破解RSA
  • 在实践中,私钥<d, n>, d通常非常大,即私钥操作非常缓慢。所以私钥必须存储得非常隐秘。
  • 在实践中,公钥<e, d>, e非常小,也就是说公钥操作要快得多,公钥可以自由分发。

RSA怎样破解?

  • 理论上来说,RSA相当安全,但存在执行缺陷
  • 当以下情况发生时,破解RSA会比较简单:
    1. 质数p, q的选择不当时
      • (p−1), (q−1), (p+1)或(q+1)的因子太小
      • 当p/q≈1时,可以用费马法因式分解
    2. 弱键
      • 低熵
      • 小型私有指数,尤指 d< (n1/4 )/3时
  • 侧信道攻击-功耗等
  • 故障注入
  • 由于量子计算机的迅速发展,量子算法可能会在20到25年内使RSA失效
  • 为了安全起见,至少使用1024位,最好是2048位,或者更多

RSA攻击 - 边信道攻击

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

4 RSA的应用

RSA有两个主要的应用程序,它们被广泛使用,并在互联网上实现安全交易。

  1. 会话密钥传输(密钥交换)
  2. 数字签名——用于身份验证和不可否认
    • 使用包含数字签名的证书进行原产地认证——广泛用于互联网。
    • 区块链技术

转载地址:http://xujh.baihongyu.com/

你可能感兴趣的文章
qt中moc的作用
查看>>
阿里钉钉面试题
查看>>
华为社招笔试
查看>>
MFC的Dlg和App什么区别?应用程序类与对话框类
查看>>
C\C++下获取系统进程或线程ID(转)
查看>>
VS环境变量(转)
查看>>
C++中找资源或者函数的方法
查看>>
_T和_L的区别
查看>>
一些留给自己的思考题(只求回过头来能够有所获)
查看>>
SQL函数返回表的写法
查看>>
delete对象时会自动调用类的析构函数
查看>>
C++ 子类对象直接赋值给父类对象可行,反过来不行
查看>>
WMWare下安装centOS7,并使用xshell进行连接记录.
查看>>
linux下同一个动态库名为何辣么多的.so文件
查看>>
SQL联表的方式(逗号, Left Join, Right Join)
查看>>
牛客网输入输出举例
查看>>
字符串初始化时的注意点
查看>>
dll路径加载顺序
查看>>
悬垂指针和野指针的区别
查看>>
软考相关试题
查看>>