java-信息安全(七)-https001-基于非对称加密,对称加密等理解
概述
java-信息安全(一)-BASE64,MD5,SHA,HMAC
java-信息安全(二)-对称加密算法DES,3DES,AES,Blowfish,RC2,RC4
如果想要理解好https,请尽量了解好以上信息等。
基本概念
HTTPS其实是有两部分组成:HTTP + SSL / TLS,也就是在HTTP上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据。
Https是一种基于SSL/TLS的Http协议,所有的http数据都是在SSL/TLS协议封装之上传输的。
Https协议在Http协议的基础上,添加了SSL/TLS握手以及数据加密传输,也属于应用层协议。
——>HTTP协议运行在TCP之上,所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份。
——>HTTPS是运行在SSL/TLS之上的HTTP协议,SSL/TLS运行在TCP之上。所有传输的内容都经过加密,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。
TLS/SSL中使用了非对称加密,对称加密以及HASH算法。
图例【基于RSA模型】
第一步
浏览器给出协议版本号、一个客户端生成的随机数(Client random),以及客户端支持的一套加密规则发送给网站服务器。
第二步
服务器从中选出一组加密算法与HASH算法,并将自己的身份信息以证书的形式发回给浏览器、以及一个服务器生成的随机数(Server random)。证书里面包含了网站地址,加密公钥,以及证书的颁发机构等信息。
第三步
浏览器确认数字证书有效,然后生成一个新的随机数(Premaster secret),并使用数字证书中的公钥,加密这个随机数,发给服务器。
获得网站证书之后浏览器要做以下工作:
a) 验证证书的合法性(颁发证书的机构是否合法,证书中包含的网站地址是否与正在访问的地址一致等),如果证书受信任,则浏览器栏里面会显示一个小锁头,否则会给出证书不受信的提示。
b) 如果证书受信任,或者是用户接受了不受信的证书,浏览器会生成一串随机数的密码,并用证书中提供的公钥加密。
c) 使用约定好的HASH计算握手消息,并使用生成的随机数对消息进行加密,最后将之前生成的所有信息发送给网站。
第四步
服务器使用自己的私钥,获取浏览器发来的随机数(即Premaster secret)。
网站接收浏览器发来的数据之后要做以下的操作:
a) 使用自己的私钥将信息解密取出密码,使用密码解密浏览器发来的握手消息,并验证HASH是否与浏览器发来的一致。
b) 使用密码加密一段握手消息,发送给浏览器。
第五步
浏览器和服务器根据约定的加密方法,使用前面的三个随机数,生成"对话密钥"(session key),用来加密接下来的整个对话过程。
HTTPS一般使用的加密与HASH算法
非对称加密算法:RSA,DSA/DSS
对称加密算法:AES,RC4,3DES
HASH算法:MD5,SHA1,SHA256
参看文章:
http://www.ruanyifeng.com/blog/2014/09/illustration-ssl.html
https://cattail.me/tech/2015/11/30/how-https-works.html
http://www.cnblogs.com/binyue/p/4500578.html
相关文章
- javascript 与 PHP 通信加密,使用AES 128 CBC no padding,以及ios,java,c#文章例子
- java加密-解密小结
- java 笔试之在线模拟
- JAVA Eclipse如何导出APK程序
- [转]关于JAVA中RSA加签解签,私钥加密公钥解密和公钥加密私钥解密代码详解
- Java实现 LeetCode 152 乘积最大子序列
- java实现汉诺塔计数
- Java实现 蓝桥杯 历届试题 最大子阵
- java实现 蓝桥杯 算法训练 安慰奶牛
- Java实现 蓝桥杯VIP 算法提高 企业奖金发放
- Java实现 蓝桥杯VIP 算法提高 进制转换
- Java实现 蓝桥杯VIP 基础练习 2n皇后问题
- Java实现 蓝桥杯 算法提高 文本加密
- JAVA UUID 生成唯一标识
- java与.net平台之间进行RSA加密验证
- C# Java间进行RSA加密解密交互(二)
- php与java通用AES加密解密算法
- java与.net平台之间进行RSA加密验证
- php与java通用AES加密解密算法
- 使用Java程序通过http post访问Application server
- Atitit 安全措施流程法 目录 1. 常见等安全措施方法2 1.1. 安全的语言 代码法,编译型 java2 1.2. 安全编码法2 1.3. 安全等框架类库 api2 1.4. 加密法
- Atitit 安全流程法 目录 1. 常见等安全措施方法2 1.1. 安全的语言 代码法,编译型 java2 1.2. 安全编码法2 1.3. 安全等框架类库 api2 1.4. 加密法2
- Atitit.视频文件加密的方法大的总结 java c# php
- java MD5 加密
- 华为OD机试 - 敏感字段加密(Java & JS & Python)
- Java学习路线-13:链表定义与实现
- java-信息安全(十八)java加密解密,签名等总结
- Java开发篇——设计模式(2)单例模式你真的了解吗?
- Java如何显示工作日(周一至周五)的名称?
- java.lang.ClassCastException: android.support.v7.widget.AppCompatTextView cannot be cast to com.demo
- 凯撒加密的最简单的理解与实现(Java版)
- java调用shell命令并获取执行结果