AKE 安全模型:CK, CK+, eCK

参考文献:

  1. [BCK98] Mihir Bellare, Ran Canetti, Hugo Krawczyk. A Modular Approach to the Design and Analysis of Authentication and Key Exchange Protocols (Extended Abstract). STOC 1998: 419-428.
  2. [CK01] Ran Canetti, Hugo Krawczyk. Analysis of Key-Exchange Protocols and Their Use for Building Secure Channels. EUROCRYPT 2001: 453-474.
  3. [Kra01] Hugo Krawczyk. The Order of Encryption and Authentication for Protecting Communications (or: How Secure Is SSL?). CRYPTO 2001: 310-331.
  4. [Kra05] Hugo Krawczyk. HMQV: A High-Performance Secure Diffie-Hellman Protocol. CRYPTO 2005: 546-566.
  5. [LLM07] Brian A. LaMacchia, Kristin E. Lauter, Anton Mityagin. Stronger Security of Authenticated Key Exchange. ProvSec 2007: 1-16.
  6. [FSXY15] Atsushi Fujioka, Koutarou Suzuki, Keita Xagawa, Kazuki Yoneyama. Strongly secure authenticated key exchange from factoring, codes, and lattices. Des. Codes Cryptogr. 76(3): 469-504 (2015).
  7. [PWZ23] Jiaxin Pan, Benedikt Wagner, Runzhi Zeng. Lattice-Based Authenticated Key Exchange with Tight Security. CRYPTO (5) 2023: 616-647.

文章目录

  • AM & UM
    • Emulation of Protocols
    • Message Transmission
    • Key Exchange
  • CK Model
  • CK+ Model
    • CKI
    • wPFS
    • MEX
    • CK+ Security
    • HMQV
  • eCK Model
    • key registration
    • matching sessions
    • adversary
    • freshness
    • General AKE Security
    • eCK Security
    • NAXOS

AM & UM

[BCK98] 提出了 authenticated-links model(AM)以及 unauthenticated-links model(UM),并定义了两者之间的 compiler / authenticator,特别地构造了消息传递的 MT-authenticator,基于此获得了 AM 安全协议到 UM 安全协议的通用转换。

Emulation of Protocols

Message-driven Protocols

  • 该协议被某个参与方调用(根据该协议代码运行的会话),根据协议输入、随机带、参与者 ID 等等,设定它的初始状态

  • 协议挂起,等待被激活,包括两种事件:

    1. 消息达到,从网络中递交到本会话的消息;
    2. 外部请求,本参与者中的其他进程发出的信息。
  • 某参与方上的协议被激活后,形式化地执行如下的随机化函数
    π ( 当前状态, 输入消息, 外部请求 ) = ( 内部状态, 输出消息, 输出请求, 输出日志 ) \pi(\textbf{当前状态, 输入消息, 外部请求})=(\textbf{内部状态, 输出消息, 输出请求, 输出日志}) π(当前状态输入消息外部请求)=(内部状态输出消息输出请求输出日志)
    这里的输入消息来自网络,输出消息被发送到网络中;内部状态是私有的,输出日志是公开的;该函数的某些输入输出可以为空。

  • 继续等待激活,或者会话终止。

Authenticated-links Model:网络中有多个参与者 P 1 , ⋯ , P n P_1,\cdots,P_n P1,,Pn,它们各自运行协议 π \pi π 的若干副本。敌手具有如下能力:

  1. 监听到 π \pi π 的输出消息、输出请求、输出日志,但是不知道它们的内部状态;
  2. 任意决定 π \pi π 的调用和激活顺序;
  3. 任意决定 π \pi π 的外部请求;
  4. 任意决定输出消息的是否递交、递交顺序,但是被约束为只能忠实递交消息 P i P_i Pi 收到来自 P j P_j Pj 的消息,那么 P j P_j Pj 曾经向 P i P_i Pi 发出了该消息)。

假设各个参与方的输入是 x = ( x i ) , r = ( r i ) x=(x_i),r=(r_i) x=(xi),r=(ri),在敌手 A A A 的控制下执行 π \pi π,简记 A d v π , A ( x , r ) Adv_{\pi,A}(x,r) Advπ,A(x,r) 是敌手的视图, A u t h π , A , i ( x , r ) Auth_{\pi,A,i}(x,r) Authπ,A,i(x,r) 是各个参与者的视图,定义这些视图的联合:
A u t h π , A ( x , r ) = ( A d v π , A ( x , r ) , A u t h π , A , 1 ( x , r ) , ⋯ , A u t h π , A , n ( x , r ) ) Auth_{\pi,A}(x,r) = \left(Adv_{\pi,A}(x,r),Auth_{\pi,A,1}(x,r),\cdots,Auth_{\pi,A,n}(x,r)\right) Authπ,A(x,r)=(Advπ,A(x,r),Authπ,A,1(x,r),,Authπ,A,n(x,r))
Unauthenticated-links Model

  1. 除了上述能力,敌手还可以:修改消息、插入假消息;
  2. 协议 π \pi π 具有初始化函数 I ( r ) = I 0 ( r ) ∥ I 1 ( r ) ∥ ⋯ ∥ I n ( r ) I(r) = I_0(r)\|I_1(r)\|\cdots\|I_n(r) I(r)=I0(r)I1(r)In(r),其中 r r r 是随机带, I 0 I_0 I0 是公共信息, I i I_i Ii P i P_i Pi 的私有信息。该初始化函数用于 “引导安全”(the Bootstrapping of security),通常会假设 PKI-based Model(例如 certificate authority, CA)。

