密码学:可证明安全

这篇具有很好参考价值的文章主要介绍了密码学:可证明安全。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

观看浙江大学暑期crypto school讲座的可证明安全有感,总结如下:

目录

· 概述

· 公钥密码

· 单向函数

· 离散对数

· DH密钥协商协议

· 用可证明安全证明DH密钥协商协议的安全性


· 概述

可证明安全主要分为三个步骤:

  1. 确定威胁模型;

  2. 其次构造方案;

  3. 给出一个正式的安全性证明。

    可证明安全性 知乎,密码学随笔,密码学,安全

    注:可证明安全如果证出来安全,实际不一定安全。因为:

    ①assumption很可能被攻破;

    ②threat model可能和实际情况不一样;

    ③proof的过程可能有问题。

· 公钥密码

公钥加密始于1976年Diffie和Hellman的论文《New directions in Cryptography》,对于以下两个问题:

可证明安全性 知乎,密码学随笔,密码学,安全

 整个密码学的基础都基于假设。对于上图中的两个问题,前者为什么是安全的,因为它基于Diffie and Hellman assumption,后者为什么是安全的,因为它基于RSA assumption。(从严式/永真式)

RSA是一种典型的公钥加密算法,但我们从课本上学到到RSA并不是安全的,如下图所示。

可证明安全性 知乎,密码学随笔,密码学,安全

可证明安全性 知乎,密码学随笔,密码学,安全

一般而言,需要对消息进行padding(填充)才可以使用相应的RSA方案。这里我的理解是这样的:

  • 防止明文长度不足:RSA加密算法要求明文长度必须小于或等于密钥长度,因此需要对明文进行填充,使得明文长度等于密钥长度或者小于密钥长度。

  • 防止相同明文加密后生成相同密文:如果明文没有进行padding,那么相同的明文加密后会得到相同的密文,这样会导致安全性问题。通过padding可以防止相同的明文加密后生成相同的密文。

  • 增加安全性:padding可以使随机性更强,防止攻击者通过对密文的分析获得明文的信息。

RSA本身不算是一个公钥加密算法(这里不是很理解),但是明文经过padding以后,我们用one-way trapdoor function或者是trapdoor one way permutation去做一下,就是个公钥加密算法了,而它的安全性(比如CPA、CCA)取决于我们的padding,而能不能证出来取决于我们的proof。

下面介绍One Way function(单向函数)。

· 单向函数

单向函数是整个密码学里面最基础的一个假设(因为我们不知道one way function是否真的存在)。

在单向函数中,对于定义域内的任何,在多项式时间内一定是可以计算出来的,多项式时间的敌手也无法快速地找到单向函数输出所对应的原像。也就是以下定义:

可证明安全性 知乎,密码学随笔,密码学,安全

(上图图解:在密码学中,一般这样的我们叫做安全参数,为可忽略函数,而右边的Invert就是我们在论文中经常见到的“game”,这里game可以理解成:有一个challenger,有一个adversary,前者相当于是考官,后者相当于是考生,challenger出一些题让adversary做考试,通过adversary的behave来判断考试有没有通过,也就是game有没有win。这里为什么叫game,因为我们规定了adversary的能力,规定其能知道什么,不能知道什么,然后给出考试时间,比如两个小时要交卷)

言归正传,challenger先随意选一个(是位的二进制),然后计算。把安全参数和给adversary,让他选出一个,adversary选出以后,问challenger,是否等于,如果确实相等,那么敌手赢得这个game,否则输。这里有了一些新的认识:

  1. 这里adversary A不要求challenger严格回答出的值,我们的判断标准并不是A拿出的等不等于,而是A只需要回答出一个对应的一个原像就可以,而并不一定是challenger所选择的这个原像;

  2. 要在足够大的域(安全参数)里面去选。

 那么有了单向函数这个铺垫以后,我们不禁会思考:可以不可以用当作是的一个承诺呢? 

可证明安全性 知乎,密码学随笔,密码学,安全

是不能的。因为只是一个单向函数而已,不满足承诺的hiding特性。

ps: 密码学中的承诺都是满足两个性质的:

  1. hiding(隐藏性):根据的承诺不能推断出关于的任何信息;

  2. binding(捆绑性):没有的值是得不到的承诺的值的,而且一旦某个值被承诺,就无法更改。

而对于单向函数来说,如果我们知道的映射结果集比较小,或者是可能的取值很少,那么比较容易推断出的信息。单向函数的输出通常是与输入相对应的、确定性的值,这种输出很难被视为随机的或均匀分布的,那么攻击者可能会利用这些信息来推断出输入。

