后量子 KEM 方案:Newhope

news2024/11/20 0:38:11

参考文献:

  1. Lyubashevsky V, Peikert C, Regev O. On ideal lattices and learning with errors over rings[J]. Journal of the ACM (JACM), 2013, 60(6): 1-35.
  2. Lyubashevsky V, Peikert C, Regev O. A toolkit for ring-LWE cryptography[C]//Advances in Cryptology–EUROCRYPT 2013: 32nd Annual International Conference on the Theory and Applications of Cryptographic Techniques, Athens, Greece, May 26-30, 2013. Proceedings 32. Springer Berlin Heidelberg, 2013: 35-54.
  3. Peikert C. Lattice cryptography for the internet[C]//Post-Quantum Cryptography: 6th International Workshop, PQCrypto 2014, Waterloo, ON, Canada, October 1-3, 2014. Proceedings 6. Springer International Publishing, 2014: 197-219.
  4. Alkim E, Ducas L, Pöppelmann T, et al. Post-quantum key exchange-A New Hope[C]//USENIX security symposium. 2016, 2016.
  5. Alkim E, Ducas L, Pöppelmann T, et al. NewHope without reconciliation[J]. Cryptology ePrint Archive, 2016.
  6. Alkim E, Ducas L, Pöppelmann T, et al. Post-quantum key exchange-A New Hope[C]//USENIX security symposium. 2016, 2016.

文章目录

  • Peikert’ KEM
    • Reconciliation
      • Even Modulus
      • Odd Modulus
    • Peikert’s KEM
      • IND-CPA
      • IND-CCA
  • Newhope - reconciliation
    • 参数选取
    • 四维格上的和解
    • KEM 方案
  • Newhope - Simple
    • 方案描述
    • 代码描述

Peikert’ KEM

基于 RLWE 的公钥密码,基本上都遵从 LPR10 的类 ElGamal 框架。不同之处在于参数的选取,以及各种纠错算法、压缩算法等等。

Peikert 使用 reconciliation(和解) 来实现密钥封装(key encapsulation mechanism, KEM)。

  • 和解机制:两方对一个带噪环元素上达成近似的共识,它可以降低载荷大小
  • 密钥封装:发送方直接把对称密钥加密后,发送给接收方(这与 Diffie-Hellman 密钥交换协议不同,KEM 只用到了发送者的随机性)

密文空间是 C C C,密钥空间是 K K K 的密钥封装方案是一组算法,

  • S e t u p ( ) Setup() Setup(),输出公开参数 p p pp pp
  • G e n ( p p ) Gen(pp) Gen(pp),输出公钥 p k pk pk 和私钥 s k sk sk
  • E n c a p s ( p p , p k ) Encaps(pp,pk) Encaps(pp,pk),输出密文 c ∈ C c \in C cC 和密钥 k ∈ K k \in K kK
  • D e c a p s ( s k , c ) Decaps(sk,c) Decaps(sk,c),输出一个 k ∈ K ∪ { ⊥ } k \in K \cup \{\perp\} kK{}

Reconciliation

最开始和解机制由 Ding 提出,但是这个方案是有偏斜的。Peikert 通过 “随机加倍” 的方式解决了偏斜问题。

限制 p ∣ q p|q pq,定义 ⌊ ⋅ ⌉ p : Z q → Z p \lfloor \cdot \rceil_p: Z_q \to Z_p p:ZqZp
⌊ x ⌉ p = ⌊ p / q ⋅ x ⌉ ( m o d p ) \lfloor x \rceil_p = \lfloor p/q \cdot x \rceil \pmod p xp=p/qx(modp)
Z q Z_q Zq 上的元素圆整到 Z p Z_p Zp 上。每个 Z p Z_p Zp 上的点,对应以它为中心 q / p q/p q/p 长小区间的 Z q Z_q Zq 上的点。

类似地,定义 ⌊ ⋅ ⌋ p : Z q → Z p \lfloor \cdot \rfloor_p: Z_q \to Z_p p:ZqZp
⌊ x ⌋ p = ⌊ p / q ⋅ x ⌋ ( m o d p ) \lfloor x \rfloor_p = \lfloor p/q \cdot x \rfloor \pmod p xp=p/qx(modp)
Z q Z_q Zq 上的元素下取整整到 Z p Z_p Zp 上。每个 Z p Z_p Zp 上的点,对应以它为左边界 q / p q/p q/p 长小区间的 Z q Z_q Zq 上的点。

