1. 前言

针对任伟译《现代密码学——原理与协议》这本书中,将reduction一词翻译成“规约”,根据笔者在网上查阅资料,最终认为翻译成“归约”更贴合实际。

在密码学中,如果给予敌手足够的时间,那么一个计算安全的密码加密方案迟早会有被攻破的一天。而实际上,为了证明某方案是计算安全的,需要证明该密码方案被攻破的时间下界。一般来说,即证明该密码方案不能在多项式时间内被攻破。

这又引出了另外一个更复杂的问题:如何证明一个密码加密方案无法在多项式时间内被攻破。而目前我们依然无法证明此类问题的下界。

因此取而代之,采取另一个策略:假设某个低层次难题很难解决,证明在此难题基础上的加密方案是安全的。这就是“归约证明”的基本思想。

2. 归约证明简述

上面提到,“归约证明”的基本思想即:假设某个低层次难题很难解决,证明在此难题基础上的加密方案是安全的。因此,针对“求证某加密方案的下界”问题被转化为“陈述一个显式规约,说明如何将任何概率不可忽略的且成功攻破该构造方案的有效敌手A,转化为成功解决该难题的有效算法A'”。

在这里说明:反证法不是“归约证明”所必需的。

《现代密码学——原理与协议》在3.1.3节中提到“归约证明”的解题概要是基于反证法实现的,这里简要叙述一遍:

待证:

假设难题X不能通过任何多项式时间算法以不是可忽略的概率被解决(通俗地说,即X不能在有效时间内被有效地解决),证明密码构造方案是安全的。

过程:

  • 现有有效敌手A攻击,此敌手成功的概率是
  • 构造有效算法“归约”A',该算法将敌手A作为子程序来使用,试图解开难题X。指定难题X的一个实例输入,算法A'会对A模拟一个的实例,要求满足:A'模拟的实例足够逼真,A无法区分此实例是A'模拟的还是本身;如果A成功攻破A'模拟的的实例,则A'可以以大于多项式倒数的概率解决难题X的实例。
  • 因此,如果不可忽略,则A'解决难题的X的概率也不可忽略。这与题设中的假设矛盾。
  • 总结:给定此关于难题X的假设,不存在有效敌手以不可忽略的概率解决构造方案

图解:

3. 定长对称密钥加密的敌手不可区分性

3.1 定长对称密钥加密方案

是带扩展因子的伪随机数生成器。

3.2 伪随机数生成器的伪随机性

对所有概率多项式时间的区分器,从中随机选取,从中随机选择种子,存在可忽略函数,满足

3.3 定长对称密钥加密方案的敌手不可区分性

是一个伪随机数生成器,则定长对称密钥加密方案在窃听者存在的情况下不可区分。

分析

分别创建两个情景: 敌手攻击和敌手攻击

  • 敌手攻击

伪随机数生成器生成字符串有两种方式:真随机和伪随机。随机地选择交给敌手来判断该是随机的还是伪随机的。若输出满足,则敌手成功。

因此有两种情况:

如果的是,则

如果的是,则敌手成功的概率表示为:

且伪随机数生成器满足

图解:

  • 敌手攻击

定义一个修改的加密方案,对应“一次一密”加密方案。

敌手生成两个长度为的字符串随机选择,计算密文交给来判断来自还是。若敌手判断正确,则成功。其中为明文。

如果随机获取,则类似于“一次一密”,有

如果由伪随机数生成器生成,则有,那么概率表示为:

如果下面不等式成立,就可以说明加密协议是安全的:

图解:

证明:记敌手攻击,敌手攻击

根据上面分析和“归约证明”的基本思想,正式说明逻辑命题等价式表示为:

将上面所述合并,由敌手来模拟敌手的挑战者(过程2)。图解如下:

如果随机获取,则

如果由伪随机数生成器生成,则

因为敌手的挑战者由区分器构造:当收到时,构造密文,然后将发送给。所以此时挑战成功的概率是相等的。

根据不等式

可得

即敌手无法区分两个消息所对应的密文,得证。

4. 参考文献

乔纳森.卡茨,耶胡达.林德尔著,任伟译,现代密码学——原理与协议,国防工业出版社,2017年第一版第4次印刷.

能否通俗地解释下密码学中的归约证明? - 知乎.

