幾個重要的概念
1. 非對稱加密
非對稱加密演算法需要兩個金鑰:公開金鑰(publickey
)和私有金鑰(privatekey)
。公開金鑰與私有金鑰是一對,如果用公開金鑰對資料進行加密,只有用對應的私有金鑰才能解密;如果用私有金鑰對資料進行加密,那麼只有用對應的公開金鑰才能解密。(私鑰是要保密的,公鑰可以公開)rsa
是目前最有影響力的公鑰加密演算法,它能夠抵抗到目前為止已知的絕大多數密碼攻擊,已被iso推薦為公鑰資料加密標準。rsa
是以三個發明者的姓氏首字母組成的。
2. 摘要演算法
資料摘要演算法是密碼學演算法中非常重要的乙個分支,它通過對所有資料提取指紋資訊以實現資料簽名、資料完整性校驗等功能,由於其不可逆性,有時候會被用做敏感資訊的加密。資料摘要演算法也被稱為雜湊(hash)演算法、雜湊演算法。 摘要演算法也可以理解為將任意長度的資料,通過乙個演算法,得到乙個固定長度的資料。典型的摘要演算法,比如大名鼎鼎的md5
和sha
。
3. 數字簽名
數字簽名就是利用非對稱加密
和摘要演算法
來傳輸資料,保證資料的完整性
和合法性
。驗證過程如下: 1. 傳送方使用給乙個摘要演算法(md5
)得到要傳送資料的摘要,然後用自己的私鑰和乙個非對稱加密演算法(rsa
)對得到的摘要加密,得到加密後的資料,然後將要傳送的資料
、加密後的資料
、摘要演算法
和加密演算法
一同傳送給接收方。 2. 接收方接收到資料後,根據指定的摘要演算法(md5
)得到實際要傳輸的資料的摘要,然後在根據指定的加密演算法(rsa
)和已有的公鑰解密得到加密資料解密後的資料,最後比較解密後的資料和得到的摘要是否相同,如果相同就說明實際要傳輸的資料是完成的合法的。
4. 數字證書
ios簽名驗證流程
一. 證書申請
用我們自己的機器生成certificatesigningrequest.certsigningrequest
檔案,在生成的過程中會產生一對公鑰和私鑰,私鑰已經儲存在我們的機器上,這個檔案包含了我們的公鑰,具體內容如下:
二. 打包簽名
包含哪些證書:不同證書對應不同功能。
功能授權列表可安裝的裝置列表:ios裝置的udid列表,發布證書應該是通配。
蘋果數字簽名:蘋果用來驗證以上的資訊。
通過xcode
指定要使用的證書,其實是 指定了簽名過程中要使用的私鑰
,這個私鑰是和證書中的公鑰相對應的。然後指定對應的mobileprovision
,由於mobileprovision
檔案中包含了證書,實際上本地證書就是xcode
用來指定對應私鑰
用的。
最後通過指定的私鑰對需要簽名的資料進行數字簽名(編譯過程在簽名之前,這裡省略了編譯過程,編譯後的二進位制檔案也是要簽名的內容),最終將ipa
包的形式輸出,ipa
的檔案結構如下:
三. 驗證安裝
證書驗證通過後,獲取證書內的我們開發者的公鑰。然後通過開發者的公鑰驗證應用程式包內的資料的完整性和安全性。通過後即可安裝。
參考資料
漫談ios程式的證書和簽名機制
ios code signing 學習筆記
inside code signing
**簽名探析
iresign
iOS 簽名機制
上述的 n,e 這兩個資料在一起就是公鑰,n,d 這兩個資料就是私鑰,滿足用私鑰加密,公鑰解密,或反過來公鑰加密,私鑰解密,也滿足在只暴露公鑰 只知道 n 和 e 的情況下,要推導出私鑰 n,d 需要把大整數 n 因數分解。目前因數分解只能靠暴力窮舉,而 n 數字越大,越難以用窮舉計算出因數 p 和...
ios簽名機制的理解
一 非對稱演算法和數字簽名 區別之前的對稱加密演算法 加密解密用的是同乙個秘鑰 非對稱加密演算法需要兩個秘鑰,即公鑰和私鑰來進行加密和解密,它倆是成對出現的,如果用公鑰加密的內容,只有對應的私鑰才能解密,反之,用私鑰加密的內容,只有對應的公鑰才能解密。相對於對稱演算法,該演算法安全性高,只要私鑰不洩...
iOS 簽名機制與證書
純粹就是總結,很多地方跟參考資料一樣,就是自己手動打一遍,自己親自畫個圖增加理解和加強記憶力,而不只是複製貼上 ios 打包流程也不在此敘述,相信很多人已經對照過各種 並茂的文章一一操作過 即加密金鑰與解密金鑰不同,且成對出現 對外公開的稱為公鑰,這對金鑰生成者才擁有的稱為私鑰 通過私鑰加密的密文只...