现代密码学3.1--定义计算安全的两种方法

  • 三种安全性定义
  • 定义计算安全的两种方法
    • 具体方法/concrete approach
    • 渐进方法/asyptotic approach
      • “高效/PPT”和“可忽略/negligible”

博主正在学习INTRODUCTION TO MODERN CRYPTOGRAPHY (Second Edition) --Jonathan Katz, Yehuda Lindell,做一些笔记供自己回忆,如有错误请指正。整理成一个系列现代密码学,方便检索。

《现代密码学》第一章所介绍的古典密码,全都已经被破解了,由于没有严格的安全定义,无法证明安全性,第二章引入了完美安全的定义,是一种对于密码方案的安全性定义,但是满足这种安全性定义的密码方案具有一个共同缺点:密钥空间∣K∣|\mathcal{K}|∣K∣>明文空间∣M∣|\mathcal{M}|∣M∣,而且这种安全性往往是现实中难以达到的:无限算力的敌手+不能泄露丝毫明文信息。考虑实际需求,给出一种新的安全性定义:“计算安全/computational security”:有限算力的敌手+以极小概率泄漏明文信息

三种安全性定义

相比于完美安全,还有两种安全性定义:计算安全和统计安全。

完美安全满足:

  • 无限算力的敌手
  • 不泄露丝毫明文信息

统计安全满足:

  • 无限算力的敌手
  • 以极小概率泄露明文信息

计算安全满足:

  • 有限算力的敌手
  • 以极小概率泄漏明文信息

完美安全偏向理论,计算安全和统计安全往往是实际中的安全性定义。

定义计算安全的两种方法

我们可以把计算安全看作对完美安全的放缩,有2点放缩:敌手算力+泄露明文的概率。现在需要去定义这样的放缩,有两种方式:具体方法和渐进方法。

具体方法/concrete approach

用具体数值表示放缩

定义:如果任何敌手运行时间最长为ttt,攻破密码方案的概率最多为ϵ\epsilonϵ,则称该方案是(t,ϵ)−(t,\epsilon)-(t,ϵ)−安全

但这种方式其实是很难提供的。比如我们给一个声明:“最长运行5年,敌手攻破密码方案的概率最多为ϵ\epsilonϵ”,这样的定义伴随着诸多问题:

  • 算力是多少?PC、超级电脑、网络都不同
  • 随着未来技术的发展,算力也会发展,有考虑进来吗?
  • 如果软件优化呢?
  • 运行2年,攻破概率是多少?
  • 运行10年,攻破概率是多少?

渐进方法/asyptotic approach

引入安全参数,用关于安全参数的函数来表示放缩

由于具体方法定义安全性是很难提供的,那我们考虑用函数来定义安全性。引入一个安全参数nnn,用关于nnn的函数来定义敌手算力以及攻破概率。

定义:如果运行时间为关于安全参数nnn的概率多项式函数/PPT/probabilistic polynomial-time,攻破密码方案的概率是可忽略的/negligible,则称该方案是安全的

引入安全参数,主要是在语法定义和安全性定义中起作用:

  • 语法定义:生成密钥算法GenGenGen、加密算法EncEncEnc、解密算法DecDecDec都是关于安全参数的多项式时间函数;
  • 安全性定义:敌手运行时间是关于安全参数的概率多项式函数,敌手攻破概率是关于安全参数的可忽略函数。

“高效/PPT”和“可忽略/negligible”