类似的,定义联合视图:
U n a u t h π , A ( x , r ) = ( A d v π , A ( x , r ) , U n a u t h π , A , 1 ( x , r ) , ⋯ , U n a u t h π , A , n ( x , r ) ) Unauth_{\pi,A}(x,r) = \left(Adv_{\pi,A}(x,r),Unauth_{\pi,A,1}(x,r),\cdots,Unauth_{\pi,A,n}(x,r)\right) Unauthπ,A(x,r)=(Advπ,A(x,r),Unauthπ,A,1(x,r),,Unauthπ,A,n(x,r))
协议的模拟:令 π , π ′ \pi, \pi' π,π 分别是 AM 和 UM 下的消息驱动协议;我们说 π ′ \pi' π 在无认证网络中模拟 π \pi π,如果关于 π ′ \pi' π 的任意敌手 U U U,总存在关于 π \pi π 的某敌手 A A A,使得对于任意的输入 x x x,在随机带 r r r 下两者的视图(计算)不可区分,
A u t h π , A ( x ) ≡ c U n a u t h π , A ( x ) Auth_{\pi,A}(x) \overset{c}{\equiv} Unauth_{\pi,A}(x) Authπ,A(x)cUnauthπ,A(x)
它主要是描述了不同敌手模型下两个协议的功能等价性(equivalent behavior)

Message Transmission

[BCK98] 给出了从 AM 下任意的消息驱动协议,加强为 UM 下协议的通用转换:

  1. 考虑 AM 下的消息传输协议,
    • P i P_i Pi 上发起外部请求 ( P j , m ) (P_j,m) (Pj,m),它将 ( P i , P j , m ) (P_i,P_j,m) (Pi,Pj,m) 发送到网络,并输出日志 “ P i P_i Pi sent m m m to P j P_j Pj”;
    • P j P_j Pj 收到消息 ( P i , P j , m ) (P_i,P_j,m) (Pi,Pj,m),它输出日志 “ P j P_j Pj received m m m from P i P_i Pi”。
  2. 假设协议 λ \lambda λ 模拟了上述 MT 协议,将它称之为 MT-authenticator,基于它可以定义如下的 compiler
    1. 编译器 C λ C_\lambda Cλ,输入 AM 下的消息驱动协议 π \pi π,输出另一个协议 π ′ \pi' π,它调用 λ \lambda λ π \pi π 作为子程序;
    2. P i P_i Pi 上的 π \pi π 输出某个消息时, π ′ \pi' π 用相应的外部请求激活 λ \lambda λ
    3. 协议 π ′ \pi' π 被输入消息激活时,使用该消息激活 λ \lambda λ,仅当日志记录了 “ P j P_j Pj received m m m from P i P_i Pi” 再用 m m m 激活 P j P_j Pj 上的 π \pi π
  3. 可以证明, π ′ \pi' π 模拟了 π \pi π,我们称 C λ C_\lambda Cλauthenticator

[BCK98] 给出了两种 MT-authenticator 的构造,

基于数字签名算法

在这里插入图片描述

基于公钥加密和消息验证码

在这里插入图片描述

为了避免敌手的消息重播攻击,第二条网络流是必须的,因此三轮通信不可避免;在这三轮通信中,消息 m m m 可以仅在第一轮或第三轮中实际发送,其他两轮仅使用唯一的消息 ID 占位;在认证算法中,身份 B B B 必须被包含在内。

Key Exchange

虽然上述算法满足了 UM 安全,但是每次消息传递都需要执行公钥密码算法,因此计算效率很低。[BCK98] 基于 KE 协议给出了更加高效的 authenticator 构造。

