Java中高级核心知识全面解析——HTTPS中的TLS(从密码学的角度理解 HTTPS【TLS 工作流程、公钥密码】、TLS 总结)

Java中高级核心知识全面解析——HTTPS中的TLS(TLS-工作流程、密码基础、RSA-简单示例) 可能有人会问我为什么愿意去花时间帮助大家实现求职梦想,因为我一直坚信时间是可以复制的。我牺牲了自己的大概十个小时写了这片文章,换来的是成千上万的求职者节约几天甚至几周时间浪费在无用的资源上。上面的这些(算法与数据结构)+(Java多线程学习手册)+(计算机网络顶级教程)等学习资源《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!即可获取! 阅读详情

一、SSL 与 TLS

SSL:(Secure Socket Layer) 安全套接层,于1994年由网景公司设计,并于 1995 年发布了 3.0 版本

TLS:(Transport Layer Security)传输层安全性协议,是 IETF 在 SSL3.0 的基础上设计的协议以下全部使用 TLS 来表示

二、从网络协议的角度理解 HTTPS

HTTP:HyperText Transfer Protocol超文本传输协议
HTTPS:Hypertext Transfer Protocol Secure超文本传输安全协议
TLS:位于 HTTP 和 TCP 之间的协议,其内部有TLS握手协议、TLS记录协议
HTTPS 经由 HTTP 进行通信,但利用 TLS 来保证安全,即 HTTPS = HTTP + TLS

三、从密码学的角度理解 HTTPS

HTTPS 使用 TLS 保证安全,这里的“安全”分两部分,一是传输内容加密、二是服务端的身份认证

1.TLS 工作流程

此为服务端单向认证,还有客户端/服务端双向认证,流程类似,只不过客户端也有自己的证书,并发送给服务器进行验证

2.密码基础

1)伪随机数生成器

为什么叫伪随机数,因为没有真正意义上的随机数,具体可以参考Random/TheadLocalRandom它的主要作用在于生成对称密码的秘钥、用于公钥密码生成秘钥对

2)消息认证码

消息认证码主要用于验证消息的完整性与消息的认证,其中消息的认证指“消息来自正确的发送者”

消息认证码用于验证和认证,而不是加密
1.发送者与接收者事先共享秘钥
2.发送者根据发送消息计算 MAC 值
3.发送者发送消息和 MAC 值
4.接收者根据接收到的消息计算 MAC 值
5.接收者根据自己计算的 MAC 值与收到的 MAC 对比
6.如果对比成功,说明消息完整,并来自与正确的发送者

3)数字签名

消息认证码的缺点在于无法防止否认,因为共享秘钥被 client、server 两端拥有,server可以伪造client发送给自己的消息(自己给自己发送消息),为了解决这个问题,我们需要它们有各自的秘钥不被第二个知晓(这样也解决了共享秘钥的配送问题)

数字签名和消息认证码都不是为了加密
可以将单向散列函数获取散列值的过程理解为使用 md5 摘要算法获取摘要的过程

使用自己的私钥对自己所认可的消息生成一个该消息专属的签名,这就是数字签名,表明我承认该消息来自自己
注意:私钥用于加签,公钥用于解签,每个人都可以解签,查看消息的归属人

4)公钥密码

公钥密码也叫非对称密码,由公钥和私钥组成,它是最开始是为了解决秘钥的配送传输安全问题,即,我们不配送私钥,只配送公钥,私钥由本人保管
它与数字签名相反,公钥密码的私钥用于解密、公钥用于加密,每个人都可以用别人的公钥加密,但只有对应的私钥才能解开密文
client:明文 + 公钥 = 密文
server:密文 + 私钥 = 明文
注意:公钥用于加密,私钥用于解密,只有私钥的归属者,才能查看消息的真正内容

5)证书

证书:全称公钥证书加粗样式(Public-Key Certificate, PKC),里面保存着归属者的基本信息,以及证书过期时间、归属者的公钥,并由认证机构(Certification Authority, CA)施加数字签名,表明,某个认证机构认定该公钥的确属于此人

想象这个场景:你想在支付宝页面交易,你需要支付宝的公钥进行加密通信,于是你从百度上搜索关键字“支付宝公钥”,你获得了支什宝的公钥,这个时候,支什宝通过中间人攻击,让你访问到了他们支什宝的页面,最后你在这个支什宝页面完美的使用了支什宝的公钥完成了与支什宝的交易

在上面的场景中,你可以理解支付宝证书就是由支付宝的公钥、和给支付宝颁发证书的企业的数字签名组成
任何人都可以给自己或别人的公钥添加自己的数字签名,表明:我拿我的尊严担保,我的公钥/别人的公钥是真的,至于信不信那是另一回事了

6)密码小结

三、TLS 总结

