密码学基础 -- 走进RSA(1)(放弃数学原理版)

目录

1. 密钥对的使用时机

2.小结


在讲RSA原理时,咱们先来思考非对称算法的几个问题。

  • 使用RSA对数据进行加密时,应该使用公钥还是私钥?那解密的时候呢?
  • 使用RSA对Hash进行签名时,应该使用公钥还是私钥?那验签的时候呢?
  • 做安全启动时,大家是否对RSA验签实现里各种奇奇怪怪的字母感到困惑?例如n、e、d;

那么我们带着问题动手撸撸代码来熟悉RSA。 

1. 密钥对的使用时机

 非对称算法的特性在于加密过程和解密过程使用的是不同的密钥,其中可以对外公开的密钥叫做公钥,只能自己保管的密钥叫做私钥,这两个密钥共同构成密钥对;

由于RSA算法本身的数学属性(单向陷门原理),密钥对有这样一种巧妙的关联(先记住它):

  • 使用公钥加密数据,则只能通过私钥进行解密;
  • 使用私钥进行加密,则需通过公钥进行解密。

上述过程我们可以请出老朋友Bob和Alice来进行演示,具体如下图:

Bob想要给Alice写信,但又不想让别人知道信的内容,因此他用Alice给的公钥对信的内容继续加密;Alice拿到加密后的内容后,使用自己的私钥解密,从而得到"Hello Alice”。

这就回答了今天的第1个问题,当想要加密时,应该选择对应公钥进行加密;其他几种情况都不能满足信息安全的要求:

  • 如果Bob用自己的公钥加密,那么就只能他自己用私钥解密,Alice拿到密文也没有用;
  • 如果Bob用自己的私钥加密,那么所有获得他公钥的人都可以解密。

那么签名又应该如何使用密钥呢?

我们先搞懂什么是签名,一般来说,所谓签名就是用来证明自己身份的机制,具体到细节其实就是用非对称算法对消息摘要做加密。

既然要证明我就是我,思考一下,在非对称算法里什么是私密的呢?毫无疑问就是自己的私钥;

因此在签名过程中,应当使用自己的私钥对消息摘要进行签名,那么所有获得公钥的人都可以验证签名;而由于私钥的私密性,他人基本无法冒充,从而证明了我就是我。

老规矩,Bob要向Alice证明消息就是他发的,如下图:

  1. Bob使用Hash函数对"Hello Alice"计算出摘要;
  2. Bob为了证明消息是自己发的,用自己的私钥对摘要进行加密,也即签名;并把消息和签名同时发送给Alice;
  3. Alice拿到数据后,首先对"Hello Alice”使用同样Hash函数进行摘要计算,得到消息原始Hash值;使用Bob对外公开的公钥,对签名进行解密得到待校验的Hash值;
  4. 将上述Hash进行比对,如果值一致,则证明是Bob发送的消息。

 同样的,如果用其他的密钥进行签名会出现什么情况呢?

  • 如果Bob使用自己的公钥签名,那只有自己才能验,Alice不知道是谁发的;
  • 如果Bob用Alice的公钥签名,虽然只有Alice能验证,但是由于只要是获得了Alice公钥的人都可以签名,不能证明是Bob发的

2.小结

从上面我们知道了非对称算法的密钥对使用时机,那么接下里我们继续讲解RSA,我们分别从RSA加解密、签名验签以及其原理概述入手。

上一篇:【已测 非网上加密版】全新UI彩虹站长在线工具箱系统源码下载 全开源版本


下一篇:Rust开发笔记 | 系统编程的守护神