這是coursera課程cryptography的第六周的筆記。生詞本本週講的是關於public key cryptography的概念,也就是公鑰密碼學,也稱為非對稱密碼學。之前我只知道rsa演算法。我知道rsa演算法是怎麼來的,它能夠做什麼,侷限性是什麼。然而把它放在乙個大的概念裡,將rsa只看做非對稱加密演算法中的一種,這還是第一次。如果數學家沒有提出利用大質數難分解的性質製作密碼,自然就不會有rsa演算法了。那麼還會有公鑰密碼嗎?基本的密碼體系會有變化嗎?
chicken-and-egg problem如何在加密通訊前交換金鑰呢?asymmetry 不對稱
factor 因式分解
indistinguishability 不可分辨
spoof 欺騙
discrete 離散的
logarthm 對數
subtlety 細微的差別
derivation 派生
disseminate 散布,傳播
legitimate 合法的
雖然可以通過物理方法交換,但物理交換通常**很高,而且效率低下。
有n個人,如果允許他們跟其他人通訊,他們就需要預先交換o(n2)的金鑰,這是非常大量的工作。
兩個人預先沒有關係,如何交換金鑰呢?
例如乙個顧客想要在網上使用信用卡購買物品,例如你想給老師發一封關於課程的郵件,你預先沒有在這家網上商店購買過東西,也不認識老師,但是你仍然希望用安全的通道進行通訊。
私鑰密碼不能夠解決在通道不安全時私鑰如何交換的問題。
1976 《new directions in cryptography》
利用不對稱的問題。例如因式分解:將兩個質數相乘很容易,將相乘後的結果分開很難。
利用不對稱性來讓兩方在公開討論的情況下交換乙個共享的不公開金鑰。
也就是說,在乙個全是人的房間,a和b在房間的兩端喊話,卻交換了一對除a與b以外無人知曉得金鑰。
假設攻擊者是個竊聽者,可以聽到通道,不可改變資訊
攻擊者得到傳輸資料的概率不大於1/2+e
無法計算出金鑰是個弱的保證
金鑰從所選集合中完全無法辨認(indistinguishable)才是個強的保證
僅針對被動竊聽者的安全是不夠的
需要帶驗證的金鑰交換,例如,兩房預先知道對方的id,並且這種id不得被欺騙
安全目標:當竊聽者獲取所有通訊文字後,金鑰k仍然是不可辨認的。
對竊聽者無法計算出key
我們本需要的是某個長度的不可辨認的k1,但是我們卻獲得了某個組下的key2,於是就有了從key2到k1的對映問題。
解決方法:key derivation 金鑰派生
用乙個合適的hash函式做對映,將某個組下的金鑰對映到指定的區段內。
一方生成了一對金鑰:公鑰和私鑰。
公鑰廣泛傳播,私鑰自己保留,不向任何人傳播
也被稱為非對稱加密
所有人將公鑰放入同乙個資料庫,供其他人查詢。
通訊時,一方將公鑰傳送給對方。
在這兩種情況下,我們都假設了攻擊者是被動竊聽者(至少在公鑰交換階段)
公鑰可以在公開的(容許竊聽,不容許改變)通道中傳播,而私鑰加密法則無法在公開的通道中傳播密碼。
對私鑰加密法,必須讓每個使用者儲存其他n-1個使用者的金鑰。非對稱則可以使用公鑰資料庫。
可以讓預先沒有關係的兩個實體找到對方的公鑰並通訊。
更適合的應用場景:磁碟加密
通常對稱加密的效率是非對稱加密效率的兩到三個數量級
gen keygen
enc 加密
dec 解密
沒有encryption oracle。
沒有perfectly secure的公鑰加密。
沒有確定性的公鑰加密體系是cpa-secure的。
由於非對稱加密效率低下,我們可以用非對稱加密方法去加密乙個對稱加密金鑰,然後用對稱加密金鑰去加密明文。
傳送時,將加密的對稱加密金鑰和密文一起傳送。
genthe public key is (g, q, g, gx), the secret key is x
encciphertext is gy, hy·m
decc2/c1x
如果ddh是難的,那麼el gamal是cpa-secure的。
離散對數難度的假設對公鑰加密是不夠的。
g, q, g是標準演算法,並且與全世界共享
把訊息作為組來對待並不方便,這就需要使用金鑰派生。
使用混合演算法
el gamal encryption不是cca安全的
使用金鑰派生可以使演算法變成cca安全
dhies/ecies
選擇等長的隨機質數p,q
計算n=pq
選擇e,d,使得 e·d = 1 mod (p-1)(q-1)
rsa假設:僅擁有n,e時,難以計算c的第e個根,其中c來自n。
這個體系是決定性的,所以不可能是cpa secure的
rsa假設僅僅指算均勻的c得第e個根,只有當m是均勻的時候,c才是均勻的
rsa假設僅僅指完全計算的情況,事實上可以獲得關於第e個根得一部分資訊
rsa labs, 1993
加密時,加入隨機的padding
問題:1. 無法證明是cpa-secure的,除非m非常短
2. 當r很小的時候,已知已經有chosen-plaintext attacks
3. 已知有chosen-ciphertext attack
oaep
引入冗餘
當rsa假設成立時,rsa-oaep是cca-secure的。
在實踐中廣泛使用。
密碼學筆記
1.加密方法可以分為兩大類。一類是單鑰加密 private key cryptography 還有一類叫做雙鑰加密 public key cryptography 前者的加密和解密過程都用同一套密碼,後者的加密和解密過程用的是兩套密碼。歷史上,人類傳統的加密方法都是前一種,比如二戰期間德軍用的eni...
密碼學筆記
定義 如果a和d是兩個自然數,d非零,可以證明存在兩個唯一的整數 q 和 r,滿足 a qd r 且0 r d。其中,q 被稱為商,r 被稱為餘數。基本定律 同餘公式也有許多我們常見的定律,比如相等律,結合律,交換律,傳遞律 如下面的表示 1 a a mod d 2 對稱性 a b mod d b ...
密碼學 密碼學基礎
密碼學是研究編制密碼和破譯密碼的技術科學。密碼學的安全目標至少包含三個方面 保密性 完整性 可用性。完整性 資源只有授權方以授權的方式進行修改,所有資源沒有授權則不能修改。可用性 資源只有在適當的時候被授權方訪問,並按需求使用。密碼系統由5部分組成 1 明文空間m 全體明文的集合 2 密文空間c 全...