Java - 数字签名与数字证书

文章目录

  • 概述
  • 对称加密
  • 非对称加密
  • 数字签名
  • 数字证书
    • 根证书
    • 申请ca证书
  • 完整流程
  • 小结

在这里插入图片描述

概述

SSL是一种安全协议,用于在网络传输中提供数据加密、身份验证和完整性保护。它基于传输层协议(如TCP),并为其提供加密和安全功能。

  1. 对称加密和非对称加密

    • 对称加密:使用相同的密钥进行加密和解密。
    • 非对称加密:使用两个密钥:公钥用于加密,私钥用于解密。
  2. 数字签名:用于验证数据的完整性和身份验证。发送方使用私钥对数据签名,接收方使用公钥验证签名。

  3. 数字证书:由可信第三方颁发的电子文档,其中包含有关个人或组织的身份信息以及公钥。

  4. SSL协议:基于这些工具和概念,SSL协议提供了以下几个关键功能:

    • 数据加密:通过使用非对称加密算法(如RSA或Diffie-Hellman),为传输的数据提供端到端加密。
    • 身份验证:服务器向客户端证明其身份,通常通过使用数字证书。
    • 密钥交换:协商一个共享的加密密钥,用于对称加密算法(如AES)。
    • 数据完整性:通过使用消息认证码(MAC),确保数据在传输过程中没有被篡改。
  5. 应用场景: SSL在网络交易、银行、电子邮件和许多其他需要保护敏感信息的场景中广泛使用。

  6. 替代品:由于SSL的某些安全问题,其后续版本TLS(传输层安全)已成为其替代品。TLS被认为是更安全和更现代的协议。

要充分利用SSL/TLS提供的保护,需要正确配置和管理服务器和客户端。此外,定期更新和检查证书也是非常重要的,以确保安全性和有效性。


在了解ssl之前,先要了解对称加密、非对称加密、数字签名、数字证书。因为ssl是基于这些构建出来的。

对称加密

  • 对称加密只有一把密钥,明文用这把密钥加密后可以转化为密文,密文再用同一把钥匙解密。就像家里门锁,只能有一把钥匙打开或者锁上。当然可以拿这把钥匙去配多把一样的给多个人用,这样拿到这个钥匙的人都能对门进行锁上和打开操作。

  • 常用的对称加密算法有DES、3DES、AES等。

  • 对称加密的优点是加密速度快,适合对大量信息进行加密,缺点是密钥一旦丢失将导致密文泄漏。


非对称加密

非对称加密有两把钥匙对,A和B,用A加密只能用B解密,用B加密也只能用A解密。有一把钥匙可以公开出去,另一把钥匙自己留着,公开出去的叫公钥,自己留着的钥匙叫私钥。

比如A钥匙自己留着,钥匙A叫私钥,B钥匙公开出去则叫公钥。公钥可以复制多把给很多人用。

在这里插入图片描述

使用两把密钥:公钥和私钥。公钥用于加密,而私钥用于解密。这种方法的优点在于,即使公钥被泄露,只要私钥保持安全,信息仍然是安全的。因此,非对称加密在密钥管理上更为安全。然而,它的缺点是加密速度慢,不适合对大量信息进行加密。

常用的非对称加密算法有RSA、ECC等。

在实际应用中,通常会将对称加密和非对称加密结合使用,以提高安全性和效率。例如,可以使用非对称加密来安全地交换对称加密的密钥,然后使用对称加密来加密实际的数据。这样既可以利用对称加密的高速性,又可以保证密钥交换的安全性。


数字签名

数字签名是一种电子签名,通常用于验证消息的真实性和完整性。它是一种数学算法,利用公钥加密领域的技术实现。数字签名创建个人或实体独有的虚拟指纹,用于识别用户并保护数字消息或文档中的信息。

在数字签名的过程中,发送方会用一个哈希函数从报文文本中生成报文摘要,然后用自己的私人密钥对这个摘要进行加密。这个加密后的摘要将作为报文的数字签名和报文一起发送给接收方。接收方首先用与发送方一样的哈希函数从接收到的原始报文中计算出报文摘要,再用发送方的公用密钥来对报文附加的数字签名进行解密。如果这两个摘要相同,接收方就能确认该数字签名是发送方的,从而验证消息的真实性和完整性。

