网络安全复习笔记

概述

要素

  • 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 ∣ ∣ L i f e t i m e 4 ∣ ∣ T i c k e t V ) E_{K_{C,TGS}}(K_{C,V}||ID_v||TS_4||{\rm Lifetime}4||{\rm Ticket}V) EKC,TGS(KC,V∣∣IDv∣∣TS4∣∣Lifetime4∣∣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(基于网络):被动在网络中监听整个网段数据流,捕获数据报。
    • 优点:易于部署;节省成本;通用性强。
    • 缺点:无法发现对主机系统资源的入侵行为;只检查报头信息,无法事件对有效负载的监控;漏报率较高。
相关推荐
静止了所有花开1 小时前
SpringMVC学习笔记(二)
笔记·学习
长安11082 小时前
前后端、网关、协议方面补充
网络
红中马喽4 小时前
JS学习日记(webAPI—DOM)
开发语言·前端·javascript·笔记·vscode·学习
hzyyyyyyyu5 小时前
隧道技术-tcp封装icmp出网
网络·网络协议·tcp/ip
南猿北者6 小时前
docker Network(网络)
网络·docker·容器
huangkj-henan6 小时前
DA217应用笔记
笔记
Young_202202026 小时前
学习笔记——KMP
笔记·学习
Hacker_Nightrain7 小时前
网络安全CTF比赛规则
网络·安全·web安全
秀儿还能再秀7 小时前
机器学习——简单线性回归、逻辑回归
笔记·python·学习·机器学习
WCF向光而行7 小时前
Getting accurate time estimates from your tea(从您的团队获得准确的时间估计)
笔记·学习