那么既然不可以作为的承诺,那我们是否可以用作为的一个承诺呢,如上图中问题2所示。这种看似安全的操作实质上hiding和binding一个也不满足。因为敌手可以通过尝试很多不同的去猜测的一些比特位的信息,可能该输出会泄露中的部分比特信息,不满足hiding;由于的值也不公开,那么其他参与者无法验证承诺的合法性。如果承诺的值被篡改,其他参与者也无法发现这种欺骗行为,不满足binding。但如果是一个随机预言机(random oracle),那么就可以是一个承诺。

· 离散对数

离散对数一般是基于group generator(群生成器,输入一个安全参数,输出一个group。但在实际中一般不使用,使用有说服力的公认的Security Group,比如我们对Group做定义,使其基于离散对数假设),离散对数假设的定义如下图中右下方所示:

可证明安全性 知乎,密码学随笔,密码学,安全

首先输入一个安全参数,group generator会产生一个循环群,它的阶数是,并且产生一个。随后从中均匀随机抽样出一个,再提供给敌手关于group的一些信息,看敌手是否能提供一个使得。上述概率式成立就表明在离散对数中给定一个生成元和一个群元素,敌手无法在多项式时间内求解出。

注:

  1. 在有些资料中,这里的概率没有减去默认赢的概率,原因是它本身就是一个可忽略的级别。

  2. 概率一般要加上绝对值,因为敌手如果错的概率达到一个不可忽略的级别,我们认为他也是有一定能力的。

· DH密钥协商协议

课程中主要是举了DH密钥协商协议的例子来进行可证明安全的证明。DH密钥协商协议分为初始化阶段,密钥生成阶段和生成会话密钥阶段,如下图所示:

可证明安全性 知乎,密码学随笔,密码学,安全

  1. Setup就是上述提到的group generator,将产生的group公开,双方都使用这个group;

  2. 两方分别产生一对公私钥对:和,然后相互交换公钥和的值;

  3. 在拥有了对方的公钥以后,双方用SK function产生最终的密钥:和。

那么DH密钥协商协议是安全的吗?

综上所述,我们判断xxx方案或协议是不是-安全的,需要先基于一个假设并定义其安全性。那么我们在证明DHKE安全性之前,需要确定DHKE在哪个假设之下是安全的,我们需要首先确定安全性和所基于的假设,然后使用规约的方式来证明DHKE可以在多项式时间内被规约到特定假设,若该假设是困难的,则说明被证明的密码方案很难被攻破,就具有安全性。如下图所示:

 

可证明安全性 知乎,密码学随笔,密码学,安全

· 用可证明安全证明DH密钥协商协议的安全性

首先我们需要先定义安全目标,在协议/算法执行过程中,敌手是谁,敌手的攻击能力和确定敌手的攻击目标。在真实的实践中,如下图所示我们认为敌手就是中间的黑客,他所能知道的信息有:、和,他只能看到这些信息,不能对其进行篡改和操作,他的目标是猜到最终的密钥。这里假设双方都是诚实的,并无作恶。

\

可证明安全性 知乎,密码学随笔,密码学,安全

 由于敌手要做的是密钥恢复,以下是关于密钥恢复(Key Recovery)算法的安全性的安全定义和安全模型:

可证明安全性 知乎,密码学随笔,密码学,安全

那接下来我们如何证明安全性呢?首先要找assumption,而上述只介绍了离散对数假设问题,那么能不能把DH密钥协商的协议规约到离散对数问题呢?很显然是不可以的。

可证明安全性 知乎,密码学随笔,密码学,安全

如上图所示,获得密钥是敌手的目标,和都是私钥,和是公钥。如果DL假设不成立,那么给出和,敌手是能获得和的,那么有了双方的公钥和,再加上现在已经有了和,那么就能够计算出最终的密钥了。但是现在面临的问题是敌手拥有和,通过上图中的两条黑色的线,为什么获得不了。那么这并不是一个离散对数问题了,把这个问题规约到DL assumption是不会成功的。

所以我们需要引入计算性的DH问题,简记为CDH(CDH assumption讲的就是DHKE is secure,那么就回到了从严式/永真式的问题,通俗来讲就是把刚刚的密钥恢复用Diffle-Hellman的语言再写一遍),下图介绍了CDH的敌手攻击能力和对应的博弈。