TLS 是一系列密码工具的框架,作为框架,它也是非常的灵活,体现在每个工具套件它都可以替换,即:客户端与服务端之间协商密码套件,从而更难的被攻破,例如使用不同方式的对称密码,或者公钥密码、数字签名生成方式、单向散列函数技术的替换等

四、RSA 简单示例

RSA 是一种公钥密码算法,我们简单的走一遍它的加密解密过程
加密算法:密文 = (明文^E) mod N,其中公钥为{E,N},即”求明文的E次方的对 N 的余数“
解密算法:明文 = (密文^D) mod N,其中秘钥为{D,N},即”求密文的D次方的对 N 的余数“
例:我们已知公钥为{5,323},私钥为{29,323},明文为300,请写出加密和解密的过程:

加密:密文 = 123 ^ 5 mod 323 = 225
解密:明文 = 225 ^ 29 mod 323 = [[(225 ^ 5) mod 323] * [(225 ^ 5) mod 323] * [(225 ^ 5) mod 323] * [(225 ^ 5) mod 323] * [(225 ^ 5) mod 323] * [(225 ^ 4) mod 323]] mod 323 = (4 * 4 * 4 * 4 * 4 * 290) mod 323 = 123

HTTPS的TLS 1. SSL 与 TLS 2. 从网络协议的角度理解 HTTPS 3. 从密码学的角度理解 HTTPS 3.1. TLS 工作流程 3.2. 密码基础 3.2.1. 伪随机数生成器 3.2.2. 消息认证码 3.2.3. 数字签名 3.2.4. 公钥密码 3.2.5. 证书 3.2.6. 密码小结 3.3. TLS 使用的密码技术 3.4. TLS 总结 4. RSA 简单示例 5. 参考 1. SSL 与 TLS SSL:(Secure Socket Layer) 安全套接层,于 19.. 阅读详情

相关推荐

非对称加密与椭圆曲线密码学:从RSA到ECC的实战解析

加密技术是保障数字通信安全的基石,其核心原理在于通过数学算法将信息转换为不可读的形式,确保只有授权方能够访问。在众多加密方案中,非对称加密通过使用一对数学上关联的公钥和私钥,解决了对称加密中密钥分发的根本性难题,从而奠定了HTTPS、SSH等现代安全协议的基础。其技术价值在于实现了无需预先共享秘密的安全通信,极大地扩展了加密技术在开放网络中的应用范围。从原理上讲,非对称加密的安全性依赖于大数分解或椭圆曲线离散对数等数学问题的计算困难性。随着计算能力的提升和物联网等资源受限场景的普及,更高效、密钥更短的椭圆曲

weixin_30745553的博客 358

SSL/TLS通信及其在Java中的实践

SSL/TLS原理整理,Java中的实践,包括Stream Socket,NIO,AIO,Netty的实践。

melody12ab的专栏 4724

Charles中间人攻击HTTPS原理与实战:从TLS握手到证书绑定绕过

HTTPS作为保障网络通信安全的核心协议,其安全性建立在TLS握手、非对称加密和数字证书体系之上。TLS握手通过客户端与服务器协商密钥、验证证书身份,确保数据传输的机密性与完整性。中间人攻击则揭示了这一体系的关键依赖:客户端对证书颁发机构的信任。当用户主动安装调试工具如Charles的根证书时,实质上是引入了一个受控的CA,使得工具能够动态伪造服务器证书,分别与客户端和服务器建立独立TLS连接,从而解密并转发流量。这种技术广泛应用于开发调试、安全测试和网络问题排查场景,帮助开发者理解HTTPS通信细节、验证

weixin_33804582的博客 323

java 简单实现TLS demo

接下来要做加密,先做做准备 1. SSLServer.java package ssl; import java.io.FileInputStream; import java.io.InputStream; import java.net.ServerSocket; import java.net.Socket; import java.security.KeyStore; impor...

咖啡的博客 6294

从密码到信任链:现代加密技术与数字安全实践全解析

密码学是保障数字世界安全的核心技术,其基础包括对称加密、非对称加密和哈希函数三大支柱。对称加密如AES和SM4,使用同一密钥进行加解密,速度快但存在密钥分发难题;非对称加密如RSA和SM2,通过公钥私钥配对解决了密钥交换和身份认证问题;哈希函数如SHA-256和SM3则为数据生成唯一指纹,确保完整性。这些技术共同构建了数字信任链,其核心价值在于实现安全通信与身份验证,广泛应用于HTTPS协议、数字证书、代码签名等场景。例如,在HTTPS连接中,通过数字证书验证服务器身份,并利用非对称加密安全协商出对称会话密

weixin_30561425的博客 357

深入解析X.509证书SubjectPublicKeyInfo:RSA与ECC公钥编码差异与实战

