百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 优雅编程 > 正文

有趣图文帮你通俗易懂地理解公钥和私钥的区别以及与CA证书等概念

sinye56 2024-11-11 13:37 3 浏览 0 评论

导读:Linux系统上非对称性加密需要用到公钥、私钥。也常涉及到数字签名、数字证书、CA证书等概念。本文通过有趣的海绵宝宝和它小伙伴故事搭配有趣的图片形式来阐述这些概念,希望能帮助读者更简单易懂地理解这些概念及知识点。

片段1. 海绵宝宝有两把钥匙,一把是海绵宝宝的公钥,另一把是海绵宝宝的私钥。

片段2. 海绵宝宝去钥匙铺通过打造复制了多把相同的公钥并送给他好朋友派大星和章鱼哥每人一把。

片段3. 派大星要给海绵宝宝写一封秘密的信。为了防止信件被别人截取并看到内容信息。它决定写完信后用海绵宝宝给的公钥对信的内容进行加密,加密后的信内容只有通过海绵宝宝的私钥才能解开。通过这种方式就可以达到保密的效果。

片段4. 海绵宝宝收到信后,用它自己的私钥对信进行解密,就能看到了信件内容。这封信就是安全的,即使落在别人手里如果没有海绵宝宝的私钥是无法对信内容进行解密的。

片段5. 海绵宝宝给派大星回信,决定采用”数字签名”。它写完后的信息内容采用单向Hash函数,生成信件的摘要。

  • 数字签名:又称“公钥数字签名“,是一种类似写在纸上的普通的物理签名但是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法。数字签名是非对称密钥加密技术与数字摘要技术的应用
  • 数字摘要:指将任意长度的消息变成固定长度的短消息,它类似于一个自变量是消息的函数,也就是Hash函数。数字摘要就是采用单向Hash函数将需要加密的明文“摘要”成一串固定长度(128位)的密文这一串密文又称为数字指纹,它有固定的长度,而且不同的明文摘要成密文,其结果总是不同的,而同样的明文其摘要必定一致。

片段6. 然后,海绵宝宝使用它自己的私钥对这个摘要进行加密,生成”数字签名”。

片段7. 海绵宝宝将这个签名,附在信件下面,一起发给派大星。

片段8. 派大星收到信件后,取下数字签名,用海绵宝宝的公钥进行解密,得到信件的摘要。由此证明,这封信确实是海绵宝宝发出的。

片段9. 派大星再对信件本身使用相同的单向Hash函数,将得到的结果与刚才解密得到的摘要进行比较。如果两者一致,就证明这封内容没有被别人修改过。

片段10. 特殊情况出现了,章鱼哥想欺骗派大星,他偷偷自己生成的“章鱼哥公钥”换走了派大星的“海绵宝宝公钥”。此时,被调包后的派大星实际拥有的是“章鱼哥的公钥,但是它并未察觉。因此,章鱼哥就可以冒充海绵宝宝,用自己的私钥做成”数字签名”,写信给派大星,让派大星用假的海绵宝宝公钥进行解密,派大星由于解密很顺利所以就以为信是由海绵宝宝所写。

片段11. 后来,派大星越来越觉得不对劲,发现自己无法确定自己在使用的公钥是否真的属于海绵宝宝的。于是它想到了一个办法:要求海绵宝宝去找”证书中心”(certificate authority,简称CA),为公钥做认证。证书中心用自己的私钥,对海绵宝宝的公钥和一些相关信息一起加密,生成”数字证书”。

片段12. 海绵宝宝拿到数字证书以后,就可以放心了。以后再给派大星写信,只要在签名的同时,再附上数字证书就行了。

片段13. 派大星收信后,用CA的公钥解开数字证书就可以拿到海绵宝宝真实的公钥了,然后使用海绵宝宝的公钥重复第9步操作对数字签名进行验证,就能证明信是否真的是海绵宝宝亲笔所写。

