iOS逆向之旅(基礎篇) — App的簽名機制【Xcode是如何將App安裝到手機的】

洪呵呵發表於2018-10-26

首先先科普一下XCode簽名需要用到的理論知識

  • RSA加密演算法 一種非對稱的加密演算法,用於通訊。這種演算法通常是客戶端持有公鑰,服務端持有私鑰。客戶端利用公鑰加密。服務端可以用私鑰解密。服務利用私鑰加密資料發給客戶端,客戶端可以利用公鑰解密出來。【簡單來說就是:公鑰加密的資料,利用私鑰可以解密;私鑰加密的資料,公鑰同樣能解密】
  • 數字簽名 客戶端把【資料】,並利用公鑰加密【資料的MD5】,然後把這【資料】與【機密後的MD5】發給伺服器 伺服器獲取到資料包後,先求出【資料】的MD5,並解密【資料的MD5】,然後兩者進行對比,如果不一樣就代表資料被截獲串改了

XCode如何將App安裝到手機的【首先這個流程會涉及到2次數字簽名】

1.Mac電腦本地生成公鑰和私鑰,把自己的公鑰打包成CSR檔案發給伺服器。

11.png
2.蘋果伺服器利用自己的私鑰,對 Mac電腦的公鑰進行數字簽名,生成證書與描述檔案,將證書與描述檔案返回給Mac電腦。 
12.png
3.Mac電腦利用私鑰對App的可執行檔案的Hash值進行加密,生成App的簽名 4.Mac 將 App的可執行檔案、App的簽名、證書【關聯Mac的私鑰】、描述檔案 打包成一個App傳輸給手機
13.png
5.手機將會使用蘋果的公鑰,對證書解析,獲得Mac的公鑰。利用Mac的公鑰,解析App簽名,獲取Hash值進行認證,認證成功則App成功安裝上,認證失敗就無法安裝。

相關文章