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

????????代碼簽名是對可執(zhí)行文件或腳本進行數(shù)字簽名.用來確認軟件在簽名后未被修改或損壞的措施芹壕。和數(shù)字簽名原理一樣,只不過簽名的數(shù)據(jù)是代碼而已.

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

????????如果要實現(xiàn)驗證.其實最簡單的方式就是通過蘋果官方生成非對稱加密的一對公私鑰.在iOS的系統(tǒng)中內(nèi)置一個公鑰,私鑰由蘋果后臺保存,我們傳APP到AppStore時,蘋果后臺用私鑰對APP數(shù)據(jù)進行簽名,iOS系統(tǒng)下載這個APP后,用公鑰驗證這個簽名,若簽名正確,這個APP肯定是由蘋果后臺認證的,并且沒有被修改過,也就達到了蘋果的需求:保證安裝的每一個APP都是經(jīng)過蘋果官方允許的.

????????如果我們iOS設(shè)備安裝APP只從App Store這一個入口這件事就簡單解決了,沒有任何復(fù)雜的東西,一個數(shù)字簽名搞定.?

????????但是實際上iOS安裝APP還有其他渠道.比如對于我們開發(fā)者iOSER而言,我們是需要在開發(fā)APP時直接真機調(diào)試的.而且蘋果還開放了企業(yè)內(nèi)部分發(fā)的渠道,企業(yè)證書簽名的APP也是需要順利安裝的.蘋果需要開放這些方式安裝APP,這些需求就無法通過簡單的代碼簽名來辦到了例证。

蘋果的需求:

? 安裝包不需要上傳到App Store,可以直接安裝到手機上.

? 蘋果為了保證系統(tǒng)的安全性,又必須對安裝的APP有絕對的控制權(quán)

? 經(jīng)過蘋果允許才可以安裝

? 不能被濫用導(dǎo)致非開發(fā)APP也能被安裝

為了實現(xiàn)這些去求栈妆,iOS簽名的復(fù)雜度也就開始增加了,蘋果這里給出的方案是雙層簽名愕提。


雙層簽名

????????iOS的雙層代碼簽名流程這里簡單梳理一下,這也不是最終的iOS簽名原理.iOS的最終簽名在這個基礎(chǔ)上還要稍微加點東西.?首先這里有兩個角色.一個是iOS系統(tǒng) 還有一個就是我們的Mac系統(tǒng).因為iOS的APP開發(fā)環(huán)境在Mac系統(tǒng)下.所以這個依賴關(guān)系成為了蘋果雙層簽名的基礎(chǔ).

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

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

3.把公鑰M?以及一些你開發(fā)者的信息,傳到蘋果后臺(這個就是CSR文件)锐墙,用蘋果后臺里的私鑰A?去簽名公鑰M析校。得到一份數(shù)據(jù)包含了公鑰M?以及其簽名构罗,把這份數(shù)據(jù)稱為證書。

4.在開發(fā)時勺良,編譯完一個APP?后绰播,用本地的私鑰M(今后你導(dǎo)出的P12)?對這個?APP?進行簽名,同時把第三步得到的證書一起打包進APP?里尚困,安裝到手機上蠢箩。

5.在安裝時,iOS系統(tǒng)取得證書,通過系統(tǒng)內(nèi)置的公鑰A谬泌,去驗證證書的數(shù)字簽名是否正確滔韵。

6.驗證證書后確保了公鑰?M?是蘋果認證過的,再用公鑰M?去驗證?APP?的簽名掌实,這里就間接驗證了這個APP?安裝行為是否經(jīng)過蘋果官方允許陪蜻。(這里只驗證安裝行為,不驗證APP?是否被改動贱鼻,因為開發(fā)階段APP?內(nèi)容總是不斷變化的宴卖,蘋果不需要管。)

????????有了上面的過程邻悬,已經(jīng)可以保證開發(fā)者的認證症昏,和程序的安全性了。 但是父丰,你要知道iOS的程序肝谭,主要渠道是要通過APP Store才能分發(fā)到用戶設(shè)備的,如果只有上述的過程蛾扇,那豈不是只要申請了一個證書攘烛,就可以安裝到所有iOS設(shè)備了?

?描述文件

????????描述文件(Provisioning profile)一般包括三樣?xùn)|西:證書镀首、App ID坟漱、設(shè)備。當(dāng)我們在真機運行或者打包一個項目的時候蘑斧,證書用來證明我們程序的安全性和合法性靖秩。

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

?第一限制在蘋果后臺注冊過的設(shè)備才可以安裝.

?第二限制簽名只能針對某一個具體的APP.

?????????并且蘋果還想控制App里面的iCloud/PUSH/后臺運行/調(diào)試器附加這些權(quán)限,所以蘋果把這些權(quán)限開關(guān)統(tǒng)一稱為Entitlements(授權(quán)文件).并將這個文件放在了一個叫做Provisioning Profile(描述文件)文件中. 描述文件是在AppleDevelop網(wǎng)站創(chuàng)建的(在Xcode中填上AppleID它會代辦創(chuàng)建),Xcode運行時會打包進入APP內(nèi).所以我們使用CSR申請證書時,我們還要申請一個東西!!就是描述文件!

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末竖瘾,一起剝皮案震驚了整個濱河市沟突,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌捕传,老刑警劉巖惠拭,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異庸论,居然都是意外死亡职辅,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進店門聂示,熙熙樓的掌柜王于貴愁眉苦臉地迎上來域携,“玉大人,你說我怎么就攤上這事鱼喉⌒惚蓿” “怎么了趋观?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長锋边。 經(jīng)常有香客問我皱坛,道長,這世上最難降的妖魔是什么豆巨? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任剩辟,我火速辦了婚禮,結(jié)果婚禮上往扔,老公的妹妹穿的比我還像新娘贩猎。我一直安慰自己,他們只是感情好萍膛,可當(dāng)我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布融欧。 她就那樣靜靜地躺著,像睡著了一般卦羡。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上麦到,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天绿饵,我揣著相機與錄音,去河邊找鬼瓶颠。 笑死拟赊,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的粹淋。 我是一名探鬼主播吸祟,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼桃移!你這毒婦竟也來了屋匕?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤借杰,失蹤者是張志新(化名)和其女友劉穎过吻,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蔗衡,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡纤虽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了绞惦。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片逼纸。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖济蝉,靈堂內(nèi)的尸體忽然破棺而出杰刽,到底是詐尸還是另有隱情菠发,我是刑警寧澤,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站虹脯,受9級特大地震影響揩慕,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜哥力,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望墩弯。 院中可真熱鬧吩跋,春花似錦、人聲如沸渔工。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽引矩。三九已至梁丘,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間旺韭,已是汗流浹背氛谜。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留区端,地道東北人值漫。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像织盼,于是被迫代替她去往敵國和親杨何。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,452評論 2 348

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