Ideal KE process:参与方 P i P_i Pi,可信方 T T T,敌手 S S S。KE 协议有四种激活方式,

  1. 调用 P i P_i Pi 作为初始者,和 P j P_j Pj 建立新的会话密钥;输出日志 “ P i P_i Pi established key ( k , s : = ( P i , P j , c , Initiator ) ) (k,s:=(P_i,P_j,c,\text{Initiator})) (k,s:=(Pi,Pj,c,Initiator)) with P j P_j Pj”,其中 c c c P i P_i Pi P j P_j Pj 之间已有会话的计数器(确保 ID 的唯一性),元组 s s s 是新会话的 ID(记录到全局集合 I I I 中),而 k k k 是可信方 T T T 产生的会话密钥
  2. 调用 P j P_j Pj 作为接收者,和 P j P_j Pj 建立关于会话 s s s 的密钥;仅当会话 s ∈ I s \in I sI 已经存在,输出日志 “ P j P_j Pj established key ( k , s ′ : = ( P i , P j , c , Responder ) ) (k,s':=(P_i,P_j,c,\text{Responder})) (k,s:=(Pi,Pj,c,Responder)) with P i P_i Pi”,并且从 I I I 中删除 s s s,这里的 k k k 等于会话 s s s 对应的 k k k
  3. 腐坏已有的会话 s s s(在或曾经在 I I I 内),获得对应的 k k k;输出日志 “'Session s s s is corrupted"
  4. 腐坏参与者 P i P_i Pi,获取其所有已知的 k k k;输出日志 “' P i P_i Pi is corrupted"

r T r_T rT r S r_S rS 分别是可信方和敌手的随机带,敌手和参与者的视图为 A d v S ( r S , r T ) Adv_S(r_S,r_T) AdvS(rS,rT) I d e a l S , i ( r S , r T ) Ideal_{S,i}(r_S,r_T) IdealS,i(rS,rT),定义联合视图:
I d e a l S ( r S , r T ) = ( A d v S ( r S , r T ) , I d e a l S , 1 ( r S , r T ) , ⋯ , I d e a l S , n ( r S , r T ) ) Ideal_S(r_S,r_T) = \left(Adv_{S}(r_S,r_T),Ideal_{S,1}(r_S,r_T),\cdots,Ideal_{S,n}(r_S,r_T)\right) IdealS(rS,rT)=(AdvS(rS,rT),IdealS,1(rS,rT),,IdealS,n(rS,rT))
KE protocol:我们说 π \pi π 是安全的密钥交换协议,如果任意 UM 敌手 U U U,都满足 U n a u t h π , U ( ) ≡ c I d e a l S ( ) Unauth_{\pi,U}() \overset{c}{\equiv} Ideal_S() Unauthπ,U()cIdealS()

[BCK98] 证明了 Diffie-Hellman 协议( g , ( x , g x ) , ( y , g y ) , g x y g,(x,g^x),(y,g^y),g^{xy} g,(x,gx),(y,gy),gxy)是 AM 安全的,然后用 MT-authenticator 将它加强为 UM 安全的 KE 协议。

然后基于 KE 协议,[BCK98] 构造更加高效的 MT-authenticator,

  1. 初始时,参与者之间两两运行 KE 协议,获得会话密钥 K i j K_{ij} Kij
  2. 参与者 P i P_i Pi 维护一个发送消息到 P j P_j Pj 的计数器 c i j c_{ij} cij
    • P i P_i Pi 上发起外部请求 ( P j , m ) (P_j,m) (Pj,m),它将 ( m , c i j , M A C K i j ( m , c i j ) ) (m,c_{ij},MAC_{K_{ij}}(m,c_{ij})) (m,cij,MACKij(m,cij)) 发送到网络,并输出日志 “ P i P_i Pi sent m m m to P j P_j Pj
    • P j P_j Pj 收到消息 ( m , c i j , t ) (m,c_{ij},t) (m,cij,t),先验证 t = M A C K i j ( m , c i j ) t=MAC_{K_{ij}}(m,c_{ij}) t=MACKij(m,cij),再输出日志 “ P j P_j Pj received m m m from P i P_i Pi

将上述协议记为 λ K E \lambda_{KE} λKE,利用它可以构造出通用协议的编译器。

CK Model

[BCK98] 给出的 KE 安全性定义是基于模拟的,仅定义了理想世界中的敌手行为,并没有刻画真实世界中敌手的能力。[CK01] 给出了基于游戏的模型和安全性,被称为 CK 模型CK 安全性

Sessions:某个参与方上执行某协议代码的交互式子例程,具有唯一的会话标识 ( P i , P j , s ) (P_i,P_j,s) (Pi,Pj,s),其中 s s s 是用于区分 P i , P j P_i,P_j Pi,Pj 之间不同会话的 ID;在其执行过程中,维护它的本地状态(local state)和本地输出(local output),前者记录了独立于其他会话的极大信息(session-specific information,不直接包含全局秘密);当会话完成后,立即擦除(erase)其本地状态。

Key-exchange protocols:用于在参与者之间两两产生会话密钥的消息驱动协议。上层协议使用输入 ( P i , P j , s , role ∈ { Initiator , Responder } ) (P_i,P_j,s,\text{role} \in \{\text{Initiator}, \text{Responder}\}) (Pi,Pj,s,role{Initiator,Responder}) 在参与者 P i P_i Pi 上调用此协议,上层协议选取恰当的 s s s 确保它是会话的唯一标识。我们说 P i P_i Pi P j P_j Pj 上的两个会话是匹配的(matching),如果它们的输入分别是 ( P i , P j , s , Initiator ) (P_i,P_j,s,\text{Initiator}) (Pi,Pj,s,Initiator) ( P j , P i , s , Responder ) (P_j,P_i,s,\text{Responder}) (Pj,Pi,s,Responder)。两个匹配的会话不需要同时完成,只有完成的会话才输出会话密钥。

Attacker capabilities:它是一个完全控制了通信链路的 PPT 敌手,可以监听所有消息,可以决定消息是否递交和何时递交,可以任意修改消息、插入新消息,可以安排会话的初始化顺序激活顺序。即,它是一个 UM 敌手。

除此之外,敌手还可以发起一些查询,获得指定参与者或者指定会话的某些秘密信息。

  1. Session-state reveal:对于未完成的会话,敌手获得它及其子例程的本地状态。对于本地状态应该包含哪些信息,[CK01] 将它留给了具体的协议设计。
  2. Session-key query:对于完成的会话,敌手获得它生成的会话密钥;这捕获了上层协议中会话密钥的部分/全部、直接/间接泄露。
  3. Party corruption:敌手获得指定参与方的全部内部状态,包括长期秘密、未完成会话的本地状态、以及已完成会话构建的会话密钥。

我们称某会话本地泄露(locally exposed),如果它遭受了上述的三种查询;如果它自身或者其匹配会话(如果存在)本地泄露了,那么称该会话泄露(exposed)。

Session expiration:会话过期,将指定的会话密钥或者本地状态从参与者的内存中擦除。上述的三种查询只能发生在指定会话过期之前;注意一个会话属于某个参与者,其匹配会话不一定过期,因此该会话密钥仍有泄露风险。

Test-session:敌手可以对于已完成未过期未发生泄露的会话,发起特殊的 test-session query,随机掷币 b ∈ { 0 , 1 } b \in \{0,1\} b{0,1},决定敌手获得该会话的会话密钥,还是获得同分布的随机数。随后敌手可以继续执行上述的 UM 动作和三种查询,但是不允许对选定的 test-session 做这些查询(保证它最终没有泄露,排除平凡攻击);除非该会话或者其匹配会话过期了,那么相应的参与方允许被腐坏(其内存已经擦除了会话状态和会话密钥)。

SK-Security:我们说某 KE 协议 π \pi π 是安全的,如果对于任意的 UM 敌手 U \mathcal{U} U

  • Consistency / Completeness:如果两个未腐坏的参与方完成了一对匹配的会话,那么这一对会话的输出是相同的会话密钥;
  • Core property / Soundness:敌手 U \mathcal{U} U 执行 UM/AM 动作和三种查询,指定某个 test-session 然后猜测 b ′ ∈ { 0 , 1 } b'\in \{0,1\} b{0,1},它赢得游戏(即 b = b ′ b=b' b=b)的概率不超过 1 / 2 + negl ( λ ) 1/2+\text{negl}(\lambda) 1/2+negl(λ),其中 λ \lambda λ 是安全参数。

