安全通信
- 机密性(confidentially)。通过加密,使报文无法被截获者理解。
- 报文完整性(message integrity)。报文在传输过程中未被篡改或意外改动。
- 端点鉴别(end-point authentication)。确信通信的另一方具有所声称的身份。
- 运行安全性(operational security)。通过防火墙等反制对网络的攻击。
机密性
- 加密算法:明文+密钥A–>密文。
- 解密算法:密文+密钥B–>明文。
- 对称密钥系统中,两个秘钥是相同且秘密的。
- 公开密钥系统中,一个密钥公开,另一个密钥只有本人知道。
对称秘钥
- 凯撒密码。每个字母用字母表后的k个字母替换。
- 单码代替密码。使用字母表中的一个字母代替另一个字母。
- 多码代替密码。交替使用不同规则的单码代替密码。
- 块密码。要加密的额报文被处理为k比特的块,根据k比特和密钥映射到加密的k比特块。
- DES(Data Encryption Standard, 数据加密标准)。使用64比特块,56比特密钥。
- AES(Advanced Encryption Standard, 高级加密标准)。使用128比特块,128、192、256比特密钥。
- 密码块链接(Cipher Block Chaining, CBC)仅第一个报文发送一个随机值,随后使用计算的编码块代替后继随机数,避免相同的代码块产生相同的密文,从而防止猜测明文。
- 发送方生成随机的k比特串,即初始向量(Initialization Vector, IV)c(0),通过明文发送给接收方。
- 对于第一个块,计算明文m(1)和IV的异或,然后通过加密算法得到密文块c(1)。
- 对于第i个块,。
公开密钥
- A先取得B的公钥(public key),用它和加密算法加密报文发送给B。B通过自己的私钥(private key)和解密算法,得到初始报文。
- 任何一个人都可以使用公钥向B发送报文,需要使用数字签名绑定发送方和报文。
RSA算法
- 利用暂未找到因式分解一个数的快速算法的事实。
- 指数运算耗时,可以使用RSA加密对称密钥(会话密钥),然后利用该对称密钥加密报文。
- 生成公钥私钥:
- 选择两个**大素数**p、q,乘积为1024比特量级。
- 计算
n=pq,z=(p-1)(q-1)
。 - 选择e用于加密,e
报文完整性
密码散列函数
- MD5,生成128比特的散列。
- SHA-1,生成160比特的散列。
报文鉴别码
- 使用鉴别密钥(authentication key)和散列算法保证报文完整性。
- 步骤:
- A生成报文m,和鉴别密钥级联为m+s,计算散列H(m+s),即报文鉴别码(Message Authentication Code, MAC)。
- A将MAC附加到m上,生成扩展报文(m,H(m+s)),发送给B。
- B收到扩展报文(m,h),由s计算H(m+s),若等于h,则正常。
- MAC**不涉及加密算法**。
- 鉴别密钥可以物理上直接配置,或者使用设备的公钥分发。
数字签名
- 数字签名(digital signature)证明发送方认可一个文件,并且提供报文完整性。
- 发送数字签名
- 由初始报文得到散列。
- 使用私钥加密散列,进行签名。
- 将初始报文和签名后的摘要一起发送。
- 验证数字签名
- 用发送方的公钥解密散列。
- 使用相同的散列函数散列明文报文得到散列。
- 两个散列匹配,则确保完整性和发送方。
公钥认证
- 公钥认证(public key certification),证实一个公钥属于某个特定实体。否则,可能公钥会和实体不匹配。
- 通常需要通过认证中心(Certification Authority, CA)完成公钥和特定实体的绑定。
- CA验证实体身份之后,会生成一个证书,包含公钥和全局唯一的身份识别信息,然后对证书数字签名。实体发送自身公钥时,需要带上该证书,证明公钥的合法性。
端点鉴别
IP
- 验证IP数据报源地址。
- 缺点:可以伪造源地址。
加密口令
- 使用口令鉴别,并对口令使用对称密钥加密。
- 缺点:回放攻击,发送口令的加密版本,伪装发送者。
不重数和对称密钥
- R为不重数(nonce),K为A和B共享的对称密钥。如果B解密得到的不重数与B发送的不重数相等,则可鉴别A,并确定A是活跃的。
安全电子邮件
- 机密性。使用对称会话密钥,解决公开密钥效率低下的问题。使用公开密钥加密分发会话密钥。
- A选择随机的会话密钥Ks,加密报文m。
- 用B的公钥Kb+加密对称密钥。
- 级联加密报文和加密对称密钥,发送给B。
- B使用私钥Kb-解密得到Ks,用Ks解密得到m。
- 发送方鉴别和报文完整性。使用报文摘要和数字签名。
- A对报文散列,得到摘要,随后用A的私钥加密摘要,得到数字签名。
- 级联报文和数字签名发送给B。
- B用A的公钥解密签名得到摘要,和对报文散列的摘要对比。
- 公钥的发放需要CA的证书验证。
- PGP(Pretty Good Privacy)是一个电子邮件加密方案。
- 报文摘要,MD5或SHA。
- 对称密钥加密,CAST、三重DES、IEDA。
- 公开密钥加密,RSA。
SSL
- 安全套接字层(Secure Socket Layer, SSL),提供套接字接口,技术上位于应用层,但是是一个提供TCP的运输层协议。
握手
- B与A握手分为3个阶段。
- 创建TCP连接。
- A发送包括A公钥的证书,验证A是真实的A。
- 发送给A一个加密的主密钥(MS)。
- 二三步协商算法、彼此发送不重数用于会话密钥的生成,实际步骤如下:
- 客户发送支持的密码算法列表,和客户不重数。
- 服务器从列表中选择一种对称算法、一种公钥算法、一种MAC算法,连通证书和服务器不重数发送给客户。
- 客户验证证书,提取服务器公钥,生成前主密钥(Pre-Master Secret, PMS)。用服务器公钥加密PMS,发送给服务器。
- 使用相同密钥导出函数,客户服务器分别从PMS和不重数中计算主密钥(Master Secret, MS)。
- 客户发送所有握手报文的MAC。
- 服务器发送所有握手报文的MAC。
- 最后两步使得报文免受篡改。
- 每次会话的不重数不一样,可以防止连接重放攻击。如,第二天发送前一天的相同序列的报文,通过完整性检验。
密钥导出
- MS需要生成4个会话密钥。
- Ea,A到B的会话加密密钥。
- Eb,B到A的会话加密密钥。
- Ma,A到B的会话MAC密钥。
- Mb,B到A的会话MAC密钥。
- 如果对称密钥用CBC(密码块链接),则两个初始向量IV也从MS导出。
数据传输
- SSL将数据流分为记录,MAC是数据、MAC密钥、当前序号的散列。
- 每发送一个SSL记录,序号+1。阻止一个会话中重放或者重排分组。
连接关闭
- 发送SSL记录,在类型中指出该记录用于终止SSL会话。
- 如果直接终止底层TCP连接,可能被截断攻击。
IPsec和VPN
- IP安全(IP Security)协议被称为IPsec,为网络层提供安IPsec可以创建运行在公共网络之上的虚拟专用网(virtual private network, VPN)。
- IPsec提供机密性、源鉴别、数据完整性、重放攻击防护。
协议
- 鉴别首部协议(Authentication Header, AH)和封装安全性载荷(Encapsulation Security Payload, ESP)。
- AH提供源鉴、数据完整性服务。ESP多提供机密性服务,所以ESP运用广泛。
安全关联
- IPsec数据报在源和目的实体之间创建网络层的逻辑关联,称为安全关联(Security Association, SA)。
- SA是一个单工逻辑连接。两个实体互发安全连接需要2个SA。
- IPsec实体需要维护许多SA的信息(例如,一个有n台主机和2个物理网络的VPN中,网关路由器需要维护2n+2个SA信息)。这些SA信息存储在它的安全关联数据库(Security Association Database, SAD),包括:
- SA的32比特标识符,安全参数索引(Security Parameter Index, SPI)。
- SA的初始接口和目的接口。
- 使用的加密类型(例如,有CBC的3DES)和加密密钥。
- 完整性检查类型(例如,有MD5的HMAC)和鉴别密钥。
IPsec数据报
- IPsec有两种不同的分组模式,隧道模式(tunnel mode),运输模式(transport mode),隧道数据报分组格式如下
- 发送步骤:
- 在初始IPv4数据报后附加ESP尾部。下一个首部表示载荷类型,如UDP。
- 使用SA的算法和密钥加密初始数据报+ESP尾部。
- 在加密量之前附加ESP首部,得到enchilada。ESP首部中的序号可以防御重放攻击。
- 使用SA算法和密钥生成整个enchilada的鉴别MAC。
- 生成新的IPv4首部附加到载荷之前。IP地址为两个端点的路由器接口地址。
- 接收步骤。目的IP是自身,协议字段为50,需要IPsec ESP处理:
- 针对enchilada中的SPI,确定数据报属于哪个SA。
- 计算enchilada的MAC并确定与ESP MAC一致。
- 检查序号字段,确定数据报时新的。
- 使用SA关联的解密算法和密钥解密被加密的单元。
- 删除ESP尾部,抽取初始IPv4数据报。
- IPsec实体维护安全策略库(Security Policy Database, SPD),指示
- 哪些类型的数据报(源、目的IP地址,协议类型)需要IPsec处理。
- 处理之后使用哪个SA。
IKE
- 因特网密钥交换(Internet Key Exchange, IKE)协议,自动在两个IPsec实体间交换证书,协商算法、密钥、SPI,之后在SAD中键入SA信息。类似SSL握手。
运行时安全
防火墙
- 防火墙的目标:
- 从内部到外部和从外部到内部的所有流量都通过防火墙。
- 仅被授权的流量允许通过。
- 防火墙自身免于渗透。否则可能提供安全的假象。
- 传统分组过滤器。检验每个数据报,根据IP地址、TCP端口号、TCP标志比特等决定通过还是丢弃。
- 每个TCP连接第一个报文段ACK比特为0,其他所有报文段为1。过滤进入的所有SYN分组,即ACK为0的分组,可以阻止外部发起TCP连接,但是允许内部发起TCP连接。
- 路由器使用访问控制列表实现防火墙规则。
- 状态分组过滤器。跟踪TCP连接,通过FIN分组或者一段时间没有活动判断连接关闭,拒绝属于关闭连接的分组。
- 应用程序网关。可以处理应用层数据,如用户身份等。起到中继代理的作用。
- 仅对一种应用程序进行深度分组检查(deep packet inspection),深入查看分组携带的实际数据。
入侵检测系统
- 不仅可以检查分组首部,还能够对不同应用程序进行深度分组检查。
- 入侵检测系统(Intrusion Detection System, IDS)能够对潜在的恶意流量告警。
- 入侵防止系统(Intrusion Prevention System, IPS)可以消除可疑流量。
- 基于特征(signature-based)的IDS维护攻击特征库,匹配攻击。但是无法判断新的攻击,也有可能产生虚假警告。
- 基于异常(anomaly-based)的IDS观察流量,生成流量概况,寻找统计上不寻常的分组,如ping分组比例不寻常等。如何区分和统计流量难。
- 大多数IDS都是基于特征的,有些包含基于异常的特性。