1. 程式人生 > >非對稱加密之公鑰、私鑰

非對稱加密之公鑰、私鑰

非對稱加密需要公鑰和私鑰。

公鑰和私鑰可以互相解密,並且加密過程是不可逆的,即經公鑰加密後的檔案只有對應私鑰可解開,經私鑰加密的祕鑰也只有對應的公鑰才可以解開。

用私鑰加密可以證明檔案是出於原作者的由於只有擁有私鑰的簽名者能通過“解密”摘要生成簽名,因此具有安全不可抵賴性

公鑰是公佈出來的,可供大家下載。

私鑰是個人持有的。

非對稱加密流程如下:

A->B發文件,A先用B公佈出來的公鑰進行加密。此時,加密後的檔案只有擁有私鑰的人,也就是B可以解開。

C想對一個檔案進行數字簽名,證明該檔案是C自己本人發出的,就用C自己持有的私鑰進行加密。大家都可以利用C公佈出來的公鑰進行解密,用其他祕鑰無法解密,此時可以證明這個檔案是C本人釋出的。由於大家都可以用C公佈的檔案進行解密,這個檔案也就沒有了私密性。所以當想向外傳送不想被破解的加密檔案時,不會用自己的私鑰加密,而是用對方公佈的公鑰進行加密。

延伸:

數字簽名:一般按照RSA加密演算法(一種根據兩個大素數的乘積,難以推斷出這兩個的演算法)工作量太大,傳送報文之前都會通過HASH演算法進行計算得到一個固定位數的報文摘要。

這個報文摘要在數學上保證,只要改動報文中的任意一位,重新計算出的報文摘要值就會與原來不一樣。這樣就保證了報文的不可更改性。傳送的時候一般將報文摘經過私鑰加密形成的數字簽名和報文原文一起發給對方。

接收方收到數字簽名後,用同樣的HASH演算法對原報文計算出報文摘要值,然後與用傳送者的公開金鑰對數字簽名進行解密(原先已經把簽名加密了,再解密就能還原)得到的報文摘要值相比較。如相等則說明報文確實來自所稱的傳送者。

數字證書:數字證書一般由第三方釋出。個人將自己資訊和公鑰發給第三方,由第三方將執行一些必要的步驟,以確信請求確實由使用者傳送而來,然後,認證中心將發給使用者一個數字證書,該證書內包含使用者的個人資訊和他的公鑰資訊,同時還附有認證中心的簽名信息。使用者就可以使用自己的數字證書進行相關的各種活動。參加交易的各方可以根據權威第三方釋出的證書驗證對方的身份是否為假冒。一般第三方的數字證書都有短期內的時效性。(我們無法獲得與自己交易方的公鑰,所以需要第三方平臺的認證麼?比如,我們下載到windows中一個軟體,但是不知道這個軟體的公鑰。所以只能通過windows頒發的資料證書來證明此軟體是否是假冒、被修改過。或者訪問一個網站,需要瀏覽器驗證數字證書,來判斷次釣魚網站非假冒釣魚網站。再比如,用U盾時候的銀行交易,使用者登入網銀一般是做的雙向認證,CA會給網銀伺服器頒發一個伺服器證書,客戶端首先會驗證伺服器證書,再用客戶端證書與伺服器協商一個SSL通訊用的對稱金鑰,來保證資料資料通訊過程的安全。此處存疑。)

參考:http://baike.baidu.com/link?url=9l69fvf9ez_DMWjC8P9aZfdJEpIg-TH96GwxyE6G41t-Idxrw0QptdaDYWJaGdfsqhYeBe-L0whRTIZl71aykv2bugWS5Hn2w7_xyiZwSNowT4DT9eFmsSC8gFSiJQ4E#1_2

http://baike.baidu.com/link?url=m0SRdJdNZH9euhpTbA9LcXlvX-60EONUzl0jONLlF_U5T6oDgT_2fmHNhASv7e7e9TotcCyFicffznsEPPrrVa#reference-[1]-2120092-wrap