標籤:

關於密碼中的RSA演算法和ecc(橢圓曲線)演算法加密過程是怎樣的?


RSA請移步至這個答案,包含對題主問題的解答:

RSA的公鑰和私鑰到底哪個才是用來加密和哪個用來解密? - 劉巍然的回答

密碼學裡講的橢圓曲線EC),是解析式形如 y^2 = x^3 + Ax + B的曲線,其中x的定義域通常在整數集合上【注1】,不是解析幾何里講的橢圓。

如果視曲線上的點P:(x,y)為一個元素,則整數a對P的乘法定義為:acdot P = underbrace{P+P ldots +P}_{a times}

這裡的「+」是一個比較特殊的計算,對於已知不同兩點P,Q, P+Q是這麼算的:

如果P=Q, P+Q的演算法稍有不同:

具體過程用代數式表達如下:(需考慮P=Q的情況)

以上演算法和圖片引自 Understanding Cryptography by C.Paar,

P = (x1,y1), Q=(x2,y2), +和-在演算法中為普通四則運算,除法在mathbb{Z}_p中進行。

鏈接

《深入淺出密碼學――常用加密技術原理與應用(安全技術經典譯叢)》(美)帕爾,(美)佩爾茨爾 著,馬小婷 譯

附上C.Paar講解EC的在線視頻,需要翻牆:http://www.youtube.com/watch?v=3S9eZRHjP8g

根據這種加法運算,可以定義一個新的"離散對數問題":

已知G為EC上的一個點,EC參數和點K1已知,求滿足k_2 cdot G = K_1的整數k2。

EC所生成的群,通常用來代替基於「離散對數問題」的加密方案或者數字簽名中用到的群。比如EC-ElGamal,是把原來ElGama中使用的mathbb{Z}_p替換為相應階數的橢圓曲線群。加密解密過程如下:

上圖引自http://www.uam.es/personal_pdi/ciencias/fchamizo/asignaturas/cripto1011/ecc.pdf

概要翻譯:

曲線參數A,B已知,點G已知,公鑰為K1,

加密時選取一個隨機整數r, 生成密文 (rcdot G, M+rcdot K_1) = (c_1, c_2)

解密時,用私鑰k2參與計算,解出明文

c_2 - k_2 cdot c_1 \
=(M+r cdot K_1) - k_2cdot r cdot G\
=(M+r cdot K_1) - r cdot k_2cdot G\
=(M+r cdot K_1) - r cdot (k_2cdot G)\
=(M+r cdot K_1) - r cdot K_1\
=M

安全性證明我就不寫了,請參考原始論文。

【注1】密碼學中一般考慮橢圓曲線定義在Finite Field上的情況,包括Integer Field。例如,定義一個EC為y^2 = x^3 + Ax + Bmod p,且4A^3 +27B^2 
e 0 mod p, 其中p為素數。

但實際上,橢圓曲線本身可以定義在實數空間甚至複數空間上。


RSA的過程可以看這裡:

RSA illustration with not-so-small numbers

RSA illustration with not-so-small numbers

ECC的我還沒有寫完。

通常的加密過程,用公鑰加密,私鑰解密。

也就是說,如果Alice要給Bob發私信,則:

  1. Alice首先拿到Bob的公鑰;這個可以公開傳遞的。
  2. Alice把要傳遞的信息用Bob的公鑰加密 ;
  3. Alice把密文傳給Bob;雖然密文可能被別人監聽到,並且很多人都有Bob的公鑰,但是只有Bob的私鑰可以解開密文。

私鑰加密然後公鑰解密的情況也有應用場景:

習總要傳聖旨給房將軍,「房愛卿:請於三月十八日夜移師丰台大營 習」。為防止有人篡改,可以這樣:

  1. 習總先把自己的公鑰給房將軍;也可以同時給其他人;

  2. 把文字內容用習總本人的私鑰加密,假設加密內容是「e;lakjf;aksd;qio4;asd;lkad;lfjkq;j;f";
  3. 聖旨的內容就是:「房愛卿:請於三月十八日夜移師丰台大營 習」 + 「e;lakjf;aksd;qio4;asd;lkad;lfjkq;j;f";
  4. 房將軍收到聖旨,拿出習總的公鑰把後面的內容解密出來,果然一致。房將軍就知道,這肯定是習總聖旨,沒有被人篡改過。

這就是數字簽名的過程,比蓋章更可靠。

如果習總還想對內容保密,那就把房將軍的公鑰要過來,把簽名過的聖旨用房將軍的公鑰加密了,再發給房將軍。這樣聖旨的內容就只有房將軍可以解開了。


推薦閱讀:

如何用通俗易懂的語言解釋base64?
早期的中國黑客大牛們現在都在幹什麼呢?
為什麼正版光碟無法完全複製?
加密手機真的需要加密晶元嗎?
TrueCrypt 为什么突然宣布不安全了?

TAG:加密 | 密碼學 |