数字签名是非对称密钥加密技术与数字摘要技术的应用,通常用于电子邮件、信用卡交易或数字文档等场景。它比其他形式的电子签名更安全,因为只有信息的发送者才能产生别人无法伪造的一段数字串,这个数字串同时也是对信息的发送者发送信息真实性的一个有效证明。

在这里插入图片描述

举个例子:

张三要求李四给他写一封加密信,打算用非对称加密方法。张三自己先生成一对密钥A和B,A作为私钥留给自己,B作为公钥给了李四。李四收到李四的公钥后就开始写信,并用李四给的公钥B对信进行加密。李四把写好的信邮递给了张三,张三用自己的私钥解开信件。

在这里插入图片描述

张三收到李四的信后会有两个疑问:

  • 1、这封信的内容怎么证明没有被篡改过?

  • 2、怎么证明这个信是李四写的,难道不是别人冒充的?

要解决这两个问题就要用到数字签名技术了。

主要步骤如下:

李四:

  • 1、李四生成一对密钥C和D,C作为私钥留给自己,D作为公钥给张三

  • 2、李四写完信后对信的内容用Hash函数对信生成一段摘要,把这段摘要用私钥C加密后付在信的后面一起发给张三。

在这里插入图片描述

张三:

  • 1、收到信后先用自己的私钥把信解出来,并用hash生成摘要

  • 2、用李四的公钥把摘要密文解出来,跟自己生成的摘要进行对比,如果一致则说明信没有被篡改过,而且可以肯定这封信就是李四写的。

由此可见,数字签名是利用信息摘要和非对称加密证明信息的完整性(没被篡改)和信息发送方的身份的一种技术。


数字证书

数字证书是一种用于验证网络通信中各方身份信息的电子文档,也称为数字标识。它是由权威的第三方机构(CA)颁发的,通常采用国际标准X.509格式。数字证书中包含了一系列关于证书所有人的信息,如姓名、公钥、有效期等,以及CA的签名。

数字证书基于密码学原理,利用数字签名、加密、解密等技术,在Internet上建立起有效的信任机制。其主要功能包括:在网络通信中标识通讯各方身份信息;对网络用户在计算机网络交流中的信息和数据进行加密或解密,保证信息和数据的完整性和安全性。

数字证书的格式遵循ITUTX.509国际标准,包含证书版本信息、序列号、签名算法、发行机构名称、有效期、证书所有人名称、公开密钥等信息。用户在浏览网络数据信息或进行网上交易时,可以利用数字证书保障信息传输及交易的安全性。

数字证书是目前国际上最成熟并得到广泛应用的信息安全技术之一。通过数字证书,可以在网络上建立起可信的虚拟世界,保障网络通信的安全性。


继续上面的案例 :

王五想冒充李四给张三写封信,他偷偷拿了张三的电脑,把里面李四的公钥D换成他自己的,然后用自己的私钥对信件摘要加密,用张三的公钥B对信件内容加密。把这封冒牌信发给张三。

怎么解决这种偷梁换柱的问题呢?张三只要证明李四给的公钥就是李四本人的就行。张三要求李四拿他的公钥去公证处做一下公证,然后将公钥以数字证书的形式发给张三。


根证书

根证书是数字证书的一种,也称为根CA证书或根CA证书颁发机构。根证书是数字证书体系的基础,它是全球数字证书体系的层次。根证书的作用是验证其他数字证书的真伪,从而确保安全通信的可靠性。

根证书由全球的数字证书颁发机构(CA)发行,例如Symantec、DigiCert、Comodo等。数字证书颁发机构通过签名和验证数字证书,为网络通信提供了一定的安全保障。数字证书颁发机构颁发的证书,都被数字签名,并被公钥体系结构加密,以确保其完整性和真实性。

根证书的作用是建立信任链,确保用户与网站或服务之间的通信是安全和可信的。当用户访问一个使用SSL/TLS协议的网站时,浏览器会查看该网站的证书是否由受信任的根证书颁发机构签名。如果该网站的证书是由受信任的根证书颁发机构签名,那么浏览器就会认为该网站是安全的,并允许用户与该网站进行加密通信。

