当前位置: 首页 > news >正文

RSA算法:开启现代密码学的数学之钥

一、RSA算法简介

RSA(Rivest-Shamir-Adleman)是当今应用最广泛的非对称加密算法,由三位科学家Ron Rivest、Adi Shamir和Leonard Adleman于1977年提出。它的核心思想是利用数论中的难题,构建一对数学上关联的密钥——公钥用于加密,私钥用于解密。使用公、私钥分离这种机制完美解决了对称加密中密钥分发的难题,成为互联网安全通信(如HTTPS、数字签名等)的基石。


二、RSA算法核心思想
算法目标
  1. 设计一种易于密钥分发的密码算法,以区别于对称密钥;
  2. 设计两把密钥,一把用于加密,一把用于解密。同时密钥不容易被破解;
  3. 加密密钥可以随意分发,只能用于加密,无法解密。
核心思想

根据算法目标,需要设计加密、解密两个过程,并且保证加密过程不可逆(即加密密钥不能解密出密文)。通过以下几步完成算法设计的目标。

  1. 利用模运算的不可逆性(即单向性)来设计加密和解密过程。
  2. 利用大质数分解困难的机制设计两把密钥
  3. 加密:将明文 m m m 通过指数运算和模运算转换为密文 c c c
    c ≡ m e ( m o d n ) c \equiv m^e \pmod{n} cme(modn)
  4. 解密:将密文 c c c 通过指数运算和模运算还原为明文 m m m
    m ≡ c d ( m o d n ) m \equiv c^d \pmod{n} mcd(modn)
    为了实现这一点,需要找到一对指数 e e e d d d,使得:
    ( m e ) d ≡ m ( m o d n ) (m^e)^d \equiv m \pmod{n} (me)dm(modn)

三、RSA算法的数学基础

要理解RSA,需要掌握几个数学知识。

  1. 模运算
    即“取余数运算”。例如 17 m o d    5 = 2 17 \mod 5 = 2 17mod5=2,表示17除以5的余数是2。
    模运算的不可逆性是指在模 n n n下,某些运算(如乘法或指数运算)难以通过逆向操作恢复原始值。模运算的不可逆性原因在于信息丢失。模运算会将结果限制在 0 0 0 n − 1 n-1 n1 之间,导致多个不同的输入可能映射到同一个输出。
    • 例如, 3 × 4 ≡ 12 ≡ 2 ( m o d 10 ) 3 \times 4 \equiv 12 \equiv 2 \pmod{10} 3×4122(mod10),但 3 × 14 ≡ 42 ≡ 2 ( m o d 10 ) 3 \times 14 \equiv 42 \equiv 2 \pmod{10} 3×14422(mod10)。仅知道结果是 2,无法确定原始值是 4 还是 14。
  2. 逆元
    • 单位元:在一个集合中,对于某种运算 ∗ * (注意:这里代表通用运算的表示符号,并不是特指乘法),如果对于任何的集合元素 a a a ,和元素 e e e运算,得到还是集合元素 a a a本身,则称 e e e为这个运算下的单位元。
      示例:
      加法运算中,任意实数 a a a,根据单位元的定义,有 a + e = e + a = a a+e=e+a=a a+e=e+a=a。因为 a + 0 = 0 + a = a a+0=0+a=a a+0=0+a=a,则单位元为 0 0 0
      乘法运算中,任意实数 a a a,根据单位元的定义,有 a × e = e × a = a a \times e=e \times a=a a×e=e×a=a。因为 a × 1 = 1 × a = a a \times 1=1 \times a=a a×1=1×a=a,则单位元为 1 1 1
      模乘运算中(即左右操作数是求余运算的乘法),任意实数 a a a的模n运算 a ( m o d n ) a \pmod n a(modn),根据单位元的定义,有 a ( m o d n ) × e ( m o d n ) = e ( m o d n ) × a ( m o d n ) = a ( m o d n ) a \pmod n \times e \pmod n=e \pmod n \times a \pmod n=a \pmod n a(modn)×e(modn)=e(modn)×a(modn)=a(modn)。因为 a ( m o d n ) × 1 ( m o d n ) = 1 ( m o d n ) × a ( m o d n ) = a ( m o d n ) a \pmod n \times 1 \pmod n=1 \pmod n \times a \pmod n=a \pmod n a(modn)×1(modn)=1(modn)×a(modn)=a(modn),则单位元为 1 ( m o d n ) 1 \pmod n 1(modn)。附:证明过程。
    • 逆元:在一个集合中,对于某种运算 ∗ * ,如果任意两个元素的运算结果等于单位元,则称这两个元素互为逆元。
      示例
      加法运算中,任意实数 a a a的逆元为 − a -a a。因为加法的单位元为 0 0 0,根据逆元的定义,可令 a + e = e + a = 0 a+e=e+a=0 a+e=e+a=0,则 e = − a e=-a e=a。即相反数。
      乘法运算中,任意实数 a a a的逆元为 a − 1 a^{-1} a1 1 a \frac{1}{a} a1。因为乘法的单位元为 1 1 1,根据逆元的定义,可令 a × e = e × a = 1 a \times e=e \times a=1 a×e=e×a=1,则 e = a − 1 e=a^-1 e=a1 e = 1 a e=\frac{1}{a} e=a1。即倒数。
      模乘中,设定模乘的逆元表示为 a − 1 ( m o d n ) a^-1 \pmod n a1(modn)。因为模乘的单位元为 1 ( m o d n ) 1 \pmod n 1(modn),根据逆元的定义,可令 a ( m o d n ) × a − 1 ( m o d n ) = 1 ( m o d n ) a \pmod n \times a^{-1} \pmod n = 1 \pmod n a(modn)×a1(modn)=1(modn)。根据模运算的性质,即等号左右两边模 n n n同余,所以前述式子可写为 a × a − 1 ≡ 1 ( m o d n ) a \times a^{-1} \equiv 1 \pmod n a×a11(modn)。为求得 a − 1 a{-1} a1,可采用扩展欧几里德定理求解逆元。
  3. 欧拉函数
    符号 ϕ ( n ) \phi(n) ϕ(n),表示小于 n n n 且与 n n n 互质的正整数个数。
    • 关键性质:若 n = p × q n = p \times q n=p×q p p p q q q 为质数),则:
      ϕ ( n ) = ( p − 1 ) × ( q − 1 ) \phi(n) = (p-1) \times (q-1) ϕ(n)=(p1)×(q1)
      ϕ ( n ) = ( p − 1 ) × ( q − 1 ) \phi(n) = (p-1) \times (q-1) ϕ(n)=(p1)×(q1)是欧拉函数的一个特殊形式(当 n n n是两个不同的质数 p p p q q q时成立)。
      示例 n = 15 = 3 × 5 n=15=3 \times 5 n=15=3×5,则 ϕ ( 15 ) = 2 × 4 = 8 \phi(15) = 2 \times 4 = 8 ϕ(15)=2×4=8,即与15互质的数为 {1,2,4,7,8,11,13,14}。
  4. 欧拉定理
    m m m n n n 互质,则:
    m ϕ ( n ) ≡ 1 ( m o d n ) m^{\phi(n)} \equiv 1 \pmod{n} mϕ(n)1(modn)
  5. 大数分解问题
    大质数在数轴上的分布非常稀疏,且没有明显规律可循,使得暴力搜索不可行。黎曼猜想即是想解决质数分布问题。
  6. 离散对数问题
    c = m e ( m o d ϕ ( n ) ) c=m^e \pmod{\phi(n)} c=me(modϕ(n)),可以简单理解为有 ϕ ( n ) \phi(n) ϕ(n)个房间, c c c是其中一个房间,问题是找到一个整数 e e e(可以理解为步数),让你从房间 m m m出发,走多少步(求 e e e)能到达房间 c c c。而通常 ϕ ( n ) \phi(n) ϕ(n) e e e都是非常大的质数,且 ϕ ( n ) \phi(n) ϕ(n)未知,你需要一步步验证才能找到正确的 e e e(即使 e e e通常取值为65537)。

