一直以來,"對稱加密"、"非對稱加密"、"公鑰"、"私鑰"等這些詞匯對我來說都是最熟悉的陌生詞, 聽着熟悉但是從未理解其中要義. 最近又搞了搞證書相關的東西, 出於學習需要,索性就把這些東西理解了一下.本文不說算法也沒有具體的加密方法,只是幫和我一樣有困惑的小伙伴通俗易懂地理解幾個概念.
非對稱加密
是相對於對稱加密
而言的.
首先, 不論哪種方式的加密,目的都是保護被加密內容.
對稱加密
先看百度的解釋:
采用單鑰密碼系統的加密方法,同一個密鑰可以同時用作信息的加密和解密,這種加密方法稱為對稱加密,也稱為單密鑰加密。
怎么理解呢?舉個栗子.
小紅新建了一個文檔只想自己和小明看,於是小紅為這個文檔設置了密碼(加密), 然后再發送給小明. 小明只要知道文檔的密碼就可以查看其中內容(解密).別人即使拿到文檔想看,但沒有密碼(密鑰)也無從查看里面的內容.
所謂對稱
就是加密和解密的過程使用的是相同的密鑰.
非對稱加密
與對稱加密不同,非對稱加密算法的加密和解密使用不同的兩個密鑰.這兩個密鑰就是我們經常聽到的"公開密鑰
"(公鑰)和"私有密鑰
"(私鑰).
公鑰和私鑰的關系是:
公鑰和私鑰一般成對出現,
如果你的消息使用公鑰加密,那么需要該公鑰對應的私鑰才能解密;
如果你的消息使用私鑰加密,那么需要該私鑰對應的公鑰才能解密.
非對稱加密的作用是:保護消息內容, 並且讓消息接收方確定發送方的身份.
再舉個栗子
小紅和小明互發郵件,並且郵件內容需要保密.
如果是對稱加密,小明需要把唯一的密鑰告知小紅,小紅使用該密鑰進行解密即可查看郵件內容.但這樣做, 一旦在傳輸密鑰的過程中消息泄露, 保密性也就盪然無存.
很顯然對稱加密的安全性會低一些, 於是他們采用決定非對稱加密的方式, 這樣, 小明和小紅就需要各自持有一對屬於自己的公鑰和私鑰.
小明寫的郵件只想讓小紅看, 那么小紅有什么和別人不一樣的特質呢? 沒錯, 她擁有一個只有她自己知道的密鑰! 如果小明使用小紅的公鑰加密(公鑰是公開給別人的), 那么就只有小紅的私鑰才能解密,這就達到了只讓小紅看的目的.(保護消息內容)
但是還有一個問題.既然小紅的公鑰是公開的,那么就可能產生有不明身份的人冒充小明, 使用小紅的公鑰加密然后給小紅發郵件.
小明為了避免這種情況的發生,把郵件內容用自己的密鑰進行加密,小紅接收到郵件后,使用小明的公鑰解密(只有小明公鑰才能解開使用小明私鑰加密的消息),如果可以解開,那么她就知道這個郵件的的確確是小明發的.(確定消息發送方的身份)
我簡單畫了一個圖來表示這個過程:

.

當我們想將寫好的iOS程序運行到真機上(你的真機/測試人員的測試機/從App Store上下載應用的用戶的手機等)時,很多地方會使用這種非對稱加密的方式進行數字簽名或者身份認證,從而保證程序的來源可信並且安全.
這篇文章只是簡單對非對稱加密做一些理解,后面我會另起文章對代碼簽名及數字證書等原理及過程進行闡述.
內容比較抽象, 也不知道我描述清楚了沒有,如果沒有的話歡迎大家提出意見和指正.