根证书的安装意味着对这个CA认证中心的信任。从技术上讲,数字证书其实包含三部分,用户的信息、用户的公钥、还有CA中心对该证书里面的信息的签名。也就是说,用户在使用自己的数字证书之前必须先下载根证书。



申请ca证书


完整流程

小结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/345009.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LLM之RAG理论(七)| 高提升RAG检索的四种方法

​ RAG两大核心组件:检索和生成。本文将总结四种提高RAG系统检索质量的技术:1)子问题查询引擎(来自LlamaIndex),2)RAG-Fusion、3)RAG-end2end和4)LoRA微调。 一、L…

如何用GPT绘图?

详情点击练级:如何用GPT绘图? 一OpenAI 1.最新大模型GPT-4 Turbo 2.最新发布的高级数据分析,AI画图,图像识别,文档API 3.GPT Store 4.从0到1创建自己的GPT应用 5. 模型Gemini以及大模型Claude2 二定制自己的GPTs…

多线程select并发

多线程select并发 只需要在上面代码的基础上对服务器端做些更改, 主要逻辑如下: 主线程在检测到有新的客户端连接之后, 创建一个子线程完成accept操作, 具体如下: if(FD_ISSET(lfd, &rdtemp)){auto* info new fdInfo;info->fd lfd;info->maxfd &maxfd;info…

grid布局,flex布局实现类似响应式布局的效果

一. grid布局 实现代码 <!DOCTYPE html> <html lang"en"><head><style>.box {display: grid;grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); /*自动填充&#xff0c;最小宽度300px*/justify-content: space-between;gap:…

go语言(十六)----tag

package mainimport ("fmt""reflect" )type resume struct {Name string info:"name" doc:"我的名字"Sex string info:"sex" }func findTag(str interface{}) {t : reflect.TypeOf(str).Elem()for i : 0;i < t.NumField…

redis高可用之Sentinel模式

文章目录 前言1. 创建联想主服务器的网络连接2. 创建连向其他Sentinel的命令连接 &#xff08;也就是调度中心的高可用&#xff09;3.选举领头Sentinel 调度中心高可用4.故障转移 选出新的主服务器 redis服务器高可用如何挑选新的主服务器&#xff1f; 总结 前言 Sentinel(哨岗…

【Keil5】keil5修改主题背景颜色--仿VS Code 主题

keil单调的白底主题难免会让人产生视觉疲劳&#xff0c;该工具里有仿VS的黑色主题.当然&#xff0c;如果你觉得这些都不合你心意也可自己制作配色方案。 1、备份 C:\Keil_v5\UV4下的 global.prop文件。 2、下或者复制 我配置的global.prop文件到你的Keil安装路径&#xff0c;比…

什么是护网行动?

护网&#xff0c;也称“网络保护”&#xff0c;是指网络安全人员对企业或组织的网络进行检查、维护和保护&#xff0c;以防止网络受到黑客攻击、病毒、木马或其它恶意程序的侵入和损害。护网工作包括&#xff1a;网络安全规划、网络配置和控制、漏洞发现和修复、入侵检测和防范…

jenkins 使用webhooks 触发构建任务gitea为例 gitlab类似

jenkins 使用webhooks 触发构建任务gitea为例 多次尝试以及网上的各种资料查阅成功了下 其他人给的答案他们有他们的道理&#xff0c;至少我没有实验成功。我这里就记录下 添加API token 将生成的token 复制保存 第4步骤的时候要用 配置构建方式 填写身份验证令牌 安全配…

Spring复习-问题回答

1.什么是 spring&#xff0c;你对 spring 的理解? Spring是一个轻量级&#xff0c;非侵入式的&#xff08;不使用框架特定的类&#xff0c;感受不到框架&#xff09;IOC和AOP一站式的java后端开发框架&#xff0c;简化企业开发。 2.spring 的优缺点 优点&#xff1a; Spr…

HTML标签(二)

目录 表格标签 表格的主要作用 表格的具体用法 表头单元格标签 表格属性 表格结构标签 合并单元格 合并单元格的方式&#xff1a; 跨行合并&#xff1a; 跨列合并&#xff1a; 列表标签 无序列表 有序列表 自定义列表 表单标签 表单域 表单域的常用属性 表单元素…

阿里云幻兽帕鲁服务器租用价格表,免费?

幻兽帕鲁异常火爆自建幻兽帕鲁服务器不卡又稳定&#xff0c;继腾讯云推出幻兽帕鲁自建服务器教程和4核16G幻兽帕鲁专用特价游戏服务器后&#xff0c;阿里云坐不住了&#xff0c;直接推出特价4核32G和4核16G的palworld专属游戏机&#xff0c;另外还可以申请免费3个月的4核8G无影…

系统移植,GNU命令,Uboot移植

一.GNU命令 1、addr2line 把程序地址转换为文件名和行号 做调试 2、ar 建立&#xff0c;修改&#xff0c;提取归档文件 3、Id:GNU arm-none-linux-gnueabi-ld start.o main.o -Tmap.lds -o uart.elf 链接器 4、as 主要用来编译GNU编译器gcc输出的汇编文件&a…

git本地分支的合并/切换分支时遇到的问题

目录 第一章、本地分支的切换测试1.1&#xff09;切换之前的master分支下文件内容1.2&#xff09;切换到develop分支后修改文件1.3&#xff09;切回master分支出现报错&#xff1a; 第二章、解决方式2.1&#xff09;方式1&#xff1a;commit提交修改2.2&#xff09;方式2&#…

电脑文件mfc140.dll丢失的解决方法指导,怎么快速修复mfc140.dll

mfc140.dll 文件的缺失是个普遍的问题&#xff0c;在日常使用中可能会时不时遇到。本文主要目的是详细介绍一旦遇到 mfc140.dll 文件缺失&#xff0c;应该如何进行下载和安装的步骤。不再赘言&#xff0c;下面就一起深入了解mfc140.dll丢失的解决方法指导。 一. mfc140.dll的作…

VBA即用型代码手册之改变主窗口标题栏名称及隐藏工作表

我给VBA下的定义&#xff1a;VBA是个人小型自动化处理的有效工具。可以大大提高自己的劳动效率&#xff0c;而且可以提高数据的准确性。我这里专注VBA,将我多年的经验汇集在VBA系列九套教程中。 作为我的学员要利用我的积木编程思想&#xff0c;积木编程最重要的是积木如何搭建…

IMU用于室内定位

在室内环境中&#xff0c;全球定位系统&#xff08;GPS&#xff09;的信号受限&#xff0c;因此&#xff0c;开发高精度的室内定位技术成为了研究的热点。近日&#xff0c;来自印度的研究团队采用了粒子滤波算法和多传感器融合技术&#xff0c;探讨了IMU和UWB测量数据的融合&am…

Redis解决方案:NOAUTH Authentication required(连接jedis绑定密码或修改redis密码)

Redis解决方案&#xff1a;NOAUTH Authentication required&#xff08;连接jedis绑定密码或修改redis密码&#xff09; Java使用jedis连接redis时出现错误NOAUTH Authentication required 一、问题报错和原因 本地设置了redis的密码&#xff0c;但在远程连接时并没有输入密…

web系统架构基于springCloud的各技术栈

博主目前开发的web系统架构是基于springCloud的一套微服务架构。 使用的技术栈&#xff1a;springbootmysqlclickhousepostgresqlredisrocketMqosseurekabase-gatewayapollodockernginxvue的一套web架构。 一、springboot3.0 特性&#xff1a;Spring Boot 3.0提供了许多新特性…

绘图软件Visio入门必备!Visio版本|下载|替代软件|模具图库|使用技巧

Visio是什么软件&#xff1f; Visio&#xff0c;全称为Microsoft Visio&#xff0c;是微软旗下的一款图表和矢量图形应用程序&#xff0c;属于Microsoft 365系列的一部分。Visio最初是由前美国软件公司Visio Corporation于1992年推出&#xff0c;微软于2000年收购了Visio Corp…