该安全性定义仅关注已完成会话,但是并没有对协议的终止属性做出要求;如果所有的会话都被敌手挂起,那么也满足该安全定义。为了简洁性,[CK01] 排除了对协议终止的要求。

该安全性定义捕获了如下的安全属性(反之不然):

  1. 只要交换过程中没有参与方被腐坏,那么将获得正确的会话密钥分布
  2. 会话密钥和参与者身份的正确且一致的绑定
  3. 抵御 MitM 攻击已知密钥攻击(known-key attacks);
  4. 具有前向安全性(perfect forward secrecy, PFS),等等。

如果禁止会话过期(那么敌手始终无法腐坏 test-session 及其匹配会话所在的参与者),那么上述的安全性定义弱化为 SK-security without PFS。注意 key-transport protocols(或者说 KEM)和 key exchange protocols 的区别:前者直接基于 PKE 传输会话密钥(发送单个密文消息),一旦参与方被腐坏,敌手用长期密钥解密监听到的密文,所有的会话密钥都被完全泄露,因此不具备 PFS 性质。

[CK01] 证明了原始 DH 协议(Two-move Diffie-Hellman)满足 AM 下的上述安全性,然后使用基于签名的 MT-authenticator 得到 UM 下安全的 KE 协议,如下:

在这里插入图片描述

CK+ Model

[Kra05] 考虑了一些没有被 CK Model 捕获的攻击,然后给出了 [CK01] 安全性的加强版本,被后续文章称为 “CK+” 模型/安全。

CKI

在 CK 模型中,敌手具有 Party corruption 能力,即敌手 A \mathcal{A} A 获得 P P P 的长期密钥,同时也获得了对于 P P P 的完全控制;因此 test session 排除了长期密钥泄露的参与者上的所有会话。

但是这过于简化了:实际场景中,敌手可能获得了 P P P 的长期密钥,但是也许并没有获得 A A A 计算机的访问权限(因此看不到内存中的会话状态)。此时我们希望:如果是 P P P 自身运行的会话,那么 A \mathcal{A} A 无法破坏该会话的安全性。

我们说一个会话是干净的(clean),如果:

  1. 在该会话的执行过程中,敌手没有执行 Session-state reveal
  2. 在该会话完成后(擦除前),敌手没有执行 Session-key query

如果敌手 A \mathcal{A} A 获得了参与方 P P P 的长期密钥(但是没有获得 P P P 的控制权),那么敌手可以假冒为 P P P 和其他的参与方交互;现在考虑 A \mathcal{A} A 对于 P P P 上会话的安全性破坏。

Key-Compromise Impersonation Attacks:敌手 A \mathcal{A} A 执行一些 UM/AM 动作和三种查询,并且通过某种手段(仅)获得了某个参与方 P P P 的长期密钥。然后关于 P P P 上的某个会话执行 test-session query,给出猜测 b ′ b' b;要求该会话是干净的,该会话的对等方没有被腐坏,并且该会话的匹配会话(如果存在的话)也是干净的

wPFS

Perfect Forward Secrecy (PFS):敌手 A \mathcal{A} A 执行一些 UM/AM 动作和三种查询,然后指定某个会话为 test-session,等到该会话过期后(注意,并不对其匹配会话做要求),对该会话所在的参与者 P P P 执行 Party corruption(获得长期密钥和本地内存),然后给出猜测 b ′ b' b,其成功概率不超过 1 / 2 + negl ( λ ) 1/2+\text{negl}(\lambda) 1/2+negl(λ),其中 λ \lambda λ 是安全参数。

所有的 2 2 2-message protocols 都无法达到 full PFS:参与者 P 1 P_1 P1 作为协议启动方,发送消息给另一个参与者 P 2 P_2 P2,那么 P 2 P_2 P2 立即完成会话并输出会话密钥 K K K,但此时 P 2 P_2 P2 上的会话仍未完成(敌手控制消息的递交)。等到 P 2 P_2 P2 的会话过期后,敌手 A \mathcal{A} A 腐坏 P 1 P_1 P1 获得会话状态和长期密钥(是否腐坏 P 2 P_2 P2 无所谓),从而重构出 K K K,这就破坏了 P 2 P_2 P2 的前向安全。

[Kra05] 考虑了 PFS 的弱化版本,限制敌手不能获取 test-session 及其匹配会话的状态。将这个安全属性作为 2 2 2-message protocols 的替代要求。

weak PFS (wPFS):敌手 A \mathcal{A} A 执行一些 UM/AM 动作和三种查询,然后指定某个会话为 test-session,并且通过某种手段获得了该会话两个对等方的长期密钥;要求该会话是干净的,并且该会话的匹配会话(如果存在的话)也是干净的。给出猜测 b ′ b' b,其成功概率不超过 1 / 2 + negl ( λ ) 1/2+\text{negl}(\lambda) 1/2+negl(λ),其中 λ \lambda λ 是安全参数。

MEX

