当前位置: 首页 > news >正文

网络安全复习笔记

概述

要素

  • 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=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(基于网络):被动在网络中监听整个网段数据流,捕获数据报。
    • 优点:易于部署;节省成本;通用性强。
    • 缺点:无法发现对主机系统资源的入侵行为;只检查报头信息,无法事件对有效负载的监控;漏报率较高。

相关文章:

网络安全复习笔记

概述 要素 CIA:可用性;完整性;保密性。 可控性;不可否认性;可审查性。 攻击 被动:窃听 - 保密性;监听 - 保密性主动:假冒 - 完整性;重放 - 完整性;改写 -…...

Laravel - excel 导入数据

在Laravel中,可以使用maatwebsite/excel这个库来处理Excel文件的导入。 1.用命令行窗口打开项目根目录,使用 Composer 安装 maatwebsite/excel composer require maatwebsite/excel --ignore-platform-reqs 在你的config/app.php文件中注册服务提供者&…...

移动语义和完美转发

C11 引入了许多新特性,使得编写高效且现代的 C 代码变得更加容易。其中,移动语义(Move Semantics)和完美转发(Perfect Forwarding)是两个重要的特性,极大地提升了 C 的性能和灵活性。 移动语义…...

【IDEA】Spring项目build失败

通常因为环境不匹配需要在file->projectstructure里面调整一下。...

【无标题】安卓app 流量

该工具可以用于安卓app 流量,内存,cpu,fps等专项内容测试,并且有整机内存,cpu对比,还可监控手机网速,app流量,数据导出等功能,重点还是免费,毕竟PerfDog收费了…...

国产化ETL产品必备的特性(非开源包装)

ETL负责将分布的、异构数据源中的数据如关系数据、平面数据文件等抽取到临时中间层后进行抽取、清洗(净化)、转换、装载、标准、集成(汇总)...... 最后加载到数据仓库或数据集市中,成为联机分析处理、数据挖掘的基础。…...

flink 操作mongodb的例子

