首页 > 其他分享 >数字签名是什么?

数字签名是什么?

时间:2024-09-17 22:24:12浏览次数:9  
标签:公钥 加密 苏珊 鲍勃 数字签名 什么 数字证书

原文:数字签名是什么?

文中涉及的密码学基本知识,可以参见对称加密和非对称加密的区别

img

鲍勃有两把钥匙,一把是公钥,另一把是私钥。

img

鲍勃把公钥送给他的朋友们——帕蒂、道格、苏珊——每人一把。

img

苏珊要给鲍勃写一封保密的信。她写完后用鲍勃的公钥加密,就可以达到保密的效果。

img

鲍勃收信后,用私钥解密,就看到了信件内容。这里要强调的是,只要鲍勃的私钥不泄露,这封信就是安全的,即使落在别人手里,也无法解密。

img

鲍勃给苏珊回信,决定采用“数字签名”。他写完后先用 Hash 函数,生成信件的摘要(digest)

img

然后,鲍勃使用私钥,对这个摘要加密,生成“数字签名”(signature)

img

鲍勃将这个签名,附在信件下面,一起发给苏珊。

img

苏珊收信后,取下数字签名,用鲍勃的公钥解密,得到信件的摘要。由此证明,这封信确实是鲍勃发出的。

img

苏珊再对信件本身使用 Hash 函数,将得到的结果,与上一步得到的摘要进行对比。如果两者一致,就证明这封信未被修改过。

img

复杂的情况出现了。道格想欺骗苏珊,他偷偷使用了苏珊的电脑,用自己的公钥换走了鲍勃的公钥。此时,苏珊实际拥有的是道格的公钥,但是还以为这是鲍勃的公钥。因此,道格就可以冒充鲍勃,用自己的私钥做成“数字签名”,写信给苏珊,让苏珊用假的鲍勃公钥进行解密。

img

后来,苏珊感觉不对劲,发现自己无法确定公钥是否真的属于鲍勃。她想到了一个办法,要求鲍勃去找“证书中心”(certificate authority,简称 CA),为公钥做认证。证书中心用自己的私钥,对鲍勃的公钥和一些相关信息一起加密,生成“数字证书”(Digital Certificate)

img

鲍勃拿到数字证书以后,就可以放心了。以后再给苏珊写信,只要在签名的同时,再附上数字证书就行了。

img

苏珊收信后,用 CA 的公钥解开数字证书,就可以拿到鲍勃真实的公钥了,然后就能证明“数字签名”是否真的是鲍勃签的。

img

下面,我们看一个应用“数字证书”的实例:https 协议。这个协议主要用于网页加密。

img

首先,客户端向服务器发出加密请求。

img

服务器用自己的私钥加密网页以后,连同本身的数字证书,一起发送给客户端。

img

客户端(浏览器)的“证书管理器”,有“受信任的根证书颁发机构”列表。客户端会根据这张列表,查看解开数字证书的公钥是否在列表之内。

img

如果数字证书记载的网址,与你正在浏览的网址不一致,就说明这张证书可能被冒用,浏览器会发出警告。

img

如果这张数字证书不是由受信任的机构颁发的,浏览器会发出另一种警告。

img

如果数字证书是可靠的,客户端就可以使用证书中的服务器公钥,对信息进行加密,然后与服务器交换加密信息。

标签:公钥,加密,苏珊,鲍勃,数字签名,什么,数字证书
From: https://www.cnblogs.com/Higurashi-kagome/p/18417442

相关文章

  • Linux内核中cpu_capacity是什么?
    cpu_capacity在Linux内核中,cpu_capacity是用于表示每个CPU的处理能力的一个参数,通常用于调度器的负载均衡。它表明不同的CPU核心在计算资源分配中的相对性能,尤其在异构多核架构(如ARM的big.LITTLE架构)中,不同的核心可能具有不同的计算能力。主要概念同构和异构架构:在同构架......
  • 易优最低支持php什么版本
    根据提供的信息,易优CMS(EyouCMS)的最低支持PHP版本为5.4。这意味着你可以使用PHP5.4或更高版本来安装和运行易优CMS。不过,官方推荐使用PHP5.5到5.6之间的版本,这是因为这些版本在性能和稳定性方面表现良好,并且能够很好地兼容易优CMS的功能。易优CMS的PHP版本支持总结最低支持版......
  • 我使用本地windows11上的VSCode远程连接到ubuntu进行RUST程序开发,我在VSCode上安装了
    当你使用VSCode的Remote-SSH扩展从本地Windows11连接到远程的Ubuntu服务器进行开发时,插件的安装有以下行为:插件的安装位置本地插件:某些插件,例如VSCode的界面插件或与本地编辑器相关的插件,安装在你的本地Windows系统上。这些插件不需要与远程服务器交互,因此它们仅......
  • 什么是事件驱动
    什么是事件驱动?事件驱动是一种编程和系统设计模式,核心思想是:系统的运作是通过事件来驱动的,系统各个部分对事件作出反应并执行相应操作。事件可以是任何系统内部或外部触发的操作,比如用户点击按钮、网络请求、文件读取完成等。在事件驱动架构中,程序不会按顺序执行一连串预......
  • 为什么线程退出还要回收线程
    为什么线程退出后还需要线程回收线程的退出函数:pthread_exitintpthread_create(pthread_t*thread,constpthread_attr_t*attr,void*(*start_routine)(void*),void*arg);功能:创建一个分支线程参数1:线程号,通过参数返回,用法:在外部定义一个该类型的变量,将地......
  • C++面试考点:拷贝赋值运算符和拷贝构造函数有什么区别?
    定义和功能拷贝构造函数拷贝构造函数是一种特殊的构造函数,用于创建一个新对象,该新对象是作为另一个同类型对象的副本而创建的。其函数原型通常为类名(const类名&other)(在C++11之前,const也可省略)。例如:classMyClass{public:MyClass(constMyClass&ot......
  • Facebook直播限流是什么原因?是ip地址导致的吗
    随着社交媒体和直播行业的蓬勃发展,Facebook直播已成为众多企业和个人进行品牌推广、产品展示和互动交流的重要平台。然而,在享受直播带来的便利与效益的同时,不少用户也面临着直播限流的困扰。本文将探讨Facebook直播限流的原因,并提出相应的应对策略。一、理解Facebook直播限流......
  • Facebook直播限流是什么原因?是ip地址导致的吗
    随着社交媒体和直播行业的蓬勃发展,Facebook直播已成为众多企业和个人进行品牌推广、产品展示和互动交流的重要平台。然而,在享受直播带来的便利与效益的同时,不少用户也面临着直播限流的困扰。本文将探讨Facebook直播限流的原因,并提出相应的应对策略。一、理解Facebook直播限流......
  • SOCKS4和SOCKS5的区别是什么?
    SOCKS4和SOCKS5是两种常用的网络代理协议,它们在功能、性能和应用场景上存在一些关键的区别。以下是对这两种协议区别的详细解析:1.支持的协议类型SOCKS4:只支持TCP协议(传输控制协议)。这意味着SOCKS4代理只能用于基于TCP连接的网络应用,对于需要在UDP协议上通信的应用(如在线游戏......
  • 为什么需要异步加载和延迟加载?
    为什么需要异步加载和延迟加载?揭秘异步加载:让小程序加载更快的秘密武器延迟加载:只在需要时加载内容实战演练:在微信小程序中实现异步与延迟加载性能监控与优化:持续提升小程序加载速度在快节奏的数字时代,用户对网页和应用的加载速度要求越来越高。想象一下,当你点击一个......