App應(yīng)用加固方案

可能面臨的風(fēng)險(xiǎn)

網(wǎng)絡(luò)方面

1.竊聽(tīng)風(fēng)險(xiǎn)(eavesdropping):第三方可以獲知通信內(nèi)容峡碉。
2.篡改風(fēng)險(xiǎn)(tampering):第三方可以修改通信內(nèi)容。
3.冒充風(fēng)險(xiǎn)(pretending):第三方可以冒充他人身份參與通信。

本地方面

1.數(shù)據(jù)竊取,主要是對(duì)我們資源包括3d模型,聲音,UI爆价,圖像的保護(hù)。其次是對(duì)我們一些重要信息保護(hù),比如驗(yàn)證的登錄密碼铭段。
2.源碼被盜骤宣,分為兩步分,一部分對(duì)我們lua邏輯源碼保護(hù)序愚,另一部分對(duì)我們框架源碼保護(hù)涯雅。
3.二次打包,主要在安卓部分展运,防止篡改邏輯,加入廣告精刷,收集數(shù)據(jù)之類(lèi)的攻擊拗胜,ios主要在越獄機(jī)器上會(huì)有這個(gè)風(fēng)險(xiǎn)。
4.內(nèi)存修改怒允,目前重要數(shù)據(jù)修改都是要通過(guò)服務(wù)器驗(yàn)證埂软,所以這個(gè)問(wèn)題不嚴(yán)重。
5.動(dòng)態(tài)注入攻擊纫事,主要保護(hù)動(dòng)態(tài)庫(kù)的安全勘畔,防止注入篡改邏輯,跳過(guò)驗(yàn)證之類(lèi)丽惶。

加固方案

網(wǎng)絡(luò)方面

1.針對(duì)這類(lèi)問(wèn)題應(yīng)該直接使用https加入ssl驗(yàn)證炫七,或者自定客戶端和服務(wù)器雙向驗(yàn)證加密我們的數(shù)據(jù)。在數(shù)據(jù)傳輸階段達(dá)到一個(gè)比較安全的程度钾唬。
2.針對(duì)IM也同時(shí)應(yīng)該加密万哪,不過(guò)服務(wù)器那邊如果加入SSH驗(yàn)證會(huì)很大影響服務(wù)器效率,所以目前待解抡秆。

本地方面

本地資源和重要數(shù)據(jù)

資源和業(yè)務(wù)源碼都是同一類(lèi)本地資源奕巍,目前是用秘鑰使用對(duì)稱加密的方式加密,在運(yùn)行時(shí)進(jìn)行解密儒士。所以重要的是對(duì)秘鑰的保護(hù)的止。同理自動(dòng)登錄保存的秘鑰一樣。

IOS

在ios下着撩,目前登錄密碼使用md5加密保存在ios系統(tǒng)下的keychain诅福。在正常系統(tǒng)下,比較安全睹酌。但在越獄機(jī)器上权谁,黑客可以很容易的獲取到里面的數(shù)據(jù),所以建議:保存在keychain里的秘鑰憋沿,應(yīng)該不是最終使用的登錄密碼旺芽,應(yīng)該增加加密機(jī)制,在運(yùn)行時(shí)生成。

對(duì)資源加解密的秘鑰直接硬編碼在代碼里采章,這也是非常不安全的运嗜,目前有兩個(gè)建議
1.統(tǒng)一從服務(wù)器獲取,然后加密后保存在keychain,同樣在運(yùn)行時(shí)生成悯舟,將安全等級(jí)提升到登錄驗(yàn)證等級(jí)担租。
2.將硬編碼的秘鑰不要明文保存,分散隱藏在代碼中抵怎,利用一系列算法奋救,在運(yùn)行時(shí)生成。

更高級(jí)一點(diǎn)的加密方式反惕,不在內(nèi)存中使用明文秘鑰尝艘,使用白盒加密秘鑰