四、RSA的加密与解密过程

RSA的实现分为密钥生成加密解密三个阶段:

1. 密钥生成
  • 步骤1:随机选择两个大质数 p p p q q q
  • 步骤2:计算模数 n = p × q n = p \times q n=p×q ϕ ( n ) = ( p − 1 ) × ( q − 1 ) \phi(n) = (p-1) \times (q-1) ϕ(n)=(p1)×(q1)
  • 步骤3:选择公钥指数 e e e,需满足 1 < e < ϕ ( n ) 1 < e < \phi(n) 1<e<ϕ(n) e e e 与 $ \phi(n)$ 互质(例如 e = 65537 e=65537 e=65537)。
  • 步骤4:计算私钥指数 d d d,使得 e × d ≡ 1 ( m o d ϕ ( n ) ) e \times d \equiv 1 \pmod{\phi(n)} e×d1(modϕ(n))。即求 e ( m o d ϕ ( n ) ) e \pmod{\phi(n)} e(modϕ(n))的模乘逆元。
    数学工具:使用扩展欧几里得算法求模乘逆元。

最终密钥对

  • 公钥: ( n , e ) (n, e) (n,e)
  • 私钥: ( n , d ) (n, d) (n,d)

2. 加密过程

假设Bob想发送明文 m m m 给Alice:

  1. Bob获取Alice的公钥 ( n , e ) (n, e) (n,e)
  2. 将明文转换为整数 m m m(如ASCII码),且 m < n m < n m<n
  3. 计算密文 c ≡ m e ( m o d n ) c \equiv m^e \pmod{n} cme(modn),发送 c c c 给Alice。

3. 解密过程

Alice收到密文 c c c 后:

  1. 使用私钥 ( n , d ) (n, d) (n,d) 计算 m ≡ c d ( m o d n ) m \equiv c^d \pmod{n} mcd(modn)
  2. 将整数 m m m 还原为原始信息。

