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

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

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

三种安全性定义

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

完美安全满足:

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

统计安全满足:

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

计算安全满足:

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

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

定义计算安全的两种方法

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

具体方法/concrete approach

用具体数值表示放缩

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

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

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

渐进方法/asyptotic approach

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

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

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

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

  • 语法定义:生成密钥算法G e n GenGen、加密算法E n c EncEnc、解密算法D e c DecDec都是关于安全参数的多项式时间函数;
  • 安全性定义:敌手运行时间是关于安全参数的概率多项式函数,敌手攻破概率是关于安全参数的可忽略函数。

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

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

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

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

  • 2 − n 2^{-\sqrt n}2n
  • n − log ⁡ n n^{-\log n}nlogn

考虑这两个函数,他们有

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

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

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

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

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


版权声明:本文为qq_41545715原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。