Android网络基础面试题之HTTPS的工作流程和原理

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: HTTPS简述HTTPS基于TCP 443端口,通过CA证书确保服务器身份,使用DH算法协商对称密钥进行加密通信。流程包括TCP握手、证书验证(公钥解密,哈希对比)和数据加密传输(随机数加密,预主密钥,对称加密)。特点是安全但慢,易受特定攻击,且依赖可信的CA。每次请求可能复用Session ID以减少握手。

本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点

工作流程

HTTPS 默认工作在 TCP 协议443端口,它的工作流程一般如以下方式:

1、TCP 三次同步握手

2、客户端验证服务器数字证书

3、DH 算法协商对称加密算法的密钥、hash 算法的密钥

4、SSL 安全加密隧道协商完成

5、网页以加密的方式传输,用协商的对称加密算法和密钥加密,保证数据机密性;用协商的hash算法进行数据完整性保护,保证数据不被篡改。

通信的三方

CA根证书颁发机构、客户端、服务端

CA颁发证书

1、CA给客户端颁发的根证书是CA的公钥,用于验证服务端的证书是否合法,也就是验证服务端的身份信息

2、CA给服务端颁发的证书,也就是电子签名,是CA机构用自己的私钥将服务端的公钥和个人信息加密得到

3、 非对称加密

通信过程

分为:证书验证阶段和数据传输阶段

证书验证阶段

1、 客户端发起请求后,服务端会返回证书信息

2、 客户端收到证书信息后,用本地保存的根证书(也就是CA证书的公钥)进行解密,验证证书的合法性,和服务端的身份,这里是非对称加密

3、 客户端验证过程包括解密证书信息后,用哈希值进行对比,把证书明文内容的哈希值和解密后的签名(是服务端信息的哈希值)进行对比要相同;

4、 此外证书信息里还有服务端的信息,比如域名,通过对比域名可以避免证书被掉包

数据传输阶段

1、 证书验证合法后,客户端会生成一个随机数,通过从服务端证书中解密出的服务端公钥进行加密,传给服务端

2、 服务端用自己的私钥解密出随机数(称作 pre_master_secret 的随机密码串),然后利用随机数和对称加密算法对数据进行加密,然后传输给客户端

3、 客户端根据本地存储的随机数利用对称加密算法对服务端的内容进行解密

从网络模型认识HTTPS

1、应用层(application layer):比如Http、FTP、Https

2、传输层(transport layer):比如TCP、UDP

3、网络层(network layer):比如:IPv4、IPv6

4、 数据链路层(data link layer)和物理层(physical layer):比如无线网的802.2传输协议,有线网的以太网协议

5、SSL/TLS:位于HTTPS的下层

HTTPS的特点

1、安全,大部分情况能避免中间人攻击,防止数据被窃取

2、 HTTPS 协议的安全是有范围的,在黑客攻击、拒绝服务攻击和服务器劫持等方面几乎起不到什么作用

3、 HTTPS 是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本

缺点

1、相同网络环境下,HTTPS 协议会使页面的加载时间延长近 50%,增加 10%到 20%的耗电。此外,HTTPS 协议还会影响缓存,增加数据开销和功耗

2、HTTPS 协议的安全是有范围的,在黑客攻击、拒绝服务攻击和服务器劫持等方面几乎起不到什么作用

3、最关键的是,SSL 证书的信用链体系并不安全。特别是在某些国家可以控制 CA 根证书的情况下,中间人攻击一样可行

问题

1、 为什么制作数字签名时需要哈希一次?

最显然的是性能问题,前面我们已经说了非对称加密效率较差,证书信息一般较长,比较耗时。而hash后得到的是固定长度的信息(比如用md5算法hash后可以得到固定的128位的值),这样加解密就快很多

2、 每次进行HTTPS请求时都必须在SSL/TLS层进行握手传输密钥吗?

服务器会为每个浏览器(或客户端软件)维护一个session ID,在TLS握手阶段传给浏览器,浏览器生成好密钥传给服务器后,服务器会把该密钥存到相应的session ID下,之后浏览器每次请求都会携带session ID,服务器会根据session ID找到相应的密钥并进行解密加密操作,这样就不必要每次重新制作、传输密钥了!

3、为什么不用非对称加密+非对称加密?

这种方式防止不了中间人攻击,中间人可以劫持分别得到公钥,然后替换成自己的。需要通过CA机构解决


欢迎关注我的公众号AntDream查看更多精彩文章!

目录
相关文章
|
25天前
|
安全 算法 网络安全
HTTPS原理
HTTPS 通过加密、数字证书、握手过程等多种手段,确保了网络通信的安全和可靠。它为用户提供了更高级别的隐私保护和数据安全,是现代互联网中重要的安全保障机制。随着网络安全威胁的不断增加,HTTPS 的应用也越来越广泛,成为保障网络安全的重要基石。
120 70
|
1月前
|
缓存 Java 数据库
Android的ANR原理
【10月更文挑战第18天】了解 ANR 的原理对于开发高质量的 Android 应用至关重要。通过合理的设计和优化,可以有效避免 ANR 的发生,提升应用的性能和用户体验。
124 56
|
24天前
|
安全 搜索推荐 网络安全
HTTPS协议是**一种通过计算机网络进行安全通信的传输协议
HTTPS协议是**一种通过计算机网络进行安全通信的传输协议
52 11
|
1月前
|
安全 算法 网络安全
一张图就把HTTPS工作原理讲明白了!
【10月更文挑战第31天】
51 1
一张图就把HTTPS工作原理讲明白了!
|
25天前
|
安全 算法 网络协议
网易面试:说说 HTTPS 原理?HTTPS 如何保证 数据安全?
45岁老架构师尼恩在其读者交流群中分享了关于HTTP与HTTPS的深入解析,特别针对近期面试中常问的HTTPS相关问题进行了详细解答。文章首先回顾了HTTP的工作原理,指出了HTTP明文传输带来的三大风险:窃听、篡改和冒充。随后介绍了HTTPS如何通过结合非对称加密和对称加密来解决这些问题,确保数据传输的安全性。尼恩还详细解释了HTTPS的握手过程,包括如何通过CA数字证书验证服务器身份,防止中间人攻击。最后,尼恩强调了掌握这些核心技术的重要性,并推荐了自己的技术资料,帮助读者更好地准备面试,提高技术水平。
|
2月前
|
网络协议 Shell 网络安全
解决两个 Android 模拟器之间无法网络通信的问题
让同一个 PC 上运行的两个 Android 模拟器之间能相互通信,出(qiong)差(ren)的智慧。
34 3
|
2月前
|
Android开发
Android面试之Activity启动流程简述
Android面试之Activity启动流程简述
94 6
|
2月前
|
Android开发
Android面试高频知识点(1) 图解Android事件分发机制
Android面试高频知识点(1) 图解Android事件分发机制
|
2月前
|
消息中间件 存储 Java
Android面试高频知识点(2) 详解Android消息处理机制(Handler)
Android面试高频知识点(2) 详解Android消息处理机制(Handler)
|
2月前
|
XML 前端开发 Android开发
Android面试高频知识点(3) 详解Android View的绘制流程
Android面试高频知识点(3) 详解Android View的绘制流程
Android面试高频知识点(3) 详解Android View的绘制流程
下一篇
DataWorks