JavaEE-HTTPS的加密流程

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: JavaEE-HTTPS的加密流程

对称加密

对称加密就是用同一个密钥把明文进行加密变成密文,也能把密文解密为明文.

理想状态下:

引入对称加密之后, 即使数据被截获, 由于黑客不知道密钥是啥, 因此就无法进行解密, 也就不知道请求的真实内容是啥了.

但同一时刻服务器服务的客户端有很多,这么多客户端, 每个人用的秘钥都必须是不同的(如果相同的话黑客破解一个key,其他客户端的也就全部知道了,安全系数不高),所以服务器需要维护每个客户端与其密钥之间的联系.

比较类型的做法是:

客户端与服务器建立连接的同时能够进行协定密钥是什么

但对密钥的传输也是明文,黑客能够轻松拿到,形同虚设.

此时就需要引入非对称加密.

非对称加密

非对称加密要用到两个密钥, 一个叫做 “公钥”, 一个叫做 “私钥”.

公钥的由来始于密码学的发展。在传统密码学中,采用的是对称密钥加密方式,即加密和解密使用同一把密钥。但由于对称密钥加密存在密钥分发等问题,人们提出了“公钥密码学”概念,其中最重要的是RSA算法。

RSA算法的核心思想是利用大数分解的困难性实现公钥及私钥之间的转换。具体地说,RSA算法利用两个大质数p和q的乘积N作为模数,选择一个整数e作为公钥,使得e与(p-1)(q-1)互质,然后利用扩展欧几里得算法求出d,使得d*e ≡ 1 mod (p-1)(q-1),d即为私钥。这样,任何人都可以得到公钥(e,N),但只有持有私钥d的人才能解密密文

公钥和私钥是配对的. 最大的缺点就是运算速度非常慢,比对称加密要慢很多,因此非对称密钥一般用来保证对称密钥的安全传输.

公钥用来加密

私钥用来解密

当然也可反着来

私钥用来加密

公钥用来解密

  • 客户端在本地生成对称密钥通过公钥进行加密传输给服务器.
  • 即使黑客截取到了密文,也因为没有私钥而无法获取信息.
  • 服务器接收到密文后用私钥进行解密,获取到对称密钥.
  • 后续传输只需要使用使用对称密钥进行加密即可.

那么客户端是如何拿到公钥的,如何确定公钥是不是黑客伪造的呢?

如下情况:

  • 黑客通过一招偷梁换柱即可在服务器与客户毫不知情的情况下获取后续传续所用的密钥,这种情况下加密传输对黑客来说依旧是明文传输.

这种情况就需要引入证书了.

证书的引入

在客户端和服务器刚一建立连接的时候, 服务器给客户端返回一个 证书.

这个证书包含了刚才的公钥, 也包含了网站的身份信息.

证书都是由 CA(Certificate Authority)机构来颁发.

证书的类型

1、SSL证书,用于加密HTTP协议,也就是HTTPS。

2、代码签名证书,用于签名二进制文件,比如Windows内核驱动,Firefox插件,Java代码签名等等。

3、客户端证书,用于加密邮件。

4、双因素证书,网银专业版使用的USB Key里面用的就是这种类型的证书。

证书中包含了以下信息:

证书发布机构

证书有效期

公钥

证书所有者

签名

等待

当客户端获取到这个证书之后, 会对证书进行校验(防止证书是伪造的).

  • 判定证书的有效期是否过期
  • 判定证书的发布机构是否受信任(操作系统中已内置的受信任的证书发布机构).
  • 验证证书是否被篡改: 从系统中拿到该证书发布机构的公钥, 对签名解密, 得到一个 hash 值(称为数据摘要), 称为 hash1. 然后计算整个证书的 hash 值, 称为 hash2. 对比 hash1 和 hash2 是否相等.如果相等, 则说明证书是没有被篡改过的.

下面通过一个完整的流程来演示引入证书后的加密流程:

