[JavaEE初阶]HTTPS-SSL传输过程中的加密

HTTPS=HTTP+S(SSL/TLS)

SSL也是一个应用层协议,专门负责加密

之前我们说过的运营商劫持就是一个传输过程的网络安全问题

  • 之所以运营商能劫持,是因为在HTTP中,数据都是"明文"传输的(谁都能看到)
  • 解决方法:把数据继续加密,通过密文来传输
  • 明文->加密->密文
  • 密文->解密->明文

例如洋务运动中,恭亲王奕䜣通过密文给老佛爷传信

  • 左边是明文,右边是密文
  • 这张带窟窿的纸,在加密和解密的过程中起到了重要作用->密钥
    HTTPS加密和解密关键在于密钥

密钥的两种方式:

  • 对称密钥:加密和解密使用同一个密钥
  • 非对称密钥:加密使用一个密钥A,解密使用另一个密钥B(密钥A和B之间存在关联关系,但很难猜出来)

非对称密钥:

  • 把其中一个密钥公开出去->"公钥"(谁都能知道)
  • 把另一个密钥自己保存好->"私钥"(谁都不能告诉)
  • 如果用公钥加密,那就要用私钥解密
  • 如果用私钥加密,那就要用公钥解密

HTTPS工作原理:

long long ago~网络上的数据是明文传输的:

引入对称加密(对称密钥)

客户端和服务器最开始通信的时候,就需要一方生成唯一的密钥,再通过网络传输给另一方(要注意的是:密钥本身是明文传输的)

密钥具体是个啥形式?

  • 可以认为是一个很长字符串
  • 有二进制形式的也有文本的,要看具体的加密算法->形式是可以灵活调整的

假设客户端生成对称密钥:

由此可见,我们就需要对密钥进行加密

  • 如果仍然使用对称加密的方式->生成一个对称密钥key2 来对key进行加密->key就可以密文传输给服务器了
  • 但是key2还是得传给服务器呀,难道搞一个key3来对key2进行加密吗???
  • 无论套多少层,总有一层需要明文传输
    因此我们就引入了非对称加密.

非对称加密:

就是为了解决密钥传输的安全性问题

公钥是一把锁,私钥是对应的钥匙:

你以为这就万无一失了???

->NO! 上述方案存在严重漏洞!

有人说,全部使用非对称加密不行吗?

  • 对称加密,运算速度快,开销小,适合对大量数据进行加密
  • 非对称加密,运算速度慢,开销大->加密小数据还行,加密大量数据会非常耗时~

私钥和公钥的生成:

  • 数学上,针对两个非常大的素数做乘积->很容易
  • 但是根据乘积 解出这两个大素数->很难
  • 这两个大素数就是这一对公钥私钥

至于后续如何,且听下回分解~

END✿✿ヽ(°▽°)ノ✿

相关推荐
库玛西15 小时前
Linux网络编程:HTTP/HTTPS协议核心技术全解析
linux·运维·服务器·网络·c++·http·https
吠品20 小时前
SQL Server 版本查询的几种实用方法
数据库·网络协议·ssl
可乐鸡翅yeah_1 天前
HTTPS 站点下 M3U8 混合内容问题深度排查,HLS 协议安全策略踩坑实录
数据库·网络协议·https·m3u8·m3u8在线
瓦格哈儿2 天前
内网环境也需要证书?聊聊内网 IP 证书的适用边界
网络协议·ssl
captain3762 天前
文件与IO(2)
java·开发语言·windows·java-ee
北冥you鱼2 天前
HTTPS 推送失败?改用 SSH 一键搞定
网络协议·https·ssh
CZIDC3 天前
华为服务器TS200-2280 V2 iBMC导入SSL证书后问题案例分析
服务器·https·ssl
重生之我是Java开发战士3 天前
【Java EE】认识Linux与项目部署
java·linux·java-ee
鱼很腾apoc3 天前
【Linux】第13期 详解应用层协议HTTP+Cookie/Session+HTTPS
linux·服务器·c++·学习·http·https
我命由我123453 天前
Android Camera - 获取当前设备屏幕的旋转角度、保存帧到外部存储的私有空间
android·java·开发语言·java-ee·android jetpack·android-studio·android runtime