浙大暑期密码学课程|可证明安全基础
视频地址:浙大暑期Crypto课程-Provable Security Basics( 上)、浙大暑期Crypto课程-Provable Security Basics( 下)
前言
本次课程由浙江大学的张秉晟老师带来,主要讲解密码学中的可证明安全理论基础。
现代密码学在20世纪70年代末得到发展,密码学可以用于保证机密性,完整性和认证,并广泛用于多个现代密码学原语中,如零知识证明,全同态加密等。
可证明安全
可证明安全主要分为以下三个步骤:
- 首先确定威胁模型
- 其次构造方案
- 最后给出一个正式的安全性证明
公钥加密始于1976年Diffie和Hellman的论文,并提出了DH密钥交换/协商,当然DH密钥协商的安全性并非完全建立在离散对数上,RSA的安全性也不完全建立在factoring(大数分解问题)上。
Textbook RSA
在这里我们要讲述的是Textbook RSA是不安全的,一般而言,需要对消息进行padding才可以使用相应的RSA方案。
- padding:与对称加密算法DES,AES一样,RSA算法也是一个块加密算法( block cipher algorithm),总是在一个固定长度的块上进行操作,即需要填充消息,但跟AES等不同的是,block length是跟key length有关的。
- 更多参考:RSA非对称加解密算法填充方式(Padding)
单向函数
接下来介绍了单向函数,在单向函数中,多项式时间的敌手没法快速地找到单向函数输出所对应的原像,以下是单向函数的定义和安全性博弈(Game)。
假设\(f(x)\)是一个单向函数,但是\(f(m)\)和\(f(m||r)\)都不是关于m的承诺方案,因为commitment需要保证hiding和binding,可能该输出会泄露m中的部分比特信息,但如果f是一个随机预言机(random oracle),那么\(f(m||r)\)是一个承诺。
DH密钥协商
以下是离散对数的定义,在离散对数中,给定一个生成元\(g\)和一个群元素\(g^x\),敌手无法在多项式时间内求解\(x\)。
以下PPT介绍的是基于DH的密钥协商协议,分为初始化阶段,密钥生成阶段和生成会话密钥阶段。
安全性证明
我们在证明DHKE安全性之前,需要确定DHKE在哪个假设之下是安全的,我们需要先确定安全性和假设,然后使用规约的方式来证明DHKE可以在多项式时间内被规约到特定假设,若该假设是困难的,则说明被证明的密码方案很难被攻破,就具有安全性。
- 首先我们需要先定义安全目标,在协议/算法执行过程中,敌手是谁,敌手的攻击能力和确定敌手的攻击目标。
- 敌手是:第三方
- 敌手攻击能力:窃听,猜测
- 敌手攻击目标:得到\(k=g^{st}\)
- 以下是关于密钥恢复(Key Recovery)算法的安全性的安全定义和安全模型。
规约理论
下图主要介绍了如何将DH密钥协商协议的安全性规约到特定的困难问题,最简单的方式是将DH密钥协商协议的安全性规约到离散对数问题,但是目前并不知道怎么样将密钥协商协议的安全性进行规约。
所以我们需要引入计算性的DH问题,简记为CDH,下图介绍了CDH的敌手攻击能力和对应的博弈。
离散对数(DL)和CDH的关系如下图所示,当CDH是困难的,那么DL是困难的,同时如果DL问题是困难的,CDH问题在某些条件下才是困难的,我们将采用该定理来实现安全性的规约。
规约其实就是假设某个问题是困难的,那么能够规约到该问题的原问题也是困难的,CDH和DL问题也是这样的关系,下图描述了他们之间的关系。
敌手无法获得密钥k,密钥协商只实现这种安全性是不够的,还需要敌手无法获得关于k的任何信息。
不可区分安全
这种性质常见的典型体现是一次一密,即每次使用一个新的随机密钥k,对m进行异或操作,给定密文c和随机值,敌手很难在多项式时间内判断哪个是随机值,哪个是密文。
该定义对应了不可区分安全,即敌手在多项式时间内无法确定特定数据,哪个是随机选取的,哪个是正确生成的,如下图所示。
下图定义了不可区分(IND)的模型,同时为后续证明DH在DDH上实现IND安全先行进行了描述。
然后下图定义了决定性DH问题,简记为DDH,该问题相对于CDH而言,在安全性证明规约中更通用,下图是DDH问题的敌手攻击能力和博弈描述。
张老师最后给出了详细的推导和证明过程,详情请见视频。
标签:DH,规约,浙大,敌手,暑期,密钥,密码学,安全性 From: https://www.cnblogs.com/pam-sh/p/17544337.html