Apache Flink 是一个流处理和批处理的开源框架,它通常用于处理大量数据流。然而,Flink 本身并不直接提供对 MongoDB 的原生支持,因为 MongoDB 是一个 NoSQL 数据库,而 Flink 主要与关系型数据库(如 JDBC 连接器&#x…...

【笔记】打卡01 | 初学入门

初学入门:01-02 01 基本介绍02 快速入门库处理数据集网络构建模型训练保存模型加载模型打卡-时间 01 基本介绍 MindSpore Data(数据处理层) ModelZoo(模型库) MindSpore Science(科学计算),包含…...

Rocky9使用cockpitweb登陆时root用户无法登陆

Rocky9使用cockpitweb登陆时root用户无法登陆 [rootlvs ~]# vim /etc/cockpit/disallowed-users [rootlvs ~]# systemctl restart cockpit 取消disallowed-users中的root,即可访问 ip:9090 登陆。...

微信小程序修改标题

要修改微信小程序页面的标题和调整字体大小,你需要对 app.json 和页面对应的 json 文件进行配置。 修改页面标题 打开 app.json 文件,找到 pages 字段,确认需要修改的页面路径。打开对应页面的 .json 文件(例如,pages/…...

Linux MySQL服务设置开机自启动

文章目录 前言简介一、准备工作二、操作步骤2.1 启动MySQL服务2.2 拷贝配置2.3 赋值权限2.4 添加为系统服务2.5 验证 总结 前言 请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i、 提示:以下是本篇文章正文内容,下面案例…...

MacOS设备远程登录配置结合内网穿透实现异地ssh远程连接

文章目录 前言1. MacOS打开远程登录2. 局域网内测试ssh远程3. 公网ssh远程连接MacOS3.1 MacOS安装配置cpolar3.2 获取ssh隧道公网地址3.3 测试公网ssh远程连接MacOS 4. 配置公网固定TCP地址4.1 保留一个固定TCP端口地址4.2 配置固定TCP端口地址 5. 使用固定TCP端口地址ssh远程 …...

国有企业如何提高人效比?

随着市场竞争的日益激烈,国有企业面临着越来越大的经营压力。为了提高经济效益和核心竞争力,国有企业越来越重视提高人效比。人效比,即企业总收益与员工总人数的比值,反映了企业每名员工所创造的平均收益。提高人效比意味着在相同…...

Leetcode - 周赛401

目录 一,3178. 找出 K 秒后拿着球的孩子 二,3179. K 秒后第 N 个元素的值 三,3180. 执行操作可获得的最大总奖励 I 四,3181. 执行操作可获得的最大总奖励 II 一,3178. 找出 K 秒后拿着球的孩子 本题可以直接模拟&a…...

Java | Leetcode Java题解之第171题Excel表列序号

题目: 题解: class Solution {public int titleToNumber(String columnTitle) {int number 0;int multiple 1;for (int i columnTitle.length() - 1; i > 0; i--) {int k columnTitle.charAt(i) - A 1;number k * multiple;multiple * 26;}ret…...

【uni-app学习手札】

uni-app(vue3)编写微信小程序 编写uni-app不必拘泥于HBuilder-X编辑器,可用vscode进行编写,在《微信开发者工具》中进行热加载预览, 主要记录使用uni-app过程中自我备忘一些api跟语法,方便以后编写查找使用…...

ASP.NET Core 中使用 Dapper 的 Oracle 存储过程输出参数

介绍 Oracle 数据库功能强大,在企业环境中使用广泛。在 ASP.NET Core 应用程序中使用 Oracle 存储过程时,处理输出参数可能具有挑战性。本教程将指导您完成使用 Dapper(适用于 . NET 的轻量级 ORM(对象关系映射器)&am…...

C++的动态内存分配

使用new/delete操作符在堆中分配/释放内存 //使用new操作符在堆中分配内存int* p1 new int;*p1 2234;qDebug() << "数字是&#xff1a;" << *p1;//使用delete操作符在堆中释放内存delete p1;在分配内存的同时初始化 //在分配内存的时初始化int* p2 n…...

【论文阅读】-- TSR-TVD:时变数据分析和可视化的时间超分辨率

TSR-TVD: Temporal Super-Resolution for Time-Varying Data Analysis and Visualization 摘要1 引言2 相关工作3 我们的循环生成方法3.1 损失函数3.2 网络架构 4 结果与讨论4.1 数据集和网络训练4.2 结果4.3 讨论 5 结论和未来工作致谢参考文献附录1 训练算法及优化2 网络分析…...

《web应用技术》第12次课后作业

1、了解servlet技术 Servlet(server applet)&#xff1a;运行在服务器的小程序&#xff0c;Servlet就是一个接口&#xff0c;定义了Java类被浏览器访问到的规则。将来我们自定义一个类&#xff0c;实现Servlet接口&#xff0c;复写方法。 Servlet本身不能独立运行&#xff0c…...

【初阶数据结构】深入解析带头双向循环链表:探索底层逻辑

&#x1f525;引言 本篇将介绍带头双向循环链表底层实现以及在实现中需要注意的事项&#xff0c;帮助各位在使用过程中根据底层实现考虑到效率上问题和使用时可能会导致的错误使用 &#x1f308;个人主页&#xff1a;是店小二呀 &#x1f308;C语言笔记专栏&#xff1a;C语言笔…...

【面试干货】Java中的访问修饰符与访问级别

【面试干货】Java中的访问修饰符与访问级别 1、public2、protected3、默认&#xff08;没有访问修饰符&#xff09;4、private &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在Java中&#xff0c;访问修饰符用于控制类、变量、方法和构造器…...

Oracle最终还是杀死了MySQL

起因 大约15年前&#xff0c;Oracle收购了Sun公司&#xff0c;从而也拥有了MySQL&#xff0c;互联网上关于Oracle何时会“扼杀MySQL”的讨论此起彼伏。 当时流传着各种理论&#xff1a;从彻底扼杀 MySQL 以减少对 Oracle 专有数据库的竞争&#xff0c;到干掉 MySQL 开源项目&…...

【Python的随机数汇总】

​我们写python代码的时候&#xff0c;很少能用得上随机数&#xff0c;但是随机数有很多妙用。例如&#xff0c;在我们做测试数据集的时候&#xff0c;可以构建一个随机的dataframe&#xff1b; 或者在保存数据的时候&#xff0c;可以在每条数据前插入一列作为&#xff0c;不重…...

[状态压缩 广搜BFS]Saving Tang Monk

描述 《Journey to the West》(also 《Monkey》) is one of the Four Great Classical Novels of Chinese literature. It was written by Wu Chengen during the Ming Dynasty. In this novel, Monkey King Sun Wukong, pig Zhu Bajie and Sha Wujing, escorted Tang Monk to…...

Flutter 实现软鼠标

文章目录 前言一、如何实现&#xff1f;1、记录鼠标偏移2、MouseRegion获取偏移3、Transform移动图标 二、完整代码三、使用示例总结 前言 flutter在嵌入式系统中运行时&#xff0c;有可能遇到drm鼠标无法使用的情况&#xff0c;但鼠标事件却可以正常接收&#xff0c;此时如果…...

使用 MLRun 和 MinIO 设置开发机器

MLOps 之于机器学习&#xff0c;就像 DevOps 之于传统软件开发一样。两者都是一组旨在改善工程团队&#xff08;开发或 ML&#xff09;和 IT 运营 &#xff08;Ops&#xff09; 团队之间协作的实践和原则。目标是使用自动化来简化开发生命周期&#xff0c;从规划和开发到部署和…...

资质申请表详解:填写《建筑幕墙工程设计专项资质申请表》的要点

填写《建筑幕墙工程设计专项资质申请表》的要点如下&#xff0c;按照清晰、分点表示和归纳的方式整理&#xff0c;并参考了文章中的相关数字和信息&#xff1a; 一、封面 申报企业名称&#xff1a;按照工商营业执照内容填写全称&#xff0c;并加盖企业公章。填报日期&#xf…...

华为手机怎么找回删除的照片?掌握3个方法,恢复不是梦

由于误删、设备故障、软件更新等原因&#xff0c;我们有时可能会不慎丢失这些宝贵的照片。当面对空空如也的相册时&#xff0c;那种失落感无法言喻。华为手机该怎么找回删除的照片呢&#xff1f;但是&#xff0c;请不要绝望&#xff01;在科技的帮助下&#xff0c;我们可以采取…...

数据结构试题 20-21

真需要就死记吧 二叉树遍历-先序(非递归)【图解代码】_哔哩哔哩_bilibili 解释一下步骤&#xff1a; 一个循环为&#xff1a; 1.取节点 2.放右子树 3.放左子树 每次循环&#xff0c;都要从栈里取出一个节点 先放右子树&#xff0c;再放左子树 那这道题就是&#xff0c;先放1&am…...

net framework可以用来做网站吗/seo宣传网站

IoC容器提供了自动依赖装配的方式&#xff0c;为应用IoC容器提供很大的方便。在自动配置中&#xff0c;不需要显式的去指定Bean属性&#xff0c;只需要配置autowiring属性&#xff0c;IoC容器会根据这个属性配置&#xff0c;使用反射的方式查找属性的类型或者名字&#xff0c;然…...

何做百度推广网站/营销策划咨询

z-index 属性 z-index 属性设置元素的堆叠顺序。拥有更高堆叠顺序的元素总是会处于堆叠顺序较低的元素的前面。 默认情况下所有的元素都有一个默认的z-index属性&#xff0c;值为0 Z-index 仅能在定位元素上奏效&#xff08;例如 position:absolute;&#xff09;&#xff01…...

上海宝山手机网站制作/百度网讯科技有限公司官网

typescript 支持校验 JavaScript 数据类型&#xff0c;比如 number、boolean、string…可以让我们在写程序时清晰地看见各个对象的类型&#xff0c;更规范地编写&#xff0c;更方便地定位错误。 比如这样操作&#xff1a; let bo: boolean false; let num: number 4; let na…...

跨境商城网站制作/百度引擎提交入口

1、Python 的 14 张思维导图下载地址&#xff1a;https://woaielf.github.io/2017/06/13/python3-all/2、Python基础教程|菜鸟教程&#xff1a;http://www.runoob.com/python/python-tutorial.html3、Python3教程——廖雪峰https://www.liaoxuefeng.com/wiki ... 9df42a6d3a2e5…...

做海报素材网站/网络营销策划总结

小编在用vs写程序时&#xff0c;经常碰到调试窗口一闪而过的情况&#xff0c;以至于根本无法查看程序输出结果。 为了解决这个问题&#xff0c;可以在程序的末尾加上一个系统调用语句&#xff1a; 1 int main(){ 2 printf("我不会黑屏了哈哈\n"); 3 …...

社交网站平台怎么做/如何模板建站

Spring 概述 1. 什么是spring? Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用&#xff0c;但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标是简化Java企业级应用开发&#xff0c;并通过POJO为基础的编程模型促进良好的编程习惯。 2. 使用S…...