B4
更偏向应用层。
Web Security
主要面临的威胁还是四种:认证问题,保密问题,数据完整性问题,还有拒绝服务问题(比如 DDOS?疯狂发送信息来阻塞服务器,干扰正常服务功能)。
使用的通信方式是 TLS transport layer security 传输层加密,其前身是 SSL security socket layer. 他综合了密码学中的对称密码,消息认证码,公钥密码,数字签名,伪随机数生成器等,建立点对点的连接和会话。
这个b东西好像是要背一下:
握手协议
握手协议:两个人见面先握手,握手协议是 ssl 的第一步。客户和服务端核实双方身份,对密码套件 cipher suite 达成一致,生成通信所需密钥。
交换密钥的方式一般都是 DH,这里介绍一种短时 DH 算法:Ephemeral Diffie-Hellman。
- 服务端选定一系列参数,计算数字签名,与公共值 public values 一同发给客户端。选定参数这一部使得这个 DH 协议短时有效。
- 客户端核实其签名后,自己也发一个 DH 密钥对给对方。
- 两者计算公共密钥对(棕色部分)。
那么在握手协议中,整体流程如下:
- 客户端说我想建立通信了,我想飞了。发送一个会话 id,,一个随机数(防止重放攻击的),密码套件(代表:我想用的密钥交换方式)给服务端。
- 服务端收到之后,发回一个会话 id,一个随机数,自己的密码套件(你说得对,但是我想用另一种密钥交换方式。他俩需要协商一下),自己公钥证书的副本给客户端。如果选用了短时 DH 算法,那还需要用一个新挑选的参数生成数字签名,与以上公共值一并发送。
- 客户端校验一下公钥证书和 DH 数字签名有效性。
- Pre-master Secret Transfer:两者就密钥交换方式达成一致后,客户端也生成自己的 RSA(或其他算法)密钥对,发给服务端,两者开始计算共享公钥 K_p。
- 利用 K_p, r_c, r_s (随机数)等生成 K_M 主密钥,借此来加密接下来要发送的信息。
- 客户端发完了所有信息之后,计算发送的所有信息的 MAC 值加密发给服务端。
- 服务端核实数据无误后也发一个 MAC 值给客户端。
修改密码规范协议
发送一个字节数据,要求更改 cipher suites.
TLS 记录协议
确保保密性和数据完整性,老朋友了。confidentiality and integrity.
实现方式:分五部,数据分片 Fragmentation,压缩 Compress,添加 mac 值 add mac,加密 encrypt,加头部 Append TLS record header(指明压缩长度,版本等信息)。
报警协议
用于发送 tls 相关的报警信息。
心跳协议
周期性信号,用于同步以及判断对方是否运行。
Email Security
要实现的安全效果也是那老三样,完整性保密性,以及认证。
PGP 加密
Pretty Good Privacy (非常好隐私,使得我脑子旋转)。这个应该是重点,ppt 上标注要理解他的作用、提供的服务。
能提供的服务:认证 authentication,保密 confidentiality,压缩 compression,邮件兼容性 E-mail compatibility(比如 ascii 码或者 utf-8 码格式?),分割 Segmentation。
为什么要签名后再压缩呢?
- 发送邮件的时候发源文件太大,所以需要压缩这一步。
- 签源文件比较统一,如果签在压缩文件上,那对方拿到文件后想校验认证,还需要自己手动压缩一次。
- 压缩方法多种多样(zip tar),对方也不知道应该用什么方式压缩验证数字签名。
- 签名后压缩,数据冗余变少(前面我们知道破解加密的方法有一种是找冗余序列来推测密钥),破解更难。
邮件兼容性:通过映射扩展,把8位字节流映射为 ascii 码,分割后便于邮件传输。
密钥包含:
-
Pass-phrase key 用于加解密本地私钥
-
Session keys (random keys generated)
-
Public-key
-
Private-key
密钥保存:Private-key ring 钥匙环存当前节点的所有钥匙,public-key ring 存所有其他节点的公钥。公钥结尾有64位签名内容,标识了这个密钥是属于谁的。
添加了密钥查找方式后的认证加密流程如下,其实就是比上图多了两步:找密钥。
还有一个问题,如果我给你一个C的公钥,我和你说这是B的公钥,那存储钥匙的时候不就出错了?如何避免?
常用的做法是 CA 机构实现中心化管理,不过 PGP 并非如此。任何双方只要信任对方,就可以请求对方的公钥(核实后)并用自己的私钥加密存储。公钥的信任度随着其他人的接受而上升。这就是信任模型 trust model。
- 密钥合法性(Key Legitimacy):这个密钥是否属于这个人的信任度,PGP 计算得出,参数有其他用户签名该密钥的情况以及其他用户的可信度。
- 所有者信任(Owner Trust):用户对其他公钥持有者的信任,用户自己配置(黑名单?)。
- 签名信任(Signature Trust):PGP 判断签名者对公钥的信任程度,可以通过字段得出。
S/MIME
MIME 是一种扩展框架,旨在为一些邮件传输协议(smtp 等)解决问题和局限,比如不能传输可执行文件。
S/MIME 使用 RSA 进一步提升了安全性。
比如下面的文本是一种叫做 RFC5322 的邮件传输协议的格式,写成这个格式就能被正确解析:
下面是 MIME 扩展后的:
S/MIME 加密方式,先自己私钥签名,并且附上自己个人信息好让对方方便找钥匙,然后用自己随机生成的内容解密密钥加密,再用对方的公钥 RSA 加密内容密钥,最后发送加密信息和加密后的内容密钥。
证书流程:
- Uses public-key certificates that conform to X.509 v3.
- Key management is hybrid between X.509 and PGP’s web of trust.
- Each client has a list of trusted CA’s certificates and own public/private key pairs & certificates.
- Certificates must be signed by trusted CAs (e.g. VeriSign)
Threats to Security
恶意软件
病毒 virus:执行的时候会复制自己到其他可执行代码上,那个代码执行的时候病毒也会一起执行不断复制。
蠕虫 worm:可以自己执行,会把自己传播到同一网络其他主机上。
特洛伊木马 Trojan Horse:防火墙那里提过,看着是正常软件,但是其实有恶意,有时候会利用使用者的权限。
后门 Backdoor (Trapdoor):可以绕过安全检查,允许一些未授权的行为。
下载者 downloaders:通常通过电子邮件传播,在宿主机上下载其他软件(一刀999)。
Auto-rooter:用于远程攻破新电脑。
垃圾传播程序 Spammer Programs:发大量无用垃圾邮件。
Flooders:DOS 大流量攻击网络上的电脑。
僵尸 Zombie (Bot):继续攻击其他主机。
间谍软件 Spyware:收集数据发给另一台计算机。
广告软件 Adware:弹出大量广告,以及浏览器重定向到广告。
恶意软件防御措施
时间尺度上:(near) real time 准时防御和 post compromise 事后应对。
事后:Incident Management and Forensics 事故处理和取证。
准时:分析网络流量 Network Traffic,载荷 payloads,端点行为 endpoint behavior。
DOS DDoS
Distributed Denial of Service,两者区别在于一个目标发起攻击还是多个目标发起攻击。
消耗目标计算机的资源让正常功能无法使用,比如占据带宽?通信我就懂得少了。