https基本原理解析
来源:互联网 发布:上传下载网站源码 编辑:程序博客网 时间:2024/05/18 00:33
文章简单回答https数据传输原理。
非对称加解密技术
加密就是一钟映射与变换。
密文 = f(明文,key1)明文 = g(密文,key2)
如果key1==key2,则叫对称加密。如DES
。
如果key1!=key2,则叫非对称加密。如RSA
。
因为是非对称的,所以可以一个key给别人,称为公钥,一个key自留着,称为私钥。
当然,数学原理和算法上保证了两点。
- 公钥加密的数据,只有私钥能正确解出。
- 私钥加密的数据,只有公钥能正解解出。
这两点性质是后面的基础。
数字摘要
数字摘要 = hash(数据)
这个过程也有三点性质
- 数据有任何微小的改变,数字摘要就会发生变化。
- 同一份相同的数据,生成的数字摘要是相同的。
- 可由数据变换成数字摘要,但无法由数字摘要推导或反解出数据。
这个性质可以保证数据完整和不被篡改。
比如,发一份数据的同时,后面再跟一串这个数据的数字摘要。
收到数据的人,用同样的hash函数对数据处理,得到摘要。
与后面的摘要进行对比。若相同,则表明数据是完整的未被改动过。
至于数据是不是真实的,就是后面的事了。
常用的hash函数有:MD5
,sha1
数字签名
就是把上面两项组合下。
发送者:
附加数据 =f(hash(数据),私钥)[数据+附加数据]
[数据+附加数据]
传给接收者后
接收者:
hash(数据) ?= g(附加数据,公钥)
如果相等,则可以认定这个数据是私钥拥有者发的完整天数据。
数字签名有两种功效:
- 确定消息确实是由发送方签名并发出来的,因为别人假冒不了发送方的签名。
- 数字签名能确定消息的完整性,因为数字摘要的存在。
数字证书
数字证书的存在,是为了解决上面过程的一个漏洞。
无法验证公钥的真实性。如果在传输过程中被换掉了呢。
数字签名和数字证书这里面有比较深动的图解。
为了验证公钥的真实性。
需要一个权威的值得信赖的第三方机构(Certificate Authority, CA)。
把公钥和公钥拥有者的信息
数字证书 = [[公钥+公钥拥有者的信息]+f(hash([公钥+公钥拥有者的信息]),CA私钥)]
这样通讯的时候,直接给这个数字证书就可以了。
先通过CA的公钥,把个人的公钥解确认。
再用个人公钥去进行上面的操作。
相当于,如果X信任Y,Y信任Z,X就能信任Z了。
这是一个证书链的原型吧。
SSL/TLS
上面的过程,可以确定发出者的身份,数据的真实性,完整性。但在传输过程中,别人还是可以查看到你发的什么信息呢。
SSL就是基于上面说的原理,定的一个安全传输协议。
详细的过程可以查看Https(SSL/TLS)原理详解
总得来说,就是先用RSA,确认身份,再商量出一个密钥,用DES对数据加密再输出。
https
基本就是就SSL+HTTP。
有空再来补充。
参考
- 和安全有关的那些事(非对称加密、数字摘要、数字签名、数字证书、SSL、HTTPS及其他)
- wiki 超文本传输安全协议
- https以及CA机构和颁发证书的问题
- wiki RSA加密算法
- RSA算法数学理论
- https基本原理解析
- HTTPS 基本原理
- HTTPS基本原理
- HTTPS基本原理
- 深入浅出HTTPS基本原理
- 深入浅出HTTPS基本原理
- 线上Debug方法 & HTTPS基本原理
- https解析
- HTTPS解析
- HTTPS解析
- HTTPS 解析
- HTTPS解析
- Hibernate基本原理解析
- HTTP基本原理解析
- IP电话基本原理详细解析
- Flex基本原理(图示解析)
- AFNetworking源码解析https
- HTTPS 原理解析
- JAVA字符串的方法
- 1545: 完美变换 BFS (指针标记路径)用Map做标记 (当数组开不下的时候)
- poj 3787 Convex Hull of Lattice Points 求凸包
- ngFormController
- 【.Net码农】分享一款Metro风格的WPFUI
- https基本原理解析
- ios SQlite操作数据库
- hdoj 2059 龟兔赛跑 【经典DP】
- 糊糊悟道--我对平均数的理解
- 使用ThreadMXBean类来编程检测死锁
- 怎么进Google
- 三角形类的构造函数
- 记事本打开 .exe 运行文件,发现所有程序文件都默认记事本打开了怎么解决问题
- RFID第二次作业——【5-8】Mifare S50访问控制码