Security Reduction学习笔记(3):预备知识(困难问题,安全方案)

"问题"的数学定义:

使用数学原语来定义"问题"的数学概念

"实例"(instance)和"解答"(solution)构成一个元素对$(x,y)$

一系列这样的元素对构成的集合被称为"问题"(problems)

例如:

  • 素数判定问题:$$PRIME=\{(1,False),(2,True),(3,True),(4,False),\cdots\}$$
  • 介绍正则语言和上下文无关语言时最常举的例子:判断输入的字符串中,$a$的个数是否多于$b$的个数,$$L=\{(\epsilon,False),(a,True),(b,False),(aa,True),(ab,True),(ba,True),(bb,False),(aaa,True),(aab,True),(aba,True),(abb,False),(baa,True),(bab,False),(bba,False),(bbb,False),\cdots\}$$
  • 计算非负整数的算术平方根并向下取整:$$SQRT=\{(0,0),(1,1),(2,1),(3,1),(4,2),(5,2),(6,2),(7,2),(8,2),(9,3),(10,3),\cdots\}$$

以"解答"是否只包括是/否两个值作区分,"问题"分为"决定性问题"(computational problems)与"计算性问题"(decisional problems.)

确定性(Deterministic)算法和概率性(Probabilistic)算法:

形式化地区分确定性算法和概率性算法的方法是,概率性算法除了输入"实例",还需要输入一个串作为随机种子,为算法的输出提供随机性

例如Miller-Rabin算法(参见素性检验问题和模平方根问题 - Isakovsky - 博客园 (cnblogs.com))选取的底数$a_i$

一般来说,概率性算法的效率远远高于确定性算法.

多项式(Polynomial)复杂度和指数(Exponential)复杂度:

$f(\lambda)$为$\lambda$多项式级项,当且仅当$\exists c,k >0$, $f(\lambda) \leq c \cdot \lambda^k$(否则称之为超多项式级)

$f(\lambda)$为$\lambda$的指数级项,当且仅当$\exists c > 0$,$2^{c\cdot \lambda} \leq f(\lambda)$(否则称之为亚指数级)

(超多项式级和亚指数级的交集是非空的,但这脱离了本文的讨论范畴,在此不再详述)

一般来说,在安全方案的设计中,我们希望合法用户的计算开销是多项式级,而攻击者的计算开销是指数级.

可忽略(Negligible)项和不可忽略(Non-Negligible)项:

可忽略参数:对于以$\lambda$为自变量的项$h(\lambda)$,

称该项为可忽略项,写作$h(\lambda)=negl(\lambda)$,当且仅当$\frac{1}{h(\lambda)}$为$\lambda$的超多项式级项.

称该项为不可忽略项,写作$h(\lambda)=non-negl(\lambda)$,当且仅当$\frac{1}{h(\lambda)}$为$\lambda$的多项式级项.

例如,$\lambda^{-2}=non-negl(\lambda),2^{-\lambda}=negl(\lambda)$

概率(Probability)与优势(Probability):

概率用于衡量随机事件发生的可能性.

优势的定义则不同,它反映着攻击的效果.

优势可以有不同的定义,例如

  • 记$P_{ideal}$为成功解决对应难解性问题的概率,那么可定义$$\text{优势}=\text{攻击成功的概率}-P_{ideal}$$
  • 如果解决难解性问题的概率可忽略,可直接定义$$\text{优势}=\text{攻击成功的概率}$$
  • 有的安全模型只要求攻击者区分两个值中哪个是合法的,就算瞎猜,成功的概率也有$50%$,此时可将优势定义为$$\text{优势}=2(\text{攻击成功的概率}-50\%)$$

但怎么定义优势问题不大,因为我们只关心优势的值是否可忽略.

概率多项式时间(PPT):

"强"与"弱"在复杂度假设和计算模型中的定义不太一样:

这里的"us"指的是防御者/合法使用协议的人/不希望遭到攻击者攻击的人.

安全参数(Secure Parameter):

一般记为$\lambda$

可简单地看作问题的实例的长度.

安全级别(Secure Level):

记为$f(\lambda)$

反映了攻击者进行攻击的开销.

我们一般称,某个密码方案是$k-$比特安全的,若攻击者至少需要$2^k$步才能达到至少$2/3$的攻击成功率.

注,一般安全参数为$\lambda$的安全方案,其最多达到$\lambda/2-$比特安全.

确切的安全级别往往很难找到.

但可以按如下的方式,基于已知的密码算法求解已知的安全级别:

已知算法1可以用$t_1$时间达成$\epsilon_1$的优势

已知算法2可以用$t_2$时间达成$\epsilon_2$的优势

$\cdots$

那么,记$k=\log(min\{\frac{t_1}{\epsilon_1},\frac{t_2}{\epsilon_2},\cdots\})$,称已知此方案是$k$比特安全的

"安全"的定义:

所有拥有概率多项式计算能力的攻击者的优势都只有$\epsilon(\lambda)$,其中$\epsilon(\lambda)$是对于$\lambda$的可忽略的函数.

 

posted @ 2023-10-16 22:16  Isakovsky  阅读(23)  评论(0编辑  收藏  举报