ios簽名機(jī)制概要

首先說明這篇文章沒有什么特別的東西,只是盡量用最簡單的邏輯來說明一下自己對ios簽名機(jī)制的理解.

簽名機(jī)制的意義

安全.蘋果為了對App的環(huán)境有絕對的控制權(quán),只有被蘋果認(rèn)可的應(yīng)用才可以安裝到手機(jī)上.可以避免應(yīng)用被篡改,以及盜版應(yīng)用的暢行,保護(hù)了開發(fā)者的利益.

原理:非對稱加密算法

非對稱加密算法是iOS的基礎(chǔ),它使用兩份密鑰(公鑰,私鑰)來對信息進(jìn)行加密以及解密:對外公開的為公鑰,簽名放自己持有的密鑰為私鑰,通過私鑰加密的內(nèi)容只能公鑰解密,而通過公鑰加密的內(nèi)容只有私鑰能夠解密.由于公鑰反推私鑰難度非常大,理論上只要密鑰的位數(shù)足夠長,反推基本是不可能的,所以非對稱機(jī)密算法是被廣泛使用的安全性非常高的加密算法.

Hash算法

由于非對稱加密算法對明文的長度有要求,既不能超過密鑰的長度,所以在使用非對稱加密算法之前,會使用hash算法對明文進(jìn)行處理

Appstore 對簽名的驗證邏輯
1.png

                                        圖1

1,首先使用Hash算法對App數(shù)據(jù)進(jìn)行處理得到摘要
2,用私鑰對摘要進(jìn)行加密,得到簽名

2.png
                                         圖2

首先要說明兩點(diǎn)
1,每臺iphone設(shè)備應(yīng)該都有蘋果特有的公鑰
2,每個通過App Store下載的應(yīng)用都會帶有蘋果通過私鑰的簽名

接下來說一下圖2的邏輯:
1,使用相同的hash算法對下載的到用戶手機(jī)的App進(jìn)行處理得到摘要1
2,使用App公鑰對簽名進(jìn)行解密,得到摘要2
3,判斷摘要1和2是否相等,如果相等那么認(rèn)證成功.否者安裝失敗

開發(fā)者

以上流程可以滿足一個普通用戶的需求,但是無法滿足開發(fā)者的需求.因為開發(fā)者為了調(diào)試需要無數(shù)次的安裝app,如果每次都需要上傳蘋果簽名,大家會瘋的!!!!!所以蘋果為開發(fā)者建立了本地簽名系統(tǒng).
開發(fā)者會在自己的電腦上生成用于簽名認(rèn)證的公鑰和私鑰洪燥,以后安裝 app 到手機(jī)上時會在本地進(jìn)行認(rèn)證梆靖,而無需將 app 上傳到蘋果的服務(wù)器上簽名抖格。但是蘋果也必須要維護(hù)自己控制 app 安裝的權(quán)利汞幢,那么蘋果會怎么做呢?答案就是使用數(shù)字證書质帅。

證書

開發(fā)者通過 鑰匙串訪問->證書助理->從證書頒發(fā)機(jī)構(gòu)請求證書 生成 Certificate Signing Request 文件(CSR 文件)想鹰,同時也在本地自動生成了相應(yīng)的公鑰和私鑰欲低,在填好必要的信息后,開發(fā)者將 CSR 文件上傳給蘋果用于生成數(shù)字證書韭畸。

CSR 文件記錄了開發(fā)者的個人信息宇智、公鑰蔓搞、加密算法以及 Hash 算法等內(nèi)容,可以使用以下命令來查看文件內(nèi)容:

openssl asn1parse -i -in CertificateSigningRequest.certSigningRequest

蘋果收到 CSR 文件后随橘,會使用自己的私鑰對開發(fā)者的公鑰進(jìn)行簽名喂分,最終生成一個數(shù)字證書(包含開發(fā)者賬號信息、公鑰以及相應(yīng)的簽名)返回給開發(fā)者机蔗,查看證書信息的命令如下

openssl x509 -inform der -in ios_development.cer -noout -text

點(diǎn)擊安裝證書后蒲祈,鑰匙串會自動將證書和相應(yīng)的私鑰對應(yīng)起來,同時你還需要在 Xcode 中將簽名證書設(shè)置為你剛剛安裝的證書萝嘁。此后在編譯完 app 時梆掸,系統(tǒng)會使用數(shù)字證書對應(yīng)的本地私鑰對 app 進(jìn)行簽名,然后同數(shù)字證書一起安裝到手機(jī)上牙言,接下來 iOS 設(shè)備會通過 Apple 公鑰來驗證數(shù)字證書是否有效酸钦,驗證通過后會使用數(shù)字證書中的公鑰來驗證 app 是否有效,最終判斷 app 是否可以被安裝

Provisioning Profile

僅有數(shù)字證書是不夠的嬉挡,為了防止權(quán)限被濫用钝鸽,開發(fā)者還需要在蘋果官網(wǎng)上注冊用于開發(fā)的設(shè)備,僅有注冊后的設(shè)備才被允許按照以上流程安裝 app,官方限制最多100臺.

除此之外庞钢,蘋果還需要對 app 的權(quán)限進(jìn)行控制拔恰,例如是否能夠使用 iCloud、Wallet基括、Maps 等颜懊,蘋果將這些功能授權(quán)統(tǒng)稱為 Entitlements。開發(fā)者將上述權(quán)限配置完成后风皿,需要從蘋果后臺下載并安裝相應(yīng)的 mobileprovision 文件河爹,該文件包含:
1,AppId
2,功能授權(quán)列表
3,已注冊的設(shè)備列表
4,數(shù)字證書
5,蘋果簽名
當(dāng)然,如果有需要的話桐款,你可以使用以下命令來查看 mobileprovision 文件內(nèi)容

security cms -D -i embedded.mobileprovision

3.png
                            圖3

1.開發(fā)者在本地生成公鑰和私鑰,然后把公鑰上傳給蘋果并獲取數(shù)字證書
2,開發(fā)者在后臺配置Appid,開發(fā)設(shè)備,功能權(quán)限,最后下載描述文件
3,開發(fā)者用本地私鑰簽名app,并將描述文件隨app安裝到ios設(shè)備
4,iOS 設(shè)備使用 Apple 公鑰驗證 mobileprovision 文件的簽名以及數(shù)字證書的簽名
5,使用數(shù)字證書包含的公鑰來驗證 app 的簽名
6,驗證安裝 app 的設(shè)備是否在設(shè)備列表中咸这,AppId 是否一致,Entitlements 和 app 中的權(quán)限是否對的上等等

參考文章:http://www.reibang.com/p/867431a5c7f7

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末魔眨,一起剝皮案震驚了整個濱河市媳维,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌遏暴,老刑警劉巖侄刽,帶你破解...
    沈念sama閱讀 222,627評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異朋凉,居然都是意外死亡州丹,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來墓毒,“玉大人吓揪,你說我怎么就攤上這事∷疲” “怎么了磺芭?”我有些...
    開封第一講書人閱讀 169,346評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長醉箕。 經(jīng)常有香客問我钾腺,道長,這世上最難降的妖魔是什么讥裤? 我笑而不...
    開封第一講書人閱讀 60,097評論 1 300
  • 正文 為了忘掉前任放棒,我火速辦了婚禮,結(jié)果婚禮上己英,老公的妹妹穿的比我還像新娘间螟。我一直安慰自己,他們只是感情好损肛,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,100評論 6 398
  • 文/花漫 我一把揭開白布厢破。 她就那樣靜靜地躺著,像睡著了一般治拿。 火紅的嫁衣襯著肌膚如雪摩泪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,696評論 1 312
  • 那天劫谅,我揣著相機(jī)與錄音见坑,去河邊找鬼。 笑死捏检,一個胖子當(dāng)著我的面吹牛荞驴,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播贯城,決...
    沈念sama閱讀 41,165評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼熊楼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了能犯?” 一聲冷哼從身側(cè)響起鲫骗,我...
    開封第一講書人閱讀 40,108評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎悲雳,沒想到半個月后挎峦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體香追,經(jīng)...
    沈念sama閱讀 46,646評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡合瓢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,709評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了透典。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片晴楔。...
    茶點(diǎn)故事閱讀 40,861評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡顿苇,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出税弃,到底是詐尸還是另有隱情纪岁,我是刑警寧澤,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布则果,位于F島的核電站幔翰,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏西壮。R本人自食惡果不足惜遗增,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,196評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望款青。 院中可真熱鬧做修,春花似錦、人聲如沸抡草。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽康震。三九已至燎含,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間腿短,已是汗流浹背瘫镇。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留答姥,地道東北人铣除。 一個月前我還...
    沈念sama閱讀 49,287評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像鹦付,于是被迫代替她去往敵國和親尚粘。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,860評論 2 361

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

  • 接觸iOS開發(fā)多年敲长,花了一點(diǎn)時間去研究了一下iOS這套證書和簽名機(jī)制郎嫁,并撰文分享給需要的朋友。由于本人才疏學(xué)淺祈噪,多...
    風(fēng)和花閱讀 1,878評論 0 7
  • 非對稱加密和摘要非對稱加密的特性和用法非對稱加密算法可能是世界上最重要的算法泽铛,它是當(dāng)今電子商務(wù)等領(lǐng)域的基石。簡而言...
    哈哈哈我的簡書賬號閱讀 1,282評論 1 5
  • iOS 簽名機(jī)制挺復(fù)雜辑鲤,各種證書盔腔,Provisioning Profile,entitlements,Certif...
    cosWriter閱讀 422評論 0 5
  • 我記得上學(xué)時候弛随,政治課總在說我們要抓重點(diǎn)瓢喉、抓中心,就是找到主要矛盾和矛盾的主要方面舀透。我們說話時候栓票,是不是也可以抓住...
    我是狐貍一只閱讀 95評論 0 1
  • 在學(xué)生黨支部建設(shè)過程中,存在以下幾點(diǎn)問題:1.由于課業(yè)繁忙以及壓力較大愕够,黨員參與活動積極性不高走贪,服務(wù)群眾的意識不強(qiáng)...
    斧頭頭閱讀 1,181評論 0 0