概述
要素
- CIA:可用性;完整性;保密性。
可控性;不可否认性;可审查性。
攻击
- 被动:窃听 - 保密性;监听 - 保密性
- 主动:假冒 - 完整性;重放 - 完整性;改写 - 完整性;拒绝服务 - 可用性。
服务和机制
模型
- PDR:保护;检测;响应。
- P2DR:整体安全策略; → \to → 严密防护 → \to → 动态检测 → \to → 快速响应 → \to →。
- WPDRRC:技术 ⊃ \supset ⊃ 策略 ⊃ \supset ⊃ 人员; → \to → 预警 → \to → 保护 → \to → 检测 → \to → 响应 → \to → 恢复 → \to → 反击 → \to →。
密码学
对称加密
- 分组密码:不随时间变化加解密方法;扩散性好,插入敏感;加解密速度慢,存在错误传播。
- 序列密码:随时间变化的加解密方法;加解密速度快,有限错误传播;扩散性差,插入及修改不敏感。
散列函数
- 目的:消息未被篡改;消息由合法发送者发送;不为重放攻击(序列号/时间戳)。
- 要求:任意长度输入;固定长度输出;软硬件易于实现;不可逆性;抗碰撞性;输入微小变化时输出变化极大。
数字签名
- 信息发送者才能产生的无法伪造的数字串,用以证明消息发送者身份真实性。
发送方私钥签名 → \to → 接收方公钥加密 → \to → 不安全信道 → \to → 接收方私钥解密 → \to → 发送方公钥验证。
密钥分发
- 无中心密钥分发
(1)A → \to → B: R e q u e s t ∣ ∣ N 1 {\rm Request}||N_1 Request∣∣N1; R e q u e s t {\rm Request} Request 密钥更新请求, N 1 {N_1} N1 现时值(Nouce)时间戳/序列号。
(2)B → \to → A: E K M K [ K s ∣ ∣ R e q u e s t ∣ ∣ N 1 ∣ ∣ I D B ∣ ∣ f ( N 1 ) ∣ ∣ N 2 ] E_{K_{MK}}[K_s||{\rm Request||N_1||ID_B||f(N_1)||N_2}] EKMK[Ks∣∣Request∣∣N1∣∣IDB∣∣f(N1)∣∣N2]; K s K_s Ks 随机密钥发生器生成的新密钥, K M K K_{MK} KMK 共享的主密钥, I D B {\rm ID}_B IDB 数字签名避免冒充, f f f 共享的函数运算避免重放。
(3)A → \to → B: E K s [ f ( N 2 ) ] E_{K_s}[f(N_2)] EKs[f(N2)];避免重放,确认新密钥。 - 有中心密钥分发
KDC:密钥分发中心。
(1)A → \to → KDC: R e q u e s t ∣ ∣ N 1 {\rm Request}||N_1 Request∣∣N1。
(2)KDC → \to → A: E K A [ K s ∣ ∣ ] R e q u e s t ∣ ∣ N 1 ∣ ∣ E K B ( K s , I D A ) ] E_{K_A}[K_s||]{\rm Request}||N_1||E_{K_B}(K_s,ID_A)] EKA[Ks∣∣]Request∣∣N1∣∣EKB(Ks,IDA)]; K A K_A KA KDC 和 A 共享的密钥, K B K_B KB KDC 和 B 共享的密钥。
(3)A → \to → B: E K B ( K s , I D A ) E_{K_B}(K_s,ID_A) EKB(Ks,IDA)。
(4)B → \to → A: E K s ( N 2 ) E_{K_s}(N_2) EKs(N2)。
(5)A → \to → B: E K s [ f ( N 2 ) ] E_{K_s}[f(N_2)] EKs[f(N2)];避免冒用,确认新密钥。 - 公钥分发
CA:公钥管理机构。
(1)A → \to → CA: R e q u e s t ∣ ∣ T i m e 1 {\rm Request}||{\rm Time}_1 Request∣∣Time1。
(2)CA → \to → A: E S K U [ P K B ∣ ∣ R e q u e s t ∣ ∣ T i m e 1 ] E_{SK_U}[PK_B||{\rm Request}||{\rm Time}_1] ESKU[PKB∣∣Request∣∣Time1]; S K U SK_U SKU CA私钥, P K B PK_B PKB B 公钥。
(3)B → \to → CA: R e q u e s t ∣ ∣ T i m e 2 {\rm Request}||{\rm Time}_2 Request∣∣Time2。
(4)CA → \to → B: E S K U [ P K A ∣ ∣ R e q u e s t ∣ ∣ T i m e 2 ] E_{SK_U}[PK_A||{\rm Request}||{\rm Time}_2] ESKU[PKA∣∣Request∣∣Time2]; P K A PK_A PKA A 公钥。
三次握手
(5)A → \to → B: E P K B ( N 1 ∣ ∣ I D A ) E_{PK_B}(N_1||ID_A) EPKB(N1∣∣IDA)。
(6)B → \to → A: E P K A ( N 1 ∣ ∣ N 2 ) E_{PK_A}(N_1||N_2) EPKA(N1∣∣N2)。
(7)A → \to → B: E P K B ( N 2 ) E_{PK_B}(N_2) EPKB(N2)。
PPP 协议
- 链路层
- PAP协议:两次握手实现对等端口令认证;初始连接建立使用;口令明文传输,无法防御重放和假冒。
- CHAP协议:三次握手实现对等端基于 Hash 的挑战-应答认证;口令明文传输,无法防御窃听等被动攻击。
RADIUS 协议
- 基于口令
NAS:网络接入服务器。 AS:认证服务器。
(1)C → \to → NAS → \to → AS:UDP 封装的 Access-Request。
AS:NAS 是否注册登记;认证是否通过。
(2)AS → \to → NAS:访问接受/拒绝及数字签名。
NAS:验证签名正确性;确认访问接受/拒绝。 - 基于挑战-应答
Kerbros 协议
- 第一步:分离 V 和 SA
V:应用服务器。
(1)C → \to → AS: I D C ∣ ∣ P C ∣ ∣ I D V ID_C||P_C||ID_V IDC∣∣PC∣∣IDV; P C P_C PC 用户口令。
(2)AS → \to → C: T i c k e t V = E K V ( I D C ∣ ∣ A D C ∣ ∣ I D V ) {\rm Ticket}_V=E_{K_V}(ID_C||AD_C||ID_V) TicketV=EKV(IDC∣∣ADC∣∣IDV); T i c k e t {\rm Ticket} Ticket 票据, K V K_V KV AS 和 V 共享的密钥, A D C AD_C ADC C 网络地址。
(3)C → \to → V: I D C ∣ ∣ T i c k e t V ID_C||{\rm Ticket}_V IDC∣∣TicketV。
口令明文传输;需多次输入口令。 - 第二步:分离 SA 和 TGS
TGS:票据授予服务器
(1)C → \to → AS: I D C ∣ ∣ I D T G S ID_C||ID_{TGS} IDC∣∣IDTGS 。
(2)AS → \to → C: E K C ( T i c k e t T G S ) E_{K_C}({\rm Ticket}_{TGS}) EKC(TicketTGS), T i c k e t T G S = E K T G S ( I D C ∣ ∣ A D C ∣ ∣ I D T G S ∣ ∣ T S 1 ∣ ∣ L i f e t i m e 1 ) {\rm Ticket}_{TGS}=E_{K_{TGS}}(ID_C||AD_C||ID_{TGS}||TS_1||{\rm Lifetime}_1) TicketTGS=EKTGS(IDC∣∣ADC∣∣IDTGS∣∣TS1∣∣Lifetime1); K C K_C KC C 和 AS 共享密钥, K T G S K_{TGS} KTGS TGS 和 AS 共享密钥, T S 1 TS_1 TS1 时间戳, L i f e t i m e 1 {\rm Lifetime}_1 Lifetime1 生命周期。
(3)C → \to → TGS: I D C ∣ ∣ I D V ∣ ∣ T i c k e t T G S ID_C||ID_V||{\rm Ticket}_{TGS} IDC∣∣IDV∣∣TicketTGS.
(4)TGS → \to → C: T i c k e t V = E K V ( I D C ∣ ∣ A D C ∣ ∣ I D V ∣ ∣ T S 2 ∣ ∣ L i f e t i m e 2 ) {\rm Ticket}_V=E_{K_V}(ID_C||AD_C||ID_V||TS_2||{\rm Lifetime}_2) TicketV=EKV(IDC∣∣ADC∣∣IDV∣∣TS2∣∣Lifetime2); K V K_V KV V 和 TGS 共享密钥。
(5)C → \to → V: I D C ∣ ∣ T i c k e t V ID_C||{\rm Ticket}_V IDC∣∣TicketV。
有效期过短易用性差,过长安全性差;未验证 V 的真实性。 - 第三步:Kerbros v4
(1.1)C → \to → AS: I D C ∣ ∣ I D T G S ∣ ∣ T S 1 ID_C||ID_{TGS}||TS_1 IDC∣∣IDTGS∣∣TS1 ;防止重放。
(1.2)AS → \to → C: E K C , A S ( K C , T G S ∣ ∣ I D T G S ∣ ∣ T S 2 ∣ ∣ L i f e t i m e 2 ∣ ∣ T i c k e t T G S ) E_{K_{C,AS}}(K_{C,TGS}||ID_{TGS}||TS_2||{\rm Lifetime}_2||{\rm Ticket}_{TGS}) EKC,AS(KC,TGS∣∣IDTGS∣∣TS2∣∣Lifetime2∣∣TicketTGS), T i c k e t T G S = E K T G S , A S ( K C , T G S ∣ ∣ I D C ∣ ∣ A D C ∣ ∣ I D T G S ∣ ∣ T S 2 ∣ ∣ L i f e t i m e 2 ) {\rm Ticket}_{TGS}=E_{K_{TGS,AS}}(K_{C,TGS}||ID_C||AD_C||ID_{TGS}||TS_2||{\rm Lifetime}_2) TicketTGS=EKTGS,AS(KC,TGS∣∣IDC∣∣ADC∣∣IDTGS∣∣TS2∣∣Lifetime2);C 和 TGS 间获得安全共享密钥。
(2.1)C → \to → TGS: I D V ∣ ∣ T i c k e t T G S ∣ ∣ A u t h e n t i c a t o r C , T G S ID_V||{\rm Ticket}_{TGS}||{\rm Authenticator}_{C,TGS} IDV∣∣TicketTGS∣∣AuthenticatorC,TGS, A u t h e n t i c a t o r C , T G S = E K C , T G S ( I D C ∣ ∣ A D C ∣ ∣ T S 3 ) {\rm Authenticator}_{C,TGS}=E_{K_{C,TGS}}(ID_C||AD_C||TS_3) AuthenticatorC,TGS=EKC,TGS(IDC∣∣ADC∣∣TS3);验证 C 真实性,防止窃听和重放。
(2.2)TGS → \to → C: E K C , T G S ( K C , V ∣ ∣ I D v ∣ ∣ T S 4 ∣ ∣ T i c k e t V ) E_{K_{C,TGS}}(K_{C,V}||ID_v||TS_4||{\rm Ticket}_V) EKC,TGS(KC,V∣∣IDv∣∣TS4∣∣TicketV), T i c k e t V = E K T G S , V ( K C , V ∣ ∣ I D C ∣ ∣ A D C ∣ ∣ I D V ∣ ∣ T S 4 ∣ ∣ L i f e t i m e 4 ) {\rm Ticket}_V=E_{K_{TGS,V}}(K_{C,V}||ID_C||AD_C||ID_V||TS_4||{\rm Lifetime}_4) TicketV=EKTGS,V(KC,V∣∣IDC∣∣ADC∣∣IDV∣∣TS4∣∣Lifetime4);C 和 V 间获得安全共享密钥,防止窃听和重放。
(3.1)C → \to → V: T i c k e t V ∣ ∣ A u t h e n t i c a t o r C , V {\rm Ticket}_V||{\rm Authenticator}_{C,V} TicketV∣∣AuthenticatorC,V, A u t h e n t i c a t o r C , V = E K C , V ( I D C ∣ ∣ A D C ∣ ∣ T S 5 ) {\rm Authenticator}_{C,V}=E_{K_{C,V}}(ID_C||AD_C||TS_5) AuthenticatorC,V=EKC,V(IDC∣∣ADC∣∣TS5)。
(3.2)V → \to → C: E K C , V ( T S 5 + 1 ) E_{K_{C,V}}(TS_5+1) EKC,V(TS5+1);验证 V 真实性。 - 单点登录:多个应用系统中,用户只需登陆一次就可以访问所有互相信任的应用系统。
访问控制
- 方法:矩阵;链表;列表(ACL);授权关系表;安全标签(细粒度)。
- 原则:最小授权;最小泄露;多级。
- DAC(自主):客体属主自行决定权限分配和管理;风险较高。
- MAC(强制/非自住):系统管理员设置或系统自动设置,用户级无法修改;灵活性差。
- 下读:主体安全级别高于客体时允许读。
- 上读:主体安全级别低于客体时允许读。
- 下写:主体安全级别高于客体时允许写。
- 上写:主体安全级别低于客体时允许写。
- BLP(下读上写):政府或军事;写给上级,不能写给下属。
- Biba(上读下写):企业;领导写通知,员工读通知。
- RBAC(基于角色):通过角色联系主客体权限;提升效率,便于管理。
应用层
PGP
- 认证:SHA-1/DSS + RSA + LZ77 + Base64(CRC);私钥签名,公钥验证。
发送方: Z = C o d e [ Z i p ( M A C ∣ ∣ M ) ] Z={\rm Code}[{\rm Zip}({\rm MAC}||M)] Z=Code[Zip(MAC∣∣M)], M A C = E S K A [ H a s h ( M ) ] {\rm MAC}=E_{SK_A}[{\rm Hash}(M)] MAC=ESKA[Hash(M)]。
接收方: M A C ′ ∣ ∣ M ′ = Z i p − 1 [ C o d e − 1 ( Z ′ ) ] {\rm MAC}'||M'={\rm Zip}^{-1}[{\rm Code}^{-1}(Z')] MAC′∣∣M′=Zip−1[Code−1(Z′)]; H a s h ( M ′ ) ? = D P K A ( M A C ′ ) {\rm Hash}(M'){?\atop =}D_{PK_A}({\rm MAC'}) Hash(M′)=?DPKA(MAC′)。 - 加密:LZ77 + ANSI X9.17 + CAST-128/IDEA/TDEA + RSA + Base64(CRC);公钥加密,私钥解密。
发送方: Z = C o d e ( K ∣ ∣ C ) Z={\rm Code}(K||C) Z=Code(K∣∣C), K = E P K B ( K S ) K=E_{PK_B}(K_S) K=EPKB(KS), C = E K S [ Z i p ( M ) ] C=E_{K_S}[{\rm Zip}(M)] C=EKS[Zip(M)]; K S K_S KS 随机生成密钥。
接收方: K ∣ ∣ C = C o d e − 1 ( Z ) K||C={\rm Code}^{-1}(Z) K∣∣C=Code−1(Z), K S = D S K B ( K ) K_S=D_{SK_B}(K) KS=DSKB(K), M = Z i p − 1 [ D K S ( C ) ] M={\rm Zip}^{-1}[D_{K_S}(C)] M=Zip−1[DKS(C)]。 - 认证-加密:SHA-1/DSS + RSA + LZ77 + ANSI X9.17 + CAST-128/IDEA/TDEA + RSA + Base64(CRC)。
发送方: Z = C o d e ( K ∣ ∣ C ) Z={\rm Code}(K||C) Z=Code(K∣∣C), K = E P K B ( K S ) K=E_{PK_B}(K_S) K=EPKB(KS), C = E K S [ Z i p ( M A C ∣ ∣ M ) ] C=E_{K_S}[{\rm Zip}({\rm MAC}||M)] C=EKS[Zip(MAC∣∣M)], M A C = E S K A [ H a s h ( M ) ] {\rm MAC}=E_{SK_A}[{\rm Hash}(M)] MAC=ESKA[Hash(M)]。
接收方: K ∣ ∣ C = C o d e − 1 ( Z ) K||C={\rm Code}^{-1}(Z) K∣∣C=Code−1(Z), K S = D S K B ( K ) K_S=D_{SK_B}(K) KS=DSKB(K), M A C ′ ∣ ∣ M ′ = Z i p − 1 [ D K S ( C ) ] {\rm MAC}'||M'={\rm Zip}^{-1}[D_{K_S}(C)] MAC′∣∣M′=Zip−1[DKS(C)], H a s h ( M ′ ) ? = D P K A ( M A C ′ ) {\rm Hash}(M'){?\atop =}D_{PK_A}({\rm MAC'}) Hash(M′)=?DPKA(MAC′)。
私钥签名 → \to → 压缩 → \to → 公钥加密密钥 → \to → 编码 → \to → 不安全信道 → \to → 解码 → \to → 私钥解密获得密钥 → \to → 解压 → \to → 公钥验证。 - 密钥环
- 私钥环:时间戳;密钥ID;公钥;加密私钥;用户ID。
- 公钥环:时间戳;密钥ID;公钥;拥有者信任;用户ID;密钥合理性;签名;签名信任。
拥有者信任:收到新公钥赋值;未定义信任,未知用户,一般不信任,一般信任,完全信任。
签名信任:收到公钥已有用户签名,根据签名用户是否已在公钥环内进行赋值。
密钥合理性:加权计算签名信任达到设定要求时,认定为有效(complete)。
S/MIME
- 安全功能:封装/加密;签名;明文签名;签名并封装。
- 加密方式选择优先级
(1)接收方解密方式列表优先级最高的;
(2)接收方发来的邮件中最近使用的;
(3)可承受接收方无法解密风险,使用 3DES;
(4)不可承受接收方无法解密风险,使用 RC2/40。
HTTPS
- HTTPS
HTTP:明文传输无验证;无保密性和完整性。
(1)Browser:使用 HTTPS(443端口) 的 URL 访问,发起 SSL/TLS 连接请求。
(2)Web:发送网站公钥证书。
(3)Browser:协商安全等级,Web 公钥加密建立的会话密钥并发送。
(4)Web:私钥解出会话密钥并确认。 - SSL 协议
- 会话:Brower 到 Web 的关联,避免每个连接都要新的安全参数;会话标识符,对等实体证书,压缩方法,密码规格,主密钥,可恢复性。
- 连接:短时有效点对点,每个连接与一个会话关联;随机数(标识连接),Web MAC 密钥,Browser MAC 密钥,Browser 密钥,初始化向量 Ⅳ,序列号。
- 协议:握手;修改密码规格;警告(警告/致命);记录(机密性和完整性)。
- SSL 握手协议
(1)建立安全能力:Browser 发送 client_hello,并收到 Web 回送的 server_hello。
版本:Browser 支持的 SSL 协议最高版本号
随机数:32bit 时间戳和安全的 28 字节随机数;防止重放。
会话 ID:可变长的会话标识符。
加密套件:Browser 支持的加密算法列表,优先级降序排列;密钥交换算法、身份验证算法、对称加密算法、Hash 算法。
压缩算法:Browser 支持的压缩算法列表。
(2)Web 认证和密钥交换:Web 发送 X.509 证书和证书链启动;Web 发送 server_hello_done 结束。
密钥交换:选择 D-H/ 签名 RSA 算法时,Web 发送 server_key_exchange,包含密钥交换算法参数及签名;防止重放。
证书请求:可选项,Web 发送 certificate_request。
(3)Browser 认证和密钥交换
发送证书:若收到 certificate_request,Browser 发送 certificate 包含自己的 X.509 证书及证书链;若没有证书,则发送 no_certificate_alert 警告。
密钥交换:收到 server_key_exchange 后,发送 clietn_key_exchange。
认证确认:Brower 具备签名功能时可选;发送 certificate_verify。
(4)完成:完成握手,并开始交换应用层数据。
Browser:发送 change_cipher_spec,将选择但未启用的密码规则复制到当前密码规格(修改密码规格协议);用新加密算法和新密钥,发送 finish,内容为两散列值串接。
Web:同样发送 change_cipher_spec 和 finish 以确定。 - 密钥生成(client_key_exchange)
(1)Browser 生成 48 字节预备主密钥;Browser 和 Web 分别独立计算并生成 48 字节一次性主密钥,仅供本次会话。
RSA:Browser 生成预备主密钥后公钥加密发送;Web 私钥解密获得。
D-H:Brower 和 Web 各自生成一个 D-H 公钥,交换后分别计算获得预备主密钥;pre_master_secret。
(2)Browser 和 Web 依据主密钥分别按顺序生成密钥参数:Browser 写 MAC 密钥,Web 写 MAC 密钥,Browser 写密钥,Web 写密钥,Browser 写初始向量 Ⅳ,Web 写初始向量 Ⅳ。
以主密钥为输入生成长度足够长的 Hash 值;master_secret。 - SSL 记录协议
(1)分段:应用层报文分割为不超过 214 字节的分块。
(2)压缩:可选项,无损;增加长度不能超过 1024 字节。
(3)加密:分组或序列,”明文/压缩后 || MAC(0/16/20字节)|| 填充“;分组加密则填充为分组长度倍数,且最后一字节说明填充长度。
(4)添加报头:协议类型(1字节);主版本号(1字节);次版本号(1字节);以字节为单位的消息长度(8字节,明文/压缩后)。
- TLS 协议:SSL 升级版。
- Hash 计算额外包含 TLSCompressed.version 域。
- 使用 PRF 随机数生成函数生成密钥;certificate_verify 和 finish 的消息 Hash 计算方法不同;生成主密钥算法不同。
- 扩充警告代码,可以报告更多警告信息。
- 取消了 SSL 协议支持的 Fortezza 算法。
- 支持的证书类型有所减少。
- SSL 填充至分组长度最小整数倍;TLS 可填充不超过 255 字节长度到分组长度的任意整数倍。
SET 协议
- 角色:持卡人/买方/消费者;商家;发卡者(为持卡人提供信用卡);支付者(商家选择的结算机构);支付网关(连接银行专网和 Internet);CA。
- 第一步:一般电子交易流程
(1)消费者开立账户,收到银行签署证书。
(2)商家开立账户,获得或生成签名密钥证书和密钥交换证书。
(3)消费者下单;商家核对订单,向消费者发送证书副本;消费者发送订单、支付消息、证书。
(4)商家向支付网关请求核对,核对消费者账户能够支付;商家核准订单,向消费者发送核准订单信息。
(5)商家提供货物或服务;消费者确认;商家向支付网关请求支付;支付网关完成支付。 - 第二步:双重签名
- 目的
商家:只能读取订单信息,不能读取支付信息,但能验证支付信息完整性和真实性、与订单信息的关联性。
银行:只能读取支付信息,不能读取订单信息,但能验证订单信息完整性和真实性、与支付信息的关联性。
参与电子交易各方能够互相认证彼此身份;支付行为与订单匹配。 - 实现: D S = E S K C [ H a s h ( H a s h ( P I ) ∣ ∣ H a s h ( O I ) ) ] DS=E_{SK_C}[{\rm Hash}({\rm Hash}(PI)||{\rm Hash}(OI))] DS=ESKC[Hash(Hash(PI)∣∣Hash(OI))]; D S DS DS 双重签名, S K C SK_C SKC 消费者私钥, P I PI PI 支付信息, O I OI OI 订单信息。
商家:持有 D S DS DS, O I OI OI, P I M D = H a s h ( P I ) {\rm PIMD}={\rm Hash}(PI) PIMD=Hash(PI);验证 D P K C ( D S ) ? = H a s h [ P I M D ∣ ∣ H a s h ( O I ) ] D_{PK_C}(DS){? \atop =}{\rm Hash}[{\rm PIMD}||{\rm Hash}(OI)] DPKC(DS)=?Hash[PIMD∣∣Hash(OI)]; P K C PK_C PKC 消费者公钥。
银行:持有 D S DS DS, P I PI PI, O I M D = H a s h ( O I ) {\rm OIMD}={\rm Hash}(OI) OIMD=Hash(OI);验证 D P K C ( D S ) ? = H a s h [ H a s h ( P I ) ∣ ∣ O I M D ] D_{PK_C}(DS){? \atop =}{\rm Hash}[{\rm Hash}(PI)||{\rm OIMD}] DPKC(DS)=?Hash[Hash(PI)∣∣OIMD]。
- 目的
- 第三步:Set 交易流程
(1.1)消费者提交购买请求: P ∣ ∣ O ∣ ∣ P||O|| P∣∣O∣∣消费者证书( P K C PK_C PKC);支付消息 P = K ∣ ∣ C P=K||C P=K∣∣C, K = E P K B ( K S ) K=E_{PK_B}(K_S) K=EPKB(KS), C = E K S ( P I ∣ ∣ D S ∣ ∣ O I M D ) C=E_{K_S}(PI||DS||{\rm OIMD}) C=EKS(PI∣∣DS∣∣OIMD);购买消息 O = O I ∣ ∣ D S ∣ ∣ P I M D O=OI||DS||{\rm PIMD} O=OI∣∣DS∣∣PIMD; K S K_S KS 消费者生成的随机密钥, P K B PK_B PKB 支付网关公钥。
(1.2)商家验证购买信息: 验证证书,验证 D P K C ( D S ) ? = H a s h [ P I M D ∣ ∣ H a s h ( O I ) ] D_{PK_C}(DS){? \atop =}{\rm Hash}[{\rm PIMD}||{\rm Hash}(OI)] DPKC(DS)=?Hash[PIMD∣∣Hash(OI)];向消费者发送购买响应。
(2.1)商家发送支付授权请求: P ∣ ∣ C I D ∣ ∣ K ∣ ∣ P||CID||K|| P∣∣CID∣∣K∣∣ 消费者证书 ∣ ∣ || ∣∣ 商家密钥交换证书 ∣ ∣ || ∣∣ 商家签名密钥证书; C I D CID CID 商家私钥签名随机密钥加密的交易 ID, K K K 支付网关公钥加密的随机密钥, S K B SK_B SKB 商家签名私钥, P K M PK_M PKM 银行公钥。
(2.2)支付网关验证并生成支付授权:验证证书,验证 D P K C ( D S ) ? = H a s h [ H a s h ( P I ) ∣ ∣ O I M D ] D_{PK_C}(DS){? \atop =}{\rm Hash}[{\rm Hash}(PI)||{\rm OIMD}] DPKC(DS)=?Hash[Hash(PI)∣∣OIMD],验证商家交易 ID 与消费者交易 ID 相同;向发卡者发送授权请求。
(2.3)支付网关返回授权信息:发卡者授权信息,支付网关证书,捕获令牌(商家账户需要时可选);支付网关私钥签名,随机密钥加密,商家公钥加密随机密钥。
(3.1)商家发送捕获请求:最终支付金额,交易 ID;随机密钥加密,支付网关公钥加密随机密钥。
(3.2)支付网关响应捕获:解密验证捕获请求,向发卡者发送结算请求,发卡者转账到商家账户;向商家返回签名证书,随机密钥加密,商家公钥加密随机密钥。
(3.3)商家解密并验证捕获响应,保存收据,交易结束。
网络层
IPsec
- 协议簇体系:SA,IKE,AH 协议,ESP 协议,SAD,SPD,DOI(解释域)。
- SA:单向安全关联;通信双方对工作模式、加密算法、密钥、生命周期等的约定;通信双方需要一对 SA,分为输入流和输出流。
安全参数索引(SPI):发送方产生 32 位随机数唯一标识 SA。
目的 IP 地址:SA 的终点地址;端系统/路由器/网关/防火墙。
安全协议标识符:表明关联的协议是 AH 还是 ESP。
传输模式:仅保护有效荷载。
隧道模式:保护整个 IP 数据包,包括 IP 报头及有效荷载。 - 组合 SA:单个 SA 不能同时使用 AH 和 ESP。
传输邻接:传输模式下,对 IP 数据包应用多个安全协议;仅允许在一个层次组合。
重复隧道:隧道模式下,可以多层嵌套 SA,每层 SA 的起始 IP 可互不相同。 - SAD(安全关联数据)
安全参数索引
序列号计数器:64 位计数器的低 32位为序列号。
反重放窗口:64 位计数器和位图,防止重放。
AH 信息:AH 协议认证算法、密钥。
ESP 信息:ESP 协议加密算法、认证算法、密钥、初始向量。
SA 生命周期
Path MTU(最大传输单元路径) - SPD(安全策略数据库)
传输层协议(UDP/TCP);源 IP;目标 IP;源端口;目标端口;动作(通过/拒绝/丢弃/ESP 保护/AH 保护)。
- AH 协议:验证报头;保证传输 IP 分组完整性和可靠性,防止重放。
- 报头
下一个头部:1 字节;报头后的协议类型:TCP 为 6,UDP 为17。
载荷长度:1 字节;长度单位为 4 字节。
保留:2字节。
SPI:4 字节。
序列号:4 字节。
验证数据:默认 12 字节,需为 4 字节倍数;包含完整性校验值 ICV 及填充。 - 滑动窗口实现反重放
(1)新接收报文序列号在窗口内,验证通过后,在相应槽位标记接收;
(2)新接收报文落在窗口右侧,验证通过,窗口右移;
(3)接收报文落在窗口左侧/验证未通过,丢弃。
- 报头
- ESP 协议:封装有效荷载;为 IP 分组提供可靠性、完整性、保密性支持。
- 报头
SPI:4 字节。
序列号:4 字节。
有效负载 + 填充(0-255 字节) + 填充长度(2 字节) + 下一个报头:4 字节倍数;填充保证右对齐。
验证数据:可变长;前面所有字段计算得到的 Hash 值。
- 报头
- IKE v1:ISAKMP 互联网安全关联和密钥交换协议;第一阶段建立 IKE SA,第二阶段建立 IPsec SA。
- 第一阶段:主模式
(1)A → \to → B:发送 IKE 安全协议建立请求;加密算法、完整性验证算法、身份认证方法及认证字、D-H 组、IKE SA 生存周期。
(2)B → \to → A:回送 IKE 安全协议确认。
(3)A → \to → B:发送密钥生成消息;D-H 算法交换。
(4)B → \to → A:发送密钥生成消息;各自分别生成用于 ISAKMP 消息加密及验证的对称密钥。
(5)A → \to → B:发送身份和数据认证;使用预共享密钥或数字证书验证。
(6)B → \to → A:发送身份和数据认证。
- 第一阶段:主模式
- 第一阶段:野蛮模式
(1)A → \to → B:发送 IKE 安全协议建立请求。
(2)B → \to → A:发送密钥生成信息。
(3)A → \to → B:发送验证数据。 - 第二阶段:快速模式
(1)A → \to → B:发送 IPsec 安全协议建立请求。采用第一阶段协商好的 IKE SA 衍生的密钥加密和验证会话。
(2)B → \to → A:回送 IPsec 安全协议确认并生成新的用于 IPsec SA 的密钥。
(3)A → \to → B:发送确认信息,确认与对方可以通信。
- QoS(服务质量):吞吐量;时延;拥塞控制/抖动;丢包率。
流量控制:超时重传;接收端采用滑动窗口,告知发送方允许/停止发包。
拥塞控制:慢启动 → \to → 线性增大 → \to → 乘法减少 → \to → 快恢复。
防火墙
- 包过滤防火墙
规则:源IP地址;目标IP地址;源端口;目标端口;协议类型(UDP/TCP);接口(出站/入站/转发);动作(允许/拒绝/丢弃)。
默认规则/姿态:转发;拒绝除非允许;允许除非拒绝。
缺点:不检查高层协议,不能阻止针对特定应用漏洞和功能的攻击,不支持高级的用户认证;对 TCP/IP 协议本身缺陷无应对措施(如假冒 IP);只根据报头信息控制,无法到整合安全策略;日志记录有效信息不充分,不便于事后安全分析。
IDS
- CIDF(通用入侵检测框架)
- 事件产生器:收集外部所有需要分析的数据并转换为 GIDO(统一入侵检测对象)格式。
- 事件分析器:通过对 GIDO 分析判断网络中行为是否合法。
- 响应单元:发现入侵行为时做出反应,如切断连接、改变文件属性、简单报警。
- 事件数据库:存放各种中间和最终 GIDO。
- 基于异常:通过大量观察统计建立正常行为模式;对未知特征入侵行为查出率高,但误报率也高。
- 概率统计:审计记录;主体(进程),行为(读/写/执行/输入/输出),客体(文件/程序/设备),异常条件,资源占用,时间戳;计数器,计量器,计时器,积分器,定时器。
- 预测模型:马尔可夫模型;时间序列模型。
- 基于监督学习:KNN (K 邻近算法);DT (决策树);SVM (支持向量机)。
- 无监督学习:K-means 聚类;层次聚类。
- 基于误用:描述出入侵行为特征;误报率低,但对新入侵行为防范能力弱。
专家系统;模式匹配与协议分析;状态建模。 - HIDS(基于主机):检测目标是运行于网络中的主机;重要主机、服务器、工作站、关键路由器。
- 检测对象:网络流量;主机日志(系统日志、文件系统、进程记录)。
- 缺点:通用性不强;性能受限。
- NIDS(基于网络):被动在网络中监听整个网段数据流,捕获数据报。
- 优点:易于部署;节省成本;通用性强。
- 缺点:无法发现对主机系统资源的入侵行为;只检查报头信息,无法事件对有效负载的监控;漏报率较高。