公钥密码学:可证安全

引言:可证安全即用数值去衡量证明这个东西的安全性。当你把一个东西锁进保险箱里,你要怎么去证明你的保险箱是安全的呢?只有你有钥匙这个保险箱就是安全的吗?如果我拿原子弹去轰炸,是不是就能打开保险箱?通俗来讲,如果你能证明有一堵墙,原子弹也没办法炸毁它,那么你在这堵墙后面做任何事情,都是安全的,这个安全性也可以被证明——连原子弹都无法炸毁的安全性。

先从扔硬币的案例讲起

——区分两个分布

1、假如有一枚“正常”的硬币,无论怎么扔都是正面朝上。同时有一枚“异常”的硬币,无论怎么扔都是反面朝上。假设抛出正面b为1,抛出反面b为0.那么如何判断D(X)算法的优势呢?
这个答案很简单

用D来判断正确的概率Pr(b'=b)
b=1时,x1=1,D(x1)输出1.
b=0时,x2=0,D(x2)输出0;

那么这个算法的正确率为1,Pr(b'=b)=1。

D的优势(Advantage):

Adv(D) = |Pr(b=b')-1/2|

如果这个算法总是猜对或者猜错,优势都是1/2。

如果这个算法完全随机,那么概率就是1/2,Adv(D)=0

为什么要减去1/2?一般而言,瞎猜也有一半的机率是对的,所以要减去1/2。

为什么猜错优势也是1/2呢?打个比方,如果有个人买大小,他总是能买到错的那一个,那么你只要跟着他反着买,你就能赢。这是一种反向思维。

2、假如有一枚“正常”的硬币,出现正面反面的概率都是1/2,异常的硬币反面是2/3,正面是1/3。假设抛出正面b为1,抛出反面b为0.那么如何判断D(X)算法的优势呢?
仍然是求Pr(b’=b)的概率,进而求出Adv(D)

D1 D2 D3 D4
X1 0 1 0 1
X2 0 1 1 0
Adv(D) 0 0 |-1/12| 1/12

虽然D3和D4的Adv(D)值一样,但是我们根据直觉会认为D4更好(不用反着选)

加密算法安全性(CPA)

上面的两个分布通过计算优势来证明它的安全性,优势越接近1/2,这个算法越安全。
加密算法而言,这个结果越难被计算机计算出来,那么它就越安全,具体的衡量指标为比特计算。

ElGamel加密:

困了……看这个文章吧……
https://www.jiamisoft.com/blog/20564-elgamal.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章