整个流程总结为三部分:

  • 校验证书是否被篡改.服务器持有在注册证书时获得的私钥1,客户端持有公钥1((操作系统包含了可信任的 CA 认证机构有哪些, 同时持有对应的公钥),服务器使用私钥对证书进行加密传输,客户端获取证书后,进行解密验证证书是否有没有被修改过.
  • 生成对称加密的密钥. 服务器生成私钥2,公钥2,将公钥2放入证书中,加密传输给客户端,客户端通过公钥1解密后获取公钥2,并生成对称密钥key,通过公钥2加密,传输到服务器,服务器通过私钥2解密获取对称密钥key.
  • 后续客户端与服务器的数据传输都是通过对称密钥进行加密解密传输.


相关文章
|
1月前
|
安全 网络安全 数据安全/隐私保护
内网IP地址实现HTTPS加密访问教程
在内网环境中,为确保数据传输的安全性,绑定SSL证书搭建HTTPS服务器至关重要。本文介绍了内网IP地址的前期准备、申请SSL证书的步骤以及客户端配置方法。具体包括选择合适的CA、注册账号、提交申请、下载证书,并在客户端导入根证书,确保通信数据的安全加密。推荐使用JoySSL提供的技术解决方案,确保内网设备通信安全。
内网IP地址实现HTTPS加密访问教程
|
1月前
|
域名解析 算法 安全
免费申请https加密全攻略
访问JoySSL官网注册账号,申请免费SSL证书。选择证书类型,填写域名信息,生成CSR文件,验证域名所有权。下载并部署证书至服务器,测试HTTPS连接。注意定期续期,确保兼容性和安全性。如有问题,可联系JoySSL客服。
|
2月前
|
NoSQL Java Redis
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
这篇文章介绍了如何使用Spring Boot整合Apache Shiro框架进行后端开发,包括认证和授权流程,并使用Redis存储Token以及MD5加密用户密码。
42 0
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
|
3月前
|
安全 网络安全 数据安全/隐私保护
HTTPS中的加密算法
HTTPS中的加密算法
|
2月前
|
安全 网络协议 网络安全
【HTTPS】对称加密和非对称加密
【HTTPS】对称加密和非对称加密
45 0
|
5月前
|
缓存 网络协议 算法
(二)Java网络编程之爆肝HTTP、HTTPS、TLS协议及对称与非对称加密原理!
作为一名程序员,尤其是Java程序员,那必须得了解并掌握HTTP/HTTPS相关知识。因为在如今计算机网络通信中,HTTP协议的作用功不可没,无论是日常上网追剧、冲���、亦或是接口开发、调用等,必然存在HTTP的“影子”在内。尤其对于WEB开发者而言,HTTP几乎是每天会打交道的东西。
109 10
|
4月前
|
安全 网络安全 数据安全/隐私保护
HTTPS的执行流程是什么
【8月更文挑战第15天】HTTPS的执行流程是什么
138 0
|
4月前
|
安全 Nacos 数据安全/隐私保护
【技术干货】破解Nacos安全隐患:连接用户名与密码明文传输!掌握HTTPS、JWT与OAuth2.0加密秘籍,打造坚不可摧的微服务注册与配置中心!从原理到实践,全方位解析如何构建安全防护体系,让您从此告别数据泄露风险!
【8月更文挑战第15天】Nacos是一款广受好评的微服务注册与配置中心,但其连接用户名和密码的明文传输成为安全隐患。本文探讨加密策略提升安全性。首先介绍明文传输风险,随后对比三种加密方案:HTTPS简化数据保护;JWT令牌减少凭证传输,适配分布式环境;OAuth2.0增强安全,支持多授权模式。每种方案各有千秋,开发者需根据具体需求选择最佳实践,确保服务安全稳定运行。
425 0
|
Java 数据安全/隐私保护
Java中请求HTTPS加密的源代码
import java.io.*;import java.net.*;import java.security.*;import java.security.
780 0
|
Java 数据安全/隐私保护
Java中请求HTTPS加密的源代码
 HTTPS访问方法的代码,抄一个能用的DEMO吧,我测试过的,可以用、,希望对大家也有用   import java.io.*;import java.net.*;import java.security.*;import java.security.cert.*;import java.util.*;import javax.net.ssl.*;public class Http
1051 0