筆記:密碼學 Week 6

這是Coursera課程Cryptography的第六週的筆記。
本週講的是關於Public Key Cryptography的概念,也就是公鑰密碼學,也稱爲非對稱密碼學。以前我只知道RSA算法。我知道RSA算法是怎麼來的,它可以作什麼,侷限性是什麼。然而把它放在一個大的概念裏,將RSA只看作非對稱加密算法中的一種,這仍是第一次。若是數學家沒有提出利用大質數難分解的性質製做密碼,天然就不會有RSA算法了。那麼還會有公鑰密碼嗎?基本的密碼體系會有變化嗎?git

生詞本算法

chicken-and-egg problem
asymmetry 不對稱
factor 因式分解
Indistinguishability 不可分辨
spoof 欺騙
discrete 離散的
logarthm 對數
subtlety 細微的差異
derivation 派生
disseminate 散佈,傳播
legitimate 合法的數據庫

The public-Key Revolution

Key distribution problem

如何在加密通訊前交換密鑰呢?
雖然能夠經過物理方法交換,但物理交換一般價格很高,並且效率低下。安全

Key management problem

有N我的,若是容許他們跟其餘人通訊,他們就須要預先交換O(N2)的密鑰,這是很是大量的工做。oracle

Lack of support for open system

兩我的預先沒有關係,如何交換密鑰呢?
例如一個顧客想要在網上使用信用卡購買物品,例如你想給老師發一封關於課程的郵件,你預先沒有在這家網上商店購買過東西,也不認識老師,可是你仍然但願用安全的信道進行通訊。函數

「經典」密碼學沒法解決這些問題

私鑰密碼不可以解決在信道不安全時私鑰如何交換的問題。
1976 《New Directions in Cryptography》ui

新的方向

利用不對稱的問題。例如因式分解:將兩個質數相乘很容易,將相乘後的結果分開很難。
利用不對稱性來讓兩方在公開討論的狀況下交換一個共享的不公開密鑰。
也就是說,在一個全是人的房間,A和B在房間的兩端喊話,卻交換了一對除A與B之外無人知曉得密鑰。加密

Formally(正式定義看ppt)

假設攻擊者是個竊聽者,能夠聽到信道,不可改變信息
攻擊者獲得傳輸數據的機率不大於1/2+eorm

注意

沒法計算出密鑰是個弱的保證
密鑰從所選集合中徹底沒法辨認(indistinguishable)纔是個強的保證ip

Modern key-exchange protocols

僅針對被動竊聽者的安全是不夠的
須要帶驗證的密鑰交換,例如,兩房預先知道對方的ID,而且這種ID不得被欺騙

Diffie Hellman Key Exchange

Key Exchange

安全目標:當竊聽者獲取全部通訊文本後,密鑰K仍然是不可辨認的。

Decisional Diffie-Hellman problem DDH問題

安全性

對竊聽者沒法計算出key

細微的差異

咱們本須要的是某個長度的不可辨認的k1,可是咱們卻得到了某個組下的key2,因而就有了從key2到k1的映射問題。
解決方法:key derivation 密鑰派生
用一個合適的hash函數作映射,將某個組下的密鑰映射到指定的區段內。

公鑰設置

一方生成了一對密鑰:公鑰和私鑰。
公鑰普遍傳播,私鑰本身保留,不向任何人傳播
也被稱爲非對稱加密

公鑰分發

  1. 全部人將公鑰放入同一個數據庫,供其餘人查詢。
  2. 通訊時,一方將公鑰傳送給對方。
    在這兩種狀況下,咱們都假設了攻擊者是被動竊聽者(至少在公鑰交換階段)

非對稱加密解決的問題

  1. 公鑰能夠在公開的(允許竊聽,不允許改變)信道中傳播,而私鑰加密法則沒法在公開的信道中傳播密碼。
  2. 對私鑰加密法,必須讓每一個用戶存儲其餘N-1個用戶的密鑰。非對稱則可使用公鑰數據庫。
  3. 可讓預先沒有關係的兩個實體找到對方的公鑰並通訊。

爲何還要研究對稱加密

  1. 更適合的應用場景:磁盤加密
  2. 一般對稱加密的效率是非對稱加密效率的兩到三個數量級

Public-key encryption

包含3個多項式時間算法:

Gen keygen
Enc 加密
Dec 解密

CPA安全

注意

沒有encryption oracle。
沒有perfectly secure的公鑰加密。
沒有肯定性的公鑰加密體系是CPA-Secure的。

Chosen-ciphertext attack

攻擊者是一個合法用戶
攻擊者更容易得到它所選定的明文和對應的密文
延展性問題:知道明文和對應的密文後,可能派生出另外一對相關的明文和密文

Hybrid encryption

因爲非對稱加密效率低下,咱們能夠用非對稱加密方法去加密一個對稱加密密鑰,而後用對稱加密密鑰去加密明文。
發送時,將加密的對稱加密密鑰和密文一塊兒發送。

El Gamal encryption

gen The public key is (G, q, g, gx), the secret key is x
enc ciphertext is gy, hy·m
Dec c2/c1x

安全性

若是DDH是難的,那麼El Gamal是CPA-Secure的。
離散對數難度的假設對公鑰加密是不夠的。

實際上

G, q, g是標準算法,而且與全世界共享
把消息做爲組來對待並不方便,這就須要使用密鑰派生。
使用混合算法

Chosen-ciphertext attacks

El Gamal Encryption不是CCA安全的
使用密鑰派生可使算法變成CCA安全
DHIES/ECIES

基於RSA的公鑰加密

  1. 選擇等長的隨機質數p,q
  2. 計算N=pq
  3. 選擇e,d,使得 e·d = 1 mod (p-1)(q-1)
  4. RSA假設:僅擁有N,e時,難以計算c的第e個根,其中C來自N。

安全性

這個體系是決定性的,因此不多是CPA Secure的
RSA假設僅僅指算均勻的c得第e個根,只有當m是均勻的時候,c纔是均勻的
RSA假設僅僅指徹底計算的狀況,事實上能夠得到關於第e個根得一部分信息

PKCS#1 v1.5

RSA Labs, 1993
加密時,加入隨機的padding
問題:
1. 沒法證實是CPA-Secure的,除非m很是短
2. 當r很小的時候,已知已經有Chosen-plaintext attacks
3. 已知有Chosen-ciphertext attack

PKCS#1 v2.0

OAEP
引入冗餘

安全性

當RSA假設成立時,RSA-OAEP是CCA-Secure的。 在實踐中普遍使用。

相關文章
相關標籤/搜索