蘋果簽名機(jī)制淺入淺出

久等愚臀,最近一直很忙馋袜,代碼實在寫的無聊捧毛,然后確實有想要了解和總結(jié)這方面的知識师痕,就寫了這篇文章。

申明:這可能只是一個讀后感,關(guān)于一片《漫談iOS程序的證書和簽名機(jī)制》的一些理解(或者說用自己的方式描述一遍之類的),打開有問題的同學(xué)可以查看segmentfault上面的轉(zhuǎn)載厢塘。

加密算法

按照原文的寫法喂急,我們先來講一下幾個比較基礎(chǔ)的加密算法廊移。世上無難事,只怕有心人,任何的加密算法都是可以破解的芋类,設(shè)置一些加密算法無非只是提高門檻罷了泡躯,高玩?zhèn)兛吹竭@些粗淺的加密算法千萬別噴咕别,嘴下留情啊送。

對稱加密

可以先講講對稱的加密,就是加密的密鑰和解密的密鑰是同一個纤子,舉個栗子就是你的寶庫的開門鑰匙和鎖門鑰匙是同一把艾少,假如有人拿到這把鑰匙肋演,就能夠進(jìn)入寶庫雏吭,把里面的寶物全部偷光,過分點(diǎn),還可以拉兩坨屎再走。然后當(dāng)不懂事的小虎子拿著你給他的鑰匙來寶庫拿寶物的時候,就會開開心心的拿著兩坨屎,帶在身上氯质。好蠢拱礁,講不下去了鸯乃,大概就是這么個意思。</br>

稍微專業(yè)點(diǎn)的描述就是,當(dāng)你使用密鑰加密你的數(shù)據(jù),在傳輸過程中隐砸,如果有人竊取過你的密鑰式塌,那么武学,他能夠篡改你的數(shù)據(jù)熏矿,而接收到的人卻全然不知栏妖。</br>
用圖來表示大概是這樣:

非對稱加密

非對稱加密和對稱加密相反,它有兩個密鑰勇边,一個我們叫做私鑰(secret key)识颊,一個叫做公鑰(public key),通過私鑰加密的數(shù)據(jù)只有通過公鑰才能解密奕坟,通過公鑰加密的數(shù)據(jù)只有私鑰才能夠解密祥款,而且公鑰和私鑰唯一對應(yīng),且很難或者不可能互相推導(dǎo)月杉,再拿同一個比方刃跛,開門和鎖門的鑰匙是兩把,鎖門的鑰匙只有自己持有苛萎,而把開門的鑰匙交給別人桨昙,這樣,當(dāng)別人獲取到相對較易獲取的公鑰的時候首懈,那個人能夠打開你的寶庫绊率,但是當(dāng)他偷取里面的寶物再鎖上門的時候是沒有鑰匙的,我們就能清楚的知道寶庫是否被竊賊關(guān)顧過究履,從而考慮是不是要換一組鑰匙滤否,而去取寶物的人,也不會很蠢的拿著里面的垃圾當(dāng)寶物了最仑。</br>

再用專業(yè)點(diǎn)的話來描述就是:你會使用只有你自己持有藐俺,并相對安全的私鑰較密數(shù)據(jù),假如公鑰的持有者很不小心的把公鑰泄露了泥彤,那么造成的影響最大是數(shù)據(jù)被剽竊欲芹,但絕不會被篡改,一旦被篡改吟吝,我們能夠馬上知曉并作出相應(yīng)地應(yīng)對策略菱父。</br>

但經(jīng)過這番了解,我發(fā)現(xiàn)非對稱加密算法應(yīng)該只是單向安全的剑逃,假如從數(shù)據(jù)從對方發(fā)來浙宜,如果使用公鑰加密數(shù)據(jù),那么在中途就可能有機(jī)會篡改蛹磺,所以就必須要使用另一套公鑰私鑰粟瞬。所以其實各大第三方的平臺都會給其開發(fā)者開出一個公鑰,一個私鑰萤捆,而這對公鑰私鑰在我理解來看應(yīng)該是不對應(yīng)的裙品,而應(yīng)該是和其平臺上的一對公鑰私鑰相對應(yīng)俗批。

