原創(chuàng)|行業(yè)資訊|編輯:龔雪|2014-06-10 09:53:24.000|閱讀 496 次
概述:iOS應(yīng)用程序因?yàn)槠涮厥庑裕还舻目赡芤彩呛芨叩摹T陂_發(fā)過程中,需要從三個(gè)方面考慮程序安全性。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
安全地傳輸用戶密碼
大 部分的iOS應(yīng)用都需要連網(wǎng),通過和服務(wù)器端進(jìn)行通信,獲得最新的信息并且將內(nèi)容展現(xiàn)給用戶。由于網(wǎng)絡(luò)傳輸過程中有可能經(jīng)過不安全的中間節(jié)點(diǎn),所以我們應(yīng) 該對敏感數(shù)據(jù)加密,用于保證用戶信息的安全。黑客可以在受害者的手機(jī)上設(shè)置網(wǎng)絡(luò)通信的代理服務(wù)器,從而截獲所有的網(wǎng)絡(luò)請求。即使是HTTPS的加密通信, 黑客也可以通過中間人攻擊(Man-In-The-Middle Attack,指的是攻擊者與通信的兩端分別創(chuàng)建獨(dú)立的聯(lián)系,并交換其所收到的數(shù)據(jù),使通信的兩端認(rèn)為他們正在通過一個(gè)私密的連接與對方直接對話,但事實(shí) 上,整個(gè)會(huì)話都被攻擊者完全控制)來截取通信內(nèi)容。
黑客可以在Mac下使用Charles軟件(如果在Windows下,可以使用 Fiddler軟件)來將自己的電腦設(shè)置成代理服務(wù)器,從而截取應(yīng)用的網(wǎng)絡(luò)請求,分析目標(biāo)應(yīng)用在通信協(xié)議上是否有安全問題。為了測試,我選取了在國內(nèi)最大 的兩家租車公司(神州租車和一嗨租車)的iOS應(yīng)用。
圖1
從圖1可以看到,神州租車和一嗨租車在用戶登錄時(shí),均采用明文的方式,將密碼直接發(fā)送給服務(wù)器。其中一嗨租車不但采用明文方式發(fā)送密碼,而且在發(fā)送 時(shí)使用了Http Get的方式,而GET的URL數(shù)據(jù)一般都會(huì)保存在服務(wù)器的Access Log中,所以黑客一旦攻破服務(wù)器,只需要掃描Acesss Log,則可以輕易獲得所有用戶的明文密碼(在本文發(fā)表前,一嗨租車已修改了登錄協(xié)議,采用了POST的方式來登錄,但仍然傳遞的是明文密碼)。
如 果每一個(gè)移動(dòng)應(yīng)用都像以上兩種應(yīng)用那樣,明文傳輸用戶密碼,那么我們可以想象這樣一個(gè)場景:黑客在咖啡館或機(jī)場等一些公共場所,將自己的電腦設(shè)置成與該場 所一樣名字的免費(fèi)Wi-Fi,受害者只要不小心使用了該Wi-Fi,則可能泄漏自己的明文密碼。對于大多數(shù)普通人來說,他們會(huì)使用一樣的密碼登錄他的所有 的賬號,這就意味著他的其他賬號:例如淘寶或網(wǎng)上銀行賬號也有被盜的風(fēng)險(xiǎn)。
正 確的做法應(yīng)該是這樣:事先生成一對用于加密的公私鑰,客戶端在登錄時(shí),使用公鑰將用戶的密碼加密后,將密文傳輸?shù)椒?wù)器。服務(wù)器使用私鑰將密碼解密,然后 加鹽(Salt,在密碼學(xué)中是指,通過在密碼任意固定位置插入特定的字符串,讓散列后的結(jié)果和使用原始密碼的散列結(jié)果不相符,這個(gè)過程稱為“加鹽”),之 后再多次求MD5,然后再和服務(wù)器原來存儲(chǔ)的用同樣方法處理過的密碼匹配,如果一致,則登錄成功。這樣的做法保證黑客即使截獲了加密后的密文,由于沒有私 鑰,也無法還原出原始的密碼。而服務(wù)器即使被黑客攻陷,黑客除了暴力嘗試,也無法從加鹽和多次MD5后的密碼中還原出原始的密碼。這就保證了用戶密碼的安 全。
防止通信協(xié)議被輕易破解
除了上面提到的明文傳輸密碼的問題外,移動(dòng)端應(yīng)用還要面對黑客對于通信協(xié)議的破解的威脅。
在 成功破解了通信協(xié)議后,黑客可以模擬客戶端登錄,進(jìn)而偽造一些用戶行為,可能對用戶數(shù)據(jù)造成危害。例如騰訊出品的消除游戲《天天愛消除》,在淘寶上就有很 多售價(jià)僅為1元的代練服務(wù),如果真正是人工代練,是不可能賣這么便宜的,只有可能是該游戲的通信協(xié)議被破解,黑客制作出了代練的機(jī)器人程序。通信協(xié)議被破 解除了對于移動(dòng)端游戲有嚴(yán)重危害外,對于應(yīng)用也有很大的危害。例如針對微信,黑客可以制作一些僵尸賬號,通過向微信公共賬號后臺(tái)發(fā)送垃圾廣告,達(dá)到贏利的 目的。而iPhone設(shè)備上的iMessage通信協(xié)議居然也被破解了,所以很多iPhone用戶會(huì)收到來自iMessage的垃圾廣告。
對 于以上提到的問題,開發(fā)者可以選擇類似ProtoBuf(Google提供的一個(gè)開源數(shù)據(jù)交換格式,其最大的特點(diǎn)是基于二進(jìn)制,因此比傳統(tǒng)的JSON格式 要短小得多)之類的二進(jìn)制通信協(xié)議或自己實(shí)現(xiàn)通信協(xié)議,對于傳輸?shù)膬?nèi)容進(jìn)行一定程度的加密,以增加黑客破解協(xié)議的難度。圖2是我截取的淘寶客戶端的通信數(shù) 據(jù),可以看到其中的值都不能直觀地猜出內(nèi)容,所以這對于通信協(xié)議是有一定的保護(hù)作用。
圖2
驗(yàn)證應(yīng)用內(nèi)支付的憑證
iOS 應(yīng)用內(nèi)支付(IAP)是眾多應(yīng)用贏利的方式,通過先讓用戶免費(fèi)試用或試玩,然后提供應(yīng)用內(nèi)支付來為愿意付費(fèi)的用戶提供更強(qiáng)大的功能,這種模式特別適合不習(xí) 慣一開始就掏錢的中國用戶。但國內(nèi)越獄用戶的比例較大,所以我們也需要注意應(yīng)用內(nèi)支付環(huán)節(jié)中的安全問題。簡單來說,越獄后的手機(jī)由于沒有沙盒作為保護(hù),黑 客可對系統(tǒng)進(jìn)行任意地修改,所以在支付過程中,蘋果返回的已付款成功的憑證可能是偽造的。客戶端拿到付款憑證后,還需要將憑證上傳到自己的服務(wù)器上,進(jìn)行 二次驗(yàn)證,以保證憑證的真實(shí)性。
另外,我們發(fā)現(xiàn)越獄用戶的手機(jī)上,很可能被黑客用中間人攻擊技術(shù)來劫持支付憑證。這對于黑客有什么好處呢? 因?yàn)樘O果為了保護(hù)用戶的隱私,支付憑證中并不包含任何用戶的賬號信息,所以我們的應(yīng)用和服務(wù)器無法知道這個(gè)憑證是誰買的,而只能知道這個(gè)憑證是真的還是假 的。所以在驗(yàn)證憑證時(shí),哪個(gè)賬號發(fā)起了驗(yàn)證請求,我們就默認(rèn)這個(gè)憑證是該賬號擁有的。如果黑客將憑證截獲,就可以偽裝成真實(shí)用戶來驗(yàn)證憑證或者轉(zhuǎn)手出售獲 利。
打個(gè)比方,這就類似于很多商場的購物卡一樣,由于是不記名的,黑客如果將你買的購物卡偷竊然后去刷卡購物,商場是無法簡單地區(qū)分出來的。因此,對于應(yīng)用內(nèi)支付,開發(fā)者除了需要仔細(xì)地驗(yàn)證購買憑證外,也需要告知用戶在越獄手機(jī)上進(jìn)行支付的風(fēng)險(xiǎn)。
資源分享:
原文地址://www.csdn.net/article/2014-05-28/2819994
通信安全工具:
IP*Works! Internet Toolkit v9.0
IP*Works! S/MIME v9.0 IP*Works! SSH IP*Works! SSL
代碼混淆工具:
.NET Reactor v4.9 Dotfuscator DashO Pro v7.3
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn