首页 > 其他分享 >计算机网络(四)数字签名和CA认证

计算机网络(四)数字签名和CA认证

时间:2024-07-25 21:24:45浏览次数:13  
标签:公钥 私钥 证书 数字签名 CA 计算机网络 哈希

什么是数字签名和CA认证?

数字签名

数字签名的过程通常涉及以下几个步骤:

  1. 信息哈希:首先,发送方使用一个哈希函数(如SHA-256)对要发送的信息(如电子邮件、文件等)生成一个固定长度的哈希值(也称为消息摘要)。哈希函数具有以下特性:
    • 定长输出:无论输入信息的大小,输出都是固定长度的。
    • 单向性:从哈希值很难反推出原始信息。
    • 抗碰撞性:很难找到两个不同的信息具有相同的哈希值。
  2. 私钥加密:然后,发送方使用其私钥对哈希值进行加密。加密后的哈希值就成为了**数字签名**。
  3. 发送信息:发送方将原始信息和数字签名一起发送给接收方。
  4. 验证签名:接收方收到信息后,使用发送方的公钥对数字签名进行解密,得到哈希值。
  5. 信息哈希比对:接收方同样对原始信息进行哈希运算,得到一个新的哈希值,并将其与解密后的哈希值进行比对。
    • 如果两个哈希值相同,则说明信息在传输过程中未被篡改,且信息确实是由持有私钥的发送方发送的。
    • 如果哈希值不同,则说明信息可能被篡改,或者发送方不是声称的持有私钥的人。

CA定义

CA是一个可信的第三方组织,负责颁发、管理、和吊销数字证书。数字证书是一种用于在互联网上验证实体(如个人、企业、网站等)身份的电子证明。CA确保证书中的公钥确实属于证书上所声明的实体。

CA的主要职责包括:

  1. 证书颁发:在验证了申请者的身份后,CA会颁发一个包含申请者公钥和身份信息的数字证书。
  2. 证书管理:CA负责跟踪证书的有效期,并在必要时更新或吊销证书。
  3. 信任建立:CA通过在其证书上签名来建立信任链。用户或系统信任CA的证书,因此也信任由该CA签名的任何其他证书。

CA认证过程

  1. 身份验证:申请者必须向CA证明其身份。这通常涉及提供身份证明文件、企业注册信息或其他形式的验证。
  2. 公钥生成:申请者生成一对公钥和私钥。私钥保持秘密,而公钥将包含在证书中。
  3. 证书颁发:CA验证申请者身份后,会创建一个数字证书,将申请者的公钥和身份信息绑定在一起,并使用CA的私钥对证书进行数字签名。
  4. 证书分发:CA将证书分发给申请者,申请者可以将证书安装在服务器上(例如,用于HTTPS的SSL/TLS证书)。

图解数字签名和CA认证

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

数字签名和CA认证分别防止了哪些安全问题?

数字签名防止的安全问题:

  1. 篡改:数字签名确保信息在传输过程中未被篡改。通过比较发送方的公钥解密后的哈希值和接收方对原始信息计算出的哈希值,可以验证信息自签名以来是否保持不变。
  2. 伪造:数字签名防止第三方伪造信息。由于只有持有私钥的发送方才能生成有效的签名,因此即使信息被篡改,也无法伪造有效的签名。
  3. 抵赖:数字签名提供了不可抵赖性,即发送方不能否认曾经发送过该信息。因为签名是基于发送方的私钥生成的,接收方可以使用发送方的公钥来验证签名的有效性。

CA认证防止的安全问题:

  1. 中间人攻击:CA认证通过验证公钥的真实性来防止中间人攻击。在中间人攻击中,攻击者可能会拦截通信,并提供自己的公钥(比如说你想访问淘宝,请求发出后,我假装自己是淘宝,给你发一个我的公钥,你收到后你以为是淘宝的,然后开始与我进行交互,我就窃取了你的信息),使通信双方误认为他们正在与对方直接通信。CA颁发的证书保证了公钥确实属于声称的所有者。
  2. 公钥伪造:CA认证确保公钥不是伪造的。没有CA的证书,攻击者很难伪造一个被广泛信任的公钥。
  3. 信任问题:CA认证解决了互联网上陌生双方之间的信任问题。通过信任由知名CA签发的证书,通信双方可以确信对方的身份是经过验证的。

