【现代密码学】笔记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.mzph.cn/news/633505.shtml

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

相关文章

深入vue响应式原理

当你把一个普通的 JavaScript 对象传入 Vue 实例作为 data 选项,Vue 将遍历此对象所有的 property,并使用 Object.defineProperty 把这些 property 全部转为 getter/setter。 这些 getter/setter 对用户来说是不可见的,但是在内部它们让 Vue …

Docker 47 个常见故障的原因和解决方法

本文针对Docker容器部署、维护过程中,产生的问题和故障,做出有针对性的说明和解决方案,希望可以帮助到大家去快速定位和解决类似问题故障。 Docker是一种相对使用较简单的容器,我们可以通过以下几种方式获取信息: 1、…

简单理解自动驾驶-看这篇够了!

本文主要介绍自动驾驶技术的整体框架,旨在从宏观理解自动驾驶技术。 🎬个人简介:一个全栈工程师的升级之路! 📋个人专栏:自动驾驶技术 🎀CSDN主页 发狂的小花 🌄人生秘诀&#xff1a…

第6章 现代通信技术

文章目录 6.1 图像与多媒体通信6.1.1 图像通信6.1.2 多媒体通信技术1、多媒体通信概念2、多媒体通信的组成3、多媒体通信的业务分类4、实用化的多媒体通信系统类型5、多媒体通信应用系统(1)多媒体会议电视系统(2)IPTV 6.2 移动通信…

【机器学习300问】12、为什么要进行特征归一化?

当线性回归模型的特征量变多之后,会出现不同的特征量,然而对于那些同是数值型的特征量为什么要做归一化处理呢? 一、为了消除数据特征之间的量纲影响 使得不同指标之间具有可比性。例如,分析一个人的身高和体重对健康的影响&…

每日一题——LeetCode1252.奇数值单元格的数目

进阶:你可以设计一个时间复杂度为 O(n m indices.length) 且仅用 O(n m) 额外空间的算法来解决此问题吗? 方法一 直接模拟: 创建一个n x m的矩阵,初始化所有元素为0,对于indices中的每一对[ri,ci],将矩…

多色女童家居服,柔软细腻超舒适

柔软细腻到不想脱下来的 优可丝面料家居服来啦 精挑细选的可爱印花图案 让宝贝能够更快乐的进入梦乡 长度也是刚刚好合适 春夏交替的季节,建议多入几件换着穿

【新书推荐】Web3.0应用开发实战(从Web 2.0到Web 3.0)

第一部分 Flask简介 第1章 安装 1.1 创建应用目录 1.2 虚拟环境 1.2.1 创建虚拟环境 1.2.2 使用虚拟环境 1.3 使用pip安装Python包 1.4 使用pipregs输出包 1.5 使用requirements.txt 1.6 使用pipenv管理包 第2章 应用的基本结构 2.1 网页显示过程 2.2 初始化 2.3 路由和视图函数…

【C语言基础考研向】06运算符与表达式

文章目录 1.运算符分类 2.算术运算符及表达式 3.关系运算符与关系表达式 4.c语言运算级优先级表 课后习题自测 1.运算符分类 语言提供了13种类型的运算符,如下所示. (1)算术运算符( - * / %) . (2)关系运算符(>< >< l) . (3)逻辑运算符(l && ll) . (4)位…

一文了解【完全合作关系】下的【多智能体强化学习】

处于完全合作关系的多智能体的利益一致&#xff0c;获得的奖励相同&#xff0c;有共同的目标。比如多个工业机器人协同装配汽车&#xff0c;他们的目标是相同的&#xff0c;都希望把汽车装好。 在多智能体系统中&#xff0c;一个智能体未必能观测到全局状态 S。设第 i 号智能体…

c语言:用一个宏,可以将一个整数的二进制位的奇数位和偶数位交换。

题目 用一个宏&#xff0c;可以将一个整数的二进制位的奇数位和偶数位交换。 如&#xff1a;01&#xff0c;是1&#xff0c;交换完是10&#xff0c;是2. 思路 1.分别取出奇数位上的数字和偶数位上的数字 举个例子&#xff1a;1001 0110 1001 0110 奇…

javaScript设计模式-工厂

它的好处是消除对象间的耦合度&#xff0c;在派生子类时提供了更大的灵活性。但盲目的把普通的构造函数扔在一边&#xff0c;并不值得提倡。如果要采一不可能另外换用一个类&#xff0c;或都不需要在运行期间在一系列可互换的类中进行选择&#xff0c;就不应该使用。这样在后期…

基于android的违章处理APP 前后端服务 -毕业设计

基于android的违章处理APP 该项目是基于android版本的违章处理APP&#xff0c;系统包含前端android服务和后端web服务&#xff0c;内容和技术都是目前比较流行的架构。 技术介绍 前端android端&#xff1a; jdk17 gradle8.0 android studio 采用2023版本 后端web端&#xff…

手动添加测试用例配置输入参数和期望值

1.选中函数&#xff0c;点击右键选择插入测试用例。这里所选择的插入测试用例区别于之前的测试用例的地方在于&#xff0c;这里插入测试用例是手动配置的&#xff0c;之前的是自动生成的。手动配置可以自定义选择输入参数和期望值。 2.添加测试用例后&#xff0c;点击测试用例&…

FTP文件传输与vsftpd配置

一 存储类型 直连式存储DAS 适用于那些数据量不大&#xff0c;对磁盘访问速度要求较高的中小企业 存储区域网络SAN 用来存储非结构化数据&#xff0c;虽然受限于以太网的速度&#xff0c;但是部署灵活&#xff0c;成本低 网络附加存储NAS 适用于大型应用或数据库系统&…

进程间通信之利用命名管道进行通信

文章目录 什么是命名管道命名管道的作用有什么命名管道的特点和用法是什么命名管道与匿名管道有什么区别匿名管道相较于命名管道的局限性 命名管道如何使用代码 什么是命名管道 命名管道&#xff08;Named Pipe&#xff09;&#xff0c;也被称为FIFO&#xff08;First In, Fir…

宝藏排序1

题目 冒泡排序 import java.util.Arrays; import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int n sc.nextInt();sc.nextLine();int[] res new int[n];for(int i0;i<n;i)res[i] sc.nextInt()…

C语言——整数和浮点数在内存中的存储

目录 一、整数在内存中的存储 二、大小端字节序和字节序判断 2.1 什么是大小端&#xff1f; 2.2 为什么有大小端? 2.3 练习 2.3.1 练习1 2.3.2 练习2 三、浮点数在内存中的存储 3.1练习 3.2 浮点数的存储 3.2.1浮点数存的过程 3.2.2浮点数取的过程 3.3 题目解…

provide和inject快速上手

应用案例 代码 点击弹窗1按钮&#xff0c;弹窗2出现 父组件 provide注入数据 // 弹窗1<Event ></Event> // 弹窗2<EventEvaluation v-if"isShowEventEvaluation"></EventEvaluation>const isShowEventEvaluation falseconst isShowEvent…

数学建模-预测人口数据

目录 中国09~18年人口数据 创建时间 绘制时间序列图 使用专家建模器 得到结果 预测结果 残差的白噪声检验 中国09~18年人口数据 创建时间 路径&#xff1a;数据-> 定义日期和时间 绘制时间序列图 使用专家建模器 看看spss最终判断是那个模型最佳的契合 得到结果 预…