在网络安全与密码学领域,公钥基础设施(PKI)是构建信任体系的基石,而X.509证书则是其核心载体。证书中的公钥信息并非简单的二进制数据,而是遵循ASN.1标准的结构化编码,它定义了密钥的算法、参数及数据格式。理解其编码原理,特别是SubjectPublicKeyInfo结构,是进行证书解析、验证和跨系统兼容性诊断的关键技术基础。该结构包含算法标识符和公钥比特串两部分,其中算法标识符明确了公钥类型(如RSA或ECC)及必要参数,而公钥比特串则承载了密钥本体。从工程实践角度看,RSA与ECC在此处的编码方式存

weixin_29325955的博客 303

Java中高级核心知识全面解析——HTTPS中的TLS(TLS-工作流程

三、从密码学的角度理解 HTTPS HTTPS 使用 TLS 保证安全,这里的“安全”分两部分,一是传输内容加密、二是服务端的身份认证 1.TLS 工作流程 此为服务端单向认证,还有客户端/服务端双向认证,流程类似,只不过客户端也有自己的证书,并发送给服务器进行验证 2.密码基础 1)伪随机数生成器 为什么叫伪随机数,因为没有真正意义上的随机数,具体可以参考Random/TheadLocalRandom它的主要作用在于生成对称密码的秘钥、用于公钥密码生成秘钥对 2)消息认证码 消息认证码主要用于验证消息的完

m0_63102527的博客 740

从非对称加密到国密HTTPS:构建安全通信的实战指南

非对称加密是现代网络安全通信的基石,它通过公钥和私钥的配对机制,解决了在不安全信道上安全交换密钥的难题。其核心原理基于数学单向函数,使得用公钥加密的数据只能用对应的私钥解密,反之则用于数字签名验证身份。这项技术的核心价值在于为互联网通信建立了初始信任,并实现了高效的身份认证与密钥协商。在实际应用中,非对称加密通常与速度更快的对称加密(如AES)组成混合加密系统,这正是HTTPS协议中TLS/SSL握手过程的核心。该过程通过数字证书验证服务器身份,并协商出临时的对称会话密钥,从而为后续的网页浏览、API调用等

weixin_29323365的博客 182

Java中高级核心知识全面解析(3),阿里架构师深入讲解Java开发

TLS:(Transport Layer Security)传输层安全性协议,是 IETF 在 SSL3.0 的基础上设计的协议以下全部使用 TLS 来表示 二、从网络协议的角度理解 HTTPS HTTP:HyperText Transfer Protocol超文本传输协议 HTTPS:Hypertext Transfer Protocol Secure超文本传输安全协议 TLS:位于 HTTP 和 TCP 之间的协议,其内部有TLS握手协议、TLS记录协议 HTTPS 经由 HTTP 进行通信,但利用 T

m0_60635084的博客 126

[密码学实战]Java实现TLS 1.2单向认证(十三)

[密码学实战]Java实现TLS 1.2单向认证

曼岛_的博客 1400

Java实现SSL TLS

全英文,用Java实现SSL TLS,在谷歌上找到的很实用的文档,特意转来分享。

HTTPS加密原理与TLS握手全解析:从SSL证书到实战部署