参考:https://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html

标签:公钥,私钥,证书,数字签名,CA,计算机网络,哈希
From: https://blog.csdn.net/m0_58466443/article/details/140700421

相关文章

  • 基于CNN卷积神经网络的步态识别matlab仿真,数据库采用CASIA库
    1.算法运行效果图预览(完整程序运行后无水印) 1.训练过程   2.样本库     3.提取的步态能量图   4.步态识别结果和样本真实标签   2.算法运行软件版本MATLAB2022a 3.部分核心程序(完整版代码包含详细中文注释,训练CASIA库) digitD......
  • opencv - py_calib3d - py_calibration 相机校准
    文章目录CameraCalibration相机校准目标基础知识代码设置校准去失真1.使用**cv.undistort()**2.使用**remapping**重新投影误差CameraCalibration相机校准目标在本节中,我们将学习相机造成的失真类型如何找到相机的内在和外在属性如何根据这些属性消除图......
  • Camstar中Grid控件怎么用代码去删除选中的行 并且清掉勾选框
    if(Page.EventArgument=="FloatingFrameSubmitParentPostBackArgument"){if(Page.DataContract.GetValueByName("IsRefresh")==null){//从这里开始ListallRows=newList();//将guid_one中的所有数据存储到allRows集合中if(guid_one.DataisDataTable......
  • 赋能未来教育,3DCAT实时云渲染助力深圳鹏程技师学院打造5G+XR实训室
    随着国家对教育行业的重视,实训室建设已成为推动教育现代化的关键。《教育信息化2.0行动计划》、《职业教育示范性虚拟仿真实训基地建设指南》等政策文件,明确指出了加强虚拟仿真实训教学环境建设的重要性。在这一大背景下,教育行业对于实训室的需求愈发迫切,旨在通过技术革新,为学生......
  • SpringBootApplication入口调用service类方法
    要在publicstaticvoidmain(String[]args)中调用Service的方法,需要在Application类中手动获取Spring容器,并从中获取Service的实例。示例如下:启动入口程序@SpringBootApplicationpublicclassRouteApplication{publicstaticvoidmain(String[]args){......
  • 向 ZATCA 提交简化发票时出现“生产 CSID 不涵盖简化文档”错误
    我正在尝试使用zatcasdk使用我们的公司信息以及有效的增值税号和Fatoora“123345”提供的默认OTP来生成CSR,然后我可以生成CSID和PCSID,我还使用CSID证书签署发票并生成它的哈希值和二维码,我提交给合规性并通过了,但是当尝试使用PCSID进行身份验证和CSID或PCSID进行签名将其......
  • 何时使用static_cast、dynamic_cast、const_cast和reinterpret_cast
    在C++中,类型转换操作符static_cast、dynamic_cast、const_cast和reinterpret_cast各有其特定的使用场景。下面是每种类型转换操作符的基本用途和何时使用它们的指南:1. static_cast用途:主要用于基本数据类型之间的转换,以及有明确定义的类层次结构中的向上转换(派生类到基类)和......
  • 基于JSP、java、Tomcat三者的项目实战--校园交易网(1)-项目搭建(前期准备工作)
    这是项目的初始页面接下来我先写下我的初始项目搭建技术支持:JAVA、JSP服务器:TOMCAT7.0.86编程软件:IntelliJIDEA2021.1.3x64首先我们打开页面,准备搭建项目的初始准备1.NewProject2.随后点击Next,勾选Createprojectfromtemplate,再点击Next3.给自己的项目命名......
  • Scanner对象
    我们可以通过Scanner类来获取用户的输入基本语法Scanners=newScanner(System.in)通过Scanner的next()与nextline()方法获取输入的字符串.在读取之前一般使用hasNext()与hasNextLine()判断是否还有输入的数据注意:一定要记得写:scanner.close();next()方法publicclassde......
  • can环境模拟+重放攻击+逆向分析
    安装ICSimsudoaptinstalllibsdl2-devlibsdl2-image-devcan-utilsmavenautoconf-y#下载ICSimgitclonehttps://github.com/zombieCraig/ICSim.git#编译安装cdICSim/sudomake安装socketcand#下载socketcandgitclonehttps://github.com/linux-can/socket......