https权威指南读书笔记

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 配合加解密实战的一期分享, 补充相关基础知识, 既知道「怎么做」, 也了解「为什么这样做」
https权威指南
github/bulletproof-tls
SSL Labs
作者blog - Ivan Ristić

SSL 和 TLS 傻傻分不清楚

SSL和TLS都是加密协议,旨在基于不安全的基础设施提供安全通信
非常不幸,本身相同的协议却有两个名称(各位读者可能不会注意到这些,那也没关系)

SSL: secure socket layer 安全套接字层
TLS: transport layer security 传输层安全

SSL1 Netscape公司开发
SSL2 Netscape 1994
SSL3 Netscape 1995

TLS 工作组成立, 开始将SSL从Netscape迁移至IETF 1996
TLS1.0 1999
TLS1.1 2006
TLS1.2 2008
TLS1.3 draft(草案) 19[8] 2017.3

PKI: public key infrastructure 公钥基础设施; SSL和TLS依赖PKI, 确保不能解密数据和篡改数据

osi: open systems interconnection 开放系统互联, 常见的两种说法 OSI 7层网络模型 + tcp/ip 4层网络模型

  • 安全协议从哪里融入互联网基础设施

安全协议从哪里融入互联网基础设施

密码学

安全的三个核心需求:

  • 保持秘密(机密性)
  • 验证身份(真实性)
  • 保证传输安全(完整性)

工作方式

  • 各种加密基元cryptographic primitive, 完成特定功能(加密/完整性检查)
  • 加密基元组合成方案(scheme)和协议(protocol)
  • 方案/协议完成加密任务

加密时通常会使用到三个术语

  • 明文(plaintext,即原始数据)
  • 密钥(cipher,用于加密)
  • 密文(ciphertext,即加密后的数据)

密码可以分为两大类

  • 序列密码(stream cipher): 密钥 + 序列密码(比如 RC4) -> 密钥序列; 密钥序列 + 明文 -> 密文
  • 分组密码(block cipher): 每次加密一整块数据(比如128位); 人们通过称为分组密码模式(block cipher mode)的加密方案来使用分组密码; 世界上最流行的分组密码是高级加密标准(advanced encryption standard,AES); 填充, 数据不足数据块大小(比如128位)的情况

散列函数(hash function)

  • 将任意长度的输入转化为定长输出的算法
  • 指纹、消息摘要,摘要
  • SHA1(160位) -> SHA256
  • 生日悖论(概率论中的常见问题)-> 散列函数的强度最多只是散列长度的一半
  • 散列函数可以用于验证数据完整性: 消息验证代码(message authentication code,MAC) 基于散列的消息验证代码(hash-based message authentication code,HMAC)

分组密码模式

  • 为了加密任意长度的数据而设计的密码学方案; ECB、CBC、CFB、OFB、CTR、GCM 等; ECB是设计一种分组加密模式的反面例子, CBC则仍是SSL和TLS的主要模式, GCM是TLS中相对较新(TLS1.2)的模式
  • 电码本(electronic codebook,ECB)模式
  • 加密块链接(cipher block chaining,CBC)模式, 为了解决ECB天生的确定性,CBC引入了初始向量(initialization vector,IV)的概念。即使输入相同,IV也可以使每次的输出都不相同

对称加密/非对称加密

  • 对称加密(symmetric encryption), 又称私钥加密(private-key cryptography): 在高速处理大量数据方面做得非常好; 相同团体的成员必须共享相同的密钥; 为了更好的安全性,你可以在每两个人之间使用不同的密钥,但是这个方法不可扩展 (1+n)*n/2
  • 非对称加密(asymmetric encryption)又称为公钥加密(public key cryptography): 公钥公开, 私钥自己保管; 公钥加密私钥解密 -> 加密数据; 私钥加密公钥解密 -> 数字签名
  • RSA是目前最普遍部署的非对称加密算法, 现在推荐的RSA强度是2048位,强度等同于112位的对称密钥; 可以同时用于加密和数字签名
  • 数字签名(digital signature): 验证一条电子消息或者一篇电子文档的真实性; 比如 RSA, DSA, ECDSA

随机数生成

  • 计算机按指令执行 -> 可能做不好生成随机数这项工作 -> 真正的随机数只能通过观测特定的物理处理器才能得到 -> 没有的话,计算机将关注于收集少量的熵(entropy)
  • 通过这种方式收集熵是一种真随机数生成器(true random number generator,TRNG) -> 你可能需要生成一个4096位的密钥,但是系统可能只有数百位的熵可用
  • 基于上面的原因,我们在实际使用中依靠的是伪随机数生成器(pseudorandom number generator,PRNG) -> PRNG也要利用少量真正的随机数使系统运转起来。这个过程被称为种子设定(seeding) -> 普通用途的PRNG被常常用于编程,但它们并不适用于密码学 -> 加密安全伪随机数生成器(cryptographically secure pseudorandom number generator,CPRNG)是不可预测的PRNG

衡量强度
常用密钥长度的加密强度映射

接下来还有什么

  • 协议
  • 公钥基础设施
  • 攻击PKI
  • http和浏览器问题
  • 实现问题
  • 协议攻击
  • 部署
  • 性能优化
  • http严格传输安全/内容安全策略和钉扎
  • openSSL
目录
相关文章
|
缓存 网络协议 算法
《HTTP权威指南》读书笔记
《HTTP权威指南》读书笔记
|
2月前
|
监控 安全 搜索推荐
设置 HTTPS 协议以确保数据传输的安全性
设置 HTTPS 协议以确保数据传输的安全性
|
1月前
|
安全 网络协议 算法
HTTPS网络通信协议揭秘:WEB网站安全的关键技术
HTTPS网络通信协议揭秘:WEB网站安全的关键技术
167 4
HTTPS网络通信协议揭秘:WEB网站安全的关键技术
|
5月前
|
安全 网络协议 网络安全
IP代理的三大协议:HTTP、HTTPS与SOCKS5的区别
**HTTP代理**适用于基本网页浏览,简单但不安全;**HTTPS代理**提供加密,适合保护隐私;**SOCKS5代理**灵活强大,支持TCP/UDP及认证,适用于绕过限制。选择代理协议应考虑安全、效率及匿名需求。
|
1月前
|
存储 网络安全 对象存储
缺乏中间证书导致通过HTTPS协议访问OSS异常
【10月更文挑战第4天】缺乏中间证书导致通过HTTPS协议访问OSS异常
90 4
|
2月前
HAProxy的高级配置选项-配置haproxy支持https协议及服务器动态上下线
文章介绍了如何配置HAProxy以支持HTTPS协议和实现服务器的动态上下线。
149 8
HAProxy的高级配置选项-配置haproxy支持https协议及服务器动态上下线
|
2月前
|
安全 网络协议 网络安全
在实现HTTPS时,有哪些常见的安全协议
在实现HTTPS时,有哪些常见的安全协议
128 1
|
1月前
|
安全 应用服务中间件 Shell
网站在后台启用了https协议之后重新登录就不进去后台的解决方法
网站在后台启用了https协议之后重新登录就不进去后台的解决方法
|
2月前
|
监控 安全 应用服务中间件
如何配置HTTPS协议?
如何配置HTTPS协议?
214 4
下一篇
无影云桌面