白盒加密技術(shù)的核心思想是把秘鑰隱藏起來(lái), 加密執(zhí)行過(guò)程中, 內(nèi)存中不會(huì)出現(xiàn)秘鑰的值. 現(xiàn)在通用的技術(shù)是查找表技術(shù), 即把秘鑰隱藏在查找表中,可以看看Chow的關(guān)于白盒AES的奠基性文章white-box cryptography and an aes implementation, 國(guó)內(nèi)也有人做, 看看肖雅瑩的畢業(yè)論文"白盒密碼及AES與SMS4算法的實(shí)現(xiàn)"可以對(duì)白盒加密有一個(gè)感性的認(rèn)識(shí). 所以, 通過(guò)查找表技術(shù)隱藏秘鑰, 使得攻擊者逆向也好, dump內(nèi)存也罷, 就不會(huì)直接看到秘鑰的值, 這跟把秘鑰放到so中增加逆向分析難度有質(zhì)的區(qū)別. 白盒加密的攻擊需要從數(shù)學(xué)理論上去分析, 這無(wú)疑會(huì)極大增加破解難度. 白盒加密的研究現(xiàn)狀是公布出來(lái)的論文并不多, 給你一個(gè)參考網(wǎng)址, http://www.whiteboxcrypto.com/. 我相信國(guó)內(nèi)外都有安全公司和實(shí)驗(yàn)室在研究白盒加密, 只不過(guò)都沒(méi)公布出來(lái). 從移動(dòng)互聯(lián)網(wǎng)到IoT領(lǐng)域, 終端安全問(wèn)題會(huì)越來(lái)越突出, 預(yù)測(cè)白盒加密這種軟件解決方案會(huì)越來(lái)越重要, 因?yàn)槌杀靖? 白盒加密的安全度目前來(lái)看是可以值得信任的, 當(dāng)然這個(gè)世界上沒(méi)有絕對(duì)的安全, 白盒加密也會(huì)被破, 就是攻擊成本的問(wèn)題啦.

Android

使用Android自身的密鑰庫(kù)(KeyStore)。在某些擁有硬件加密的機(jī)器上姿染,可以得到更好的安全性背亥,特性有:
1,密鑰材料可以綁定安全硬件
2悬赏,密鑰材料無(wú)法導(dǎo)出設(shè)備
3狡汉,密鑰材料永遠(yuǎn)不進(jìn)入應(yīng)用進(jìn)程,加解密和簽名時(shí)僅僅利用系統(tǒng)進(jìn)程完成闽颇。最極端情況下即使應(yīng)用進(jìn)程被破解盾戴,攻擊者也最多能用密鑰來(lái)加解密,但不能導(dǎo)出密鑰材料
不同的是兵多,android沒(méi)有一個(gè)系統(tǒng)位置保存秘鑰捻脖,只有一個(gè)系統(tǒng)級(jí)加密庫(kù),能保證加解密過(guò)程不被破解中鼠。所謂硬件加密可婶,指加密到Trusted Execution Environment (TEE) or Secure Element
(SE)。TEE是主處理器上的一個(gè)隔離區(qū)域援雇,SE是一個(gè)芯片矛渴,TEE比SE功能更強(qiáng)。

二次打包的防護(hù)

篡改檢測(cè) 檢測(cè)只是一個(gè)過(guò)程惫搏,有大量的同類(lèi)的攻擊包括二次打包具温,動(dòng)態(tài)注入,后面有對(duì)這類(lèi)攻擊的解決辦法筐赔。

IOS

Android

主要可以做的有
1.檢查APK的簽名
2.校驗(yàn)APK的完整性
3.校驗(yàn)classes.dex文件的完整性
這類(lèi)情況都是被篡改铣猩。

對(duì)靜態(tài)分析的防護(hù)

對(duì)抗反編譯

我們被反編譯風(fēng)險(xiǎn)主要在最上層的高級(jí)語(yǔ)言,oc和java茴丰,對(duì)于這部分沒(méi)有辦法保證真的安全达皿,只能這增加分析難度天吓,隱藏我們程序的入口。對(duì)OC和java代碼都應(yīng)該做混淆峦椰。
需要注意的是龄寞,重要的邏輯不要再oc和java直接實(shí)現(xiàn),目前我們沒(méi)有這個(gè)風(fēng)險(xiǎn)汤功。
lua代碼如果可能也應(yīng)該做混淆物邑,當(dāng)源碼真的泄露,也能增加分析復(fù)雜度滔金。

