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

news2024/11/30 4:57:20

【现代密码学】笔记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.coloradmin.cn/o/1392111.html

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

相关文章

Python多线程爬虫——数据分析项目实现详解

前言 「作者主页」:雪碧有白泡泡 「个人网站」:雪碧的个人网站 ChatGPT体验地址 文章目录 前言爬虫获取cookie网站爬取与启动CSDN爬虫爬虫启动将爬取内容存到文件中 多线程爬虫选择要爬取的用户 线程池 爬虫 爬虫是指一种自动化程序,能够模…

Java基础知识整理,驼峰规则、流程控制、自增自减

写在开头 本文接着上一篇文章续写哈。Java基础知识整理,注释、关键字、运算符 在这一篇文章中我们总结了包括注释、关键字、运算符的Java基础知识点,今天继续来聊一聊命名规则(驼峰)、流程控制、自增自减。 一、命名规则 上一…

pygame学习(三)——支持多种类型的事件

大家好!我是码银🥰 欢迎关注🥰: CSDN:码银 公众号:码银学编程 实时事件循环 为了保证程序的持续刷新、保持打开的状态,我们会创建一个无限循环,通常使用的是while语句,w…

第二百六十九回

文章目录 概念介绍设置方法示例代码内容总结 我们在上一章回中介绍了Card Widget相关的内容,本章回中将介绍国际化设置.闲话休提,让我们一起Talk Flutter吧。 概念介绍 我们在这里说的国际化设置是指在App设置相关操作,这样可以让不同国家的…

关于VScode的这个ssh的配置的经验

1.首先,我是因为重装了ubantu系统,不得不重新配置ssh 2.第一步,在本机的终端安装ssh插件: (1) (2)restart开启这个ssh端口 3.然后,就在vscode里面,安装哪个…

【Rust学习】安装Rust环境

本笔记为了记录学习Rust过程,内容如有错误请大佬指教 使用IDE:vs code 参考教程:菜鸟教程链接: 菜鸟教程链接: Rust学习 Rust入门安装Rust编译环境Rust 编译工具 构建Rust 工程目录 Rust入门 安装Rust编译环境 因为我已经安装过VSCode了&am…

【ArcGIS遇上Python】ArcGIS Python批量筛选多个shp中指定字段值的图斑(以土地利用数据为例)

文章目录 一、案例分析二、提取效果二、代码运行效果三、Python代码四、数据及代码下载一、案例分析 以土地利用数据为例,提取多个shp数据中的旱地。 二、提取效果 原始土地利用数据: 属性表: 提取的旱地:(以图层名称+地类名称命名)

mysql — 生产环境发布DDL之避坑操作onlineDDL

一、Mysql onLineDDL特性 1、Mysql 5.6 DDL MySQL 的 DDL(Data Definition Language) 包括增减字段、增减索引等操作。MySQL Online DDL 功能从 5.6 版本开始正式引入,发展到现在的 8.0 版本,那么在 MySQL 5.6 之前,MySQL 的 DDL 操作会按照…

Vue高级(二)

3.搭建vuex环境 创建文件:src/store/index.js //引入Vue核心库import Vue from vue//引入Vueximport Vuex from vuex//应用Vuex插件Vue.use(Vuex)//准备actions对象——响应组件中用户的动作const actions {}//准备mutations对象——修改state中的数据const mutat…

近4w字吐血整理!只要你认真看完【C++编程核心知识】分分钟吊打面试官(包含:内存、函数、引用、类与对象、文件操作)

🌈个人主页:godspeed_lucip 🔥 系列专栏:C从基础到进阶 🏆🏆关注博主,随时获取更多关于C的优质内容!🏆🏆 C核心编程🌏1 内存分区模型&#x1f384…

mac查看maven版本报错:The JAVA_HOME environment variable is not defined correctly

终端输入mvn -version报错: The JAVA_HOME environment variable is not defined correctly, this environment variable is needed to run this program. Java环境变量的问题,打开bash_profile查看 open ~/.bash_profile export JAVA_8_HOME/Library/Java/JavaVirtualMachine…

HCIA——12题目-1章选择

学习目标: 计算机网络 1.掌握计算机网络的基本概念、基本原理和基本方法。 2.掌握计算机网络的体系结构和典型网络协议,了解典型网络设备的组成和特点,理解典型网络设备的工作原理。 3.能够运用计算机网络的基本概念、基本原理和基本方法进行…

GaussDB(DWS)查询优化技术大揭秘

GaussDB(DWS)查询优化技术大揭秘 大数据时代,数据量呈爆发式增长,经常面临百亿、千亿数据查询场景,当数据仓库数据量较大、SQL语句执行效率低时,数据仓库性能会受到影响。本文将深入讲解在GaussDB(DWS)中如何进行表结构设计&#…

解密IP代理池:匿名访问与反爬虫的利器

当今互联网环境中,为了应对反爬虫、匿名访问或绕过某些地域限制等需求,IP代理池成为了一种常用的解决方案。IP代理池是一个包含多个可用代理IP地址的集合,可以通过该代理池随机选择可用IP地址来进行网络请求。 IP代理池是一组可用的代理IP地址…

实验八 排序算法的实现与分析

实验八 排序算法的实现与分析 一.实验目的 1.掌握常用的排序方法,并掌握用高级语言实现排序算法的方法; 2.深刻理解排序的定义和各种排序方法的特点,并能加以灵活应用; 3.了解各种方法的排序过程及其时间复杂度的分析方…

10- OpenCV:基本阈值操作(Threshold)

目录 1、图像阈值 2、阈值类型 3、代码演示 1、图像阈值 (1)图像阈值(threshold)含义:是将图像中的像素值划分为不同类别的一种处理方法。通过设定一个特定的阈值,将像素值与阈值进行比较,根…

单片机I/O口驱动MOS管

自记录: 看完本章,串起来看,看mos驱动电路这篇:MOS管驱动电流计算以及分立器件驱动电路-CSDN博客 使用单片机做一个PLC,输出可如下两种情况: 单片机I/O口驱动,为什么一般都选用三极管而不是MOS管&#xf…

【RTOS】快速体验FreeRTOS所有常用API(1)工程创建

目录 一、工程创建1.1 新建工程1.2 配置RCC1.3 配置SYS1.4 配置外设1)配置 LED PC132)配置 串口 UART13)配置 OLED I2C1 1.5 配置FreeRTOS1.6 工程设置1.7 生成代码1.8 keil设置下载&复位1.9 添加用户代码 快速体验FreeRTOS所有常用API&a…

第36期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区,集成了生成预训练Transformer(GPT)、人工智能生成内容(AIGC)以及大型语言模型(LLM)等安全领域应用的知识。在这里,您可以…

什么是用户态和内核态?用户态和内核态是如何切换的?

一、什么是用户态和内核态? 1.1、概述 用户态和内核态是操作系统的两种运行状态。 内核态:处于内核态的 CPU 可以访问任意的数据,包括外围设备,比如网卡、硬盘等,处于内核态的 CPU 可以从一个程序切换到另外一个程序…