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

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

非对称加密之RSA

1. 非对称密钥加密操作

在非对称加密中,Alice希望向Bob发送一条消息M。Bob拥有一个公钥对(hKb, pub, Kpri),他将公钥pub发送给Alice。Alice使用Bob的公钥对M进行加密,Bob收到后,使用自己的私钥Kpri进行解密。

加密过程可表示为:[ C = E(M){Kpub} ]解密过程为:[ M = D(C){Kpri} ]

这一过程类似于Alice将文件锁在一个盒子中,只有Bob持有钥匙才能打开。

2. RSA算法

2.1 RSA的数学基础

在RSA中,模算术和等价类是核心概念。表达式 ( x \equiv y \mod n ) 表示当y除以n时,余数为x。等价类中的数字可以表示为:[ y = k \cdot n + r ]其中k是正整数,r是余数。

在密码学中,模算术用于将数字限制在一个特定的集合中,例如模7的情况下,余数只能是{0,1,2,3,4,5,6}。

2.2 数论基础
  • 相对素数:两个数的最大公约数为1时称为相对素数。
  • 乘数函数φ(n):表示小于n且与n相对素的正整数的个数。
  • 欧拉定理:如果a与n相对素,且n为素数,则 ( a^{\phi(n)} \equiv 1 \mod n )。
  • 费马小定理:如果p是素数,则 ( a^{p-1} \equiv 1 \mod p )。
  • 2.3 中国剩余定理(CRT)

    CRT用于解决以下问题:[ x \equiv a \mod p ][ x \equiv b \mod q ]其中p和q是互质的素数。当且仅当存在唯一解:[ x \equiv z \mod pq ]其中 ( z = (p + q - 1)(qa + pb) \mod pq )。

    例如,求满足:[ x \equiv 2 \mod 3 ][ x \equiv 3 \mod 5 ][ x \equiv 2 \mod 7 ]的最小正整数x。

    3. RSA加解密过程

  • 生成密钥对

    • 选择两个不同的素数p和q,计算n = p * q。
    • 计算φ(n) = (p - 1)(q - 1)。
    • 计算公开指数e和私有指数d,使得 ( e \cdot d \equiv 1 \mod \phi(n) )。
  • 加密过程:[ C = M^e \mod n ]

  • 解密过程:[ M = C^d \mod n ]

  • 3.1 一个简单的示例

    Bob选择p = 5,q = 13,计算n = 65,φ(n) = 48。选择e = 5,d = 29(满足 ( 5 \cdot 29 \equiv 1 \mod 48 ))。

    • 公钥:(e, n) = (5, 65)
    • 私钥:(d, n) = (29, 65)

    Alice使用Bob的公钥加密消息M = 33:[ C = 33^5 \mod 65 = 63 ]

    Bob使用私钥解密:[ M = 63^{29} \mod 65 = 33 ]

    4. RSA的正确性演算

  • 解密过程:[ M = C^d \mod n ]根据欧拉定理,若M与n相对素,则 ( M^{\phi(n)} \equiv 1 \mod n )。因此:[ C^d = (M^e)^d = M^{ed} \equiv M \mod n ]

  • 分解模n为p和q的验证:[ P \equiv C^d \mod p ][ P \equiv C^d \mod q ]根据CRT,P ≡ C^d mod n。

  • 5. RSA实现注意事项

  • 模运算

    • 平方乘法:快速计算模幂。
    • 乘法:使用空手道法。
    • 还原:使用Barrett方法或Montgomery算法。
  • 工具库

    • 使用Openssl库进行加密和解密。
  • 指数选择

    • 使用短的公开指数(如e = 3, 17, 2, 16 + 1)。
    • 如果p和q已知,使用CRT进行快速解密。
  • 6. 发现大质数

  • 概率计算

    • 奇数P是质数的概率约为 ( \frac{2}{\ln(P)} )。
    • 寻找512位质数的概率约为1/177。
  • 素性测试

    • 费马检验:选择a,验证 ( a^{P-1} \equiv 1 \mod P )。
    • Rabin-Miller测试:更高效且更可靠。
  • 7. RSA的安全性

  • 安全基础

    • n至少为1024位,2048位或更多。
    • 私钥操作较慢,需妥善存储。
  • 潜在攻击方式

    • 质数分解:时间随n增长呈指数形式。
    • 量子计算机可能在20-25年内破解RSA。
    • 应使用2048位或更长的n以确保安全性。
  • 实际攻击案例

    • 败信道攻击:基于功耗或其他侧信道信息。
    • 故障注入:利用硬件或软件故障进行攻击。
  • 防护措施

    • 使用CRT加速解密。
    • 定期更新密钥长度。
    • 防范量子攻击的技术。
  • 8. RSA的应用

  • 会话密钥传输

    • 使用非对称加密生成和交换会话密钥。
  • 数字签名

    • 确认消息来源和完整性。
    • 区块链技术广泛应用于原产地认证。
  • 通过以上内容,我们可以清晰地了解非对称加密中的RSA算法及其在实际应用中的重要性。

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

    你可能感兴趣的文章
    Nginx 我们必须知道的那些事
    查看>>
    oauth2-shiro 添加 redis 实现版本
    查看>>
    OAuth2.0_授权服务配置_Spring Security OAuth2.0认证授权---springcloud工作笔记140
    查看>>
    Objective-C实现A-Star算法(附完整源码)
    查看>>
    Objective-C实现atoi函数功能(附完整源码)
    查看>>
    Objective-C实现base64加密和base64解密算法(附完整源码)
    查看>>
    Objective-C实现base85 编码算法(附完整源码)
    查看>>
    Objective-C实现basic graphs基本图算法(附完整源码)
    查看>>
    Objective-C实现BCC校验计算(附完整源码)
    查看>>
    Objective-C实现bead sort珠排序算法(附完整源码)
    查看>>
    Objective-C实现BeadSort珠排序算法(附完整源码)
    查看>>
    Objective-C实现bellman ford贝尔曼福特算法(附完整源码)
    查看>>
    Objective-C实现bellman-ford贝尔曼-福特算法(附完整源码)
    查看>>
    Objective-C实现bellman-ford贝尔曼-福特算法(附完整源码)
    查看>>
    Objective-C实现BellmanFord贝尔曼-福特算法(附完整源码)
    查看>>
    Objective-C实现BF算法 (附完整源码)
    查看>>
    Objective-C实现binary exponentiation二进制幂运算算法(附完整源码)
    查看>>
    Objective-C实现binomial coefficient二项式系数算法(附完整源码)
    查看>>
    Objective-C实现bogo sort排序算法(附完整源码)
    查看>>
    Objective-C实现CaesarsCiphe凯撒密码算法(附完整源码)
    查看>>