HTTPS作为HTTP的安全扩展,通过SSL/TLS协议层解决了网络通信中的窃听、篡改和冒充三大核心安全问题。其原理基于非对称加密建立安全通道,利用数字证书体系验证服务器身份,并通过密钥交换算法生成临时的对称会话密钥,最终切换至高效的对称加密进行数据传输。这一机制不仅保障了数据传输的机密性和完整性,还通过前向安全性等技术提升了整体安全等级。在工程实践中,HTTPS的部署涉及SSL证书申请、Web服务器配置及一系列性能优化策略。针对常见的网络错误,如`ssl certificate problem: unab

weixin_30319153的博客 421

详解电路设计中的RC电路

​ 一、什么是RC电路 RC电路是指由电阻R和电容C组成的电路,它是脉冲产生和整形电路中常用到 的电路。 常见的RC充、放电电路、RC积分电路合RC微分电路接下来详细讲解。 二、RC充、放电电路 RC充、放电电路如下图所示,下面通过充电和放电两个过程来分析此电路。 ​RC充、放电电路图 (1)RC充电电路 RC充电电路图如下图(a)所示 RC充电电路图及充电曲线图 ​由上图分析: 将上图a中开关S置于“1”处,电源E开始通过电阻R对电容C充电,由于刚开始充电时电容两端没有..

IT xiaobai 4万+

从HTTP到HTTPS:一文搞懂TLS握手、证书链与排错实战

HTTPS 并非独立协议,而是将 HTTP 置于 TLS/SSL 加密隧道之上,解决明文传输带来的窃听与篡改风险。理解 HTTPS 的关键在于掌握 TLS 握手:客户端与服务器通过 ClientHello/ServerHello 协商版本与密码套件,再借助证书体系完成身份认证,并利用 DH/ECDHE 等算法安全生成会话密钥。证书链的完整性是信任的基石,中间证书缺失、域名不匹配或过期都会导致浏览器拦截。实际排错中,常用 openssl s_client 查看服务端下发的证书链与协议版本,快速定位证书链不完整

weixin_33957648的博客 330

Windows安装ros2(Jazzy版本+win10/win11)-4.构建ros2结点

这个位置也是ros2搜索package以及搜索node的路径, 如果把构建好的可执行文件乱动位置的话就找不到节点了,当然如果复制一个可执行文件以及可执行文件-script.py文件, ros2也就会认为你有一个新的节点了,运行这个拷贝的可执行文件程序都是ok的。由于上一个文章给powershell7也增加了启动执行ros2的环境初始化文件local_setup.ps1, 所以我们也可以直接在vscode中运行节点, 此种方式没有经由ros2托管, 缺少其他ros2的附加能力。

weixin_48398592的博客 7114

总结:知识图谱KG+大模型LLM

知识图谱KG+大模型LLM

安静的软件工程师 4219

HTTPS协议--HTTPS权威指南:在服务器和Web应用上部署SSL/TLS和PKI (/book/1734)

HTTPS权威指南:在服务器和Web应用上部署SSL/TLS和PKI (/book/1734) 版权声明 (/book/tupubarticle/11118) 前言 (/book/tupubarticle/11133) 第 1 章 SSL、TLS和密码学 (/book/tupubarticle/11134) 第 2 章 协议 (/book/tupubarticle/11135) 第 3

明潮的BLOG 4415

No Target Connected 错误时的一种情况

STM32的SWD烧录模式No Target Connected 错误的一种情况 STM32的SWD烧录模式No Target Connected 错误时的一种处理情况 这是我第一次烧板子的时候遇到的问题,在给板子download的时候出现了“No Target Connected”的错误,这里讲一种解决方法。不一定适用于全部状况,但是可以作为一种纠错方法。 打开 Options for Target… 1.首先点击Options for Target…这个像魔棒一样的按键打开,会出现这个页面 2.点击

Logan_CodeGou的博客 1万+

架构师必备密码学:数字签名、加密算法与密钥管理实战解析

在构建现代安全系统时,密码学基础是核心支柱。其原理基于数学难题,通过加密算法确保数据机密性,利用数字签名验证数据完整性与来源真实性。这项技术的核心价值在于为分布式系统、API通信和数据存储提供了可信的安全基石。在实际应用场景中,如微服务认证、支付回调验签和软件分发,非对称加密与对称加密的组合使用成为标准模式。其中,密钥管理是最高安全环节,涉及密钥的生成、存储、轮换与销毁。本文聚焦于系统架构师视角,深入探讨如何避免常见的“invalid-signature”错误,并正确选型AES、RSA、ECC及国密算法,以

weixin_30387799的博客 469

【毕业设计】基于雷达与深度学习的摔倒检测——雷达数据集的建立

运动物体的微多普勒效应为人体动作识别提供了可能,基于雷达的居家检测具有良好的隐私保护性,且不易受环境因素影响(如光照、温度等),近年来已受到国内外学者的广泛关注。基于雷达与深度学习的摔倒检测使用自建的雷达数据集进行人体摔倒检测的研究。雷达数据集的建立分为雷达数据采集和雷达数据处理两部分工作。

洋洋Young的博客 3405

LeRobot 入门教程(十四)Meta-World 机器人多任务与元强化学习操作仿真基准平台

Meta-World是一个开源机器人操作模拟基准平台,专注于多任务与元强化学习研究。该平台提供50项多样化任务(MT50套件),采用标准化评估协议测试算法泛化能力。LeRobot平台支持Meta-World任务评估,提供预处理数据集和训练工具。用户可通过命令行快速训练SmolVLA策略,并评估模型在简单、中等、困难等不同难度任务上的表现。文章还提供了兼容性问题和实用技巧建议,如使用完整MT50任务集测试泛化能力、采用one-hot任务条件化等。这些资源为研究人员开展机器人多任务学习提供了标准化实验环境。

2506_90492529的博客 1022
上一篇: Java内存区域详解(程序计数器、Java 虚拟机栈、本地方法栈、堆、方法区、运行时常量池、直接内存)
下一篇: Java中高级核心知识全面解析——从认识Linux操作系统开始(什么是操作系统?分类、内核、用户态与内核态)
JavaCaiy
博客等级 码龄6年 1万+粉丝 95原创
评论 22
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值