《HTTP 权威指南》笔记:第十四章 安全 HTTP

HTTPS 与 HTTP 不同,其在传输层与应用层之间添加了一个 SSL/TLS 的安全层.
机制:所有的 HTTP 请求与响应都要通过 SSL/TLS 先进行加密,再进行传输.
基础知识
密码 cipher:
一套编码的算法,用于编码和以后解码的结合体
工作原理: 通过算法将 plaintext 编码为 ciphertext
密钥 key:
改变密码的工作方式的数字化参数,从而使得密码机有不同的行为.
数字密钥:数字密钥是编/解码算法的数字化参数
工作原理:一个加密算法可产生众多的虚拟加密算法,每一种算法即为一种密钥.
对称密钥技术
定义:在编码时使用的密钥和解码时使用的密钥相同
缺陷:在发送着与接受者互相对话之前,一定要有一个共享密钥;若有 N 个节点进行相互之间的安全对话,那么总共需要的保密密钥数量庞大,不便于管理.
公开密钥加密技术
定义:编码的密钥为公开密钥,所有人都可以对其进行编码;解码的密钥称为私有密钥,只有其私有者惨鞥够对报文进行解码
功能:
- 在安全协议下全球范围内发送报文
- 解决了对称密钥数量庞大的问题
数字签名
定义:数字签名是用来验证报文未被伪造或篡改的校验和.
机制:
- 证明身份:作者拥有私有密钥,因此只有作者能计算出校验和
- 防止篡改:当报文被恶意攻击,进行修改了之后,无法计算出正确的校验和
流程:
发送端:
- 报文转变为摘要
- 应用私有密钥的加密算法对摘要编码,计算出数字签名
接受端:
- 接收到明文报文与签名
- 把接受到的明文报文计算出其报文摘要 ,同时将签名通过公共密钥的反函数计算出其报文摘要
- 将两报文摘要进行对比
数字证书
定义:在 HTTPS 建立一个安全事务之后,浏览器获取其数字证书,它的内容基本如下:
- Web 站点的名称和主机名
- Web 站点的公开密钥
- 签名颁发机构的名称
- 数字签名
浏览器会对证书内容进行检查:
- 签名颁发机构可信度
- 日期检测
- 签名检测
- 站点身份检测
通过这些检测来判断是否信任这一证书.
SSL 握手
机制:在 HTTPS 中,客户端首先打开一条到 443 服务端口的连接.之后就会初始化 SSL 层,对加密参数进行沟通,并交换密钥.这个流程叫做「握手」,握手完成之后, SSL 初始化就完成了.
握手基本流程如下:
- 客户端发送可供选择的密码并请求证书
- 服务器发送选中的密码和证书
- 客户端发送保密信息;客户端与服务器生成密钥
- 客户端与服务器交换密钥,互相告知
《HTTP 权威指南》笔记:第十四章 安全 HTTP的更多相关文章
- Gradle 1.12用户指南翻译——第二十四章. Groovy 插件
其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://g ...
- 《机器学习实战》学习笔记第十四章 —— 利用SVD简化数据
相关博客: 吴恩达机器学习笔记(八) —— 降维与主成分分析法(PCA) <机器学习实战>学习笔记第十三章 —— 利用PCA来简化数据 奇异值分解(SVD)原理与在降维中的应用 机器学习( ...
- C primer plus 读书笔记第十四章
这一章主要介绍C语言的结构和其他数据形式,是学习算法和数据结构的重点. 1.示例代码 /*book.c -- 仅包含一本书的图书目录*/ #include <stdio.h> #defin ...
- 学习笔记 第十四章 使用CSS3动画
第14章 使用CSS3动画 [学习重点] 设计2D动画 设计3D动画 设计过渡动画 设计帧动画 能够使用CSS3动画功能设计页面特效样式 14.1 设计2D动画 CSS2D Transform表 ...
- Linux 笔记 - 第十四章 LAMP 之(一) 环境搭建
博客地址:http://www.moonxy.com 一.前言 LAMP 是 Linux Apache MySQL PHP 的简写,即把 Apache.MySQL 以及 PHP 安装在 Linux 系 ...
- Linux 笔记 - 第二十四章 配置 Tomcat
一.前言 Tomcat 是 Apache 软件基金会(Apache Software Foundation)Jakarta 项目中的核心项目,由 Apache.Sun 和其他一些公司及个人共同开发.使 ...
- 《linux程序设计》--读书笔记--第十四章信号量、共享内存和消息队列
信号量:用于管理对资源的访问: 共享内存:用于在程序之间高效的共享数据: 消息队列:在程序之间传递数据的一种简单方法: 一.信号量 临界代码:需要确保只有一个进程或者一个执行线程可以进入这个临界代码并 ...
- [HeadFirst-HTMLCSS学习笔记][第十四章交互活动]
表单 <form action="http://wickedlysmart.com/hfhtmlcss/contest.php" method="POST" ...
- 《JS权威指南学习总结--第四章4.9.1相等和严格相等》
内容要点: 一. 严格相等运算符"===" 首先计算其操作数的值,然后比较这两个值,比较过程没有任何类型转换: 1.如果两个值类型不同,则它们不 ...
随机推荐
- The missing package manager for macOS (or Linux)
The missing package manager for macOS (or Linux) — Homebrew https://brew.sh/
- java 和 c++ 实现的各种基础数据结构和算法
https://github.com/phishman3579/java-algorithms-implementation https://github.com/xorz57/forest
- DAX/PowerBI系列 - 库存总价值(Inventory Value)
DAX/PowerBI系列 - 库存总价值(Inventory Value) 欢迎交流与骚扰 难度: ★★☆☆☆(2星) 适用: ★★☆☆☆(2星) 概况: 有多少货(库存)当然重要(对于运营人员), ...
- Linux应用之crontab定时任务的设置
实现Linux定时任务有:cron.anacron.at等,这里主要介绍cron服务. 名词解释: cron是服务名称,crond是后台进程,crontab则是定制好的计划任务表. 软件包安装: 要使 ...
- 安装WIN7/WIN10上的 CPU版本的TensorFlow
随手记 ancaconda Anaconda2-5.0.1-Windows-x86_64(python3.5 ancaconda python-3.5.2-amd64 安装TensorFlow的时候自 ...
- linux下目录的作用
FHS针对目录树架构仅定义出三层目录底下应该放置什么数据而已,分别是底下这三个目录的定义: / (root, 根目录):与开机系统有关: /usr (unix software resource):与 ...
- day07 Python文件操作
一,文件操作基本流程 #1. 打开文件,得到文件句柄并赋值给一个变量 f=open('a.txt','r',encoding='utf-8') #默认打开模式就为r #2. 通过句柄对文件进行操作 d ...
- spring boot + vue + element-ui全栈开发入门——集成element-ui
一.IDE开发工具 常用的开发工具有webstorm和sublime. 我个人喜好用Atom+插件的形式 打开Atom,在file --> settings --> packages中收 ...
- DIV层的使用方法
1.可以判断你选择的样式是否存在用下边的方法(如果存在的话执行某个方法) if ($(this).hasClass('cur')) 2.这个方法可以查询一个页面中同样的div层总共有几个 var i= ...
- Python数据分析Pandas库方法简介
Pandas 入门 Pandas简介 背景:pandas是一个Python包,提供快速,灵活和富有表现力的数据结构,旨在使“关系”或“标记”数据的使用既简单又直观.它旨在成为在Python中进行实际, ...