现代密码学学习笔记(二)

一、上篇遗留:

1.对密钥保密的理解:密钥是安全性的关键,即使在敌手得知加密方案的情况下,不知道密钥就无法破解密文,消息的安全性得以保证,加密方案依然是安全的。

2.现代密码学的三个原则:

(1)严格精确的定义:如果不明白想要实现什么,就无法确定何时能否实现它。安全定义包括安全保证(即使攻击者已经拥有了任何信息,密文都不应该泄露底层明文)和威胁模型(假定敌手的攻击能力)组成。

(2)精确的假设:假设越弱越好,即阐述中所需要的已知信息就越少,最弱假设就是没有假设,最强假设就是假设构造方案是正确的。

(3)严格的安全证明。

3.PrivK实验(窃听不可区分实验)的含义:敌手没有攻击优势,即区分密文m0和m1的能力与随机猜一个的概率相同。

二、一次一密(the One-Time Pad/Vernam)

1.加密方案:①密钥空间K和密文空间C都等于\left \{ 0,1 \right \}^{l}(l>0)

②Gen从k=\left \{ 0,1 \right \}^{l}中均匀分布选择l个二进制比特

③Enc:密钥k\in \left \{ 0,1 \right \}^{l},明文m\in \left \{ 0,1 \right \}^{l},输出c=k\bigoplus m

④Dec:密钥k\in \left \{ 0,1 \right \}^{l},密文c\in \left \{ 0,1 \right \}^{l},输出m=k\bigoplus c

验证:

Dec_{k}(Enc_{k}(m))=m\bigoplus k\bigoplus k=m   (0\bigoplus 0=0,0\bigoplus 1=1,1\bigoplus 1=1,1\bigoplus 0=1)

2.完善保密证明:由于密钥是均匀概率选择,长度为2^{l}的密文需要长度为2^{l}的密钥,因此猜到密钥的概率是\frac{1}{2^{l}}c没有泄露任何m的信息。

3.一次一密的缺陷:①密钥要与原文一样长②完全随机的密钥不容易生成③如果连续用两次相同的密钥,窃听者将得到两个原文的异或,可能会泄露信息。

c_{1}\bigoplus c_{2}=m_{1}\bigoplus k\bigoplus m_{2}\bigoplus k=m_{1}\bigoplus m_{2}

三、完善保密(Perfect Secrecy)【反证法】

1.完善保密的内容:如果
\forall m_{0},m_{1}\in M(\left | m_{0}\right |=\left | m_{1} \right |)\forall c\in C,有:Pr[Enc_{k}(m_{0}=c)]=Pr[Enc_{k}(m_{1}=c)],则该加密方案具有完善保密性,其中k∈K,从密钥空间中随机选择。表示密文无法泄露明文的任何内容。

2.局限性:密钥长度至少比明文长度长(|K|≥|M|),密钥只能使用一次。

四、香农定理

加密方案(Gen,Enc,Dec)其中明文空间为M,且满足|M|=|K|=|C|,若满足以下两条件则该加密方案是完善保密的:

  • Gen产生任意密钥k\in K的概率都是\frac{1}{\left | K \right |}.
  • 任意选择的明文m和密文c(m∈M,c∈C)均能从密钥空间K中找到相应的密钥k,满足Enc_{k}(m)=c..

正向证明:Pr[Enc_{k}(m)=c]=Pr[K=k]=\frac{1}{\left | K \right |}

反向证明:选取任意密文必有对应的明文:Pr[Enc_{k}(m^{*})=c]\neq 0   (c\in C)

即:Pr[Enc_{k}(m)=c]\neq 0      (m\in M)

明文集合:M=\left \{ m_{1},m_{2},... \right \}

进一步可得:Pr[K=k_{i}]=Pr[Enc_{k}(m_{i})=c]=Pr[Enc_{k}(m_{j})=c]=Pr[K=k_{j}]

五、密码学的计算方法

1.原则:一种加密方案如果数学上无法攻破,那么它必须在实践上无法破译。把计算安全看作在敌手算力和泄露明文概率这两方面对完美安全的放缩(允许密钥相较于明文很短)。

放松的必要性:①只要给了充足的时间来遍历|K|,蛮力攻击一定会成功,因此需要限定敌手的能力。

②允许以小到可忽略\frac{1}{\left | K \right |}的概率猜对密钥。

2.具体方法:对加密方案进行安全性量化。eg:如果任何敌手运行时间最长为t,攻破密码方案的概率最多为\varepsilon,则称该方案是\left ( t,\varepsilon \right )-安全。(但这种方式很难提供,有很多变数无法准确考虑。)

3.渐进方法:引入安全参数n,用关于n的函数来定义敌手算力以及攻破概率。

定义:如果运行时间是关于n的概率多项式时间(PPT,probabilistic polynomial-time),攻破密码方案的概率是可忽略的(negligible),则该方案安全。(仅仅是在n足够大的情况下才保证安全)

PPT:对于所有任意长度的01串x\in \left \{ 0,1 \right \}^{*},总存在一个多项式p,使得计算函数A(x)p(|x|)

步内终止,则称p是一个概率多项式时间函数。

可忽略函数(negl):对于任意多项式p以及所有足够大的自然数n,函数f都满足f(n)<\frac{1}{p(n)},则称f是可忽略函数。(多个negl相乘或相加仍是negl)

六、定义计算安全(Computational Security)

1.将渐进方法引入对称加密方案:

   ①输出密钥kk:k\leftarrow Gen(1^{n}),假设|k|\geq n

   ②输入明文消息m\in \left \{ 0,1 \right \}^{*}c\leftarrow Enc_{k}(m)

   ③  k:k\leftarrow Dec_{k}(c)(其中\leftarrow表示随机化算法,而:表示确定性算法。)①②③需要满足对任何nkm都满足Dec_{k}(Enc_{n}(m))=m.

2.首先考虑最弱的敌手能力,攻击模型选择唯密文攻击;安全条件是语义安全(Semantic security等价于不可区分性)

3.对比计算安全的不可区分和完美不可区分(明文长度一致)

敌手算力

攻破概率

完美不可区分

敌手拥有无限算力

Pr[Privk_{A,\Pi }^{eav}=1]=\frac{1}{2}

计算安全中的不可区分

敌手算力有限,只能在n的多项式时间内运行

Pr[Privk_{A,\Pi }^{eav}=1]\leq \frac{1}{2}+negl(n)

以下两种表达方式等价: 

Pr[Privk_{A,\Pi }^{eav}=1]\leq \frac{1}{2}+negl(n)

Pr[out_{A}(Privk_{A,\Pi }^{eav}(n,0))=1]-Pr[out_{A}(Privk_{A,\Pi }^{eav}(n,1))=1]\leq negl(n))

证明方法:将\frac{1}{2}拆开变成

\frac{1}{2}(Pr[out_{A}(Privk_{A,\Pi }^{eav}(n,0))=0]+Pr[out_{A}(Privk_{A,\Pi }^{eav}(n,0))=1])

  • 12
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值