Even Modulus

设置 p = 2 p=2 p=2,并且 q q q偶数。定义不交的区间,
I 0 : = { 0 , 1 , ⋯   , ⌊ q / 4 ⌉ − 1 } I 1 : = { − ⌊ q / 4 ⌋ , ⋯   , − 2 , − 1 } \begin{aligned} I_0 &:= \{0,1,\cdots,\lfloor q/4 \rceil -1\}\\ I_1 &:= \{-\lfloor q/4 \rfloor,\cdots,-2,-1\}\\ \end{aligned} I0I1:={0,1,,q/41}:={q/4,,2,1}
各自包含 Z q Z_q Zq 上的 ⌊ q / 4 ⌉ \lfloor q/4 \rceil q/4 ⌊ q / 4 ⌋ \lfloor q/4 \rfloor q/4 个元素。

交叉圆整(cross-rounding) ⟨ ⋅ ⟩ 2 : Z q → Z 2 \langle \cdot \rangle_2: Z_q \to Z_2 2:ZqZ2
⟨ v ⟩ 2 : = ⌊ 4 / q ⋅ v ⌋ ( m o d 2 ) \langle v \rangle_2 := \lfloor 4/q \cdot v \rfloor \pmod 2 v2:=4/qv(mod2)
可以看出, ⟨ v ⟩ 2 = b ∈ { 0 , 1 } \langle v \rangle_2 = b \in \{0,1\} v2=b{0,1},其中 v ∈ I b ∪ ( q 2 + I b ) v \in I_b \cup (\dfrac{q}{2}+I_b) vIb(2q+Ib)

可以这么理解:将 Z q Z_q Zq 组织成一个一维环面,最右端是 0 0 0,最左端是 q / 2 q/2 q/2,那么 I 0 I_0 I0 就是右上弧, I 1 I_1 I1 就是右下弧,而 q 2 + I 0 \dfrac{q}{2}+I_0 2q+I0 是左下弧, q 2 + I 1 \dfrac{q}{2}+I_1 2q+I1 是左上弧。于是有:

  • 对于 ⌊ v ⌉ 2 \lfloor v \rceil_2 v2 运算, I 0 I_0 I0 I 1 I_1 I1 上的元素被映射到 0 0 0,而 q 2 + I 0 \dfrac{q}{2}+I_0 2q+I0 q 2 + I 1 \dfrac{q}{2}+I_1 2q+I1 上的元素被映射到 1 1 1
  • 对于 ⟨ v ⟩ 2 \langle v \rangle_2 v2 运算, I 0 I_0 I0 q 2 + I 0 \dfrac{q}{2}+I_0 2q+I0 上的元素被映射到 0 0 0,而 I 1 I_1 I1 q 2 + I 1 \dfrac{q}{2}+I_1 2q+I1 上的元素被映射到 1 1 1
  • 虽然由于圆整和下取整可能存在偏斜(bias),但是 ⟨ v ⟩ 2 \langle v \rangle_2 v2 完美隐藏 ⌊ v ⌉ 2 \lfloor v \rceil_2 v2 的信息

如果 v , w ∈ Z q v,w \in Z_q v,wZq 是足够接近的元素,那么给定 w = v + e w=v+e w=v+ereconciliation information ⟨ v ⟩ 2 \langle v \rangle_2 v2,可以恢复出 ⌊ v ⌉ 2 \lfloor v \rceil_2 v2

