笔记
由于老婆学校上课要求看这本书,之前听说这本书很经典,但是一直都没有看,这次顺便就和老婆一起看了,并且记录一下笔记,提前看一下,如果老婆有什么问题,或者什么地方需要认真看的也需要记录一下,正好就当给自己巩固一下基础了。
但是这份笔记,只能说是针对自身来进行的,对于已经掌握,并且可以举一反三的地方就不做总结了,需要记录的,或者思考的,或者需要记录的,就记录一下。
1.web应用程序最严重的攻击
披露敏感数据或获取对运行应用程序的后端系统的无限访问权限的攻击。
简单的说,敏感信息泄露,进入后台,拿到shell
2.ssl
安全套接字:(Secure Socket Layer)
web浏览器与web服务器之间安全交换信息的协议。
提供的安全服务:鉴定与保密
SSL是Netscape与1994年开发的,主流浏览器都支持ssl协议。
2.1 ssl的特性
1.保密 在握手协议中定义了回话秘钥后,所有的消息都被加密
2.鉴别 可选的客户端认证,和强制的服务端认证
3.完整性 传送的消息包括消息完整性检查。
2.2 ssl的位置
ssl介于应用层和TCP层之间。应用层数据不再直接传递给传输层,而是传输给SSL层。SSL层对应用层收到的数据进行加密,并增加自己的SSL头。
2.3 SSL工作原理
- 握手协议
- 记录协议
- 警报协议
2.3.1 握手协议
- 握手协议是客户机和服务器用SSL连接通信时使用的第一个子协议。
- 握手协议包括客户机遇服务器之间的一系列消息。
- 握手协议允许服务器和客户机相互验证,协议加密和MAC算法以保密秘钥,用来保护SSL记录中发送的数据。
握手协议包含三个字段
- Type :表示10中消息类型之一
- Length :表示消息长度字节数
- Content:与消息相关的参数
握手协议的四个阶段
(1)建立安全能力
SSL握手的第一阶段启动逻辑连接,建立这个连接的安全能力。
客户机向服务器发出client hello消息,并且等待服务器响应。
服务器向客户机返回server hello 消息,对client hello消息中的信息进行确定。
client hello消息包括:
- Version
- Random
- Session id
- Cipher suite
- Compression method
具体内容:
- 客户端可以支持的SSL最高版本号
- 一个用于生成主密钥的32字节的随机数
- 一个确定会话的会话ID
- 一个客户端可以支持的密码套件列表(每个套件都以SSL开头,用with这个词把秘钥交换算法,加密算法,散列算法分开。)
- 一个客户端可以支持的压缩算法列表
Server Hello服务器用ServerHello信息应答客户。
具体内容:
- 一个SSL版本号。客户端支持的最高版本号和服务端支持的最高版本号中的低者
- 一个用于生成主秘密的32字节的随机数
- 回话ID
- 从客户端的密码套件列表汇中选择的一个密码套件
- 从客户端的压缩方法的列表中选择的压缩方法
最终结果:
- SSL版本
- 秘钥交换、信息验证和加密算法
- 压缩方法
- 有关秘钥生成的两个随机数
(2)服务器鉴别与秘钥交换
服务器启动SSL第二阶段。服务器发送,客户机接收。
- 证书:服务器将数字证书和ca整个链接发送给客户端,让客户端能使用服务器整数中的服务器公钥认证服务器
- 服务器秘钥交换
- 证书请求:服务端可能会要求客户自身进行验证
- 服务器握手完成:第二阶段的结束,第三阶段开始的信号
(3)客户机鉴别与秘钥交换
客户机启动SSL握手第三阶段
- 证书
- 客户机秘钥交换,将预备主密钥发送给服务端,这里使用服务端的公钥进行加密
- 证书验证
(4)完成
客户机启动SSL握手第四阶段。
- 客户 改变密码规格
- 客户 完成 md5散列+sha散列
- 服务 改变密码规格
- 服务 md5散列+sha散列
2.3.2 记录协议
记录协议在客户机和服务器握手成功后使用。
提供的服务:
- 保密性 使用握手协议定义的秘密秘钥实现
- 完整性 握手协议定义了MAC,用于保证消息完整性
2.3.3 警报协议
客户机和服务器发现错误的时候,会向对方发送一个警报消息,如果是致命错误,算法关闭SSL连接。
2.4 https
基于ssl的http传输协议。