网络安全复习笔记

概述

要素

  • 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=Zip1[Code1(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=Code1(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=Zip1[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=Code1(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=Zip1[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。
    PGP和S/MIME对比

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)商家解密并验证捕获响应,保存收据,交易结束。
    SSL和SET对比

网络层

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 保护)。
    IPsec功能及模式实现
    IPsec功能及模式安全性
  • 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:发送确认信息,确认与对方可以通信。
    TLS VPN建立过程
    TLS VPN和IPsec VPN比较
  • QoS(服务质量):吞吐量;时延;拥塞控制/抖动;丢包率。
    流量控制:超时重传;接收端采用滑动窗口,告知发送方允许/停止发包。
    拥塞控制:慢启动 → \to 线性增大 → \to 乘法减少 → \to 快恢复。

防火墙

  • 包过滤防火墙
    规则:源IP地址;目标IP地址;源端口;目标端口;协议类型(UDP/TCP);接口(出站/入站/转发);动作(允许/拒绝/丢弃)。
    默认规则/姿态:转发;拒绝除非允许;允许除非拒绝。
    缺点:不检查高层协议,不能阻止针对特定应用漏洞和功能的攻击,不支持高级的用户认证;对 TCP/IP 协议本身缺陷无应对措施(如假冒 IP);只根据报头信息控制,无法到整合安全策略;日志记录有效信息不充分,不便于事后安全分析。

IDS

  • CIDF(通用入侵检测框架)
    • 事件产生器:收集外部所有需要分析的数据并转换为 GIDO(统一入侵检测对象)格式。
    • 事件分析器:通过对 GIDO 分析判断网络中行为是否合法。
    • 响应单元:发现入侵行为时做出反应,如切断连接、改变文件属性、简单报警。
    • 事件数据库:存放各种中间和最终 GIDO。
  • 基于异常:通过大量观察统计建立正常行为模式;对未知特征入侵行为查出率高,但误报率也高。
    • 概率统计:审计记录;主体(进程),行为(读/写/执行/输入/输出),客体(文件/程序/设备),异常条件,资源占用,时间戳;计数器,计量器,计时器,积分器,定时器。
    • 预测模型:马尔可夫模型;时间序列模型。
    • 基于监督学习:KNN (K 邻近算法);DT (决策树);SVM (支持向量机)。
    • 无监督学习:K-means 聚类;层次聚类。
  • 基于误用:描述出入侵行为特征;误报率低,但对新入侵行为防范能力弱。
    专家系统;模式匹配与协议分析;状态建模。
  • HIDS(基于主机):检测目标是运行于网络中的主机;重要主机、服务器、工作站、关键路由器。
    • 检测对象:网络流量;主机日志(系统日志、文件系统、进程记录)。
    • 缺点:通用性不强;性能受限。
  • NIDS(基于网络):被动在网络中监听整个网段数据流,捕获数据报。
    • 优点:易于部署;节省成本;通用性强。
    • 缺点:无法发现对主机系统资源的入侵行为;只检查报头信息,无法事件对有效负载的监控;漏报率较高。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/353740.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024年6月22日(星期六)骑行谷仓坝

2024年6月22日 (星期六) 骑行谷仓坝,早8:00到8:30, 龙泉小学门口(北京路尽头,高架桥下),9:00准时出发 【因迟到者,骑行速度快者,可自行追赶偶遇。】 偶遇地点:集合 ,家住东&#xf…

phpStudy安装sqli-labs

phpStudy安装sqli-labs git地址:https://github.com/Audi-1/sqli-labs 点击管理–>根目录 将git下载的sqli-labs文件放进去并解压 进入sql-connections修改 修改db-creds.inc文件为自己数据库的账号密码 更改php版本为5.*,因为这个程序只能在php 5.…

《庆余年》在前,《玫瑰的故事》在后,阅文发现“新大陆”?

奋笔疾书的网文作家,即将迎来网络文学的高光时代。 近日,阅文集团于安徽省举办2024阅文创作大会。现场数据显示,2023年阅文活跃作家平均收入增长32%,创造近五年最大增幅。其中,中位数作家收入增幅达135%,已…

ECharts 雷达图案例001-自定义节点动画

ECharts 雷达图案例001-自定义节点动画 引言 在数据可视化的领域中,ECharts 提供了一种强大的工具来展示多维数据。本文将介绍如何使用 ECharts 创建一个自定义节点样式的雷达图,让数据展示更加生动和个性化。 效果预览 通过自定义节点样式&#xff…

echarts 折线图 实现某两个点之间不要连线

通过插入null或NaN的数据点来实现"断开"的效果 const data [[a, 1], [b, 2], [c, 3], [d, 4], [e, 5]] data.splice(2, 0, NaN) option {xAxis: {type: "category",data: [a, b, c, d, e]},yAxis: {},series: [{data,type: "line"}] }

【Matlab编程学习】 | matlab语言编程基础:常用图形绘制基础学习

🎩 欢迎来到技术探索的奇幻世界👨‍💻 📜 个人主页:一伦明悦-CSDN博客 ✍🏻 作者简介: C软件开发、Python机器学习爱好者 🗣️ 互动与支持:💬评论 &…

上位机图像处理和嵌入式模块部署(h750 mcu和usb虚拟串口)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 对于mcu usb而言,大部分情况下,它和上位机之间的关系都是device的关系。一般usb,可以分成host和device。如果mc…

Mysql启动报错:本地计算机上的mysql服务启动后停止,某些服务在未由其他服务或程序使用时将自动停止

某天开机,发现Mysql被异常关闭,并且启动不起来,出这篇文章也是为了下次遇到类似问题,迅速解决(请细读文章,因为第二个方案才是主要方案) 第一个解决方案 我采用的第一个方法查“端口占用“问题(因为这是一篇博客所以我写的操作比较详细为了方便后面看这篇博客的人,我自…

创建第一个Springboot项目(环境准备、环境存在的问题、启动时存在的问题、启动的方式)

一、环境准备 专业版创建springboot,直接有一个选项可以选择 社区版,需要下载一个spring的插件 不要直接点 install 因为这个插件是付费的,直接点安装只有30天使用期限 在里面找免费版本的下载 然后安装 安装完成后,这个插件名会变…

云计算【第一阶段(16)】安装及管理程序

目录 一、linux 应用程序基础 1.1、应用程序与系统命令的关系 1.2、典型应用程序的目录结构 1.3、常见的软件包封装类型 二、RPM软件包管理工具 2.1、rpm命令的格式 2.2、安装,升级,卸载 rpm软件包 安装软件包 升级软件包 卸载软件包 查询软件…

数学建模基础:统计模型

目录 前言 一、概率与统计基础 二、统计模型 三、Matlab统计工具箱 四、实例示范:市场调查分析 步骤 1:数据导入 步骤 2:数据可视化 步骤 3:建立多元线性回归模型 步骤 4:模型验证 步骤 5:模型应…

vue+intro.js实现引导功能

前言: 使用 intro.js这个插件,来实现一个引导性的效果,适用场景,比如:新手引导页,操作说明等等 效果图: 官网地址:点我 实现步骤: 1、安装 npm install intro.js --sa…

【Netty】nio处理acceptreadwrite事件

📝个人主页:五敷有你 🔥系列专栏:Netty ⛺️稳中求进,晒太阳 1.处理accept 1.1客户端代码 public class Client {public static void main(String[] args) {try (Socket socket new Socket("localhost…

【Cloudscapes V2】Blender商城10周年免费领取礼物超逼真的Vdb云和爆炸合集烟雾体积云字体符号轨迹火焰粒子

6月19号的限时免费领取插件挺牛的,可以在blender里渲染体积云、爆炸特效、火焰、烟雾等效果,非常逼真。 Blender商城10周年免费领取礼物:https://blendermarket.com/birthday Cloudscapes V2 - 超逼真的 Vdb 云和爆炸合集 CloudScapes 是 …

如何快速在一台新电脑上安装 Python 环境

一、下载miniconda 1.下载 我们可以在清华大学开源软件镜像站下载最新版本的miniconda。如:https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-py38_4.9.2-Windows-x86_64.exe 2.安装 双击exe文件安装,如果没有特殊的需求&#x…

C# 索引器与迭代器分部类详情

文章目录 一、迭代器二、查看Foreach执行中间语言三、foreach实现过程总结四、实现迭代器最常用的方法五、分布类概述及其使用六、索引器概述及声明七、索引器在类中的使用八、索引器在接口中的使用九、总结 一、迭代器 1、迭代器(iterator)解决的是集合…

vue3+ts+vite集成eslint

项目中安装eslint yarn add eslint -Deslint初始化 npx eslint --init按照下方操作即可 安装typescript-eslint/parser yarn add typescript-eslint/parser -D安装vite-plugin-eslint2 yarn add vite-plugin-eslint2 -D配置vite-plugin-eslint2 // vite.config.ts import …

Linux系统编程——进程信号

目录 一,信号预备 1.1 生活中的信号 1.2 技术应用中的信号 1.3 signal函数捕捉信号 1.3 信号的发送与记录 1.4 信号的常见处理方式 二,信号的产生 2.1 核心转储 2.1.1 环境配置 2.1.2 利用core文件进行调试 2.1.3 core dump标志 2.2 通过系统…

所以spring mvc异常处理工作原理是啥

文章目录 spring mvc异常处理(源码分析)概述原理(源码角度)模拟debug前期提要分析4个map4个map的初始化为什么需要基于mappedMethods缓存 总结一下 spring mvc异常处理(源码分析) 概述 spring mvc有下面三…

127.0.0.1与本机IP地址的区别

大家好,今天我们来聊聊一个在网络世界中常常被提及,但可能对于非专业人士来说还有些模糊的概念——127.0.0.1与本机IP地址。这两个地址在网络通信中都扮演着重要的角色,但它们之间又有着怎样的区别呢?让我们一起来探究一下。 一、…