iOS之蘋果雙重驗(yàn)證的原理

為什么要做雙重驗(yàn)證甥雕?

debug模式下,安裝包不需要上傳到App Store,可以直接安裝到手機(jī)上。蘋果為了保證系統(tǒng)的安全性,又必須對(duì)安裝的APP有絕對(duì)的控制權(quán)。APP必須經(jīng)過蘋果允許才可以安裝砂客,不能被濫用導(dǎo)致非開發(fā)APP也能被安裝。為了實(shí)現(xiàn)這些需求,iOS簽名的復(fù)雜度也就開始增加了,蘋果這里給出的方案是雙層簽名呵恢。

雙重代碼簽名的實(shí)現(xiàn)流程

圖1

說明:

iOS的雙層代碼簽名流程這里簡單梳理一下,這也不是最終的iOS簽名原理鞠值。iOS的最終簽名在這個(gè)基礎(chǔ)上還要稍微加點(diǎn)東西。

首先這里有兩個(gè)角色渗钉。一個(gè)是iOS系統(tǒng) 還有一個(gè)就是我們的Mac系統(tǒng)彤恶,因?yàn)閕OS的APP開發(fā)環(huán)境在Mac系統(tǒng)下,所以這個(gè)依賴關(guān)系成為了蘋果雙層簽名的基礎(chǔ)鳄橘。

步驟:

1.在Mac系統(tǒng)中生成非對(duì)稱加密算法的一對(duì)公鑰\私鑰(你的Xcode幫你代辦了).這里稱為公鑰M 私鑰M 声离。 M = Mac

2.蘋果自己有固定的一對(duì)公私鑰,跟之前App Store原理一樣,私鑰在蘋果后臺(tái),公鑰在每個(gè)iOS系統(tǒng)中.這里稱為公鑰A , 私鑰A. A=Apple

3.把公鑰M 以及一些你開發(fā)者的信息,傳到蘋果后臺(tái)(這個(gè)就是CSR文件),用蘋果后臺(tái)里的私鑰 A 去簽名公鑰M瘫怜。得到一份數(shù)據(jù)包含了公鑰M 以及其簽名术徊,把這份數(shù)據(jù)稱為證書

4.在開發(fā)時(shí)鲸湃,編譯完一個(gè) APP 后赠涮,用本地的私鑰 M(今后你導(dǎo)出的P12) 對(duì)這個(gè) APP 進(jìn)行簽名,同時(shí)把第三步得到的證書一起打包進(jìn) APP 里唤锉,安裝到手機(jī)上。

5.在安裝時(shí)别瞭,iOS 系統(tǒng)取得證書窿祥,通過系統(tǒng)內(nèi)置的公鑰 A,去驗(yàn)證證書的數(shù)字簽名是否正確蝙寨。

6.驗(yàn)證證書后確保了鑰 M 是蘋果認(rèn)證過的晒衩,再用公鑰 M 去驗(yàn)證 APP 的簽名,這里就間接驗(yàn)證了這個(gè) APP 安裝行為是否經(jīng)過蘋果官方允許墙歪。(這里只驗(yàn)證安裝行為听系,不驗(yàn)證APP 是否被改動(dòng),因?yàn)殚_發(fā)階段 APP 內(nèi)容總是不斷變化的虹菲,蘋果不需要管靠胜。)

注意:以上的操作會(huì)存在一個(gè)重大的bug,蘋果是絕對(duì)不允許這樣的事情發(fā)生的。就是這樣子操作的話我們可以不經(jīng)過蘋果的服務(wù)器生成證書浪漠,自己進(jìn)行驗(yàn)證就可以安裝APP陕习,所以就引申出了描述文件。

描述文件

描述文件(Provisioning profile)一般包括三樣?xùn)|西:證書址愿、App ID该镣、設(shè)備信息、權(quán)限信息响谓。當(dāng)我們?cè)谡鏅C(jī)運(yùn)行或者打包一個(gè)項(xiàng)目的時(shí)候损合,證書用來證明我們程序的安全性和合法性。

圖2

蘋果為了解決應(yīng)用濫用的問題,所以蘋果又加了兩個(gè)限制:

第一限制在蘋果后臺(tái)注冊(cè)過的設(shè)備才可以安裝娘纷。

第二限制簽名只能針對(duì)某一個(gè)具體的APP嫁审。

并且蘋果還想控制App里面的iCloud/PUSH/后臺(tái)運(yùn)行/調(diào)試器附加這些權(quán)限,所以蘋果把這些權(quán)限開關(guān)統(tǒng)一稱為Entitlements(授權(quán)文件).并將這個(gè)文件放在了一個(gè)叫做Provisioning Profile(描述文件)文件中。

描述文件是在AppleDevelop網(wǎng)站創(chuàng)建的(在Xcode中填上AppleID它會(huì)代辦創(chuàng)建),Xcode運(yùn)行時(shí)會(huì)打包進(jìn)入APP內(nèi)失驶。

所以我們使用CSR申請(qǐng)證書時(shí),我們還要申請(qǐng)一個(gè)東西!! 就是描述文件!

在開發(fā)時(shí),編譯完一個(gè) APP 后,用本地的私鑰M對(duì)這個(gè)APP進(jìn)行簽名,同時(shí)把從蘋果服務(wù)器得到的 Provisioning Profile 文件打包進(jìn)APP里,文件名為embedded.mobileprovision,把 APP 安裝到手機(jī)上土居。最后系統(tǒng)進(jìn)行驗(yàn)證。

注意:描述文件不能篡改嬉探,也別想著改擦耀,改的話就驗(yàn)證不通過了。當(dāng)需要新的描述文件時(shí)候只能夠重新向蘋果服務(wù)器生成涩堤。






?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末眷蜓,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子胎围,更是在濱河造成了極大的恐慌吁系,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件白魂,死亡現(xiàn)場(chǎng)離奇詭異汽纤,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)福荸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門蕴坪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人敬锐,你說我怎么就攤上這事背传。” “怎么了台夺?”我有些...
    開封第一講書人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵径玖,是天一觀的道長。 經(jīng)常有香客問我颤介,道長梳星,這世上最難降的妖魔是什么赞赖? 我笑而不...
    開封第一講書人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮丰泊,結(jié)果婚禮上薯定,老公的妹妹穿的比我還像新娘。我一直安慰自己瞳购,他們只是感情好话侄,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著学赛,像睡著了一般年堆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上盏浇,一...
    開封第一講書人閱讀 49,111評(píng)論 1 285
  • 那天变丧,我揣著相機(jī)與錄音,去河邊找鬼绢掰。 笑死痒蓬,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的滴劲。 我是一名探鬼主播攻晒,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼班挖!你這毒婦竟也來了鲁捏?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤萧芙,失蹤者是張志新(化名)和其女友劉穎给梅,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體双揪,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡动羽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了渔期。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片运吓。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖擎场,靈堂內(nèi)的尸體忽然破棺而出羽德,到底是詐尸還是另有隱情几莽,我是刑警寧澤迅办,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站章蚣,受9級(jí)特大地震影響站欺,放射性物質(zhì)發(fā)生泄漏姨夹。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一矾策、第九天 我趴在偏房一處隱蔽的房頂上張望磷账。 院中可真熱鬧,春花似錦贾虽、人聲如沸逃糟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽绰咽。三九已至,卻和暖如春地粪,著一層夾襖步出監(jiān)牢的瞬間取募,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來泰國打工蟆技, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留玩敏,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓质礼,卻偏偏與公主長得像旺聚,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子几苍,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

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