其次內(nèi)存安全需要特別注意色解,在
1.在任何認(rèn)證和數(shù)據(jù)加密之前。永遠(yuǎn)不要再內(nèi)存中存儲(chǔ)任何數(shù)據(jù)餐茵。
2.不要用oc或者java實(shí)例變量存儲(chǔ)秘鑰和重要數(shù)據(jù)冒签,應(yīng)該手動(dòng)申請(qǐng)內(nèi)存來(lái)存儲(chǔ),同時(shí)也要手動(dòng)釋放钟病。
3.同樣不要用實(shí)例存儲(chǔ)秘鑰和數(shù)據(jù)的指針
4.任何時(shí)候,當(dāng)重要數(shù)據(jù)不要被需要的時(shí)候刚梭,立即對(duì)其清理肠阱。比如,當(dāng)應(yīng)用從后臺(tái)掛起的時(shí)候朴读。
重要的數(shù)據(jù)也不要用oc和java的變量保存屹徘,內(nèi)存應(yīng)該手動(dòng)申請(qǐng)

高級(jí)一點(diǎn)方法,獲取已知反編譯工具的漏洞衅金,利用這些漏洞噪伊,讓反編譯我們程序時(shí)自動(dòng)拋出異常。

對(duì)抗靜態(tài)分析

除了必要的混淆代碼氮唯,C/C++代碼分析非常困難鉴吹,目前可以用的防護(hù)
1.去除符號(hào),增加復(fù)雜度惩琉。

對(duì)抗動(dòng)態(tài)分析

阻止調(diào)試器

IOS有自己特性可以直接在程序開(kāi)始就阻止調(diào)試器豆励,對(duì)初級(jí)攻擊者有明顯的防護(hù)作用。

檢測(cè)調(diào)試器

通過(guò)使用內(nèi)聯(lián)函數(shù)瞒渠,在程序各個(gè)地方隱藏檢查點(diǎn)良蒸,檢查出篡改可能。

運(yùn)行庫(kù)完整檢查

可以通過(guò)檢查內(nèi)存地址空間伍玖,檢查運(yùn)行庫(kù)的完整嫩痰,查出篡改可能。

篡改響應(yīng)

當(dāng)檢測(cè)到程序被篡改或者攻擊時(shí)窍箍,直接拒絕執(zhí)行串纺。同時(shí)也可使用一些隱藏防護(hù)手段丽旅,迷惑攻擊者。
1.擦除用戶數(shù)據(jù)
2.禁止網(wǎng)絡(luò)訪問(wèn),阻止在程序里調(diào)試到服務(wù)器
3.報(bào)告機(jī)制造垛,收集攻擊信息到服務(wù)器

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末魔招,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子五辽,更是在濱河造成了極大的恐慌办斑,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件杆逗,死亡現(xiàn)場(chǎng)離奇詭異乡翅,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)罪郊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)蠕蚜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人悔橄,你說(shuō)我怎么就攤上這事靶累。” “怎么了癣疟?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,852評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵挣柬,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我睛挚,道長(zhǎng)邪蛔,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,408評(píng)論 1 283
  • 正文 為了忘掉前任扎狱,我火速辦了婚禮侧到,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘淤击。我一直安慰自己匠抗,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布污抬。 她就那樣靜靜地躺著戈咳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪壕吹。 梳的紋絲不亂的頭發(fā)上著蛙,一...
    開(kāi)封第一講書(shū)人閱讀 49,772評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音耳贬,去河邊找鬼踏堡。 笑死,一個(gè)胖子當(dāng)著我的面吹牛咒劲,可吹牛的內(nèi)容都是我干的顷蟆。 我是一名探鬼主播诫隅,決...
    沈念sama閱讀 38,921評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼帐偎!你這毒婦竟也來(lái)了逐纬?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,688評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤削樊,失蹤者是張志新(化名)和其女友劉穎豁生,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體漫贞,經(jīng)...
    沈念sama閱讀 44,130評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡甸箱,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了迅脐。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片芍殖。...
    茶點(diǎn)故事閱讀 38,617評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖谴蔑,靈堂內(nèi)的尸體忽然破棺而出豌骏,到底是詐尸還是另有隱情,我是刑警寧澤隐锭,帶...
    沈念sama閱讀 34,276評(píng)論 4 329
  • 正文 年R本政府宣布窃躲,位于F島的核電站,受9級(jí)特大地震影響成榜,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蹦玫,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評(píng)論 3 312
  • 文/蒙蒙 一赎婚、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧樱溉,春花似錦挣输、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,740評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至挖帘,卻和暖如春完丽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背拇舀。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,967評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工逻族, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人骄崩。 一個(gè)月前我還...
    沈念sama閱讀 46,315評(píng)論 2 360
  • 正文 我出身青樓聘鳞,卻偏偏與公主長(zhǎng)得像薄辅,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子抠璃,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評(píng)論 2 348

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