關於密碼中的RSA演算法和ecc(橢圓曲線)演算法加密過程是怎樣的?
RSA請移步至這個答案,包含對題主問題的解答:
RSA的公鑰和私鑰到底哪個才是用來加密和哪個用來解密? - 劉巍然的回答
密碼學裡講的橢圓曲線(EC),是解析式形如 的曲線,其中x的定義域通常在整數集合上【注1】,不是解析幾何里講的橢圓。
如果視曲線上的點P:(x,y)為一個元素,則整數a對P的乘法定義為:
這裡的「+」是一個比較特殊的計算,對於已知不同兩點P,Q, P+Q是這麼算的:
如果P=Q, P+Q的演算法稍有不同:具體過程用代數式表達如下:(需考慮P=Q的情況)
以上演算法和圖片引自 Understanding Cryptography by C.Paar,
P = (x1,y1), Q=(x2,y2), +和-在演算法中為普通四則運算,除法在中進行。
鏈接
《深入淺出密碼學――常用加密技術原理與應用(安全技術經典譯叢)》(美)帕爾,(美)佩爾茨爾 著,馬小婷 譯
附上C.Paar講解EC的在線視頻,需要翻牆:http://www.youtube.com/watch?v=3S9eZRHjP8g
根據這種加法運算,可以定義一個新的"離散對數問題":
已知G為EC上的一個點,EC參數和點K1已知,求滿足的整數k2。
EC所生成的群,通常用來代替基於「離散對數問題」的加密方案或者數字簽名中用到的群。比如EC-ElGamal,是把原來ElGama中使用的替換為相應階數的橢圓曲線群。加密解密過程如下:
上圖引自http://www.uam.es/personal_pdi/ciencias/fchamizo/asignaturas/cripto1011/ecc.pdf
概要翻譯:
曲線參數A,B已知,點G已知,公鑰為K1,
加密時選取一個隨機整數r, 生成密文
解密時,用私鑰k2參與計算,解出明文
安全性證明我就不寫了,請參考原始論文。
【注1】密碼學中一般考慮橢圓曲線定義在Finite Field上的情況,包括Integer Field。例如,定義一個EC為,且, 其中p為素數。
但實際上,橢圓曲線本身可以定義在實數空間甚至複數空間上。
RSA的過程可以看這裡:RSA illustration with not-so-small numbersRSA illustration with not-so-small numbersECC的我還沒有寫完。通常的加密過程,用公鑰加密,私鑰解密。也就是說,如果Alice要給Bob發私信,則:
- Alice首先拿到Bob的公鑰;這個可以公開傳遞的。
- Alice把要傳遞的信息用Bob的公鑰加密 ;
- Alice把密文傳給Bob;雖然密文可能被別人監聽到,並且很多人都有Bob的公鑰,但是只有Bob的私鑰可以解開密文。
私鑰加密然後公鑰解密的情況也有應用場景:
習總要傳聖旨給房將軍,「房愛卿:請於三月十八日夜移師丰台大營 習」。為防止有人篡改,可以這樣:
- 習總先把自己的公鑰給房將軍;也可以同時給其他人;
- 把文字內容用習總本人的私鑰加密,假設加密內容是「e;lakjf;aksd;qio4;asd;lkad;lfjkq;j;f";
- 聖旨的內容就是:「房愛卿:請於三月十八日夜移師丰台大營 習」 + 「e;lakjf;aksd;qio4;asd;lkad;lfjkq;j;f";
- 房將軍收到聖旨,拿出習總的公鑰把後面的內容解密出來,果然一致。房將軍就知道,這肯定是習總聖旨,沒有被人篡改過。
這就是數字簽名的過程,比蓋章更可靠。
如果習總還想對內容保密,那就把房將軍的公鑰要過來,把簽名過的聖旨用房將軍的公鑰加密了,再發給房將軍。這樣聖旨的內容就只有房將軍可以解開了。
推薦閱讀:
※如何用通俗易懂的語言解釋base64?
※早期的中國黑客大牛們現在都在幹什麼呢?
※為什麼正版光碟無法完全複製?
※加密手機真的需要加密晶元嗎?
※TrueCrypt 为什么突然宣布不安全了?