Comments (3)
1,客户端发起 Https 请求,链接到服务器的 443 端口
2,服务器响应请求,将证书发送到客户端
3,客户端认证证书,并从证书中提取出 服务端公钥
4,客户端使用公钥加密一个随机秘钥,并传到服务器
5,服务器使用 私钥解密出随机秘钥
6,通信双方使用随机秘钥为对称秘钥进行加密解密
加密的方式有:1,对称加密,2,非对称加密,3,证书加密
// 如果有问题还请指出
from android-daily-interview.
主要分为三部分,协商采用的对称加密算法,非对称加密传输pre-master,对称加密传输。
- client hello, server hello中协商加密算法,交换随机数 client random和server random,生成对称密钥用到;
- server端回证书给client,client验证证书并取出公钥匙,client端生成随机数pre-master采用公钥加密后传给server端,此时采用非对称加密
- 两方根据client random+server random+pre-master生成对称加密密钥,验证无误之后都采用对称加密传输。
扩展:
- 对称加密速度快,但密钥易被窃取;非对称加密速度慢,安全性高,通常采用RSA算法,证书的作用是为了保证传输的公钥不被第三方窃取。
- 为什么要使用client random和server random,直接采用pre-master不可以吗?
目的是为了避免重放攻击,如果客户端也给证书给服务端验证的话可以不用两个随机数,但这样代价高,需要client本机安装证书。
重放攻击的意思是(个人理解):中间者窃取客户端建立连接整个过程的发送报文,直接与server端建立连接,如client请求1个widget,但中间者把这个过程重复了10遍,这时返回给client端就是11个widget。当有两个随机数时,对于server,每个连接的server random都是不同的,因此它与中间者发送同样的报文建立连接时,由于server random的不同,后面对称加密的密钥也会不同,server可以拒绝掉中间者的请求。
// 以上有错误还请批正
from android-daily-interview.
from android-daily-interview.
Related Issues (20)
- 2020-01-13:为什么要将项目迁移到AndroidX?如何进行迁移? HOT 4
- 2020-01-14:为什么协程比线程要轻量? HOT 19
- 2020-01-15:你了解过哪些Android屏幕适配方面的技巧? HOT 2
- 2020-01-16:为什么ViewPager嵌套ViewPager,内部的ViewPager滚动没有被拦截? HOT 3
- 2020-01-17:说说你未来的职业规划是怎样的? HOT 23
- 2020-03-02:Java中为什么会出现Atomic类?试分析它的原理和缺点? HOT 1
- 2020-03-03:说说ThreadLocal的使用场景?与Synchronized相比有什么特性? HOT 6
- 2020-03-04:试从源码角度分析Handler的post和sendMessage方法的区别和应用场景? HOT 6
- 2020-03-06:JMM是什么?它存在哪些问题?该如何解决? HOT 3
- 113 Android Interview Questions Answered (ENGLISH) HOT 1
- 当点击的时候,会先调用顶级viewgroup的dispatchTouchEvent,如果顶级的viewgroup拦截了此事件(onInterceptTouchEvent返回true),则此事件序列由顶级viewgroup处理。如果顶级viewgroup设置setOnTouchListener,则会回调接口中的onTouch,此时顶级的viewgroup中的onTouchEvent不再回调,如果不设置setOnTouchListener则onTouchEvent会回调。如果顶级viewgroup设置setOnClickListener,则会回调接口中的onClick。如果顶级viewgroup不拦截事件,事件就会向下传递给他的子view,然后子view就会调用它的dispatchTouchEvent方法。
- 2020-9-29:Java内存模型 HOT 1
- 2020-9-29:java中的锁机制
- app 进程分为哪几种?在项目中的实际应用?
- 学习
- View inflation
- 群被封了 HOT 2
- Android HOT 2
- 为啥不搞了 HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from android-daily-interview.