摘要算法

摘要算法是一段很神奇的算法,它的功能是更具一段很長的數(shù)據(jù)市怎,它能夠計算出一段唯一且很短的數(shù)據(jù)岁忘。使用這種技術(shù)可以用一段較短的數(shù)據(jù)標(biāo)示一段很長的數(shù)據(jù)或者文件,比較著名的有MD5和SHA算法焰轻。想起git和svn的區(qū)別臭觉,svn在記錄每一個commit的時候,只是使用一個計數(shù)器辱志,每次加1,而git在記錄commit的時候就是使用SHA的算法狞膘,計算這個項目的SHA值揩懒,用這個值作為這次commit的唯一標(biāo)示。SHA和MD5加密不可逆挽封,所以現(xiàn)在很多賬號密碼服務(wù)中已球,也會使用這兩種算法。

數(shù)字簽名

非對稱加密中比較著名的加密算法有個叫做RSA加密算法辅愿,但他似乎并不是最好的智亮,但是從參考文中,我們可以知曉点待,蘋果證書使用的非對稱加密算法就是RSA加密算法阔蛉,那么RSA有個很致命的缺點(diǎn),就是這個算法的速度特別慢癞埠,讓我想起大學(xué)信息安全導(dǎo)論課上實現(xiàn)的一個文件加密應(yīng)用状原,我們使用了對稱加密的方式加密了文件,但是我們使用了RSA加密的算法加密了對稱加密的秘鑰苗踪,這樣可以做到在保證一定的安全性的情況下提高了效率颠区。而數(shù)字簽名應(yīng)該也是做了差不多的事情,當(dāng)我們拿到文件的時候通铲,我們首先使用摘要算法獲取文件的摘要毕莱,再使用RSA算法用私鑰加密文件摘要,然后將加密過后的摘要和源文件發(fā)送出去颅夺,當(dāng)對方接收到數(shù)據(jù)的時候朋截,同樣使用摘要算法對源文件摘要,然后將加密后的摘要使用公鑰解密碗啄,比對兩端摘要就能知曉數(shù)據(jù)的真實性质和。
大致的流程,在參考文中有張圖我覺得很不錯稚字,這里就直接放上來了:

.cer文件

生成這個文件需要我們本地的CertificateSigningRequest.certSigningRequest文件饲宿,而CertificateSigningRequest.certSigningRequest中包含了RSA的一對秘鑰厦酬,而當(dāng)我們上傳CertificateSigningRequest.certSigningRequest文件的時候,蘋果會瘫想,獲取里面的私鑰仗阅,然后結(jié)合Member Center中的用戶信息來生成一個.cer文件,于是.cer中就包含了我們這臺電腦的公鑰和Member Center的個人信息国夜,當(dāng)我們下載.cer文件并雙擊之后减噪,.cer就會找到我們電腦本地的對應(yīng)的私鑰,形成一個有效地.cer文件并記入keychain中车吹,如果本地沒有的私鑰筹裕,就不能形成一個有效.cer文件,在keychain中這個.cer文件屬于缺失私鑰的窄驹。

所以朝卒,在團(tuán)隊協(xié)作中,一種方式是導(dǎo)出創(chuàng)建者的私鑰生成的.p12文件乐埠,然后大家使用同一個app賬號和同一個.cer文件抗斤,或者使用不同的賬號和不同的CertificateSigningRequest.certSigningRequest的文件生成不同的.cer文件,不然很有可能會出現(xiàn)問題丈咐。

.mobileprovision文件

