【现代密码学】笔记9-10.3-- 公钥(非对称加密)、混合加密理论《introduction to modern cryphtography》

【现代密码学】笔记9-10.3-- 公钥(非对称加密)、混合加密理论《introduction to modern cryphtography》

  • 写在最前面
  • 8.1 公钥加密理论
    • 随机预言机模型(Random Oracle Model,ROM)

写在最前面

主要在 哈工大密码学课程 张宇老师课件 的基础上学习记录笔记。

内容补充:骆婷老师的PPT
《introduction to modern cryphtography》–Jonathan Katz, Yehuda Lindell(现代密码学——原理与协议)中相关章节
密码学复习笔记 这个博主好有意思

初步笔记,如有错误请指正

快速补充一些密码相关的背景知识


请添加图片描述

8.1 公钥加密理论

  1. 本节学习用于保护信息的完整性和真实性的消息认证码(MAC)和抗碰撞的哈希函数(CRHF)。

  2. 目录:公钥加密的定义和安全,陷门排列,选择密文攻击安全,在随机预言机模型中从陷门排列到公钥加密。

  3. 私钥密码学局限性

    • 密钥分发需要通信各方在物理上会面;
    • U U U个用户的密钥的数量 Θ ( U 2 ) \Theta(U^2) Θ(U2)
    • 开放系统的安全通信:基于私钥密码学的解决方案无法充分处理开放系统中的安全通信问题,在开放系统中通信各方不能物理上会面,或只能暂时交互;
    • 注:私钥密码学中的一个核心问题就是密钥分发与管理问题。
  4. Needham-Schroeder 协议

    • Needham–Schroeder Symmetric Key Protocol:在开放网络中双方通过一个可信的第三方建立一个会话密钥(session key);
    • 密钥分发中心(Key Distribution Center,KDC)作为可信的第三方(Trusted Third Party,TTP),与通信双方Alice和Bob在事前分别建立了对称密钥;
    • KDC根据Alice的请求,生成一个新的 k k k 会话密钥(session key),分别用与Alice和Bob分别共享的密钥来加密并发送给Alice; E B o b ( k ) E_{Bob}(k) EBob(k) 作为一个来访问Bob所需的凭证(ticket);
    • 用于MIT’s Kerberos 协议 (in Windows);
    • 优点:每一方只需要存储一个密钥;不需要更新通信双方密钥(因为采用新的会话密钥);
    • 弱点:单点失效,一旦KDC被破坏,则整个系统都不安全。
  5. Merkle难题(无需可信第三方的密钥交换)

    • Alice准备 2 32 2^{32} 232 个难题 P u z z l e i \mathsf{Puzzle}_i Puzzlei,并且发送给Bob;难题如下:

      P u z z l e i ← E n c ( 0 96 ∥ p i ) ( “Puzzle #” x i ∥ k i ) , \mathsf{Puzzle}_i \gets \mathsf{Enc}_{(0^{96}\|p_i)}(\text{``Puzzle \#''} x_i \| k_i), PuzzleiEnc(096pi)(“Puzzle #”xiki),,其中 E n c \mathsf{Enc} Enc 是 128位加密, p i ← { 0 , 1 } 32 p_i \gets \{0,1\}^{32} pi{0,1}32 并且 x i , k i ← { 0 , 1 } 128 x_i,k_i \gets \{0,1\}^{128} xi,ki{0,1}128

      注:每个难题中明文包括一个随机数和一个密钥,用一个密钥加密;

    • Bob随机选择一个难题 P u z z l e j \mathsf{Puzzle}_j Puzzlej,并且在 2 32 2^{32} 232 时间内猜测 p j p_j pj ,获得 x j , k j x_j,k_j xj,kj 并将 x j x_j xj 发送给 Alice。

    • Alice 按照 x j x_j xj查询谜题,并且使用 k j k_j kj 作为密钥。

    • 敌手需要 2 32 + 32 2^{32+32} 232+32 时间,是诚实方所需时间复杂性的二次方。

    • 在诚实方和敌手之间存在更好的差距吗?如果将加密方法看作是一个黑盒预言机,那么二次差距是最好的。

    • Merkle难题的缺点是谜题数量太大,获得密钥的代价太大;

    • 注:Merkle当时是UC的一名本科生,这是他的一门课程设计申请。

  6. 公钥革命

    • 在1976年,Whitfield Diffie 和 Martin Hellman 发表了 “New Directions in Cryptography” (密码学的新方向)。在这篇论文中,提出公钥加密方案、陷门(Trap door)和数字签名等概念。论文原文链接
    • 非对称(Asymmetric)或公钥(public-key)加密方案:
      • 公钥(Public key)作为加密密钥;(注:接收方产生,发送方持有)
      • 私钥(Private key)作为解密密钥; (注:接收方产生,接收方持有)
    • 公钥原语(Public-key primitives):
      • 公钥加密(Public-key encryption)
      • 数字签名(Digital signatures) (不可抵赖性,non-repudiation)
      • 交互式密钥交换(Interactive key exchange)
    • 优点:
      • 在公开信道上密钥分发
      • 减少保存大量密钥的需求
      • 使得在开放系统的安全成为可能
    • 缺点:慢两到三个数量级,针对公钥分发的主动攻击
      • 注:如何保证Alice得到的公钥真的是Bob的公钥?
  7. 公钥加密定义

    • 密钥生成(Key-generation)算法: ( p k , s k ) ← G e n (pk,sk) \gets \mathsf{Gen} (pk,sk)Gen, 密钥长度 ≥ n \ge n n
    • 明文空间: M \mathcal{M} M p k pk pk 相关;(注:公钥加密方案通常以数学难题为基础,明文与公钥之间并不完全独立)
    • 加密(Encryption)算法: c ← E n c p k ( m ) c \gets \mathsf{Enc}_{pk}(m) cEncpk(m).
    • 解密(Decryption)算法: m : = D e c s k ( c ) m:= \mathsf{Dec}_{sk}(c) m:=Decsk(c), 或者输出 ⊥ \perp .
    • 需求: Pr ⁡ [ D e c s k ( E n c p k ( m ) ) = m ] ≥ 1 − n e g l ( n ) \Pr[\mathsf{Dec}_{sk}(\mathsf{Enc}_{pk}(m)) = m] \ge 1 - \mathsf{negl}(n) Pr[Decsk(Encpk(m))=m]1negl(n). (注:公钥加密方案通常以数学难题为基础,存在解密不成功的可能。)
  8. 对窃听者的安全 = CPA

    • 由于公钥是公开的,敌手不仅能窃听,而且能够加密任意明文。
    • 在敌手和挑战者间窃听不可区分实验 P u b K A , Π e a v ( n ) \mathsf{PubK}^{\mathsf{eav}}_{\mathcal{A},\Pi}(n) PubKA,Πeav(n):
      • 挑战者生成密钥 ( p k , s k ) ← G e n ( 1 n ) (pk,sk) \gets \mathsf{Gen}(1^n) (pk,sk)Gen(1n)
      • 敌手 A \mathcal{A} A 被给予 p k \mathbf{pk} pk 以及 E n c p k ( ⋅ ) \mathbf{\mathsf{Enc}_{pk}(\cdot)} Encpk() 预言机的访问,输出相同长度的 m 0 , m 1 m_0, m_1 m0,m1
      • 挑战者随机生成 b ← { 0 , 1 } b \gets \{0,1\} b{0,1}。将挑战密文 c ← E n c p k ( m b ) c \gets \mathsf{Enc}_{pk}(m_b) cEncpk(mb) 发送给敌手 A \mathcal{A} A
      • A \mathcal{A} A 继续访问预言机 E n c p k ( ⋅ ) \mathbf{\mathsf{Enc}_{pk}(\cdot)} Encpk() 并且输出 b ′ b' b
      • 如果 b ′ = b b' = b b=b A \mathcal{A} A 成功 P u b K A , Π e a v = 1 \mathsf{PubK}^{\mathsf{eav}}_{\mathcal{A},\Pi}=1 PubKA,Πeav=1,否则 0。
    • 定义: Π \Pi Π 是 CPA-secure, 如果 ∀ \forall ppt A \mathcal{A} A, ∃ \exists n e g l \mathsf{negl} negl 使得 Pr ⁡ [ P u b K A , Π c p a ( n ) = 1 ] ≤ 1 2 + n e g l ( n ) \Pr\left[\mathsf{PubK}^{\mathsf{cpa}}_{\mathcal{A},\Pi}(n)=1\right] \le \frac{1}{2} + \mathsf{negl}(n) Pr[PubKA,Πcpa(n)=1]21+negl(n)
  9. 公钥加密的安全属性

    • 对称加密可以加密32比特消息,产生32比特密文,例如,使用一次一密。在公钥系统中能够做到同样的吗?
    • 一个确定性的公钥加密方案在窃听者出现时是安全的?
    • 如果 Π \Pi Π 在窃听者出现时是安全的,那么 Π \Pi Π 也是CPA安全的? 是否是多重加密安全的?
    • 完美保密的公钥加密是可能的吗?(注:不可能)
  10. 密钥长度比较

    NIST(美国国家标准技术研究所)推荐可比较的密钥长度 (按比特) 。NIST 认为一个112比特的有效密钥长度直到2030年是可接受的,但是推荐 128 比特或更长的密钥。

    对称密钥(AES)RSA/DHECC
    56512112
    801024160
    1122048224
    1283072256
    1927680384
    25615360512
  11. 混合加密(Hybrid Encryption)构造

    • 为了加速加密,采用私钥加密方案 Π ′ \Pi' Π (数据封装机制,data-encapsulation mechanism, DEM) 与公钥加密方案 Π \Pi Π (密钥封装机制, key-encapsulation mechanism, KEM) 一起。
    • Π h y = ( G e n h y , E n c h y , D e c h y ) \Pi^{\mathsf{hy}} = (\mathsf{Gen}^{\mathsf{hy}}, \mathsf{Enc}^{\mathsf{hy}}, \mathsf{Dec}^{\mathsf{hy}}) Πhy=(Genhy,Enchy,Dechy):
    • G e n h y \mathsf{Gen}^{\mathsf{hy}} Genhy: ( p k , s k ) ← G e n ( 1 n ) (pk,sk) \gets \mathsf{Gen}(1^n) (pk,sk)Gen(1n). 注:只需提前生成公钥加密方案所需密钥
    • E n c h y \mathsf{Enc}^{\mathsf{hy}} Enchy: p k pk pk and m m m.
      • k ← { 0 , 1 } n k \gets \{0,1\}^n k{0,1}n. 注:生成私钥加密密钥
      • c 1 ← E n c p k ( k ) c_1 \gets \mathsf{Enc}_{pk}(k) c1Encpk(k), c 2 ← E n c k ′ ( m ) c_2 \gets \mathsf{Enc}'_{k}(m) c2Enck(m). 注:用公钥加密的公钥加密私钥加密密钥,用私钥加密密钥加密消息。
    • D e c h y \mathsf{Dec}^{\mathsf{hy}} Dechy: s k sk sk and ⟨ c 1 , c 2 ⟩ \langle c_1,c_2\rangle c1,c2.
      • k : = D e c s k ( c 1 ) k := \mathsf{Dec}_{sk}(c_1) k:=Decsk(c1). 注:用公钥加密中私钥解密获得私钥加密密钥
      • m : = D e c k ′ ( c 2 ) m := \mathsf{Dec}'_k(c_2) m:=Deck(c2). 注:用私钥加密密钥获得明文
    • 问题:混合加密方案是公钥加密还是私钥加密?
  12. 混合加密安全

    • 定理:如果 Π \Pi Π 是一个CPA安全的公钥加密方案,并且 Π ′ \Pi' Π 是窃听者不可区分的私钥加密方案,那么 Π h y \Pi^{\mathsf{hy}} Πhy 是CPA安全的公钥加密方案。
    • 这里对于私钥加密方案的安全性要求只是窃听者不可区分的,不要求是CPA安全的,因为私钥加密密钥是每次加密时随机产生的新密钥,私钥加密的加密预言机提供的结果无法被利用。
    • 整个方案安全证明的思路是利用各方案之间不可区分性,以及不可区分性所具有的传递性(transitiviy)。
    • 目标是证明 (1) ⟨ p k , E n c p k ( k ) , E n c k ′ ( m 0 ) ⟩ \langle pk,\mathsf{Enc}_{pk}(k),\mathsf{Enc}_{k}'(m_0)\rangle pk,Encpk(k),Enck(m0) 与(2) ⟨ p k , E n c p k ( k ) , E n c k ′ ( m 1 ) ⟩ \langle pk,\mathsf{Enc}_{pk}(k),\mathsf{Enc}_{k}'(m_1)\rangle pk,Encpk(k),Enck(m1) 之间对于不同明文的不可区分性。为此,先观察(1) ⟨ p k , E n c p k ( k ) , E n c k ′ ( m 0 ) ⟩ \langle pk,\mathsf{Enc}_{pk}(k),\mathsf{Enc}_{k}'(m_0)\rangle pk,Encpk(k),Enck(m0) 与(3) ⟨ p k , E n c p k ( 0 n ) , E n c k ′ ( m 0 ) ⟩ \langle pk,\mathsf{Enc}_{pk}(0^n),\mathsf{Enc}_{k}'(m_0)\rangle pk,Encpk(0n),Enck(m0) 之间对于不同公钥加密明文(私钥加密密钥)之间由于公钥加密方案不可区分性也是不可区分的;同理,(2) ⟨ p k , E n c p k ( k ) , E n c k ′ ( m 1 ) ⟩ \langle pk,\mathsf{Enc}_{pk}(k),\mathsf{Enc}_{k}'(m_1)\rangle pk,Encpk(k),Enck(m1) 与(4) ⟨ p k , E n c p k ( 0 n ) , E n c k ′ ( m 1 ) ⟩ \langle pk,\mathsf{Enc}_{pk}(0^n),\mathsf{Enc}_{k}'(m_1)\rangle pk,Encpk(0n),Enck(m1) 之间也是不可区分的。(3) ⟨ p k , E n c p k ( 0 n ) , E n c k ′ ( m 0 ) ⟩ \langle pk,\mathsf{Enc}_{pk}(0^n),\mathsf{Enc}_{k}'(m_0)\rangle pk,Encpk(0n),Enck(m0) 与(4) ⟨ p k , E n c p k ( 0 n ) , E n c k ′ ( m 1 ) ⟩ \langle pk,\mathsf{Enc}_{pk}(0^n),\mathsf{Enc}_{k}'(m_1)\rangle pk,Encpk(0n),Enck(m1) 之间由于私钥加密方案不可区分性也是不可区分的。最后,根据不可区分性所具有的传递性,证明混合加密方案的不可区分性。
  13. 混合加密范式应用

    • 共享文件访问,Alice用自己的对称密钥加密文件,Bob的公钥加密对称密钥
    • 密钥托管,Alice用托管服务器的公钥加密对称密钥,领导从托管服务器获得私钥来解锁
  14. 陷门函数(Trapdoor Function

    • 陷门函数(Trapdoor function): 易于计算,在缺乏特定信息(陷门)时难以求逆,即带有陷门的单向函数。
    • 1982年,姚期智在论文《Theory and Applications of Trapdoor Functions》中提出,从任意陷门函数中可构造一个公钥加密方案。
  15. 函数族(Families of Functions

    • Π = ( G e n , S a m p , f ) \Pi = (\mathsf{Gen}, \mathsf{Samp}, f) Π=(Gen,Samp,f) 是一个函数组,如果:
      • 参数生成(Parameter-generation)算法: I ← G e n ( 1 n ) I \gets \mathsf{Gen}(1^n) IGen(1n)。参数 I I I定义了定义域(domain) D I \mathcal{D}_I DI和值域(range) D R \mathcal{D}_R DR。注:这里产生了一个具体的函数参数。
      • 采样(sampling)算法: x ← S a m p ( I ) x \gets \mathsf{Samp}(I) xSamp(I),均匀随机地产生一个 x x x
      • 确定性赋值(evaluation)算法: y : = f I ( x ) y := f_I(x) y:=fI(x)
    • 这里强调采样算法是因为后面要学习的数论难题的输入是要满足某些条件的。
  16. 陷门排列族

    • 一组多项式时间算法 Π = ( G e n , S a m p , f , I n v ) \Pi = (\mathsf{Gen}, \mathsf{Samp}, f, \mathsf{Inv}) Π=(Gen,Samp,f,Inv) 是一个陷门排列族(family of trapdoor permutations,TDP),如果:
      • 参数生成(parameter generation)算法 G e n \mathsf{Gen} Gen, 输入 1 n 1^n 1n,输出 ( I , t d ) (I,\mathsf{td}) (I,td) ∣ I ∣ ≥ n |I| \ge n In。其中, ( I , t d ) (I, \mathsf{td}) (I,td) 定义了集合 D I = D t d \mathcal{D}_I = \mathcal{D}_{\mathsf{td}} DI=Dtd。注:陷门排列族是一个函数集合,参数生成算法产生一个具体陷门排列所需的参数。
      • G e n I \mathsf{Gen}_I GenI 只输出 I I I ( G e n I , S a m p , f ) (\mathsf{Gen}_I, \mathsf{Samp}, f) (GenI,Samp,f) 是 OWP。其中的 S a m p \mathsf{Samp} Samp是采样函数,用于获得函数的输入 x ← D I x \gets \mathcal{D}_I xDI
      • 一个确定性求逆算法 I n v \mathsf{Inv} Inv,对于 ∀ ( I , t d ) \forall (I,\mathsf{td}) (I,td) 并且 ∀ x ∈ D I \forall x \in \mathcal{D}_{I} xDI, $ \mathsf{Inv}_{\mathsf{td}}(f_I(x))=x$。注:可求逆
    • 核心断言:确定性多项式时间算法 h c \mathsf{hc} hc Π \Pi Π 的一个核心断言(hard-core predicate),如果 ∀ \forall ppt A \mathcal{A} A ∃ \exists n e g l \mathsf{negl} negl 使得 $ \Pr[\mathcal{A}(I,f_I(x)) = \mathsf{hc}_I(x)] \le \frac{1}{2} +\mathsf{negl}(n)$。
    • 定理:给定一个陷门排列族 Π = ( G e n , S a m p , f , I n v ) \Pi = (\mathsf{Gen}, \mathsf{Samp}, f, \mathsf{Inv}) Π=(Gen,Samp,f,Inv),则存在一个带有核心断言的陷门排列族 Π ^ = ( G e n ^ , S a m p , f , I n v ) \widehat{\Pi} = (\widehat{\mathsf{Gen}}, \mathsf{Samp}, f, \mathsf{Inv}) Π =(Gen ,Samp,f,Inv)。注:证明与单向函数部分关于核心断言的定理类似。
  17. TDP例题

    • 如果答案是肯定的,则需要反证法证明, f ′ f' f若不是TDP,那么 f f f也不是;
    • 如果答案是否定的,则需要给出一个有效的求逆方法。
  18. 从TDP到公钥加密方案

    • 从一个带有核心断言 h c \mathsf{hc} hc的陷门排列族 Π ^ = ( G e n ^ , S a m p , f , I n v ) \widehat{\Pi} = (\widehat{\mathsf{Gen}}, \mathsf{Samp}, f, \mathsf{Inv}) Π =(Gen ,Samp,f,Inv)来构造一个公钥加密方案:
      • G e n \mathsf{Gen} Gen: ( I , t d ) ← G e n ^ (I, \mathsf{td}) \gets \widehat{Gen} (I,td)Gen 输出公钥 I I I 和私钥 t d \mathsf{td} td
      • E n c \mathsf{Enc} Enc: 输入 I I I m ∈ { 0 , 1 } m \in \{0,1\} m{0,1},选择一个 x ← D I x\gets \mathcal{D}_I xDI 并且输出 ⟨ f I ( x ) , h c I ( x ) ⊕ m ⟩ \langle f_I(x), \mathsf{hc}_I(x)\oplus m \rangle fI(x),hcI(x)m
      • D e c \mathsf{Dec} Dec: 输入 t d \mathsf{td} td ⟨ y , m ′ ⟩ \langle y, m'\rangle y,m,计算 x : = f I − 1 ( y ) x:= f^{-1}_I(y) x:=fI1(y) 并且输出 h c I ( x ) ⊕ m ′ \mathsf{hc}_I(x)\oplus m' hcI(x)m
    • 定理:如果 Π ^ = ( G e n ^ , f ) \widehat{\Pi}=(\widehat{Gen},f) Π =(Gen ,f) 是 TDP,并且 h c \mathsf{hc} hc Π ^ \widehat{\Pi} Π 的 HCP ,那么构造 Π \Pi Π 是 CPA安全的。
    • 问题:这个方案是安全的吗? E n c I ( m ) = f I ( m ) \mathsf{Enc}_{I}(m) = f_I(m) EncI(m)=fI(m) D e c t d ( c ) = f I − 1 ( c ) \mathsf{Dec}_{\mathsf{td}}(c) = f^{-1}_I(c) Dectd(c)=fI1(c)
  19. 证明

    • h c I ( x ) \mathsf{hc}_I(x) hcI(x) 是伪随机的。将 A h c \mathcal{A}_{\mathsf{hc}} Ahc for h c \mathsf{hc} hc 规约到 A \mathcal{A} A for Π \Pi Π
    • Pr ⁡ [ A h c ( I , f I ( x ) ) = h c I ( x ) ] = \Pr[\mathcal{A}_{\mathsf{hc}}(I,f_I(x))=\mathsf{hc}_I(x)] = Pr[Ahc(I,fI(x))=hcI(x)]= 1 2 ⋅ ( Pr ⁡ [ b ′ = b ∣ z = h c I ( x ) ] + Pr ⁡ [ b ′ ≠ b ∣ z ≠ h c I ( x ) ] ) . \frac{1}{2}\cdot (\Pr[b'=b|z=\mathsf{hc}_I(x)]+\Pr[b'\neq b|z\neq \mathsf{hc}_I(x)]). 21(Pr[b=bz=hcI(x)]+Pr[b=bz=hcI(x)]).
    • 上面的公式的含义是 A h c \mathcal{A}_{\mathsf{hc}} Ahc成功得到核心断言包含两种情况:
      • z z z是核心断言,则 A \mathcal{A} A面对的是方案 Π \Pi Π A \mathcal{A} A成功( b ′ = b b'=b b=b),输出的 z z z就是核心断言;
      • z z z不是核心断言,则 A \mathcal{A} A面对的挑战密文与 Π \Pi Π中是相反的, A \mathcal{A} A失败( b ′ ≠ b b'\neq b b=b),输出的 z ‾ \overline{z} z就是核心断言;
  20. 证明(续)

    • Pr ⁡ [ b ′ = b ∣ z = h c I ( x ) ] = Pr ⁡ [ P u b K A , Π e a v ( n ) = 1 ] = ε ( n ) \Pr[b'=b|z=\mathsf{hc}_I(x)] = \Pr[\mathsf{PubK}^{\mathsf{eav}}_{\mathcal{A},\Pi}(n)=1]=\varepsilon(n) Pr[b=bz=hcI(x)]=Pr[PubKA,Πeav(n)=1]=ε(n)注: A \mathcal{A} A实验成功。
    • 如果 z ≠ h c I ( x ) z \neq \mathsf{hc}_I(x) z=hcI(x), m ′ = m b ⊕ h c ‾ I ( x ) = m b ‾ ⊕ h c I ( x ) m' = m_b\oplus \overline{\mathsf{hc}}_I(x) = m_{\overline{b}}\oplus \mathsf{hc}_I(x) m=mbhcI(x)=mbhcI(x),这意味着 m b ‾ m_{\overline{b}} mb 被加密了。
    • Pr ⁡ [ b ′ = b ∣ z ≠ h c I ( x ) ] = Pr ⁡ [ P u b K A , Π e a v ( n ) = 0 ] = 1 − ε ( n ) \Pr[b'=b|z\neq \mathsf{hc}_I(x)] = \Pr[\mathsf{PubK}^{\mathsf{eav}}_{\mathcal{A},\Pi}(n)=0]=1-\varepsilon(n) Pr[b=bz=hcI(x)]=Pr[PubKA,Πeav(n)=0]=1ε(n)注: A \mathcal{A} A实验失败了。
    • Pr ⁡ [ b ′ ≠ b ∣ z ≠ h c I ( x ) ] = ε ( n ) \Pr[b'\neq b|z\neq \mathsf{hc}_I(x)] =\varepsilon(n) Pr[b=bz=hcI(x)]=ε(n)
    • Pr ⁡ [ A h c ( I , f I ( x ) ) = h c I ( x ) ] = 1 2 ⋅ ( ε ( n ) + ε ( n ) ) = ε ( n ) \Pr[\mathcal{A}_{\mathsf{hc}}(I,f_I(x))=\mathsf{hc}_I(x)] = \frac{1}{2}\cdot (\varepsilon(n)+\varepsilon(n)) = \varepsilon(n) Pr[Ahc(I,fI(x))=hcI(x)]=21(ε(n)+ε(n))=ε(n)注:根据上一页的公式。
    • 至此,我们学习了基于陷门排列的公钥加密方案,但只能加密一个比特,如何加密一个更长的明文?后面学习随机预言机模型设定下的公钥加密方案。
  21. 在公钥设定中CCA情景

    • CCA
      • 敌手 A \mathcal{A} A 观察由 S \mathcal{S} S 发送给 R \mathcal{R} R 的密文 c c c
      • A \mathcal{A} A S \mathcal{S} S 或自己的名义发送 c ′ c' c R \mathcal{R} R
      • A \mathcal{A} A 根据从 c ′ c' c 中解密出的 m ′ m' m 来推断 m m m
    • 情景
      • 用口令来登陆在线银行:试错,从银行反馈中获得信息。
      • 邮件回复中包含解密出的文本的引用。
      • 密文的可锻造性,例如,在拍卖中将其他人的出价翻倍。
  22. 对CCA/CCA2的安全定义

    • CCA/CCA2 不可区分实验 P u b K A , Π c c a ( n ) \mathsf{PubK}^{\mathsf{cca}}_{\mathcal{A},\Pi}(n) PubKA,Πcca(n)
      • ( p k , s k ) ← G e n ( 1 n ) (pk,sk) \gets \mathsf{Gen}(1^n) (pk,sk)Gen(1n).
      • A \mathcal{A} A 给定输入 p k pk pk 和预言机访问 D e c s k ( ⋅ ) \mathsf{Dec}_{sk}(\cdot) Decsk(),输出相同长度的 m 0 , m 1 m_0, m_1 m0,m1
      • b ← { 0 , 1 } b \gets \{0,1\} b{0,1}。挑战密文 c ← E n c p k ( m b ) c \gets \mathsf{Enc}_{pk}(m_b) cEncpk(mb) A \mathcal{A} A
      • 在CCA2中, A \mathcal{A} A 除了 c c c 之外还可以访问 D e c s k ( ⋅ ) \mathsf{Dec}_{sk}(\cdot) Decsk(),并输出 b ′ b' b 。注:CCA 也被称作午餐攻击。CCA2 也被称为适应性的 CCA。
      • 如果 b ′ = b b' = b b=b,那么 A \mathcal{A} A 成功, P r i v K A , Π c c a = 1 \mathsf{PrivK}^{\mathsf{cca}}_{\mathcal{A},\Pi}=1 PrivKA,Πcca=1,否则 0。
    • Π \Pi Π 是 CCA/CCA2安全的,如果 ∀ \forall ppt A \mathcal{A} A, ∃ \exists n e g l \mathsf{negl} negl 使得 Pr ⁡ [ P u b K A , Π c c a ( n ) = 1 ] ≤ 1 2 + n e g l ( n ) \Pr\left[\mathsf{PubK}^{\mathsf{cca}}_{\mathcal{A},\Pi}(n)=1\right] \le \frac{1}{2} + \mathsf{negl}(n) Pr[PubKA,Πcca(n)=1]21+negl(n).
  23. 例题

  24. CCA2安全加密技术进展

    • 零知识证明(Zero-Knowledge Proof):复杂并不可实践。(例如,Dolev-Dwork-Naor)
    • 随机预言机模型(Random Oracle model):有效,但并不踏实 (将 CRHF 当作 RO)。 (例如,RSA-OAEP 和 Fujisaki-Okamoto)
    • DDH(决策性Diffie-Hellman)假设和UOWHF(全域单向哈希函数):大小扩展2倍,但可以在没有RO和ZKP场景下证明安全 (例如,Cramer-Shoup system)。
    • CCA2安全意味着明文感知(Plaintext-aware):敌手在不知道明文的情况下,不能产生有效的密文。
    • 开放问题:如何构造一个与“书本上RSA”一样有效的,基于RSA问题的CCA2安全的方案。

随机预言机模型(Random Oracle Model,ROM)

  1. 随机预言机模型(Random Oracle Model,ROM

    • 为了在实践中实现CPA安全和CCA安全的公钥加密方案,引入了一个更强大的随机对象,称为随机预言机(Random Oracle Model)。
    • 随机预言机(RO):一个真随机函数( H H H)对每个可能的查询回答一个随机应答。
      • 一致性:如果 H H H曾经在运行中为一个输入 x x x 输出 y y y,那么它一直对相同的输入输出相同的答案。
      • 无人“知道”整个函数 H H H
    • 随机预言机模型(ROM):存在一个公开的RO。与此相对的,不存在RO的情况,称作标准模型。
    • 方法论:在ROM中构造可证明的安全。
      1. 在ROM中,一个方案被设计并被证明是安全的。
      2. H H H 用一个哈希函数 H ^ \hat{H} H^,例如 SHA256。
    • 无人严格地声明随机预言机存在。
    • 存在某些方案,在ROM中被证明是安全的,但无论如何将随机预言机实例化都不是安全的。
    • 使用ROM,很容易实现可证明安全,同时通过正确的实例化来保持高效。
  2. ROM的简单例子

    • 由于RO “强大的随机性”,其可以充当或构造之前学习过得密码学原语,包括为单向函数、抗碰撞哈希函数、伪随机函数等。

    • 一个 RO 将 n 1 n_1 n1 比特输入映射为 n 2 n_2 n2 比特输出。

    • RO 作为 OWF,进行如下实验:

      1. 选择一个RO H H H

      2. 选择一个随机的 x ∈ { 0 , 1 } n 1 x \in \{0,1\}^{n_1} x{0,1}n1 ,并且赋值 y : = H ( x ) y := H(x) y:=H(x)

      3. 敌手 A \mathcal{A} A 被给予 y y y,如果输出 x ′ x' x: H ( x ′ ) = y H(x')=y H(x)=y,则成功;

        解释:如果敌手成功求逆,则意味着敌手“事先”询问过RO;

    • RO 作为 CRHF,进行如下实验:

      1. 选择一个RO H H H

      2. 敌手 A \mathcal{A} A 成功,如果其输出 x , x ′ x, x' x,x 满足 H ( x ) = H ( x ′ ) H(x)=H(x') H(x)=H(x) ,但是 x ≠ x ′ x\neq x' x=x

        解释:如果敌手找到碰撞,则意味着 H H H不是随机的,因为两个随机输出不可能相同。

    • 从一个RO构造PRF : n 1 = 2 n n_1=2n n1=2n, n 2 = n n_2=n n2=n.

      • F k ( x ) = def H ( k ∥ x ) , F_k(x) \overset{\text{def}}{=} H(k\| x), Fk(x)=defH(kx), ∣ k ∣ = ∣ x ∣ = n . |k|=|x|=n. k=x=n.

        解释:如果 F F F不是伪随机的,则 H H H也可以与真随机相区分。

  3. CPA安全

    • 思路:PubK CPA = PrivK + (Secret Key = TDP + RO)
    • 实现CPA安全的公钥加密方案,可以基于一个安全的私钥加密方案,其中私钥加密的密钥由RO得到,通过TDP传递生成密钥所用的随机量;
    • 构造:
      • G e n \mathsf{Gen} Gen: p k = I pk = I pk=I, s k = t d sk = \mathsf{td} sk=td.
      • E n c \mathsf{Enc} Enc: r ← { 0 , 1 } ∗ r \gets \{0,1\}^* r{0,1}, 输出 ⟨ c 1 = f I ( r ) , c 2 = H ( r ) ⊕ m ⟩ \langle c_1= f_I(r), c_2 = \mathsf{H}(r)\oplus m\rangle c1=fI(r),c2=H(r)m.
      • D e c \mathsf{Dec} Dec: r : = f t d − 1 ( c 1 ) r := f^{-1}_{\mathsf{td}}(c_1) r:=ftd1(c1), 输出 H ( r ) ⊕ c 2 \mathsf{H}(r)\oplus c_2 H(r)c2.
    • 定理:如果 f f f 是 TDP, 并且 H H H 是 RO,则构造是 CPA 安全的。
    • 解释:私钥加密方案只需要是窃听下安全,因为每次加密都是概率性的,每次私钥加密密钥都是重新生成的。该方案不是CCA安全的,因为篡改密文可以直接影响明文。
    • 用RO的必要性:由于 r r r的部分信息可能通过TPD泄漏,如果以一个PRG来替换掉RO,则由于种子的部分信息已知,PRG的输出也不在是伪随机的,加密方案也不再安全。
  4. 基于私钥加密的CCA安全

    • 思路:PubK CCA = PrivK CCA + (Secret Key = TPD + RO)
    • 实现CCA安全的公钥加密方案,可以基于一个CCA安全的私钥加密方案,其中私钥加密密钥由RO得到,通过TDP传递生成密钥所用的随机量;
    • 构造:
      • Π ′ \Pi' Π 是一个安全私钥加密方案。
      • G e n \mathsf{Gen} Gen: p k = I pk = I pk=I, s k = t d sk = \mathsf{td} sk=td.
      • E n c \mathsf{Enc} Enc: k : = H ( r ) , r ← D I k := H(r), r \gets D_I k:=H(r),rDI, 输出 ⟨ c 1 = f I ( r ) , c 2 = E n c k ′ ( m ) ⟩ \langle c_1= f_I(r), c_2 = \mathsf{Enc}'_k(m)\rangle c1=fI(r),c2=Enck(m).
      • D e c \mathsf{Dec} Dec: r : = f t d − 1 ( c 1 ) r := f^{-1}_{\mathsf{td}}(c_1) r:=ftd1(c1), k : = H ( r ) k:=H(r) k:=H(r), 输出 D e c k ′ ( c 2 ) \mathsf{Dec}'_k(c_2) Deck(c2).
    • 定理:如果 f f f 是 TDP, Π ′ \Pi' Π 是 CCA 安全的,并且 H H H 是 RO,那么构造是 CCA 安全的。
    • 解释:公钥加密方案的CCA安全性来自私钥加密方案的CCA安全性。
  5. 在ROM中基于TPD的CCA安全

    • 思路:PubK CCA = TDP + 2 RO (一个用于加密,一个用于MAC)
    • 实现CCA安全的公钥加密方案,可以通过RO来构造一个CPA安全的公钥加密方案,以明文和密文一起作为输入来生成MAC标签。
    • 构造:
      • G e n \mathsf{Gen} Gen: p k = I pk = I pk=I, s k = t d sk = \mathsf{td} sk=td
      • E n c \mathsf{Enc} Enc: r ← D I r \gets D_I rDI,输出 ⟨ c 1 = f I ( r ) , c 2 = H ( r ) ⊕ m , c 3 = G ( c 2 ∥ m ) ⟩ \langle c_1=f_I(r), c_2 = H(r)\oplus m, c_3=G(c_2\|m)\rangle c1=fI(r),c2=H(r)m,c3=G(c2m)
      • D e c \mathsf{Dec} Dec: r : = f t d − 1 ( c 1 ) r := f^{-1}_{\mathsf{td}}(c_1) r:=ftd1(c1), m : = H ( r ) ⊕ c 2 m := H(r)\oplus c_2 m:=H(r)c2。如果 G ( c 2 ∥ m ) = c 3 G(c_2\|m) = c_3 G(c2m)=c3 输出 m m m,否则 ⊥ \perp
    • 定理:如果 f f f 是 TDP, G , H G,H G,H 是 RO,那么构造是 CCA 安全的。
    • 解释:其CCA安全性在于对密文的任何篡改,都无法通过MAC验证。
  6. 私钥加密 vs. 公钥加密

    私钥加密公钥加密
    密钥双方接收者
    最弱攻击窃听者CPA
    概率性CPA/CCA一直
    对CPA的假设OWFTDP
    对CCA的假设OWFTDP+RO
    效率

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java Http各个请求类型详细介绍

1. 前言 在Spring Boot框架中,HTTP请求类型是构建Web应用程序的重要组成部分。常见的请求类型包括GET、POST、PUT和DELETE,每种类型都有其特定的用途和特点。本文将详细比较这四种请求类型,帮助您在开发过程中做出明智的选择。 2. GET请求…

Java SPI在数据库驱动、SpringBoot自动装配中的应用

文章目录 1. 初识SPI1.1 SPI的作用1.2 SPI的工作原理1.3 SPI的三个组件:Service、Service Provider、ServiceLoader1.4 SPI使用场景1.5 具体的SPI 源码分析(SPI的核心就是ServiceLoader.load()方法)1.6 SPI 的优缺点 2. API、SPI、JNDI释义3.…

《工具录》fierce

工具录 1:fierce2:选项介绍3:示例 本文以 kali-linux-2023.3-vmware-amd64 为例。 1:fierce fierce 是开源的网络安全工具,用于进行域名扫描和子域名枚举。 官方网址:https://github.com/mschwager/fierc…

基于springboot时间管理系统源码和论文

在Internet高速发展的今天,我们生活的各个领域都涉及到计算机的应用,其中包括时间管理系统的网络应用,在外国时间管理系统已经是很普遍的方式,不过国内的管理系统可能还处于起步阶段。时间管理系统具有时间管理功能的选择。时间管…

做好岗位设计,提升组织效率

科学地划分每个岗位,让员工明确自己的岗位职责,这样有利于提升组织的效率,减少无用功,充分发挥所有员工的正向作用。 案例素材来源于网络整理 某市电视台广告部审核科的主要职责是:广告内容审核、广告合同审核、广告播…

理解TCP/IP协议

一、协议 在计算机网络与信息通讯领域里,人们经常提及 “协议” 一词。互联网中常用的协议有HTTP、TCP、IP等。 协议的必要性 简单来说,协议就是计算机与计算机之间通过网络通信时,事先达成的一种 “约定”。这种“约定”使不同厂商的设备…

将图片添加到 PDF 的 5 种方法

需要一种称为 PDF 编辑器的特定工具才能将图片添加到 PDF。尽管大多数浏览器在查看和注释 PDF 文件方面都非常出色,但如果您使用图像到 PDF 技术,则只能将照片放入 PDF 中。无需修改即可将 PDF 文件恢复为原始格式的能力是使用此类软件程序甚至在线服务的…

Ensp AR/WLAN设备启动失败问题 错误代码41 解决方案

现象描述 启动AR设备之后,设备命令行无法接收输入,在长时间等待后一直输出“####”。启动AR/WLAN设备时,提示“…错误代码40…”。 检查虚拟网卡设置。 检查安装eNSP的PC上是否存在名为“VirtualBox Host-Only Network”的虚拟网卡。 - 如果…

MyBatis第三课

目录 回顾 #和$区别 #(预编译SQL)和$(即时SQL,它是进行的字符串拼接)的区别,其中之一就是预编译SQL和即时SQL的区别 原因: 回顾 两者的共同点 MaBits可以看作是Java程序和Mysql的沟通桥梁&…

[Kubernetes]7. K8s包管理工具Helm、使用Helm部署mongodb集群(主从数据库集群)

上一节讲解了[Kubernetes]6. k8s Pod配置管理ConfigMap & Secret以及传递环境变量的使用,k8s的命名空间以及使用kubens管理命名空间的使用,这里来介绍一下Helm的使用 一.Helm相关介绍 1.介绍 在 kubernetes 系统上部署容器化应用时需要事 先手动编写资源配置清单文件 以…

06-微服务OpenFeigh和Sentinel持久化

一、OpenFeign基础应用 1.1 概念 OpenFeign是一种声明式、模板化的HTTP客户端。在Spring Cloud中使用OpenFeign,可以做到使用HTTP请求访问远程服务,就像调用本地方法一样的,开发者完全感知不到这是在调用远程方法,更感知不到在访…

遭受慢速连接攻击怎么办?怎么预防

慢速连接攻击是一种常见的网络攻击方式,其原理是利用HTTP协议的特性,在建立了与Http服务器的连接后,尽量长时间保持该连接,不释放,达到对Http服务器的攻击。 慢速连接攻击的危害包括以下几个方面: 1.资源…

LeetCode刷题--- 删除并获得点数

个人主页:元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏 力扣递归算法题 http://t.csdnimg.cn/yUl2I 【C】 ​​​​​​http://t.csdnimg.cn/6AbpV 数据结构与算法 ​​​http://t.csdnimg.cn/hKh2l 前言:这个专栏主要讲述动…

学习Java API(一):基础知识点一文通✅

推荐阅读 智能化校园:深入探讨云端管理系统设计与实现(一) 智能化校园:深入探讨云端管理系统设计与实现(二) 文章目录 推荐阅读API文档注释String类创建字符串拼接字符串格式化字符串String方法substring(…

SVN切换账户

前言(svn切换) 本文章简单写下SVN账户切换操作 linux 1.删除目录 ~/.subversion/auth/ 下的所有文件。 2.再次操作svn时可重新输入用户名和密码。 windows (1)在工程中单击右键,单击"TortoiseSVN"。 (2)选择"Setting"。 (3)选择&quo…

数据结构【树+二叉树】

目录 线性表和非线性表 树的概念 树的存储表示 二叉树的概念 特殊二叉树 满二叉树 完全二叉树 二叉树的性质 二叉树的存储结构 顺序存储 链式存储 本篇我们开始进入数据结构中【树】的学习。 线性表和非线性表 逻辑结构:人想象出来的物理结构&#xf…

计算机硬件 5.1机箱与电源

第五章 其他设备 第一节 机箱与电源 一、认识电源 1.功能:将普通交流电转换为直流电,再控制电压分别输出给不同部件。 2.分类: 3.供电插头: ①8Pin插头:为高档PCI-E显卡供电,或为较新的CPU供电&#xff…

04- OpenCV:Mat对象简介和使用

目录 1、Mat对象与IplImage对象 2、Mat对象使用 3、Mat定义数组 4、相关的代码演示 1、Mat对象与IplImage对象 先看看Mat对象:图片在计算机眼里都是一个二维数组; 在OpenCV中,Mat是一个非常重要的类,用于表示图像或矩阵数据。…

南京观海微电子----时序图绘制工具

Wavedrom 是一款功能强大且简单易用的文本转图表工具,被广泛应用于生成时序图、波形图等交互式波形。其特点在于使用简单的文本语法,使得开发人员能够以可视化的方式表示数字信号和时间序列数据。Wavedrom 的优势在于其高度灵活性和可扩展性,…

Java多线程并发篇----第十二篇

系列文章目录 文章目录 系列文章目录前言一、ReentrantLock二、Condition 类和 Object 类锁方法区别区别三、tryLock 和 lock 和 lockInterruptibly 的区别前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章…
最新文章