密码学-08(1)公钥加密理论

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 r i v K A , Π e a v = 1 \mathsf{PrivK}^{\mathsf{eav}}_{\mathcal{A},\Pi}=1 PrivKA,Π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/DH ECC
    56 512 112
    80 1024 160
    112 2048 224
    128 3072 256
    192 7680 384
    256 15360 512
  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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值