公鑰密碼學:可證安全

引言:可證安全即用數值去衡量證明這個東西的安全性。當你把一個東西鎖進保險箱裏,你要怎麼去證明你的保險箱是安全的呢?只有你有鑰匙這個保險箱就是安全的嗎?如果我拿原子彈去轟炸,是不是就能打開保險箱?通俗來講,如果你能證明有一堵牆,原子彈也沒辦法炸燬它,那麼你在這堵牆後面做任何事情,都是安全的,這個安全性也可以被證明——連原子彈都無法炸燬的安全性。

先從扔硬幣的案例講起

——區分兩個分佈

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

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