.mobileprovision是一個配置文件瑞眼,而且是Member Center中按照創(chuàng)建設(shè)置設(shè)定的,由于其含有蘋果的數(shù)字簽名棵逊,下載后不可修改伤疙,主要的配置內(nèi)容有

  • AppId。每個app必須在MC中創(chuàng)建一個對應(yīng)的AppId歹河。規(guī)則不累述了掩浙。
  • 使用哪些證書。上面說了秸歧,不同類型的證書就代表了不同的發(fā)布方式厨姚,還包括一些功能的能否使用(比如APN)
  • 功能授權(quán)列表
  • 可安裝的設(shè)備列表。對于AdHoc方式發(fā)布的app或者真機(jī)調(diào)試時键菱,會有一個列表谬墙,這個列表里面是iOS設(shè)備的UDID,每臺iOS設(shè)備出廠的UDID都不同经备,所以可以用來標(biāo)識設(shè)備拭抬。可通過iTunes連接設(shè)備侵蒙,或者http://fir.im/udid這里獲取

此外造虎,.mobileprovision還包含了這個app的簽名的公鑰,但是我們實際上不會使用這個公鑰來加密纷闺,我真是說了一句廢話算凿,想想也知道份蝴,私鑰只有你自己的機(jī)器上有,如果使用私鑰來加密簽名氓轰,那還有誰可以解密簽名驗證婚夫。
所以,在打包的時候署鸡,我們會通過.mobileprovision描述的公鑰的對應(yīng)的私鑰對整個項目經(jīng)行數(shù)字簽名案糙。

當(dāng)使用者獲取到項目之后,.mobileprovision中的公鑰對各個簽名經(jīng)行解密對照之后就能知道項目的真實性和完整性靴庆。

總結(jié)

Member Center中應(yīng)該也就這兩個文件比較重要时捌,.cer的作用主要在于驗證開發(fā)者的信息,. mobileprovision的作用主要在于連接app的各方面設(shè)置和開發(fā)者的信息炉抒。而前面講到的算法主要作用于幾個文件在上傳下載過程中的驗證匣椰,還有在發(fā)布和用戶下載的包的驗證。若未完端礼,再待續(xù)。入录。蛤奥。。僚稿。凡桥。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市蚀同,隨后出現(xiàn)的幾起案子缅刽,更是在濱河造成了極大的恐慌,老刑警劉巖蠢络,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件衰猛,死亡現(xiàn)場離奇詭異,居然都是意外死亡刹孔,警方通過查閱死者的電腦和手機(jī)啡省,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來髓霞,“玉大人卦睹,你說我怎么就攤上這事》娇猓” “怎么了结序?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長纵潦。 經(jīng)常有香客問我徐鹤,道長垃环,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任凳干,我火速辦了婚禮晴裹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘救赐。我一直安慰自己涧团,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布经磅。 她就那樣靜靜地躺著泌绣,像睡著了一般。 火紅的嫁衣襯著肌膚如雪预厌。 梳的紋絲不亂的頭發(fā)上阿迈,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天,我揣著相機(jī)與錄音轧叽,去河邊找鬼苗沧。 笑死,一個胖子當(dāng)著我的面吹牛炭晒,可吹牛的內(nèi)容都是我干的待逞。 我是一名探鬼主播,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼网严,長吁一口氣:“原來是場噩夢啊……” “哼识樱!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起震束,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤怜庸,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后垢村,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體割疾,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年肝断,在試婚紗的時候發(fā)現(xiàn)自己被綠了杈曲。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡胸懈,死狀恐怖担扑,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情趣钱,我是刑警寧澤涌献,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站首有,受9級特大地震影響燕垃,放射性物質(zhì)發(fā)生泄漏枢劝。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一卜壕、第九天 我趴在偏房一處隱蔽的房頂上張望您旁。 院中可真熱鬧,春花似錦轴捎、人聲如沸鹤盒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽侦锯。三九已至,卻和暖如春秦驯,著一層夾襖步出監(jiān)牢的瞬間尺碰,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工译隘, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留亲桥,地道東北人。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓固耘,卻偏偏與公主長得像两曼,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子玻驻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評論 2 351

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