密码学归约证明——定长对称加密密钥的敌手不可区分性相关推荐

  1. 密码学归约证明——计数器CTR模式

    1. 计数器CTR模式 选择,计算,.不加密并作为密文的一部分发送. 2. CTR模式的CPA安全 若是,则模式是安全的. 挑战密文在实验中被加密时,设表示初始,表示加密挑战密文每个分组.要求从未被加 ...

  2. 密码学归约证明——选择明文攻击下的不可区分性

    1. 选择明文攻击不可区分性实验 运行生成密钥 :输出给敌手,敌手可以访问预言机,并输出一对长度相等的消息:选择一个随机比特 ,计算出挑战密文交给 ;敌手继续访问预言机,输出一个比特:如果 ,则,成功 ...

  3. 密码学归约证明——基于伪随机函数的消息鉴别码方案

    1. 消息鉴别码实验 运行得到密钥,即. 敌手获得输入,且能够访问预言机,最终输出,其中为消息的鉴别码.设为敌手访问预言机的问询集合. 当且仅当且,实验输出1.其中是鉴别码方案的验证方法. 如果一个消 ...

  4. 密码学归约证明——DH密钥交换协议在窃听者存在的情况下的安全性

    1. 密钥交换实验KEA,Πeav(n)KE^{eav}_{A,\Pi}(n)KEA,Πeav​(n) 持有1n1^n1n的通信方执行Π\PiΠ协议.之后得到通信双方发送的所有的消息的副本以及双方输出 ...

  5. 密码学归约证明——哈希签名范式的安全性

    1. 哈希碰撞发现实验HashcollA,H(n)Hashcoll_{A,H} (n)HashcollA,H​(n) 产生密钥s←Gen(1n)s\leftarrow Gen(1^n )s←Gen(1 ...

  6. 通俗地解释下密码学中的归约证明

    本文首发于本人的:能否通俗地解释下密码学中的归约证明? - ChainingBlocks的回答 - 知乎 https://www.zhihu.com/question/49441102/answer/ ...

  7. 周长为定长的所有平面四边形P中,面积最大的为正方形。

    UTF8gbsn 周长为定长的所有平面四边形P中,面积最大的为正方形. 如何来证明这个问题?我在这里采用一种探索模型来证明它.我这里不使用<几何原本>中的从已知到未知的一种证明方式.而是采 ...

  8. 最长字符子串c语言,c语言:最长对称子串(3种解决方案)

    问题描述: 输入一个字符串,输出该字符串中最大对称子串的长度.例如输入字符串:"avvbeeb",该字符串中最长的子字符串是"beeb",长度为4,因而输出为4 ...

  9. MySQL 学习笔记(12)— 数据类型(定长字符、变长字符、字符串大对象、数字类型、日期时间类型、二进制类型)

    MySQL 常见的数据类型有字符串类型.数字类型.时间类型.二进制类型.具体的分类如下图: 1. 字符串类型 字符串类型用于存储字符和字符串数据,主要包含三种具体的类型:定长字符串.变长字符串以及字符 ...

最新文章

  1. 洛谷P5273 【模板】多项式幂函数 (加强版)
  2. 循序渐进Python3(十一) --6--  Ajax 实现跨域请求 jsonp 和 cors
  3. 关于程序猿的学习方法的一些总结
  4. MemCached配置与缓存知识概述
  5. 惯用过程模型_惯用的Ruby:编写漂亮的代码
  6. Struts2之拦截器
  7. visio2013复制到word有多余白边_Visio虚线复制到word中变为实线的解决办法
  8. 编译错误: Too much data space used by DLL's in MODULES section
  9. pmp项目变更的流程图_PMP流程图
  10. java对象值传递和对象传递的总结
  11. jQuery 滚动条插件nicescroll 使用方法、常见配置和事件回调使用说明
  12. 一份王者荣耀的英雄数据报告
  13. 这家伙有点懒,还没有个性签名 :) --工具篇03
  14. [免费配音软件]配音助手1.0 阿里云配音软件
  15. spring tx:advice(转)
  16. 多模态AI浪潮来袭,或造福数亿视障人群
  17. TCP/IP协议分析实验
  18. mysql查姓_mysql查询
  19. Windows 配置Maven仓库
  20. 微信seo搜索精准引流怎么做呢?(案例效果图)

热门文章

  1. AutoCAD中程序化加载.NET程序集的方法
  2. 微信公众号开发本地调试【内网穿透】
  3. XML Publisher介绍
  4. 富士康计算机类笔试题,富士康笔试题目及答案
  5. “贫民窟”下的农民工
  6. date( 1day ) php,PHP_使用PHP的日期与时间函数技巧,PHP的日期时间函数date() 1,年- - phpStudy...
  7. 机器人瓦力有什么西方的风格_机器人瓦力观后感 英文
  8. PTA7-2 试试手气
  9. ios Mac下的SVN工具:Cornerstone与Versions和使用subversion管理iOS源代码
  10. 十进制转化为二进制代码及流程图