数学证明
由欧拉定理可证明,若 m m m n n n 互质,则:
c d ≡ ( m e ) d ≡ m e × d ≡ m k ⋅ ϕ ( n ) + 1 ≡ ( m ϕ ( n ) ) k ⋅ m ≡ 1 k ⋅ m ≡ m ( m o d n ) c^d \equiv (m^e)^d \equiv m^{e \times d} \equiv m^{k \cdot \phi(n) + 1} \equiv (m^{\phi(n)})^k \cdot m \equiv 1^k \cdot m \equiv m \pmod{n} cd(me)dme×dmkϕ(n)+1(mϕ(n))km1kmm(modn)

安全性

  • 公钥 ( n , e ) (n, e) (n,e)是公开的
  • 根据 e e e d d d的关系, e × d ≡ 1 ( m o d ϕ ( n ) ) e \times d \equiv 1 \pmod{\phi(n)} e×d1(modϕ(n))可知,如果想破解 d d d,则需要知道 ϕ ( n ) \phi(n) ϕ(n)
  • ϕ ( n ) = ( p − 1 ) × ( q − 1 ) \phi(n)=(p-1) \times (q-1) ϕ(n)=(p1)×(q1) n = p × q n=p \times q n=p×q,如果想破解 ϕ ( n ) \phi(n) ϕ(n) n n n,则需要知道 p p p q q q
  • 但从 n n n分解出 p p p q q q在计算上是困难的,因此想破解 p p p q q q是不可能的。——依据大数分解问题
  • 如果想绕开 p p p q q q,在未知 d d d的情况下,从 c ≡ m e ( m o d n ) c \equiv m^e \pmod n cme(modn)反推 m m m是困难的(即从密文直接反推明文是困难的)。——依据离散对数问题

五、示例演示

p = 3 p=3 p=3 q = 5 q=5 q=5 为例:

  1. n = 3 × 5 = 15 n = 3 \times 5 = 15 n=3×5=15 ϕ ( n ) = 2 × 4 = 8 \phi(n) = 2 \times 4 = 8 ϕ(n)=2×4=8
  2. e = 3 e=3 e=3(需与8互质)。
  3. d d d,使得 3 d ≡ 1 ( m o d 8 ) 3d \equiv 1 \pmod{8} 3d1(mod8),解得 d = 3 d=3 d=3
  4. 加密:若 m = 2 m=2 m=2,则 c = 2 3 m o d    15 = 8 c = 2^3 \mod 15 = 8 c=23mod15=8
  5. 解密 8 3 m o d    15 = 512 m o d    15 = 2 8^3 \mod 15 = 512 \mod 15 = 2 83mod15=512mod15=2

六、总结

RSA通过巧妙的数学设计,将加密强度建立在大数分解、离散对数的复杂性上。公钥加密、私钥解密的非对称性,使得信息传输既安全又便捷。其背后依赖的欧拉定理与模运算,不仅是数论的瑰宝,更是现代数字社会的安全支柱。理解RSA,不仅是学习一个算法,更是窥见数学与工程完美融合的窗口。

欢迎关注个人公众号:小虫子编程课
关注个人公众号

相关文章:

  • SpringMVC中有关请求参数的问题(映射路径,传递不同的参数)
  • 前端小食堂 | Day13 - Vue.js 进阶烹饪术
  • RISC-V特权模式与寄存器
  • 计网面试准备
  • Vue的生命周期
  • Ubuntu 下 nginx-1.24.0 源码分析 - ngx_conf_param
  • FreeRTOS(7)队列集
  • Redis 主从复制详解:实现高可用与数据备份
  • 【MySQL - 表的内外连接】
  • 【13】单片机编程核心技巧:乘法运算
  • 《Python全栈开发》第2课:HTML骨架搭建 - 从零编写个人简历页面
  • 数字IC后端设计实现教程 |Innovus ICC2 Routing Pin Access Setting设置方法
  • 第十五届蓝桥杯大学B组(握手问题、小球反弹、好数)
  • ChatGPT课件分享(37页PPT)
  • 【亲测有效】Mac系统升级或降级Node.js版本,Mac系统调整node.js版本
  • 【3D视觉学习笔记1】针孔相机模型与坐标系变换
  • 【Azure 架构师学习笔记】- Azure Databricks (17) --Delta Live Table和Delta Table
  • 面试之《webpack从输入到输出经历了什么》
  • 基础网络安全-K8S 配置Ingress-controller 通过HTTPS处理服务请求
  • GB8599-2023标准测试包/小规格测试包/标准生物测试包1.5kg/满负载织物7.5kg/不锈钢金属测试包/空腔负载试验的过程挑战装置(PCD)
  • 国家卫健委:有条件的二级及以上综合医院要开设老年医学科
  • 司法部谈民营经济促进法:对违规异地执法问题作出禁止性规定
  • 湖南省邵阳市副市长仇珂静主动向组织交代问题,接受审查调查
  • 央行:增加支农支小再贷款额度3000亿元
  • 抗战回望20︱《山西省战区抗敌行政工作检讨会议议决案》:“强民政治”、“说服行政”
  • 《中国医药指南》就涉宫颈癌等论文出现男性病例致歉:辞退涉事编辑