故事的总结:

  • 首先生成公钥和私钥,私钥自己保存。公钥给需要向你发送加密信息文件的接受方。
  • 接受方通过公钥对发送给你的信息进行加密,这样可以保证信息的安全性(在密文暴露的情况下,如果你的私钥不被他人取得,加密的信息还是无法被解密泄露的)
  • 你也可以通过生成“数字证书”来证明信是由你写的。数字证书是用单向Hash函数对新的内容生成一段加密摘要,再通过私钥对该端摘要进行加密而成。
  • 在发送信件的时候将数字证书信件内容一起发送给接受方,接受方即可通过公钥对数字证书进行解密取得摘要,并再用单向Hash函数对信内容进行生成摘要。将两段摘要进行匹配则可知道信的内容是否被修改过。
  • 但是有一种特殊的情况,既是对象根本不能确定其手上的公钥是否就是你给的公钥。这个时候就需要你到证书中心做一件特殊的事情,证书中心会用其私钥将你自己的信息、公钥等进行加密生成一个数字证书。
  • 这样当你写信的时候在附上自己数字签名的同时也将证书中心颁发的数字证书一起带上。对方可以先通过CA公开的公钥对数字证书进行解密,得到你的公钥。再使用公钥对你的数字签名进行解密得到数字摘要。再通过与单向Hash信件内容的数字摘要对比就可确保公钥是你的公钥,信是你写的且内容未被修改!

感谢您的阅读,如果喜欢本文欢迎关注和转发,本头条号将坚持原创,持续分享IT技术知识。对于文章内容有其他想法或意见建议等,欢迎提出共同讨论共同进步。

相关推荐

Linux在线安装JDK1.8

首先在服务器pingwww.baidu.com查看是否可以连网然后就可以在线下载一、下载安装JDK1.81、在下载安装的同时做好一些准备工作...

Linux安装JDK,超详细

1、了解RPMRPM是Red-HatPackageManager(RPM软件包管理器)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,现在包括OpenLinux...

Linux安装jdk1.8(超级详细)

前言最近刚购买了一台阿里云的服务器准备要搭建一个网站,正好将网站的一个完整搭建过程分享给大家!#一、下载jdk1.8首先我们需要去下载linux版本的jdk1.8安装包,我们有两种方式去下载安装...

Linux系统安装JDK教程

下载jdk-8u151-linux-x64.tar.gz下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index.ht...

干货|JDK下载安装与环境变量配置图文教程「超详细」

1.JDK介绍1.1什么是JDK?SUN公司提供了一套Java开发环境,简称JDK(JavaDevelopmentKit),它是整个Java的核心,其中包括Java编译器、Java运行工具、Jav...

Linux下安装jdk1.8

一、安装环境操作系统:CentOSLinuxrelease7.6.1810(Core)JDK版本:1.8二、安装步骤1.下载安装包...

Linux上安装JDK

以CentOS为例。检查是否已安装过jdk。yumlist--installed|grepjdk或者...

Linux系统的一些常用目录以及介绍

根目录(/):“/”目录也称为根目录,位于Linux文件系统目录结构的顶层。在很多系统中,“/”目录是系统中的唯一分区。如果还有其他分区,必须挂载到“/”目录下某个位置。整个目录结构呈树形结构,因此也...

Linux系统目录结构

一、系统目录结构几乎所有的计算机操作系统都是使用目录结构组织文件。具体来说就是在一个目录中存放子目录和文件,而在子目录中又会进一步存放子目录和文件,以此类推形成一个树状的文件结构,由于其结构很像一棵树...

Linux文件查找

在Linux下通常find不很常用的,因为速度慢(find是直接查找硬盘),通常我们都是先使用whereis或者是locate来检查,如果真的找不到了,才以find来搜寻。为什么...

嵌入式linux基本操作之查找文件

对于很多初学者来说都习惯用windows操作系统,对于这个系统来说查找一个文件简直不在话下。而学习嵌入式开发行业之后,发现所用到的是嵌入式Linux操作系统,本想着跟windows类似,结果在操作的时...

linux系统查看软件安装目录的方法

linux系统下怎么查看软件安装的目录?方法1:whereis软件名以查询nginx为例子...

Linux下如何对目录中的文件进行统计

统计目录中的文件数量...

Linux常见文件目录管理命令

touch用于创建空白文件touch文件名称mkdir用于创建空白目录还可以通过参数-p创建递归的目录...

Linux常用查找文件方法总结

一、前言Linux系统提供了多种查找文件的命令,而且每种查找命令都具有其独特的优势,下面详细总结一下常用的几个Linux查找命令。二、which命令查找类型:二进制文件;...

取消回复欢迎 发表评论: