如何在白盒環(huán)境下(移動App)保護通信數(shù)據(jù)和本地數(shù)據(jù)的安全

前言

最近10年侈沪,移動App在數(shù)量和規(guī)模上爆發(fā)式增長亭罪,在爆發(fā)式增長的背后隨之而來的是移動App的安全隱患問題应役。下面一些數(shù)據(jù)和截圖來自于FreeBuf的的《2017年度移動App安全漏洞與數(shù)據(jù)泄露現(xiàn)狀報告》箩祥。

報告

2017年度移動App安全漏洞與數(shù)據(jù)泄露現(xiàn)狀報告

常見的移動App的安全問題包括下面幾個方面:

  1. App本身的代碼袍祖、so蕉陋、資源等文件的保護凳鬓。
  2. 本地數(shù)據(jù)存儲
  3. 通信過程中的數(shù)據(jù)安全
  4. 鍵盤輸入
  5. 等等...

移動App本身是在一種白盒的環(huán)境,用戶可以調(diào)試垦梆,dump內(nèi)存奶赔,二次修改杠氢,抓數(shù)據(jù)包分析等等鼻百。我們既要保護app本地的代碼安全温艇,也要保護本地數(shù)據(jù)和傳輸數(shù)據(jù)的安全勺爱。

常見加密方法介紹

  1. 對稱加密
  • DES: DES(Data Encryption Standard)是一種對稱密鑰加密塊密碼算法讯检,以64位為分組對數(shù)據(jù)加密人灼,它的密鑰長度是56位,加密解密用同一算法奈泪;DES現(xiàn)在已經(jīng)不是一種安全的加密方法涝桅,主要因為它使用的56位密鑰過短烙样。

  • AES:AES(Advanced Encryption Standard)稱為高級加密標準债蜜,是美國聯(lián)邦政府采用的一種區(qū)塊加密標準。AES的區(qū)塊長度固定為128比特寻定,密鑰長度則可以是128儒洛,192或256比特。AES是一種分組加密算法狼速,其模式又分為:

    • ECB(ECBElectronic CodeBook mode琅锻,電子密碼本模式)加密之前將明文按固定大小分塊(128bit),不足的比特位需要進行填充(padding)向胡。然后恼蓬,用相同的密鑰對分好塊的明文進行加密, 得到密文僵芹;解密反之处硬。由于ECB模式的加密方式為對每塊明文進行單獨的加密,所以使用EBC模式是可以并行加密或解密的拇派。但是荷辕,正是由于單獨的進行加密,相同的明文分塊得到的密文是相同的。這種在一定程度上是不安全的惫谤。

      • 加密過程


        加密
      • 解密過程


        解密
    • CBC(Cipher Block Chaining mode,密碼分組鏈接模式)加密前將明文進行分塊(128bit),不足的同樣需要填充(padding),并需要初始化一個iv向量阁簸;然后,第一塊明文與iv進行異或,再然后用加密器生成密文;第二塊的明文再與第一塊的加密密文進行異或,然后再進行加密得出第二塊的密文碳却,如此類推......實現(xiàn)鏈式加密馍资,最終得到密文建钥。

      • 加密過程


        加密
      • 解密過程


        解密
    • CFB(Cipher FeedBack mode天试,密文反饋模式)首先通過加密器加密iv生成密鑰流(key stream)务唐;然后將密鑰流和明文異或得到密文。第二次,將第一次得到的密文通過加密器加密得到新的密鑰流,然后把第二次要加密的明文和密鑰流進行異或生成密文......如此類推,最終得到密文拍嵌。

      • 加密過程


        加密
      • 解密過程


        解密
    • OFB(Output FeedBack mode 輸出反饋模式)OFB是先用塊加密器生成密鑰流(Keystream),然后再將密鑰流與明文流異或得到密文流;解密是先用塊加密器生成密鑰流,再將密鑰流與密文流異或得到明文。由于異或操作的對稱性所以加密和解密的流程是完全一樣的。

      • 加密過程


        加密
      • 解密過程


        加密
  1. 非對稱加密
  • RSA:RSA算法基于一個十分簡單的數(shù)論事實:將兩個大質(zhì)數(shù)相乘十分容易,但是想要對其乘積進行因式分解卻極其困難,因此可以將乘積公開作為加密密鑰。RSA是目前最有影響力和最常用的公鑰加密算法捅位,它能夠抵抗到目前為止已知的絕大多數(shù)密碼攻擊焰雕,已被ISO推薦為公鑰數(shù)據(jù)加密標準。RSA算法理論可以參考:RSA算法理論
  1. 消息摘要
  • SHA1:安全散列算法1(Secure Hash Algorithm 1)是一種密碼散列函數(shù),美國國家安全局設(shè)計耘柱,并由美國國家標準技術(shù)研究所(NIST)發(fā)布為聯(lián)邦數(shù)據(jù)處理標準(FIPS)[2]。SHA-1可以生成一個被稱為消息摘要的160位(20字節(jié))散列值诱鞠,散列值通常的呈現(xiàn)形式為40個十六進制數(shù)堪伍。

  • MD5:MD5消息摘要算法(MD5 Message-Digest Algorithm),一種被廣泛使用的密碼散列函數(shù)宙址,可以產(chǎn)生出一個128位(16字節(jié))的散列值(hash value),用于確保信息傳輸完整一致。

  1. 白盒加密
    白盒攻擊是指攻擊者對設(shè)備終端擁有完全的控制能力,能夠觀測和更改程序運行時的內(nèi)部數(shù)據(jù)。白盒密碼技術(shù)是一項能夠抵抗白盒攻擊的密碼技術(shù)佃声。保護密鑰安全是密鑰白盒產(chǎn)品的一個基本訴求圾亏,保護終端密鑰安全是指終端環(huán)境(Android、iOS等)在很多時候就是一個白盒攻擊環(huán)境。

保護移動App通信數(shù)據(jù)和本地數(shù)據(jù)安全

網(wǎng)易通信協(xié)議加密SDK可以在通信層對通信數(shù)據(jù)進行加密保護评甜,防止攻擊者竊取通信數(shù)據(jù)。集成簡單,API使用方便;目前包含了:Android彪见、 IOS和服務(wù)器端的SDK(又包括java儡司,python語言版本,后續(xù)會支持更多語言)余指。目前API提供了兩種方式保護傳輸數(shù)據(jù)的安全捕犬。

  • 普通加解密
  1. 支持字符串和二進制數(shù)據(jù)的加解密。
  2. 使用AES CBC和RSA算法酵镜。
  3. 客戶端SDK加密數(shù)據(jù)給服務(wù)器端的密鑰與服務(wù)器端SDK加密數(shù)據(jù)給客戶端的密鑰不同碉碉。
  4. 每次加密的密鑰都隨機生成的,進一步提高了加密數(shù)據(jù)的安全性笋婿。
  5. 客戶端SDK和服務(wù)器端SDK都進行了消息簽名和完整性驗證誉裆,防止數(shù)據(jù)被篡改。
  6. 客戶端SDK對公鑰和服務(wù)器端SDK對私鑰都進行了保護缸濒,盡可能保證公私鑰的安全性足丢,防外泄。
  7. 客戶端SDK經(jīng)過加固保護庇配,防止被逆向分析破解斩跌。
  8. 客戶端SDK支持本地數(shù)據(jù)的加解密,保護本地數(shù)據(jù)安全捞慌。
  • 白盒加密
  1. 支持字符串和二進制數(shù)據(jù)的加解密耀鸦。
  2. Android、iOS和服務(wù)器端均實現(xiàn)了一套白盒加解密API啸澡,既可以加解密本地數(shù)據(jù)袖订,也可以用來進行客戶端和服務(wù)器端的加解密。
  3. 采用白盒加密算法將密鑰和算法綁定到了一起嗅虏,由算法生成一個加密表和一個解密表洛姑,都是二進制文,通過查表的方式實現(xiàn)加密和解密皮服,中間過程完全不涉及密鑰交換楞艾,可抵御白盒攻擊参咙。
  4. 客戶端SDK經(jīng)過加固保護,防止被逆向分析破解硫眯。

后續(xù)開發(fā)計劃

  1. 大文件的加解密
  2. 白盒簽名
  3. 支持國密算法
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蕴侧,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子两入,更是在濱河造成了極大的恐慌净宵,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谆刨,死亡現(xiàn)場離奇詭異塘娶,居然都是意外死亡,警方通過查閱死者的電腦和手機痊夭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進店門刁岸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人她我,你說我怎么就攤上這事虹曙。” “怎么了番舆?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵酝碳,是天一觀的道長。 經(jīng)常有香客問我恨狈,道長疏哗,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任禾怠,我火速辦了婚禮返奉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘吗氏。我一直安慰自己芽偏,他們只是感情好,可當我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布弦讽。 她就那樣靜靜地躺著污尉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪往产。 梳的紋絲不亂的頭發(fā)上被碗,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天,我揣著相機與錄音仿村,去河邊找鬼蛮放。 笑死,一個胖子當著我的面吹牛奠宜,可吹牛的內(nèi)容都是我干的包颁。 我是一名探鬼主播,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼压真,長吁一口氣:“原來是場噩夢啊……” “哼娩嚼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起滴肿,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤岳悟,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后泼差,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體贵少,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年堆缘,在試婚紗的時候發(fā)現(xiàn)自己被綠了滔灶。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡吼肥,死狀恐怖录平,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情缀皱,我是刑警寧澤斗这,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站啤斗,受9級特大地震影響表箭,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜钮莲,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一免钻、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧臂痕,春花似錦伯襟、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至澡绩,卻和暖如春稽揭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背肥卡。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工溪掀, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人步鉴。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓揪胃,卻偏偏與公主長得像璃哟,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子喊递,可洞房花燭夜當晚...
    茶點故事閱讀 44,976評論 2 355