可证明安全性 知乎,密码学随笔,密码学,安全

 离散对数(DL)和CDH的关系如下图所示,当CDH是困难的,那么DL是困难的,同时如果DL问题是困难的,CDH问题在某些条件下才是困难的(结合上上幅图就很容易理解了)。我们将采用该定理来实现安全性的规约。

可证明安全性 知乎,密码学随笔,密码学,安全

 

可证明安全性 知乎,密码学随笔,密码学,安全

注:上图中在绝大多数的情况下,adversary B需要我们自己去构造。标准的范式应该是:给定一个adversary A能去破解DL,我们需要构造一个adversary B使其能破解CDH。

规约其实就是假设某个问题是困难的,那么能够规约到该问题的原问题也是困难的。一般规约分为两个步骤:

  1. 给构造;

  2. 证明我们构造出的adversary真的可以赢得对应的game。

CDH和DL问题也是这样的关系,下图描述了他们之间的关系(CDH是困难的,那么DL也是困难的):

 

证明过程:

  1. 这里我们假设敌手A可以去破坏DL,这里的A我们可以就当一个黑盒来看,也就是给它一个的信息,它可以返回一个,使得。

  2. 敌手B想利用A这个黑盒去赢得CDH的game,那么基于他已经知道了和的信息,这里我们可以令和,B此时给出一个的信息给A,A输出一个,使得。

  3. 如果A猜的的值是正确的,那么此时的B只需要计算出就能破解出DHKE的密钥了(此时B能破解CDH的概率为1);如果A猜的的值是错的,那么B此时会随机选一个(此时B能破解CDH的概率为)。

综上所述,B赢得CDH的概率为:

可证明安全性 知乎,密码学随笔,密码学,安全

(此处令可证明安全性 知乎,密码学随笔,密码学,安全,这里的数量级比要高,所以也是可忽略的)

所以如果DL是不安全的,那么CDH一定是不安全的。如果CDH是困难的,那么DL也是困难的。

但是证明安全证明是安全的实际上也不一定是安全的,因为所基于的假设(敌手能做什么,能知道什么,goal是什么)可能太弱了。敌手无法获得密钥k,密钥协商只实现这种安全性是不够的,还需要敌手无法获得关于k的任何信息。

 

可证明安全性 知乎,密码学随笔,密码学,安全

于是我们很容易就想到one-time-pad,因为它的安全等级是perfect security,不基于任何假设。每次使用一个新的随机密钥,对进行异或操作,给定密文和随机值,敌手很难在多项式时间内判断哪个是随机值,哪个是密文。如下图所示: 

可证明安全性 知乎,密码学随笔,密码学,安全

但是如果我们知道每一个的每一个比特异或起来是多少,那我们也就知道每一个异或起来是多少,那这也造成了信息泄露。于是我们要去了解不可区分安全,也就是给出一个,敌手无法区分这个是随机选出来的一个假的值还是真实值。通俗来讲,也就是以的概率给敌手一个真实的密钥,以的概率给敌手一个假的密钥,敌手无法区分其真实性。如下图所示:

 

可证明安全性 知乎,密码学随笔,密码学,安全

基于此,我们需要对不可区分安全进行一个正式化的定义,下图定义了不可区分(IND)的模型(由于上文中已经介绍了game,这里不再重复解释,相信一定能看懂):

可证明安全性 知乎,密码学随笔,密码学,安全

ps:这里还有一种等价的定义,可以做一个对于真实的密钥值的experiment,再做一个对于假的密钥值的experiment,观察在这两个experiment中的behave是否相同,它们的概率差不了多少(可忽略)。

那我们是否能证明DHKE在基于CDH假设的情况下是满足IND secure的呢?显然不可以。于是我们要介绍一个新的假设:DDH Assumption。下图定义了决定性DH问题,简记为DDH,该问题相对于CDH而言,在安全性证明规约中更通用,安全性也更强(CDH的安全性是敌手不能恢复出整个key,而DDH的安全性是不能区分哪一个是真实的key)。下图是DDH问题的敌手攻击能力和博弈描述(也就是把上面的NIKE的IND security用DH的形式重新描述一遍):

可证明安全性 知乎,密码学随笔,密码学,安全

上图中是假的密钥,是真的,观察敌手是否能赢得game。

有了DDH假设,就能顺理成章地证明DHKE在基于CDH假设的情况下是满足IND secure的。文章来源地址https://www.toymoban.com/news/detail-787816.html