如果某个参与方的长期密钥泄露了,同时该参与者上运行的某会话的短期秘密也完全泄露了,那么敌手可以很容易构造出该会话的会话密钥。[Kra05] 考虑针对泄露攻击的最大抵御能力:只要不是某一方的长期密钥和短期秘密同时泄露,那么 KE 协议应当保证会话密钥的随机性。

maximal resistance to exposure attacks:敌手 A \mathcal{A} A 执行一些 UM/AM 动作和三种查询,然后指定某个会话为 test-session,并且通过某种手段获得了

  • 该会话的短期秘密 + 对等方的长期密钥;
  • 会话拥有者的长期密钥 + 匹配会话(如果存在的话)的短期秘密;
  • 该会话的短期秘密 + 匹配会话(如果存在的话)的短期秘密。

给出猜测 b ′ b' b,其成功概率不超过 1 / 2 + negl ( λ ) 1/2+\text{negl}(\lambda) 1/2+negl(λ),其中 λ \lambda λ 是安全参数。

CK+ Security

[Kra05] 给出的增强安全性:满足 CK 安全性,抵御 CKI 攻击和 MEX 攻击,并且满足 wPFS 属性

这里按照 [FSXY15] 的写法,描述 PKI-based 2 2 2-message AKE protocols 的 CK+ 安全性。

