iOS應(yīng)用簽名原理

前言

iOS真機(jī)調(diào)試宫莱、App打包等過(guò)程涉及到各種證書(shū),CertificateSigningRequest投慈、p12荧降、Provisioning Profile专挪。這些證書(shū)是什么,為什么需要這么做,相信很多同學(xué)是模糊的及志。本文從原理出發(fā),一步步推出為什么會(huì)有這么多概念,有助于理解iOS App簽名的原理和流程。

簽名目的

?在iOS出來(lái)之前,以前的主流操作系統(tǒng)(Mac/Windows)軟件隨便從哪里下載都能運(yùn)行,系統(tǒng)安全存在隱患,盜版軟件,病毒入侵,靜默安裝等等寨腔。那么蘋(píng)果希望解決這樣的問(wèn)題,要保證每一個(gè)安裝到 iOS 上的 APP 都是經(jīng)過(guò)蘋(píng)果官方允許的,怎樣保證呢?就是通過(guò)代碼簽名速侈。

?非對(duì)稱(chēng)加密RSA原理

RSA 算法的可靠性基礎(chǔ):對(duì)極大整數(shù)做因數(shù)分解是很困難的。RSA 是非對(duì)稱(chēng)算法迫卢,加解密使用不同的密鑰倚搬。

兩個(gè)密鑰都可以用于加密,解密時(shí)需要使用另一個(gè)密鑰乾蛤。但是每界,通常用公鑰加密私鑰解密,因?yàn)楣€是近乎完全公開(kāi)的家卖,對(duì)于私鑰加密的數(shù)據(jù)眨层,有太多的人可以解密了。理論上 A 和 B 之間要通過(guò) RSA 實(shí)現(xiàn)保密通信上荡,需要 A 和 B 各自生成一組密鑰趴樱,同時(shí)保管好自己的私鑰;用對(duì)方的公鑰加密要發(fā)送的消息,用自己的私鑰解密對(duì)方發(fā)送過(guò)來(lái)的消息叁征。

在簽名的場(chǎng)景下纳账,用私鑰簽名,公鑰驗(yàn)簽航揉。

蘋(píng)果的需求

安裝包不需要傳到蘋(píng)果服務(wù)器塞祈,可以直接安裝到手機(jī)上。如果你編譯一個(gè)App到手機(jī)前要先傳到蘋(píng)果服務(wù)器簽名帅涂,這顯然是不能接受的。

蘋(píng)果必須對(duì)這里的安裝有控制權(quán)尤蛮,包括:

a.經(jīng)過(guò)蘋(píng)果允許才可以這樣安裝;

b. 不能被濫用導(dǎo)致非開(kāi)發(fā)App也能這樣安裝媳友;

為了實(shí)現(xiàn)這些需求,蘋(píng)果這里給出的方案是使用了雙層簽名产捞,流程大概是這樣的:

1.在你的 Mac 開(kāi)發(fā)機(jī)器生成一對(duì)公私鑰醇锚,這里稱(chēng)為Mac公鑰,Mac私鑰坯临。

2.蘋(píng)果自己有固定的一對(duì)公私鑰焊唬,私鑰在蘋(píng)果后臺(tái),公鑰在每個(gè)iOS設(shè)備上看靠。這里稱(chēng)為Apple公鑰赶促,Apple私鑰。

3.把Mac公鑰傳到蘋(píng)果后臺(tái)挟炬,用蘋(píng)果后臺(tái)里的Apple私鑰去簽名Mac公鑰鸥滨。得到一份數(shù)據(jù)包含Mac公鑰以及其簽名,把這份數(shù)據(jù)稱(chēng)為證書(shū)谤祖。

4.在蘋(píng)果后臺(tái)申請(qǐng)AppID婿滓,配置好設(shè)備ID列表和APP可使用的權(quán)限,再加上第③步的證書(shū)粥喜,組成的數(shù)據(jù)用Apple私鑰簽名凸主,把數(shù)據(jù)和簽名一起組成一個(gè)Provisioning Profile文件,下載到本地Mac開(kāi)發(fā)機(jī)额湘。

