公钥密码与RSA

公钥密码体制的基本原理

  1. 引言:

    • 误解:
      • 公钥加密算法更加安全:所有加密算法的安全强度都是依赖于密钥长度
      • 公钥密码是一种通用密码,对称密码已经过时
      • 公钥密码实现密钥分配很简单。不简单,需要构建特定的安全协议。
  2. 解决的问题:

    • 加密数据:公钥加密,私钥解密
    • 数字签名:私钥签名,公钥验证
    • 密钥协商:通信双方交换会话密钥
  3. 公钥密码的具体条件

在这里插入图片描述

  1. 构造公钥加密算法的关键

    • 单向陷门函数
      • 每个函数值都存在唯一的逆
      • 计算函数值是容易的
      • 在缺少部分信息时,计算逆却不可行
  2. 公钥密码分析:密钥穷举攻击、消息穷举攻击、利用公钥来破解私钥

RSA算法

  1. 算法步骤:

    1. 随机选择两个不相等的大素数p、q

    2. 计算p和q的乘积n

    3. 计算n的欧拉函数f(n)= f§*f(q)

    4. 随机选择一个满足gcd(e,f(n)) == 1(互质)的整数e,一般取65537

    5. 计算e对于f(n)的模的反元素d(逆、扩展欧几里得算法)

    6. 将n和e封装成公钥,n和d封装成私钥

      • 证明可行性:在这里插入图片描述

      • 加解密流程在这里插入图片描述

  2. 计算方面的问题

    • 模算数里的求幂运算在这里插入图片描述

    • 公钥中e一般选择65537

  3. 选择密文攻击(CCA):攻击者可选择一些密文,并获得相应的明文

    • 性质
      E ( P U , M 1 ) ∗ E ( P U , M 2 )   =   E ( P U , [ M 1 ∗ M 2 ] ) E(PU,M_1)*E(PU,M_2)~=~E(PU,[M_1*M_2]) E(PU,M1)E(PU,M2) = E(PU,[M1M2])

    • 目标解密:
      C   =   M e   m o d   n C~=~M^e~mod~n C = Me mod n

      • 计算 Y = (C*2^e)mod n = (2M)^e mod n
      • 将Y作为选择密文提交,收到解密后的数据:X = Y^d mod n
      • 得到明文 X = (2M) mod n,可以得到M
posted @   chanxe  阅读(37)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 本地部署 DeepSeek:小白也能轻松搞定!
· 如何给本地部署的DeepSeek投喂数据,让他更懂你
· 从 Windows Forms 到微服务的经验教训
· 李飞飞的50美金比肩DeepSeek把CEO忽悠瘸了,倒霉的却是程序员
· 超详细,DeepSeek 接入PyCharm实现AI编程!(支持本地部署DeepSeek及官方Dee
点击右上角即可分享
微信分享提示