到了这里,关于密码学:可证明安全的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 密码学证明方案寒武纪大爆发——扩容、透明性和隐私的变革潜力

    前序博客有: ZKP大爆炸 本文主要参考: StarkWare 2023年6月博客 Cambrian Explosion of Cryptographic Proofs----The transformative potential for scalability, transparency, and privacy 2023年3月Eli Ben-Sasson在The 13th BIU Winter School on Cryptography - Blockchain Technologies的分享视频 A Cambrian Explosion of Cryptographic Proofs - E

    2024年02月11日
    浏览(43)
  • 【现代密码学】笔记3.1-3.3 --规约证明、伪随机性《introduction to modern cryphtography》

    主要在 哈工大密码学课程 张宇老师课件 的基础上学习记录笔记。 内容补充:骆婷老师的PPT 《introduction to modern cryphtography》–Jonathan Katz, Yehuda Lindell(现代密码学——原理与协议)中相关章节 密码学复习笔记 这个博主好有意思 B站视频 密码学原理《Introduction to modern Cryptog

    2024年01月20日
    浏览(47)
  • 对安全性证明中DH BDH等相关假设的理解(安全)

    密码学的安全本质上依赖于数学问题中的未解“难题”。注意,这些“难题”到目前为止还未找到一种多项式的解决算法,至于这种算法是否存在,未来能否被找到则是无法证明的。既然目前不存在一种多项式算法来解决某一难题,那我们就可以假设这个问题很难,在多项式

    2024年02月05日
    浏览(44)
  • 【11.10】现代密码学1——密码学发展史:密码学概述、安全服务、香农理论、现代密码学

    参考:密码学发展简史 骆婷老师的《现代密码学(32H)》课程,笔记+查找的资料补充 期末为闭卷考试的形式 密码学早在公元前400多年就已经产生,人类使用密码的历史几乎与使用文字的时间一样长,密码学的发展大致可以分为 3 个阶段: 1949年之前的古典密码学阶段; 1949 年

    2024年02月04日
    浏览(48)
  • 【密码学】量子安全的密码学算法以及原理介绍

    (1)“代数格密码套件”(CRYSTALS)包含两个密码原语Kyber和Dilithium。Kyber是一种抗适应性选择密文攻击(IND-CCA2)安全密钥封装机制,Dilithium是一种高度不可伪造性(EUF-CMA)安全数字签名算法。两种密码都是为了应对量子计算机的攻击,并且在操作过程中只需更改几个参数即

    2024年02月11日
    浏览(59)
  • 密码学与密码安全:理论与实践

    title: 密码学与密码安全:理论与实践 date: 2024/4/10 21:22:31 updated: 2024/4/10 21:22:31 tags: 密码学 加密算法 安全协议 密码分析 密码安全 实际应用 未来发展 密码学是研究如何保护信息安全的学科,旨在确保信息在传输和存储过程中不被未授权的人所访问、修改或破坏。密码学涉及

    2024年04月11日
    浏览(42)
  • 38_安全密码学

    对于非对称加密,他区分公钥和私钥 我们可以用 KeyPairGenerator 来为我们生成秘钥对。我们根据一个算法名称得到该生成器,调用 generateKeyPair() 来生成秘钥对 现在我们来生成下RSA算法的秘钥对 得到 KeyPair 对象,里面就能拿到公钥和私钥啦~~ 对于对称加密,加密和解密都用的用

    2024年02月03日
    浏览(72)
  • 网络安全密码学

    目录 一 古代密码学 1.替换法 2.移位法 3.古典密码学的破解方式 二 近代密码学 三 现代密码学 1.散列函数(哈希函数) 2.对称加密 3.非对称加密 四 如何设置密码才安全 1.密码不要太常见 2.各个应用软件里面的密码不要设置一样 3.在设置密码的时候,可以加一些特殊的标记 实

    2023年04月12日
    浏览(46)
  • 安全防御 --- APT、密码学

    深度包检测技术:将应用层内容展开进行分析,根据不同的设定从而做出不同的安全产品。 深度流检测技术:与APS画像类似。会记录正常流量行为,也会将某些应用的行为画像描述出来。也可将加密流量进行判断,并执行相应措施。 指一种高度专业化的网络攻击形式,攻击

    2023年04月11日
    浏览(37)
  • 38_安全密码学基础

    在了解安全密码学之前,我们需要补充一些额外知识。 是基于拉丁字母的一套电脑编码系统,就好像这些字符,对应的就是十进制的65 97,简单来说就是计算机没有办法识别字符,他只理解01二进制,所以用一个字符表,规定了什么字符用什么01表示。 PBE(Password Based Encrypt

    2024年01月21日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包