密码学入门(4):公钥密码

本文介绍了公钥密码的概念,重点讲解了RSA算法的原理,包括密钥生成、加密解密过程。同时,讨论了中间人攻击及其对公钥密码系统的影响,并提到了其他公钥密码如ELGamal、Rabin和ECC,以及混合密码系统作为解决方案。
摘要由CSDN通过智能技术生成

密码学入门(4):公钥密码

公钥密码用公钥加密,私钥解密。

密钥配送问题

在对称密码中,由于加密和解密的密钥都是相同的,因此必须向接收者配送密钥。而在Alice将密钥发送给Bob时,会被Eve窃听,因此Eve就能像Bob一样完成密文的解密。

Alice感到一筹莫展。不发送密钥吧,接收者Bob无法解密;发送密钥吧,连窃听者Eve也可以解密了。密钥必须要发送,但又不能发送,这就是对称密码的密钥配送问题。

解决密钥配送问题的方法

  • 通过事先共享密钥来解决:这是最简单的一种解决方法,就是事先用安全的方式将密钥交给对方,这称为密钥的事先共享
    • 问题:假设一个公司有 1000 1000 1000名员工需要彼此加密通信,因此每个人需要 999 999 999个通信密钥。所以整个公司需要的密钥数量为 1000 × 999 ÷ 2 = 499500 1000 \times 999 \div 2 = 499500 1000×999÷2=499500。全公司要生成 49 49 49 9500 9500 9500个密钥,这是不现实的。
  • 通过密钥分配中心来解决:在公司中配置一台充当密钥分配中心的计算机,其中保存了公司中每个员工的密钥。当Alice要与Bob通信时:
    1. Alice向密钥分配中心发出希望与Bob进行通信的请求。
    2. 密钥分配中心随机生成一个会话密钥,是本次通信中的临时密钥。
    3. 密钥分配中心将会话密钥分别加密后发送给Alice和Bob(密钥分配中心有Alice和Bob的密钥)。
    4. Alice得到会话密钥后,用它对消息进行加密,然后发送给Bob。
    5. Bob得到会话密钥后,用它对消息进行解密,得到Alice发送的消息原文。
    6. Alice和Bob删除会话密钥。
    • 问题
      • 随着员工数量的增加,密钥分配中心的负荷也回随之增加。
      • 密钥分配中心如果发生故障,全公司的加密通信就会瘫痪。
      • 主动攻击者Mallory可以直接对密钥分配中心下手。
  • 通过Diffie-Hellman密钥交换来解决:在Diffie-Hellman密钥交换中,进行加密通信的双方需要交换一些信息,根据所交换的信息,双方可以各自生成相同的密钥。而这些信息即使被窃听者Eve窃听到,也无法生成相同的密钥。
  • 通过公钥密码解决:公钥密码中加密密钥和解密密钥是不同的。接收者只需要事先将加密密钥发送给发送方,这个加密密钥即使被窃听者获取也没有问题。发送者使用加密密钥对通信内容进行加密并发送给接受者,而只有拥有解密密钥的人(即接收者本人)才能进行解密。

公钥密码

公钥密码(public-key cryptography)中,密钥分为加密密钥和解密密钥。发送者用加密密钥对消息进行加密,接收者用解密密钥对密文进行解密。

加密密钥和解密密钥的区别:

  • 发送者只需要加密密钥。
  • 接收者只需要解密密钥。
  • 解密密钥不可以被窃听者获取。
  • 加密密钥被窃听者获取也没问题。

由于加密密钥可以任意公开,因此该密钥被称为公钥(public key)。而解密密钥时绝对不能公开的,因此称为私钥(private key)。公钥和私钥是一一对应的,一对公钥和私钥统称为密钥对(key pair)。

公钥通信的流程:
公钥通信的流程

在这个过程中,Alice和Bob之间传输的信息只有Bob的公钥和用Bob的公钥加密的密文。由于Bob的私钥没有出现在通信内容中,因此窃听者Eve无法对密文进行解密。

公钥密码无法解决的问题:

  • 会受到中间人攻击。
  • 处理速度慢,只有对成密码的几百分之一。

公钥密码除了能保证数据传输的机密性,还能用作数字签名,提供认证功能。例如,假设现在Alice希望把一个数字签署的信息 M ′ M' M发送给Bob,那么:

  1. Alice可以用私钥加密信息 M ′ M' M,得到数字签名 σ \sigma σ
  2. Alice把消息/签名对 ( M ′ , σ ) (M', \sigma) (M,σ)发送给Bob。
  3. Bob收到 ( M ′ , σ ) (M', \sigma) (M,σ)后,他可以利用Alice的公钥解密 σ \sigma σ,如果解密后的数据与 M ′ M' M相同,就能证实消息确实来自Alice。

RSA

RSA是一种公钥密码算法,它的名字是由它的三位开发者,即Ron Rivest、Adi Shamir和Leonard Adleman的姓氏首字母组成的(Rivest-Shamir-Adleman)。

RSA的加密和解密:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值