iOS簽名授權機制

2021-07-15 06:25:21 字數 2176 閱讀 2730

幾個重要的概念

1. 非對稱加密

非對稱加密演算法需要兩個金鑰:公開金鑰(publickey)和私有金鑰(privatekey)。公開金鑰與私有金鑰是一對,如果用公開金鑰對資料進行加密,只有用對應的私有金鑰才能解密;如果用私有金鑰對資料進行加密,那麼只有用對應的公開金鑰才能解密。(私鑰是要保密的,公鑰可以公開)rsa是目前最有影響力的公鑰加密演算法,它能夠抵抗到目前為止已知的絕大多數密碼攻擊,已被iso推薦為公鑰資料加密標準。rsa是以三個發明者的姓氏首字母組成的。 

2. 摘要演算法

資料摘要演算法是密碼學演算法中非常重要的乙個分支,它通過對所有資料提取指紋資訊以實現資料簽名、資料完整性校驗等功能,由於其不可逆性,有時候會被用做敏感資訊的加密。資料摘要演算法也被稱為雜湊(hash)演算法、雜湊演算法。 摘要演算法也可以理解為將任意長度的資料,通過乙個演算法,得到乙個固定長度的資料。典型的摘要演算法,比如大名鼎鼎的md5sha。 

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 打包流程也不在此敘述,相信很多人已經對照過各種 並茂的文章一一操作過 即加密金鑰與解密金鑰不同,且成對出現 對外公開的稱為公鑰,這對金鑰生成者才擁有的稱為私鑰 通過私鑰加密的密文只...