5.在開(kāi)發(fā)時(shí)卿吐,編譯完一個(gè)APP后,用本地的Mac私鑰對(duì)這個(gè)APP進(jìn)行簽名缩挑,同時(shí)把第④步得到的Provisioning Profile文件打包進(jìn)APP里但两,文件名為embedded.mobileprovision,把APP安裝到手機(jī)上供置。

6.7.安裝時(shí)谨湘,通過(guò)系統(tǒng)內(nèi)置的Apple公鑰,去驗(yàn)證?embedded.mobileprovision的數(shù)字簽名是否正確,里面的證書(shū)簽名也會(huì)再驗(yàn)一遍紧阔。

8.確保了embedded.mobileprovision里的數(shù)據(jù)都是蘋(píng)果授權(quán)以后坊罢,就可以取出里面的數(shù)據(jù),做各種驗(yàn)證擅耽,包括用Mac公鑰驗(yàn)證APP簽名活孩,驗(yàn)證設(shè)備ID是否在ID列表上,AppID是否對(duì)應(yīng)得上乖仇,權(quán)限開(kāi)關(guān)是否跟APP里的Entitlements對(duì)應(yīng)等憾儒。

其他發(fā)布方式

另外兩種方式In-House企業(yè)簽名和AD-Hoc流程也是差不多的,只是企業(yè)簽名不限制安裝的設(shè)備數(shù)乃沙,另外需要用戶(hù)在iOS系統(tǒng)設(shè)置上手動(dòng)點(diǎn)擊信任這個(gè)企業(yè)才能通過(guò)驗(yàn)證起趾。

而AppStore的簽名驗(yàn)證方式有些不一樣,如果去下載一個(gè)AppStore的安裝包警儒,會(huì)發(fā)現(xiàn)它里面是沒(méi)有embedded.mobileprovision文件的训裆,也就是它安裝和啟動(dòng)的流程是不依賴(lài)這個(gè)文件。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蜀铲,一起剝皮案震驚了整個(gè)濱河市边琉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌记劝,老刑警劉巖变姨,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異隆夯,居然都是意外死亡钳恕,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門(mén)蹄衷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)忧额,“玉大人,你說(shuō)我怎么就攤上這事愧口∧婪” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵耍属,是天一觀的道長(zhǎng)托嚣。 經(jīng)常有香客問(wèn)我,道長(zhǎng)厚骗,這世上最難降的妖魔是什么示启? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮领舰,結(jié)果婚禮上夫嗓,老公的妹妹穿的比我還像新娘迟螺。我一直安慰自己,他們只是感情好舍咖,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布矩父。 她就那樣靜靜地躺著,像睡著了一般排霉。 火紅的嫁衣襯著肌膚如雪窍株。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,749評(píng)論 1 289
  • 那天攻柠,我揣著相機(jī)與錄音球订,去河邊找鬼。 笑死辙诞,一個(gè)胖子當(dāng)著我的面吹牛辙售,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播飞涂,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼祈搜!你這毒婦竟也來(lái)了较店?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤容燕,失蹤者是張志新(化名)和其女友劉穎梁呈,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體蘸秘,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡官卡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了醋虏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片寻咒。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖颈嚼,靈堂內(nèi)的尸體忽然破棺而出毛秘,到底是詐尸還是另有隱情,我是刑警寧澤阻课,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布叫挟,位于F島的核電站,受9級(jí)特大地震影響限煞,放射性物質(zhì)發(fā)生泄漏抹恳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一署驻、第九天 我趴在偏房一處隱蔽的房頂上張望奋献。 院中可真熱鬧健霹,春花似錦、人聲如沸秽荞。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)扬跋。三九已至阶捆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間钦听,已是汗流浹背洒试。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留朴上,地道東北人垒棋。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像痪宰,于是被迫代替她去往敵國(guó)和親叼架。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容