参与者 U i U_i Ui 具有长期/静态私钥 s i s_i si 和公钥 S i S_i Si,其上运行的会话具有短期密钥 x i x_i xi 和公钥 X i X_i Xi,并且 S i S_i Si 被绑定到 U i U_i Ui 的身份上(基于 PKI,比如 CA

  1. 上层协议使用消息 ( Π , I , U A , U B ) (\Pi,\mathcal I,U_A,U_B) (Π,I,UA,UB) 激活启动者,该会话的外部输出为 X A X_A XA

  2. 上层协议使用 ( Π , R , U B , U A , X A ) (\Pi,\mathcal R,U_B,U_A,X_A) (Π,R,UB,UA,XA) 激活响应者,该会话的外部输出为 X B X_B XB,并且计算出会话密钥 S K SK SK,完成会话并擦除状态

  3. 上层协议使用消息 ( Π , I , U A , U B , X A , X B ) (\Pi,\mathcal I,U_A,U_B,X_A,X_B) (Π,I,UA,UB,XA,XB) 激活启动者,计算出会话密钥 S K SK SK,完成会话并擦除状态

其中, Π \Pi Π 是协议 ID, I , R \mathcal I,\mathcal R I,R 是角色 ID(启动者、响应者), U A , U B U_A,U_B UA,UB 是参与者 ID, X A , X B X_A,X_B XA,XB 是网络消息。双方都以当前视图作为会话 ID(原始 [CK01] 中则由敌手选取;两者不能转化的,导致的 AKE 安全性相互独立),即启动者使用 s i d = ( Π , I , U A , U B , X A ) sid=(\Pi,\mathcal I,U_A,U_B,X_A) sid=(Π,I,UA,UB,XA) 或者 s i d = ( Π , I , U A , U B , X A , X B ) sid=(\Pi,\mathcal I,U_A,U_B,X_A,X_B) sid=(Π,I,UA,UB,XA,XB),响应者使用 s i d = ( Π , R , U B , U A , X A , X B ) sid=(\Pi,\mathcal R,U_B,U_A,X_A,X_B) sid=(Π,R,UB,UA,XA,XB);以会话 ID 作为匹配的依据。

敌手 A \mathcal A A 是一个完全控制信道的 PPT 图灵机,可以执行如下的四种 adversary query,

在这里插入图片描述

会话新鲜度,定义如下:

在这里插入图片描述

安全游戏,定义如下:

在这里插入图片描述

CK+ 安全性,定义如下:

在这里插入图片描述

此外,[FSXY15] 还给出了 ID-AKE 相应的 id-CK+ 安全性,不再基于公钥基础设施,而是基于 IBE 方案(也需要中心服务器)。

HMQV

MQV 协议是一种相当高效的 KE 协议,被许多组织标准化。但是,该协议没有安全性证明;事实上,它基本什么安全目标也没有达到!

[Kra05] 给出了 MQV 的哈希变体,它同样高效,且被证明在 ROM 下满足 CK+ 安全性。MQV 和 HMQV 的步骤如下:

在这里插入图片描述

MQV 基本就是原始 DH 协议,双方额外持有长期私钥 a , b a,b a,b 和通过 CA 发布的长期公钥 A , B A,B A,B。由于 e , d e,d e,d 长度为 l = ∣ q ∣ / 2 l=|q|/2 l=q∣/2,因此 B e , A d B^e,A^d Be,Ad 的计算代价仅为正规求幂运算的一半。换句话说:原始 DH 协议中每个参与方需要 2 2 2 个求幂运算,而 MQV 协议中每个参与方需要 2.5 2.5 2.5 个求幂运算;两者的总通信开销都是 2 2 2 个群元素。

原始 DH 协议是无认证的,只有短期秘密 x , y x,y x,y,容易遭受 MitM 攻击。让双方都具有长期秘密 a , b a,b a,b,同时使用 x , y , a , b x,y,a,b x,y,a,b 构造会话密钥,一种直观办法是计算 S K = ( Y B ) x + a = ( X A ) y + b = g ( x + a ) ( y + b ) SK = (YB)^{x+a} = (XA)^{y+b} = g^{(x+a)(y+b)} SK=(YB)x+a=(XA)y+b=g(x+a)(y+b)。但是, A A A 是公钥,敌手可以使用 x ∗ , X ∗ = g x ∗ / A x^*,X^*=g^{x^*}/A x,X=gx/A 冒充 A ^ \hat A A^,然后计算出 S K = ( Y B ) x ∗ = ( X ∗ A ) y + b SK=(YB)^{x^*}=(X^*A)^{y+b} SK=(YB)x=(XA)y+b

避免上述攻击的办法是,改成 S K = g ( x + d a ) ( y + e b ) SK=g^{(x+da)(y+eb)} SK=g(x+da)(y+eb),其中 d , e d,e d,e 分别是关于 X , Y X,Y X,Y 的变量。MQV 将变量 d , e d,e d,e 设置为了 X , Y X,Y X,Y 的比特截断,但是并不安全;HMQV 基于 RO 计算它们,达到了 CK+ 安全性。

eCK Model

[Kra05] 定义的 CK+ 安全性,由于它包含了 CK 模型以及 CK 模型未能捕获的三种攻击,导致其安全性证明极为繁琐。[LLM07] 修改了敌手问询的方式,定义了一种相似的 KE 协议安全性,但可以对所有攻击的抵御给出统一的安全证明,被后续研究称之为 eCK 模型/安全性。

CK+ 和 eCK 是不可比的,前者捕获了 Session State Reveal 攻击,后者捕获了 Adaptive Key Exposure 攻击。因此 CK+ 严格比 CK 更强,但是 eCK 并不比 CK 更强。两者都是强大的 KE 安全模型,但似乎 CK+ 用的更普遍/现实一些。它们捕获的攻击类型如下:

在这里插入图片描述

[Kra05] 模块化地考虑了 AKE 安全性的各种组件。

key registration

在 PKI-based AKE 协议中,公钥注册有多种做法。

  1. Honest key registration:各个参与方(包括本来就被敌手控制的)的密钥都是诚实生成的,其公钥被正确绑定到相应的参与者;仅当公钥注册完成后,敌手才能腐坏参与方,并且敌手不能再注册公钥。
  2. Proof-of-possession:在公钥注册时,CA 会执行某种有效性检查(例如 ZKPoK);敌手(腐坏的参与方)可以随时注册公钥。
  3. Arbitrary key registration: 参与者可以随意注册公钥,CA 不做任何检查;敌手(腐坏的参与方)可以随时注册公钥。

matching sessions

哪些会话被认为是相互匹配的,也有不同的方式。

  1. Matching conversations:使用视图/对话(发送和接受的所有消息)作为会话 ID
  2. Partner functions:根据某个函数,将视图/对话的函数值作为会话 ID
  3. Session IDs are assigned by the adversary:敌手激活某诚实参与方上的会话时,给它提供一个字符串作为会话 ID,约束敌手不能为同一个参与者上的不同会话提供相同字符串

adversary

敌手完全控制了网络,并可以做出如下查询(的子集)。

  1. Send ( M , U , s i d ) \text{Send}(M,U,sid) Send(M,U,sid),将消息 M M M 发送到参与者 U U U 上的 s i d sid sid 会话
  2. Reveal ( U , s i d ) \text{Reveal}(U,sid) Reveal(U,sid),泄露参与者 U U U 上已完成会话 s i d sid sid 的会话密钥
  3. Session-State Reveal ( U , s i d ) \text{Session-State Reveal}(U,sid) Session-State Reveal(U,sid),泄露参与者 U U U 上未完成会话 s i d sid sid 的会话状态
  4. Corrupt ( U ) \text{Corrupt}(U) Corrupt(U),腐坏参与者 U U U,获得完全控制权
  5. Test ( U , s i d ) \text{Test}(U,sid) Test(U,sid),将参与者 U U U 上已完成会话 s i d sid sid 设为 test session,限制敌手只能做一次该问询

freshness

会话的新鲜度,也有多种定义方式。

  1. 基础定义:敌手没有腐坏该会话的 owner 及其 peer,并且没有对该会话或者其匹配会话(如果存在的话)发起 Reveal \text{Reveal} Reveal 或者 Session-State Reveal \text{Session-State Reveal} Session-State Reveal 攻击。
  2. 在上述的基础定义上,额外禁止敌手对任意参与者执行 Corrupt \text{Corrupt} Corrupt 攻击。
  3. 在上述的基础定义上,允许敌手腐坏 owner,前提是该会话已经完成;允许敌手腐坏 peer,前提是其匹配会话已经完成。

General AKE Security

不同的组件,将会组合出不同的 AKE 安全性。[LLM07] 定义了如下的 “一般” 安全性,

在这里插入图片描述

eCK Security

[LLM07] 重新定义了敌手的问询方式,以解放 CK 模型中敌手的能力,从而把 CKI, MEX, wPFS 都自然地捕获。此外,[LLM07] 不再像 [CK01] 那样要求协议本身给出会话状态的泄露,而是把所有 session-specific information 视为短期密钥;会话的行为由长期密钥、短期密钥和对话所完全确定。事实上,短期密钥可以被设定为会话的全部随机带

eCK 模型中的敌手问询包含:

  1. Send ( M , U , s i d ) \text{Send}(M,U,sid) Send(M,U,sid),将消息 M M M 发送到参与者 U U U 上的 s i d sid sid 会话
  2. Reveal ( U , s i d ) \text{Reveal}(U,sid) Reveal(U,sid),泄露参与者 U U U 上已完成会话 s i d sid sid 的会话密钥
  3. Ephemeral Key Reveal ( U , s i d ) \text{Ephemeral Key Reveal}(U,sid) Ephemeral Key Reveal(U,sid),泄露参与者 U U U 上未完成会话 s i d sid sid 的短期密钥
  4. Long-Term Key Reveal ( U ) \text{Long-Term Key Reveal}(U) Long-Term Key Reveal(U),泄露参与者 U U U 的长期密钥
  5. Test ( U , s i d ) \text{Test}(U,sid) Test(U,sid),将参与者 U U U 上已完成会话 s i d sid sid 设为 test session,限制敌手只能做一次该问询

原始 CK 模型中的 Corrupt ( U ) \text{Corrupt}(U) Corrupt(U),可以使用 Reveal ( U , s i d ) \text{Reveal}(U,sid) Reveal(U,sid), Ephemeral Key Reveal ( U , s i d ) \text{Ephemeral Key Reveal}(U,sid) Ephemeral Key Reveal(U,sid) Long-Term Key Reveal ( U ) \text{Long-Term Key Reveal}(U) Long-Term Key Reveal(U),还有敌手监听到的对话,给构造出来。 不过会话状态是由短期密钥、长期密钥和对话联合确定的,所以原本的 Session-State Reveal ( U , s i d ) \text{Session-State Reveal}(U,sid) Session-State Reveal(U,sid) 无法构造出来(需要知道长期密钥的间接信息,但是又不能直接得到长期密钥)。 反过来,CK+ 模型也没有捕获任意的密钥泄露。因此 eCK 和 CK+ 是不可比的。

利用上述的敌手问询,新鲜度被定义如下:

  • Freshness for Strong AKE Security. 考虑一个已完成会话 s i d sid sid,其拥有者是 A A A,对等方是 B B B,其匹配会话是 s i d ∗ sid^* sid(如果存在的话)。我们说该会话是新鲜的,如果:
    1. 敌手没有执行 Reveal ( A , s i d ) \text{Reveal}(A,sid) Reveal(A,sid) 或者 Reveal ( B , s i d ∗ ) \text{Reveal}(B,sid^*) Reveal(B,sid)
    2. 敌手没有同时执行 Long-Term Key Reveal ( A ) \text{Long-Term Key Reveal}(A) Long-Term Key Reveal(A) Ephemeral Key Reveal ( A , s i d ) \text{Ephemeral Key Reveal}(A,sid) Ephemeral Key Reveal(A,sid)
    3. 如果存在匹配会话 s i d ∗ sid^* sid,敌手没有同时执行 Long-Term Key Reveal ( B ) \text{Long-Term Key Reveal}(B) Long-Term Key Reveal(B) Ephemeral Key Reveal ( B , s i d ∗ ) \text{Ephemeral Key Reveal}(B,sid^*) Ephemeral Key Reveal(B,sid)
    4. 如果不存在匹配会话,在会话 s i d sid sid 完成之前,敌手没有执行 Long-Term Key Reveal ( B ) \text{Long-Term Key Reveal}(B) Long-Term Key Reveal(B)
  • Freshness for Strong AKE Security for Two-Pass Protocols. 对于两轮消息的协议,需要将 full PFS 放松为 weak PFS,因此做如下的修改
    1. 前三个要求保持不变;
    2. 第四个要求修改为:如果不存在匹配会话,在整个实验阶段内,敌手没有执行 Long-Term Key Reveal ( B ) \text{Long-Term Key Reveal}(B) Long-Term Key Reveal(B)

上述的各个条件排除了各种平凡攻击,并要求 Test Session 可以抵御其余的所有攻击(包含了 CKI, MEX 以及 full/weak PFS)。这就把 CK 模型及其未能捕获的三种攻击,都统一在了单个模型里。

使用 General AKE Security 来定义 eCK 安全性,指定 AKE 实验的组件如下:

  • 公钥注册采用 Arbitrary Key Registration
  • 伙伴关系采用 Matching Conversations
  • 敌手可以执行 Send, Reveal, Ephemeral Key Reveal 和 Long-Term Key Reveal
  • 新鲜度采用 Freshness for Strong AKE Security (for Two-Pass Protocols)

eCK 安全性考虑了最强的公钥注册和敌手能力,因此它可以导出采用 Matching Conversations 作为伙伴关系的其他全部安全性。

NAXOS

[LLM07] 基于 DH 假设和 DLOG 问题,构造了 eCK 安全的 AKE 协议 NAXOS,如下图所示:

在这里插入图片描述

其中 H 1 , H 2 H_1,H_2 H1,H2 是相互独立的随机谕言机。这里将临时秘密 esk 和静态秘密 ssk,都输入到 RO 里以生成 DH 指数(随机带),从而抵御 MEX 攻击;该方法被称为 NAXOS technique,后续的很多研究都使用该技术。

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

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

相关文章

vue2面试题|[2024-12-5]

开题答辩终于结束了,又要开始我的前端面试学习啦!!! 1.v-model双向绑定原理 class Vue{constructor(options){this.$options optionsthis.$watchEvent {}if(typeof options.beforeCreate function){options.beforeCreate.bind…

AI Agent 的崛起与未来:专业模型时代的新趋势20241209

AI Agent 的崛起与未来:专业模型时代的新趋势 引言 📋 在人工智能飞速发展的今天,AI Agent 正在从科幻走向现实。尽管专业大模型在垂直领域的表现令人惊艳,AI Agent 的整合能力和协作潜力却赋予了它独特的价值。本文将回顾 AI A…

【opencv入门教程】9.视频加载

文章选自: 一、VideoCapture类 用于从视频文件、图像序列或摄像头捕获视频的类。函数:CV_WRAP VideoCapture();brief 默认构造函数CV_WRAP explicit VideoCapture(const String& filename, int apiPreference CAP_ANY);brief 使用 API 首选项打开…

【MySQL — 数据库基础】深入解析MySQL数据库操作:创建、使用、删除及字符集管理

目录 1. 数据库的操作 1.1 显示当前的数据库 1.2 创建数据库 1.3 使用数据库 1.4 删除数据库 1.5 删除磁盘文件的原理 1.6 退出客户端 文章介绍 本文详细介绍了数据库的基本操作,包括显示当前数据库、创建数据库、使用数据库、删除…

k8s 优雅监控jvm及dump heap的方案探讨

背景 k8s cluster 的健康检测失败会主动重启pod,而大部份情况下健康检测失败都是由full gc引起的。往往发生重启时已经没有条件dump heap排查full gc的原因。 如何监控 为了避免因健康检测失败而导致的pod重启,我们需要实施有效的监控策略,这…

搭建Discuz论坛

lnmp l:linux操作系统 n:nginx前端页面 m:mysql数据库,账号密码等等都是保存在这个数据库里面 p:php------nginx擅长处理的是静态页面,页面登录账户,需要请求到数据库,通过php把动态…

SpringBoot3整合SpringMVC

一、实现过程: (1).创建程序 (2).引入依赖: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"…

移动应用开发课程第六次实验:为实验2添加登陆页面,用SQList存储好友基本信息

1、在Android Studio中&#xff0c;请在第二次实验成果的基础上完成以下实验要求。 向右滑动 请添加登录页面。在登录页面中&#xff0c;如果用户输入的用户名和密码正确&#xff0c;则跳转至如上图所示的好友列表&#xff0c;并记录用户的登录信息&#xff0c;在用户第一次登…

杨振宁大学物理视频中黄色的字,c#写程序去掉

先看一下效果&#xff1a;&#xff08;还有改进的余地&#xff09; 我的方法是笨方法&#xff0c;也比较刻板。 1&#xff0c;首先想到&#xff0c;把屏幕打印下来。c#提供了这样一个函数&#xff1a; Bitmap bmp new Bitmap(640, 480, PixelFormat.Format32bppArgb); // 创…

MaxEnt模型在物种分布模拟中如何应用?R语言+MaxEnt模型融合物种分布模拟、参数优化方法、结果分析制图与论文写作

目录 第一章 以问题导入的方式&#xff0c;深入掌握原理基础 第二章 常用数据检索与R语言自动化下载及可视化方法 第三章 R语言数据清洗与特征变量筛选 第四章 基于ArcGIS、R数据处理与进阶 第五章 基于Maxent的物种分布建模与预测 第六章 基于R语言的模型参数优化 第七…

数字图像处理(15):图像平移

&#xff08;1&#xff09;图像平移的基本原理&#xff1a;计算每个像素点的移动向量&#xff0c;并将这些像素按照指定的方向和距离进行移动。 &#xff08;2&#xff09;平移向量包括水平和垂直分量&#xff0c;可以表示为&#xff08;dx&#xff0c;dy&#xff09;&#xff…

海外的bug-hunters,不一样的403bypass

一种绕过403的新技术&#xff0c;跟大家分享一下。研究HTTP协议已经有一段时间了。发现HTTP协议的1.0版本可以绕过403。于是开始对lyncdiscover.microsoft.com域做FUZZ并且发现了几个403Forbidden的文件。 &#xff08;访问fsip.svc为403&#xff09; 在经过尝试后&#xff0…

WPF Prism 01-BootstrapperShell

Prism介绍 Prism 是一个用于在 WPF、.NET MAUI、Uno 平台和 Xamarin Forms 中构建松耦合、可维护和可测试的 XAML 应用程序的框架。每个平台都有单独的发布版本&#xff0c;并且这些版本将在独立的开发时间线上进行开发。Prism 提供了一组设计模式的实现&#xff0c;这些模式有…

计算机网络-Wireshark探索ARP

使用工具 Wiresharkarp: To inspect and clear the cache used by the ARP protocol on your computer.curl(MacOS)ifconfig(MacOS or Linux): to inspect the state of your computer’s network interface.route/netstat: To inspect the routes used by your computer.Brows…

Sketch中文版下载安装:一站式设计平台指南

Sketch&#xff0c;这个以轻量和高效著称的矢量设计工具&#xff0c;已经在全球设计领域创造了许多令人惊叹的成果。它以其矢量编辑、控件和样式等功能而闻名。而其中文版本——一站式设计平台“在线设计工具”&#xff0c;在功能全面性、中文操作环境、简洁界面以及设备兼容性…

机器学习决策树原理详解

一、引言 在当今蓬勃发展的人工智能与大数据领域&#xff0c;大模型正以前所未有的影响力改变着众多行业的格局。而决策树作为机器学习算法家族中的经典成员&#xff0c;以其简洁直观的特点和广泛的适用性&#xff0c;不仅能独立解决诸多实际问题&#xff0c;更是诸多先进大模…

Kafka怎么发送JAVA对象并在消费者端解析出JAVA对象--示例

1、在pom.xml中加入依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-stream-kafka</artifactId><version>3.1.6</version></dependency> 2、配置application.yml 加入Kafk…

物品识别 树莓派 5 YOLO v5 v8 v10 11 计算机视觉

0. 要实现的效果 让树莓派可以识别身边的一些物品&#xff0c;比如电脑&#xff0c;鼠标&#xff0c;键盘&#xff0c;杯子&#xff0c;行李箱&#xff0c;双肩包&#xff0c;床&#xff0c;椅子等 1. 硬件设备 树莓派 5 raspberrypi.com/products/raspberry-pi-5/树莓派官方摄…

大数据-245 离线数仓 - 电商分析 缓慢变化维 与 拉链表 SCD Slowly Changing Dimensions

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; Java篇开始了&#xff01; 目前开始更新 MyBatis&#xff0c;一起深入浅出&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff0…

【LeetCode: 160. 相交链表 + 链表】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…