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

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,后续的很多研究都使用该技术。

相关文章:

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

参考文献: [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.[CK01] Ran Canetti, Hugo Krawczyk. Analysis of Key-E…...

【Linux】通过crond服务设置定时执行shell脚本,实际执行时间却延迟了8小时

一、问题描述 通过使用crond服务设置定时任务,在每天凌晨的2:00执行脚本,但检查结果时发现,实际执行时间却在上午10点。 检查shell脚本执行结果发现,实际执行脚本时间在上午10:00,延迟了8小时。 检查系统时间&#xf…...

什么是云原生数据库 PolarDB?

云原生数据库 PolarDB 是阿里云推出的一款高性能、兼容性强、弹性灵活的关系型数据库产品。它基于云原生架构设计,结合分布式存储和计算分离的技术优势,为用户提供强大的计算能力、卓越的可靠性以及高性价比的数据库解决方案。PolarDB 适合各种业务场景&…...

(6)JS-Clipper2之ClipperOffset

1. 描述 ClipperOffset类封装了对打开路径和关闭路径进行偏移(膨胀/收缩)的过程。 这个类取代了现在已弃用的OffsetPaths函数,该函数不太灵活。可以使用不同的偏移量(增量)多次调用Execute方法,而不必重新分配路径。现在可以在一次操作中对开放和封闭路…...

基于51单片机64位病床呼叫系统设计( proteus仿真+程序+设计报告+原理图+讲解视频)

基于51单片机病床呼叫系统设计( proteus仿真程序设计报告原理图讲解视频) 仿真图proteus7.8及以上 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0095 1. 主要功能: 基于51单片机的病床呼叫系统proteus仿…...

工业智能网关如何为企业实现智能制造赋能?

在数字化转型的浪潮中,工业智能网关作为连接物理世界与数字世界的桥梁,正逐步成为智能制造领域的核心组件。本文将通过一个实际使用案例,深入剖析工业智能网关如何助力企业实现生产流程的优化、数据的高效采集与分析,以及智能化决…...

【Spring项目】表白墙,留言板项目的实现

阿华代码,不是逆风,就是我疯 你们的点赞收藏是我前进最大的动力!! 希望本文内容能够帮助到你!! 目录 一:项目实现准备 1:需求 2:准备工作 (1)…...

Java-WebSocket

文章目录 WebSocket概念SpringBoot实现一个WebSocket示例STOMP消息订阅和发布后端主动发送消息 跨域 WebSocket概念 应用层协议,底层采用TCP,特点:持续连接,有状态,双向通信 当客户端想要与服务器建立WebSocket连接时…...

C#请求https提示未能为 SSL/TLS 安全通道建立信任关系

System.Net.WebException: 基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系 ,这个错误通常表明你的应用程序在尝试建立一个安全的 SSL/TLS 连接时遇到了问题。这通常是由于证书验证失败引起的。证书验证失败可能有几个原因: 证书不受信任&#…...

pdf转word/markdown等格式——MinerU的部署:2024最新的智能数据提取工具

一、简介 MinerU是开源、高质量的数据提取工具,支持多源数据、深度挖掘、自定义规则、快速提取等。含数据采集、处理、存储模块及用户界面,适用于学术、商业、金融、法律等多领域,提高数据获取效率。一站式、开源、高质量的数据提取工具&…...

人工智能与机器学习:真实案例分析及其在各行业的应用前景

目录 引言 人工智能与机器学习的基础概念 人工智能的历史与演变 机器学习的算法分类 深度学习与传统机器学习的区别 行业应用案例分析 医疗健康 疾病预测与诊断 影像识别的运用 案例:IBM Watson在肿瘤治疗中的应用 金融服务 风险评估与欺诈检测 投资预测…...

再谈多重签名与 MPC

目录 什么是 MPC 钱包以及它们是如何出现的 多重签名和智能合约钱包已经成熟 超越 MPC 钱包 关于小队 多重签名已经成为加密货币领域的一部分,但近年来,随着 MPC(多方计算)钱包的出现,多重签名似乎被掩盖了。MPC 钱包之…...

(长期更新)《零基础入门 ArcGIS(ArcMap) 》实验二----网络分析(超超超详细!!!)

相信实验一大家已经完成了,对Arcgis已进一步熟悉了,现在开启第二个实验 ArcMap实验--网络分析 目录 ArcMap实验--网络分析 1.1 网络分析介绍 1.2 实验内容及目的 1.2.1 实验内容 1.2.2 实验目的 2.2 实验方案 2.3 实验流程 2.3.1 实验准备 2.3.2 空间校正…...

Python、R循环神经网络RNN、指数平滑ETS、ARIMA模型预测网络流量、ATM机取款、旅游需求时间序列数据...

全文链接:https://tecdat.cn/?p38496 分析师:Pengyuan Wen 在当今经济研究与商业决策领域,精准的时间序列预测具有极为关键的意义。社会消费品零售总额作为反映人民消费水平以及国民经济状况的核心指标,其发展趋势的精准把握对中…...

通过PS和Unity制作2D动画之二:IK的使用

一、IK的概念 IK:Inverse Kinematics,反向动力学。 (1)正向动力学 在骨骼动画中,构建骨骼的方法被称为正向动力学。它的表现形式是:子骨骼(关节)的位置根据父骨骼(关节…...

如何防御ARP欺骗 保护IP安全

在数字化浪潮席卷全球的今天,网络安全威胁如同暗流涌动,时刻考验着我们的防范能力。其中,ARP欺骗攻击作为一种隐蔽性强、成本低廉且危害严重的网络攻击手段,成为众多网络安全事件中的一颗“毒瘤”。那么我们究竟是如何防御ARP欺骗…...

浏览器插件上架流程

上回说到,用 AI 开发上架了个浏览器插件。有朋友想知道上架扩展有需要哪些步骤。这里做个整理,这篇文章结构和步骤都是 AI 整理的。里面的文案细节、推荐的工具是我自己总结,以前发布扩展时直接用的。有需要的话下面的文案可以直接拷贝使用。…...

Android13 USB 串口默认授权

一)场景需求 项目中使用到了can协议控制车机功能,can 直接转串口,用USB转串口工具 cn.wch.uartlib 来实现. can 板子通过usb 插入到机器上面,那就是usb 协议了。 遇到问题: 插入can 板的usb 到机器上后,直…...

word实践:正文/标题/表图等的共用模板样式设置

说在前面 最近使用word新建文件很多,发现要给大毛病,每次新建一个word文件,标题/正文的字体、大小和间距都要重新设置一遍,而且每次设置这些样式都忘记了参数,今天记录一下,以便后续方便查看使用。现在就以…...

docker安装kettle(PDI)并实现web访问

我是MAC电脑M1版本,希望把软件交给docker进行管理,最近公司同事都通过kettle来实现外部数据对接,所以我本地也有安装kettle需求,在网上找到了这个解决方案操作很简单,但出现了无法访问的情况。我的排查方式是&#xff…...

vue自定义弹窗点击除了自己区域外关闭弹窗

这里使用到vue的自定义指令 <div class"item" v-clickoutside"clickoutside1"><div click"opencity" class"text":style"{ color: popup.iscitypop || okcitylist.length ! 0 ? #FF9500 : #000000 }">选择地区…...

【vue2】封装自定义的日历组件(三)之基础添加月份的加减定位到最新月份的第一天

我们在切换月份的时候&#xff0c;希望高亮显示在每个月的第一天上面&#xff0c;这样的效果我们要怎么来实现&#xff0c;其实也很简单&#xff0c;我们先看下实现的效果 实现效果 代码实现 原理就是获取到每月的第一天日期&#xff0c;然后再跟整个的数据进行对比&#xff…...

21天掌握javaweb-->第12天:Spring Boot项目优化与安全性

Spring Boot项目优化与安全性 1. Spring Boot性能优化 1.1 减少依赖项 评估项目的依赖项&#xff0c;并确保只引入必要的依赖。较多的依赖项可能会增加启动时间&#xff0c;因为它们需要被扫描和初始化。通过删除不需要的依赖项或仅引入必要的模块&#xff0c;可以减少类路径…...

Android —— 四大组件之Activity(一)

Android四大组件即Activity&#xff08;前台&#xff09;Service&#xff08;后台&#xff09;&#xff0c;Broadcast&#xff08;通信&#xff09;&#xff0c;ContentProvider&#xff08;数据存储&#xff09; 一、Activity Activity 充当了应用与用户互动的入口点Activity …...

Ubuntu手持司岚S2激光雷达进行建图

目前通过ros包将激光雷达数据读取之后: roslaunch rplidar_ros view_rplidar_s2.launch 再通过运行 cartographer_ros结点将代码运行起来 roslaunch cartographer_ros demo_revo_lds.launch 这里要注意, 在demo_revo_lds.launch 文件中引入的revo_lds.lua文件中要使用仿真时…...

快速了解 Aurora DSQL

上周在 AWS re:Invent大会&#xff08;类似于阿里云的云栖大会&#xff09;上推出了新的产品 Aurora DSQL[1] &#xff0c;在数据库层面提供了多区域、多点一致性写入的能力&#xff0c;兼容 PostgreSQL。并声称&#xff0c;在多语句跨区域的场景下&#xff0c;延迟只有Google …...

【Android Studio】学习——网络连接

实验&#xff1a;Android网络连接 文章目录 实验&#xff1a;Android网络连接[toc]实验目标和实验内容&#xff1a;1、掌握Android联网的基本概念&#xff1b;2、能够使用URL connection实现网络连接&#xff1b;3、掌握第三方库的基本概念4、需实现的具体功能 实验结果功能说明…...

c语言复制字符串memcpy和strncpy函数区别

memcpy 和 strncpy 的耗时区别 这两个函数在功能上有明显差异&#xff0c;导致性能和耗时也不同。以下是它们的详细对比&#xff1a; 1. 功能差异 函数功能memcpy按字节复制数据&#xff0c;不处理字符串终止符 \0&#xff0c;适用于任意数据类型的内存复制。strncpy复制字符…...

Java设计模式 —— 【创建型模式】建造者模式详解

文章目录 一、建造者模式二、案例实现三、优缺点四、模式拓展五、对比1、工厂方法模式VS建造者模式2、抽象工厂模式VS建造者模式 一、建造者模式 建造者模式&#xff08;Builder Pattern&#xff09; 又叫生成器模式&#xff0c;是一种对象构建模式。它可以将复杂对象的建造过…...

python爬虫--某房源网站验证码破解

文章目录 使用模块爬取目标验证码技术细节实现成果代码实现使用模块 requests请求模块 lxml数据解析模块 ddddocr光学识别 爬取目标 网站验证码破解思路是统一的,本文以城市列表为例 目标获取城市名以及城市连接,之后获取城市房源信息技术直接替换地址即可 验证码 技术…...

Android 项目依赖库无法找到的解决方案

目录 错误信息解析 解决方案 1. 检查依赖版本 2. 检查 Maven 仓库配置 3. 强制刷新 Gradle 缓存 4. 检查网络连接 5. 手动下载依赖 总结 相关推荐 最近&#xff0c;我在编译一个 Android 老项目时遇到了一个问题&#xff0c;错误信息显示无法找到 com.gyf.immersionba…...

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"…...

内网穿透 natapp安装与使用

前言 NATAPP是一款基于ngrok的内网穿透工具。以下是对NATAPP的详细概述&#xff1a; 基本概念 定义&#xff1a;内网穿透&#xff08;NAT穿透&#xff09;是一种技术&#xff0c;它允许具有特定源IP地址和端口号的数据包能够绕过NAT设备&#xff0c;从而被正确地路由到内网主机…...

docker镜像构建企业级示例

华子目录 示例&#xff08;在centos容器中源码编译nginx&#xff08;单介构建&#xff09;&#xff09;包准备为centos容器提供网络源添加企业7的ISO文件 提交为新的centos镜像编写dockerfile文件构建镜像如何优化自己构建的镜像大小多介构建 ldd命令基本用法示例 镜像优化方案…...

【论文阅读】龙芯2号处理器设计和性能分析

作者&#xff1a;胡伟武老师 胡伟武老师是计算机体系结构方向的大牛&#xff0c;推动了龙芯处理器的发展 学习体会&#xff1a; 学习追踪龙芯系列“工程流”论文&#xff0c;看看如何做工程&#xff0c;完成→完美 龙芯2号处理器几乎是工程向的论文&#xff0c;主要看一下实现…...

二一(GIT4)、echarts(地图)、黑马就业数据平台(学生页-增 删 改)

1. echarts 地图 echarts社区&#xff1a;makeapie echarts社区图表可视化案例 社区模板代码地址&#xff1a;自定义 tooltip-轮播 - category-work,series-map地图,tooltip提示框,visualMap视觉映射 - makeapie echarts社区图表可视化案例 // todo: 籍贯分布 地图 function…...

数据结构排序算法详解

数据结构排序算法详解 1、冒泡排序&#xff08;Bubble Sort&#xff09;2、选择排序&#xff08;Selection Sort&#xff09;2、插入排序&#xff08;Insertion Sort&#xff09;4、快速排序&#xff08;Quick Sort&#xff09; 1、冒泡排序&#xff08;Bubble Sort&#xff09…...

使用kubeadm命令安装k8s

版本信息 kubernetesVersion: 1.28.01. 前期环境准备 先配置软件源可以安装kubeadm、kubelet、kubectl三个软件,不同的系统不同的安装方式,这里不列举了,自己找。然后要安装cri-dockerd,因为kubernetes从1.24版本不再支持docker的api,支持原生的containerd的api,可以使用…...

依托 Spring Boot框架,精铸高扩展性招聘信息管控系统

1 绪 论 1.1 课题背景与意义 在Internet高速发展的今天&#xff0c;计算机的应用几乎完全覆盖我们生活的各个领域&#xff0c;互联网在经济&#xff0c;生活等方面有着举足轻重的地位&#xff0c;成为人们资源共享&#xff0c;信息快速传递的重要渠道。在中国&#xff0c;网上管…...

docker 部署 mysql 9.0.1

docker 如何部署 mysql 9 &#xff0c;请看下面步骤&#xff1a; 1. 先看 mysql 官网 先点进去 8 版本的 Reference Manual 。 选择 9.0 版本的。 点到这里来看&#xff0c; 这里有一些基础的安装步骤&#xff0c;可以看一下。 - Basic Steps for MySQL Server Deployment wit…...

SQL:从某行开始,查询一定行数的语句

比如实现从第五行开始查询5行数据的SQL语句 不同数据库有不同的实现方式&#xff0c;下面是各大数据库的查询语句。 1. SQL Server&#xff08;适用于 SQL Server 2012 及之后版本&#xff09;、DB2、Oracle&#xff08;适用12c及以上版本&#xff09; 这几种数据库的实现方式…...

18. 模块

一、什么是模块 模块化 指将一个完成的程序分解为一个一个小的模块。通过将模块组合&#xff0c;来搭建一个完整的程序。如果不采用模块化&#xff0c;那么所有的代码将统一保存到一个文件中。采用模块化后&#xff0c;将程序分别编写到多个文件中。使用模块化后&#xff0c;我…...

GroundingDINO微调训练_训练日志解释

文章目录 1. 训练日志1. Epoch 和 Iteration2. Learning Rate&#xff08;学习率&#xff09;3. ETA&#xff08;预计剩余时间&#xff09;4. Time 和 Data Time5. Memory6. Gradient Norm&#xff08;梯度范数&#xff09;7. Loss&#xff08;损失&#xff09;8. Individual L…...

华为eNSP:VRRP多网关负载分担

一、实验拓扑及目的 二、实验命令及实验步骤 LSW1的配置命令 <Huawei>sy [Huawei]un in e [Huawei]sys S1 [S1]vlan batch 100 200 [S1]int g0/0/1 [S1-GigabitEthernet0/0/1]port link-type access [S1-GigabitEthernet0/0/1]port default vlan 100 [S1-GigabitEtherne…...

uni-app写的微信小程序如何实现账号密码登录后获取token,并且每天的第一次登录后都会直接获取参数而不是耀重新登录(1)

uni-app写的微信小程序如何实现账号密码登录后获取token&#xff08;而token的有效器一般是30分钟&#xff0c;当页面在操作时token是不会过去&#xff0c;&#xff0c;离开页面第二天登录时token就是过期状态&#xff0c;因为记住了账号密码就不会操作再次登录&#xff0c;但是…...

【linux】(29)shell-变量和引号

Shell 脚本中有三种引号&#xff1a;双引号 "、单引号 和反引号 。它们有不同的作用。 双引号 " 双引号允许引用的字符串中包含变量和命令替换。 #!/bin/bash name"Alice" echo "Hello, $name!"单引号 单引号中的内容被原样引用&#xff0…...

Linux如何安装discuz

在Linux上安装Discuz!程序通常涉及以下步骤&#xff1a; 安装Web服务器&#xff08;如Apache或Nginx&#xff09;和数据库&#xff08;如MySQL或PostgreSQL&#xff09;。 下载Discuz!的最新版本。 将Discuz!文件上传到Web服务器的公共目录中。 根据README.md文件配置Discuz…...

SpringBoot如何使用EasyExcel实现表格导出(简洁快速入门版本)

前言 前面给大家介绍了动态表头的导入&#xff0c;这篇文章给大家介绍如何实现导出 前面给大家介绍了动态表头的导入&#xff0c;我们了解了如何通过EasyExcel灵活地读取结构不固定的Excel文件。这次&#xff0c;我们将目光转向数据导出——即如何将数据以Excel文件的形式输出…...

Python爬虫使用示例-保存诗人简介到csv文件中

一、获取资源 目标网址&#xff1a;&#xff08;第一页&#xff09; https://www.shicimingju.com/category/all&#xff08;后续&#xff09; https://www.shicimingju.com/category/all_2 https://www.shicimingju.com/category/all_3 ... https://www.shicimingju.com/ca…...

yocto的xxx.bb文件在什么时候会拷贝文件到build目录

在 Yocto 中&#xff0c;.bb 文件用于描述如何构建和安装一个软件包&#xff0c;而文件在构建过程中的拷贝操作通常会在某些特定的步骤中进行。具体来说&#xff0c;文件会在以下几个阶段被拷贝到 build 目录&#xff08;或者更准确地说&#xff0c;拷贝到目标目录 ${D}&#x…...