定义集合 E : = [ − q 8 , q 8 ) ∩ Z E := \left[-\dfrac{q}{8},\dfrac{q}{8}\right) \cap \mathbb Z E:=[8q,8q)Z,定义 reconciliation function r e c : Z q × Z 2 → Z 2 rec: Z_q \times Z_2 \to Z_2 rec:Zq×Z2Z2
r e c ( w , b ) : = { 0 , w ∈ I b + E ( m o d q ) 1 , o t h e r w i s e rec(w,b) := \left\{\begin{aligned} 0, && w \in I_b+E \pmod q\\ 1, && otherwise \end{aligned}\right. rec(w,b):={0,1,wIb+E(modq)otherwise
那么 r e c ( w , ⟨ v ⟩ 2 ) = ⌊ v ⌉ 2 rec(w,\langle v \rangle_2) = \lfloor v \rceil_2 rec(w,v2)=v2,如图所示:

在这里插入图片描述

一维环面 Z q Z_q Zq 上, I 0 + E I_0+E I0+E 是右上的二分之一弧, I 1 + E I_1+E I1+E 是右下的二分之一弧。假设 v v v 的交叉圆整是 b b b,由于 w = v + e w=v+e w=v+e 十分靠近 v v v,如果 w ∈ I b + E w \in I_b+E wIb+E,那么说明 v v v 位于右边( b = 0 b=0 b=0,在右上弧; b = 1 b=1 b=1,在右下弧),因此输出 ⌊ v ⌉ 2 = 0 \lfloor v \rceil_2 = 0 v2=0;否则 v v v 位于环面的左边,输出 ⌊ v ⌉ 2 = 1 \lfloor v \rceil_2 = 1 v2=1

Odd Modulus

设置 p = 2 p=2 p=2,并且 q q q奇数。此时由于不能平分 Z q Z_q Zq,因此 ⌊ v ⌉ 2 = 0 / 1 \lfloor v \rceil_2 = 0/1 v2=0/1 的比特将会出现偏斜。Peikert 使用随机加倍的方法,消除了这个倾斜。

随机化函数 d b l : Z q → Z 2 q dbl: Z_q \to Z_{2q} dbl:ZqZ2q 定义为
v ˉ : = 2 v − e ˉ ( m o d 2 q ) \bar v := 2v - \bar e \pmod{2q} vˉ:=2veˉ(mod2q)

其中 e ˉ ∈ { − 1 , 0 , 1 } \bar e \in \{-1,0,1\} eˉ{1,0,1} 是模二均匀(取 0 0 0 的概率为 0.5 0.5 0.5,取 ± 1 \pm 1 ±1 的概率各为 0.25 0.25 0.25,中心化的亚高斯分布)的随机数。

由于解决了偏斜问题,因此 ⟨ v ˉ ⟩ 2 \langle \bar v \rangle_2 vˉ2 完美隐藏 ⌊ v ˉ ⌉ 2 \lfloor \bar v \rceil_2 vˉ2 的信息。

如果 w , v ∈ Z q w,v \in Z_q w,vZq 十分接近,那么 2 w , d b l ( v ) ∈ Z 2 q 2w,dbl(v) \in Z_{2q} 2w,dbl(v)Z2q 也十分接近,从而使用 Z 2 q Z_{2q} Z2q(偶数模)上的 r e c ( ⋅ ) rec(\cdot) rec() 可以达成 ⌊ v ˉ ⌉ 2 = 0 / 1 \lfloor \bar v \rceil_2 = 0/1 vˉ2=0/1 共识。注意 I 0 , I 1 , E I_0,I_1,E I0,I1,E 的取值范围。

Peikert’s KEM

IND-CPA

LPR13 中,将 LPR10(二的幂次分圆多项式环上) 的 RLWE 扩展到了任意的环,并提出了一套快速计算的工具,包括: powerful basis(用于张量分解), CRT basis(用于类 FFT 乘法), decoding basis(用于 BDD 解码)。看不懂:分数理想、对偶空间。

给定环 R q : = Z q [ x ] / ( m ( x ) ) R_q := Z_q[x]/(m(x)) Rq:=Zq[x]/(m(x)) 的一组 decoding basis D = { d j } D = \{d_j\} D={dj},那么环元素可以坐标表示为:
v = ∑ j v j ⋅ d j ∈ R q v = \sum_j v_j \cdot d_j \in R_q v=jvjdjRq

从整数环 Z \mathbb Z Z 扩展到分圆环 R : = Z [ ζ m ] ⊂ K : = Q [ ζ m ] R:= \mathbb Z[\zeta_m] \subset K:=\mathbb Q[\zeta_m] R:=Z[ζm]K:=Q[ζm],定义 ⌊ v ⌉ 2 : R q → R 2 \lfloor v \rceil_2:R_q \to R_2 v2:RqR2
⌊ v ⌉ 2 : = ∑ j ⌊ v j ⌉ 2 ⋅ d j \lfloor v \rceil_2 := \sum_j \lfloor v_j \rceil_2 \cdot d_j v2:=jvj2dj

类似的,定义 ⟨ v ⟩ 2 : R q → R 2 , \langle v \rangle_2:R_q \to R_2, v2:RqR2
⟨ v ⟩ 2 : = ∑ j ⟨ v j ⟩ 2 ⋅ d j \langle v \rangle_2 := \sum_j \langle v_j \rangle_2 \cdot d_j v2:=jvj2dj

对于偶数模,定义 r e c : R q × R 2 → R 2 , rec:R_q \times R_2 \to R_2, rec:Rq×R2R2
r e c ( w , b ) : = ∑ j r e c ( w j , b j ) ⋅ d j rec(w,b) := \sum_j rec(w_j,b_j) \cdot d_j rec(w,b):=jrec(wj,bj)dj

对于奇数模,定义 d b l : R q → R 2 q dbl: R_q \to R_{2q} dbl:RqR2q
d b l ( v ) : = ∑ j d b l ( v j ) ⋅ d j dbl(v) := \sum_j dbl(v_j) \cdot d_j dbl(v):=jdbl(vj)dj

Peikert’s KEM 使用的还是 LPR10 定义的简化版 RLWE 问题。算法如下:

在这里插入图片描述

在两样本的 R − D L W E q , χ R-DLWE_{q,\chi} RDLWEq,χ 假设下,上述的 KEM 算法是 IND-CPA 安全的。

IND-CCA

可以使用 Fujisaki-Okamoto transformation 来获得 IND-CCA 安全的 KEM。

Peikert 也尝试了其他的转换方案,但都有各种各样的问题。后续的密钥封装方案(Newhope, LAC)也都是先构造 IND-CPA 的 KEM,然后再用 FO 转换获得 IND-CCA 的 KEM。

密钥封装方案 KEM 和公钥加密方案 PKE 是等价的

  • 使用 One-padding 方式,可以从 KEM 自然的转化为 PKE 方案。
  • 随机生成 key 然后使用 PKE 加密发送,这就是一个 KEM 方案。

Newhope - reconciliation

Newhope 进入了 NIST 后量子征集的第二轮,但没有进入第三轮。它使用了十分类似 Peikert’s KEM 的方案。

参数选取

Newhope 使用了二的幂次分圆环 R q = Z q [ X ] / ( X n + 1 ) R_q = \mathbb Z_q[X]/(X^n+1) Rq=Zq[X]/(Xn+1),其中 n = 1024 n=1024 n=1024 q = 12289 q=12289 q=12289 是满足 2 n ∣ q − 1 2n \mid q-1 2nq1 的最小素数(为了使用 NTT 加速)。

另外,由于高精度的离散高斯分布会消耗大量的熵,实际实现时效率不高。因此,Newhope 采用了中心化二项分布(centered binomial distribution) Ψ k \Psi_k Ψk,计算方法是
∑ i = 1 k b i − b i ′ \sum_{i=1}^k b_i - b_i' i=1kbibi

其中 b i , b i ′ ∈ { 0 , 1 } b_i,b_i' \in \{0,1\} bi,bi{0,1} 是独立的均匀随机比特。Newhope 选取了 k = 16 k=16 k=16,标准差为 k / 2 = 2 2 \sqrt{k/2} = 2\sqrt 2 k/2 =22

四维格上的和解

为了降低解密错误率,Newhope 选择了密钥空间 { 0 , 1 } 256 \{0,1\}^{256} {0,1}256,将每 1 1 1 比特编码到 4 4 4 个系数上。

方便理解,我们首先考虑二维格 D ~ 2 \tilde D_2 D~2,它的基底为 { ( 0 , 1 ) , ( 0.5 , 0.5 ) } \{(0,1),(0.5,0.5)\} {(0,1),(0.5,0.5)},如图所示:

在这里插入图片描述

将每个比特对应的 2 2 2 个整系数 Z q 2 Z_q^2 Zq2 平凡地映射到 [ 0 , 1 ) 2 = R 2 / Z 2 [0,1)^2 = \mathbb R^2/\mathbb Z^2 [0,1)2=R2/Z2 上向量 x x x,在虚线围成的正方形中,灰色的部分(Voronoi cell)被解码为 0 0 0,白色的部分被解码为 1 1 1,面积各占 1 2 \dfrac{1}{2} 21,两个区域的边界是到点 ( 0.5 , 0.5 ) (0.5,0.5) (0.5,0.5)L1 范数的 0.5 0.5 0.5 等高线。 因此,这个 BDD 解码过程是特别简单高效的!

但是,如果发送者向量 x s x_s xs 和接收者向量 x c x_c xc 恰好在边界附近,即使 x c , x s x_c,x_s xc,xs 很接近,依然可能会出现和解失败的情况。Newhope 使用 x s x_s xs 与它所在的 Voronoi cell 中心点的向量差 r r r 作为 reconciliation vector,辅助 r e c ( x , r ) rec(x,r) rec(x,r) 的计算;接收者获取 r r r 后,计算 x s + r x_s+r xs+r 向对应的中心倾斜以跨越边界。

在这里插入图片描述

另外,为了压缩载荷,Newhope 对 Voronoi cell 进行了离散化,也就是把每个坐标分量从 Z q Z_q Zq 圆整到 Z 2 r Z_{2^r} Z2r 上(r-bit discretization,保留了 MSB 信息)。为了消除奇数模 q q q 导致的 small bias,以 1 2 \dfrac{1}{2} 21的概率添加 ( 1 2 q , 1 2 q ) (\dfrac{1}{2q},\dfrac{1}{2q}) (2q1,2q1) x x x 上,这叫做 Blurring the edges

Newhope 使用的是 d = 4 d=4 d=4 维格 D ~ 4 \tilde D_4 D~4,基底 { u 1 , u 2 , u 3 , g = ( 0 , 5 , 0.5 , 0.5 , 0.5 ) } \{u_1,u_2,u_3,g=(0,5,0.5,0.5,0.5)\} {u1,u2,u3,g=(0,5,0.5,0.5,0.5)},其中 u i u_i ui Z 4 \mathbb Z^4 Z4 的单位正交基。此时,根据上述 D ~ 2 \tilde D_2 D~2 的和解思路,
H e l p R e c ( x ; b ) : = C V P D ~ 4 ( 2 r q ( x + b g ) ) ( m o d 2 r ) ∈ { 0 , 1 , 2 , 3 } 4 R e c ( x ; r ) : = D e c o d e ( 1 q x − 1 2 r B r ) ∈ { 0 , 1 } \begin{aligned} HelpRec(x;b) &:= CVP_{\tilde D_4}\left( \dfrac{2^r}{q}(x+bg) \right) \pmod{2^r} \in \{0,1,2,3\}^4\\ Rec(x;r) &:= Decode\left(\dfrac{1}{q}x - \dfrac{1}{2^r}Br\right) \in \{0,1\} \end{aligned} HelpRec(x;b)Rec(x;r):=CVPD~4(q2r(x+bg))(mod2r){0,1,2,3}4:=Decode(q1x2r1Br){0,1}

其中的 C V P CVP CVP D e c o d e Decode Decode 算法如下:

在这里插入图片描述

Newhope 使用了 2 2 2 比特位离散化,因此 key 的每个比特需要 r ⋅ d = 2 × 4 = 8 r \cdot d = 2 \times 4 = 8 rd=2×4=8 比特的 reconciliation information。

KEM 方案

Newhope 使用了 NTT 算法、Montgomery reduction 算法、Short Barrett reduction 算法,加速环上的运算。另外,使用 SHA-3 标准里的 SHAKE128、SHAKE256 来实例化 PRG、Hash、XOF 等功能。

IND-CPA 安全的 KEM 方案如下:

在这里插入图片描述

类似 Peikert’s KEM,Newhope 也使用 FO 转换来获得 IND-CCA 安全的 KEM。

Newhope - Simple

基于和解机制的 KEM 的优点是载荷很小。不过,上边描述的 Newhope 较为复杂,不容易理解和实现。后续,Newhope 给出了另一种方案,不再使用和解机制,而是通过 “舍入”(或者说 “模切换”) 直接丢弃低位比特。

方案描述

编码函数(就是 Regev 的 MSB 编码方式)为:
k = E n c o d e ( v ∈ { 0 , 1 } n ) : = ∑ i = 0 n − 1 k i ⋅ ⌊ q 2 ⌋ ⋅ X i k = Encode(v \in \{0,1\}^n) := \sum_{i=0}^{n-1} k_i \cdot \left\lfloor \dfrac{q}{2} \right\rfloor \cdot X^i k=Encode(v{0,1}n):=i=0n1ki2qXi

降低载荷规模的思路为,由于噪声集中在低位比特,把它们简单丢弃,视作“模切换”。在通信时,直接丢弃 k k k 的各项系数的低位比特,得到 k ′ k' k 发送给对方。

解码函数(提取 MSB)为:
μ = E x t r a c t ( k ′ ) : = { μ i = 1 , v i ∈ [ − ⌊ q 2 ⌋ , ⌊ q 2 ⌋ ) μ i = 0 , o t h e r w i s e } , ∀ i = 0 , ⋯   , n − 1 \mu = Extract(k') := \left\{\begin{aligned} \mu_i = 1, && v_i \in \left[-\left\lfloor \dfrac{q}{2} \right\rfloor,\left\lfloor \dfrac{q}{2} \right\rfloor\right)\\ \mu_i = 0, && otherwise \end{aligned}\right\}, \forall i=0,\cdots,n-1 μ=Extract(k):= μi=1,μi=0,vi[2q,2q)otherwise ,i=0,,n1

Encryption-based KEMReconciliation-based KEM 的对比如下:

在这里插入图片描述

Newhope - Simple 比前述的基于和解的 Newhope,仅仅只有很小的载荷损失(上涨了 6.25 % 6.25\% 6.25%),并拥有相同的安全性。

代码描述

为了降低解密错误率,Newhope-Simple 使用了 D2/D4 重复码,

在这里插入图片描述

密文压缩算法就是丢弃低位比特,

在这里插入图片描述

使用 NTT 等加速算法,最终的 Newhope - Simple 算法如下:

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux常见指令大全(一)

🌹作者:云小逸 📝个人主页:云小逸的主页 📝Github:云小逸的Github 🤟motto:要敢于一个人默默的面对自己,强大自己才是核心。不要等到什么都没有了,才下定决心去做。种一颗树,最好的时间是十年前…

POE交换机全方位解读(上)

POE交换机在安防行业的应用,给视频监控系统带来了质的改变,POE交换机。可通过网线为无线AP、网路摄像头等PoE终端设备供电,传送距离可达100m,安装简单,即插即用。非常适合无线城市、安防监控等行业使用。 POE供电方案及…

「融云政企数智办公解决方案」入选「大信创产品目录」

1月31日,CIO 时代、新基建创新研究院联合公布“大信创产品目录”,“融云政企数智办公解决方案”成功通过审核,被正式纳入“大信创产品目录”。 据悉,CIO 时代、新基建创新研究院从去年底开始组织开展“大信创产品目录”征集工作&a…

【C语言 数据结构】数组与对称矩阵的压缩存储

文章目录数组的定义数组的顺序表示和实现顺序表中查找和修改数组元素矩阵的压缩存储特殊矩阵稀疏矩阵数组的定义 提到数组,大家首先会想到的是:很多编程语言中都提供有数组这种数据类型,比如 C/C、Java、Go、C# 等。但本节我要讲解的不是作为…

frp构建多级网络代理

简介frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议,采用 Golang 编写,支持跨平台,仅需下载对应平台的二进制文件即可执行,没有额外依赖。frp可以将内网服务以安全、便捷的方…

Idea 中【Maven】的环境配置

目录 一 maven 项目管理工具软件二.首先要安装Jdk1.7/8 和IDEA三.在IDEA中配置maven四.在MavenDemo01下 创建多个模块项目四.Jar包依赖 插件五.运用一 maven 项目管理工具软件 1 . Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具…

MQ如何保证消息不丢失

如何保证消息不丢失 哪些环节会造成消息丢失 其实主要就是跨网络的环境中需要考虑消息的丢失,主要是有以下几个方面 生产者往MQ发送消息MQ的Broker是集群有主从的,主节点把消息同步到从节点时也需要考虑消息丢失问题消息从内存持久化到硬盘时&#xf…

软考高级系统架构师背诵要点---软件架构设计

软件架构设计 软件架构的概念: 软件架构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、这些元素的相互作用、指导元素集成的模式及这些模式的约束组成 软件架构41视图: 逻辑视图:主要是整个系统的抽…

Java基础:面向对象

一、设计对象并使用 二、封装 对象代表什么,就得封装对应的数据,并提供数据对应的行为。 1.private关键字:priviate修饰的成员变量只能在本类中访问。 2.this关键字:能够直接对应成员变量(当局部变量名相同时)。 3. 构造方法…

【Linux】十分钟快速了解Linux常用指令(建议收藏)

目录💖一. 关机指令01. shutdown02. halt03. reboot💖二. 常用指令04. ls05. pwd06. cd07. touch08. mkdir09. rm10. man11. cp(复制)12. mv指令13. nano14. cat15. less16. head17. tail18. find19. grep20. zip/unzip21. tar💖三、 日期指令…

JS 中 reduce()方法及使用详解

reduce()方法可以搞定的东西特别多,就是循环遍历能做的,reduce都可以做,比如数组求和、数组求积、统计数组中元素出现的次数、数组去重等等。 reduce() 方法对数组中的每个元素执行一个由您提供的reduce函数(依次执行),将其结果汇…

Python字符串分割方法【心得总结】

Python中字符串分割的常用方法 是直接调用字符串的str.split方法, 但是其只能指定一种分隔符, 如果想指定多个分隔符拆分字符串需要用到re.split方法 (正则表达式的split方法) 源码资料电子书:点击此处跳转文末名片获取 str.spli…

OAuth2简单介绍

目录 一、什么是OAuth2 二、OAuth2中的角色 1、资源所有者 2、资源服务器 3、客户 4、授权服务器 三、认证流程 四、生活中的OAuth2思维 五、令牌的特点 六、OAuth2授权方式 1、授权码 2、隐藏式 3、密码式 4、凭证式 一、什么是OAuth2 OAuth2.0是目前使用非常广…

7个高频出现的面试题

收集了2022年所有学生的面试题后,我整理出了7个高频出现的面试题,一起来看看。 高频问题1:请自我介绍下? 高频问题2:请介绍下最近做过的项目? 高频问题3:请介绍下你印象深刻的bug? 高…

Spring Batch 步骤对象-Chunk Tasklet

引言 接着上篇:Spring Batch 步骤对象-步骤Step与Tasklet 了解step步骤概念及其使用之后,本篇再来讲解spring batch使用更广,功能更强大的tasklet:居于块的批处理步骤:Chunk Tasklet 简介 居于chunk(块)的Tasklet相…

江西/杭州/黑龙江/深圳DAMA-CDGA/CDGP数据治理认证招生简章

2023年2月江西/杭州/黑龙江/深圳DAMA-CDGA/CDGP数据治理认证招生简章 DAMA认证为数据管理专业人士提供职业目标晋升规划,彰显了职业发展里程碑及发展阶梯定义,帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力,促进开展工作实践…

【笔记】质量保障体系

一、什么叫质量保障体系?质量保障体系,是指指贯穿研发流程进行的一系列质量活动。通过方案选型、策略决策、工具支撑、组织协同分工等,把质量活动进行系统化、标准化、流程化。其目的是保障业务质量。质量保障体系质量活动工具平台质量流程。二、紧贴业务…

【My Electronic Notes系列——正弦波振荡电路】

目录 序言: 🏆🏆人生在世,成功并非易事,他需要破茧而出的决心,他需要永不放弃的信念,他需要水滴石穿的坚持,他需要自强不息的勇气,他需要无畏无惧的凛然。要想成功&#…

每天10个前端小知识 【Day 1】

前端面试基础知识题 1. 什么是尾调用优化和尾递归? 尾调用的概念非常简单,一句话就能说清楚,就是指某个函数的最后一步是调用另一个函数。 function f(x){ return g(x); }上面代码中,函数f的最后一步是调用函数g,这…

Axios网络请求

哈喽~大家好,这篇来看看Axios网络请求。 ​文章推荐链接SpringCloud Sentinel 使用SpringCloud Sentinel 使用将Nacos注册到springboot使用以及Feign实现服务调用将Nacos注册到springboot使用以及Feign实现服务调用微服务介绍与 SpringCloud Eureka微服务介绍与 Sp…