现在定义“概率多项式时间函数”和“可忽略函数”。

  • 概率多项式时间函数:对于所有任意长度的01串x∈{0,1}∗x\in \{0,1\}^*x∈{0,1}∗,总存在一个多项式ppp,使得计算函数A(x)A(x)A(x)在p(∣x∣)p(|x|)p(∣x∣)步内终止,则称ppp是一个概率多项式时间函数这是一个BPPBPPBPP问题类,其中p⊆BPP⊆NP(P≠NPp\subseteq BPP\subseteq NP(P\neq NPp⊆BPP⊆NP(P​=NP的前提假设)
  • 可忽略函数:对于任意多项式ppp,以及所有足够大的自然数nnn,函数fff都满足f(n)<1p(n)f(n)<\frac{1}{p(n)}f(n)<p(n)1​,则称fff是可忽略函数

理论上,我们考虑可忽略函数是考虑nnn为无穷大的情况;实际上,我们考虑nnn较小的情况。举个例子:

  • 2−n2^{-\sqrt n}2−n​
  • n−log⁡nn^{-\log n}n−logn

考虑这两个函数,他们有

  • 2−n<n−5→n=35002^{-\sqrt n}<n^{-5}\rightarrow n=35002−n​<n−5→n=3500
  • n−log⁡n<n−5→n=33n^{-\log n}<n^{-5}\rightarrow n=33n−logn<n−5→n=33

也就是说对于多项式n−5n^{-5}n−5来说,2−n2^{-\sqrt n}2−n​需要n>3500n>3500n>3500才有可忽略性;n−log⁡nn^{-\log n}n−logn只需要n>33n>33n>33就有可忽略性。这意味着n−log⁡nn^{-\log n}n−logn更快逼近0。但是

  • 2−n<n−log⁡n→n>655362^{-\sqrt n}<n^{-\log n}\rightarrow n>655362−n​<n−logn→n>65536

n>65536n>65536n>65536时2−n<n−log⁡n2^{-\sqrt n}<n^{-\log n}2−n​<n−logn的意思是当我们考虑无穷大时,2−n2^{-\sqrt n}2−n​是更接近0的

也就是说,我们在理论上取2−n2^{-\sqrt n}2−n​,是更合适的可忽略函数;但是实际上,我们只需取n−log⁡nn^{-\log n}n−logn即可,在nnn较小时它逼近0的速度更快。

现代密码学3.1--定义计算安全的两种方法相关推荐

  1. C++/C++11中用于定义类型别名的两种方法:typedef和using

    类型别名(type alias)是一个名字,它是某种类型的同义词.使用类型别名有很多好处,它让复杂的类型名字变得简单明了.易于理解和使用,还有助于程序员清楚地知道使用该类型的真实目的.在C++中,任何 ...

  2. 蒙特卡洛数值模拟-计算定积分的两种方法

    原理 法1(撒米法)计算积分 1.他的逻辑原理其实很简单,对于函数图像围成的面积,我们总可以用一个矩形覆盖住,然后在上面撒下一把米(随机抽样),然后去数,那些米粒落在了函数图像围成的面积内,将得到的数 ...

  3. RSA算法计算d的两种方法。

    例题: 假设p=5,q=7,e=5,m=2.计算d,公钥,私钥. 方法一: 解: n=p*q=5*7=35 Φ(n)=(p-1)*(q-1)=4*6=24 由公式:e d mod Φ(n)=== 1 ...

  4. java 计算π_Java实现计算圆周率π的两种方法 - 博客频道 - CSDN.NET

    网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本. 博主的思路是: 1.首先对服务器发送http请求. 2 ...

  5. php根据生日计算年龄的两种方法

    文章目录 方法一:strtotime( ) 方法二:date( ) 方法一:strtotime( ) function birthday($birthday){$age = strtotime($bi ...

  6. 个人所得税递归函数C语言,C语言实现 计算个人所得税务2种方法

    #include #include /* 基于C语言的个人所得税计税系统 问题描述: 我国现行的个人所得税计算方法如下: 级数 全月应纳税所得额   税率(%) 1 不超过500元的    5 2 超 ...

  7. 网络基础知识 快速计算子网掩码的2种方法

    网络基础知识 快速计算子网掩码的2种方法<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office ...

  8. php中计算时间差的几种方法,php计算时间差的方法

    一个简单的例子:计算借书的天数,根据每天的日期进行计算. (1) 有数据库的情况 MSSQL可以使用触发器!用专门计算日期差的函数datediff()便可. MYSQL那就用两个日期字段的差值计算的计 ...

  9. 自由能计算专题3:gromacs计算自由能的7种方法案例

    前言 本教程以甲烷在水中的溶剂化自由能和配体与受体蛋白质结合自由能为入门和进阶例子对使用分子动力学模拟方法来计算自由能的常见方法给出了示例,教程不会过多讲解各种计算自由能方法原理和分析原理,关于自由能 ...

最新文章

  1. 浅谈https\ssl\数字证书
  2. 机器学习帮助人类找到最硬的过渡金属氮化物
  3. Python3.x和Python2.x的区别
  4. 杭电多校(五)2019.08.05--暑假集训
  5. 深入理解SELinux SEAndroid
  6. Linux Redhat5.7系统配置网易的yum源
  7. 爱奇艺取消剧集超前点播
  8. mysql 定期删除表中无用数据
  9. 机器人教练走进驾校_驾校启用“机器人”做教练来教学你有听过吗
  10. 【PS平面设计教程】6种最常用抠图技巧,十万人都抢着收藏
  11. Java编程学习指南(带学习经验)
  12. 百色职称计算机,百色报考职称高级
  13. 关于PHP=5.5时密码哈希校验的使用案例
  14. 网页设计配色应用实例之黄色系
  15. C++中的decltype
  16. 被多次定义,第一次再次定义
  17. 20 October in ss
  18. 优酷路由宝增加php,优酷路由宝旗舰版YK-L2刷改华硕[N14U N54U]5G 2G的7620老毛子Padavan固件方法...
  19. 智能服务器虚拟化,详解四大服务器虚拟化架构
  20. Python打包成exe,文件太大问题解决办法(比保姆级还保姆级)

热门文章

  1. Android --- This custom view should extend android.support.v7.widget.AppCompatTextView instead
  2. 机房定期巡检报告报告,全面详实,可以参考
  3. 新基建将引发全国用电量暴涨近两成,如何应对
  4. 视频监控系统防雷设计方案
  5. 上海市提出IDC建设指导意见,新建IDC限制PUE1.3以下
  6. 超大规模数据中心vs微型数据中心
  7. Py之glob: glob库文件名模式匹配+返回所有匹配的文件路径列表库的简介、使用方法之详细攻略
  8. DL之SSD:基于tensorflow利用SSD算法实现目标检测(21类)
  9. 成功解决Exception: Graph file doesn't exist, path=F:\File_Python\Python_example\Human_Posture_Detection\
  10. 学习Python3:201701030