安卓安全的白盒測(cè)試介紹
白盒攻擊
白盒攻擊者對(duì)終端具有完全控制的能力,能夠觀測(cè)和修改程序運(yùn)行時(shí)的內(nèi)部數(shù)據(jù),包括內(nèi)存信息,磁盤(pán)的讀寫(xiě)權(quán)限等。在程序運(yùn)行時(shí)就可以dump出內(nèi)存中的數(shù)據(jù),從而使運(yùn)行在內(nèi)存中的密鑰不再安全。這種攻擊環(huán)境稱(chēng)為白盒攻擊。
像擁有最高權(quán)限的Android、iOS等設(shè)備(Root或者越獄后)的情況下就是一個(gè)白盒攻擊環(huán)境。
一般常用的白盒攻擊分析工具有JEB,IDA Pro,OllyDbg,VMware,Hopper等
白盒密碼
白盒密碼是指能夠在白盒環(huán)境下抵御攻擊的一種特殊的加密方法。它的目是不在運(yùn)行環(huán)境中出現(xiàn)完整的密鑰。為此,需要對(duì)密鑰本身做盡量復(fù)雜的混淆,同時(shí)提供函數(shù)來(lái)處理。
白盒加密技術(shù)需要抵抗白盒攻擊,核心思想是把秘鑰隱藏起來(lái), 加密執(zhí)行過(guò)程中, 內(nèi)存中不會(huì)出現(xiàn)秘鑰的值.
白盒密碼構(gòu)造白盒密碼算法有兩種策略,標(biāo)準(zhǔn)密碼算法白盒化和構(gòu)造全新密碼算法?,F(xiàn)在通用的技術(shù)是查找表技術(shù), 即把秘鑰隱藏在查找表中。
標(biāo)準(zhǔn)密碼算法白盒化,在標(biāo)準(zhǔn)密碼算法安全理論的基礎(chǔ)上和不改變?cè)惴üδ艿那疤嵯?,將原有密碼算法通過(guò)白盒密碼技術(shù)進(jìn)行設(shè)計(jì),在白盒攻擊環(huán)境下能夠有效保證其密鑰安全。
構(gòu)造全新密碼算法,新算法密碼分析結(jié)果不能弱于標(biāo)準(zhǔn)密碼算法同時(shí)具備抵抗白盒攻擊的能力。
0.密碼學(xué)簡(jiǎn)介
密碼算法
用于解決復(fù)雜問(wèn)題的步驟,通常稱(chēng)為算法(algorithm)。從明文生成密文的步驟,也就是加密的步驟,稱(chēng)為加密算法,而解密的步驟則稱(chēng)為解密算法。加密、解密的算法合在一起統(tǒng)稱(chēng)為密碼算法。
密鑰
密碼算法中需要密鑰(key)。根據(jù)柯克霍夫原則,密碼算法是標(biāo)準(zhǔn)的,而密鑰是需要保密的,因此密鑰的安全對(duì)密碼系統(tǒng)至關(guān)重要。
對(duì)稱(chēng)密碼算法
通信雙方共享一個(gè)密鑰,用于加密任意大小的數(shù)據(jù)塊或數(shù)據(jù)流的內(nèi)容,包括消息、文件、加密密鑰和口令。常用對(duì)稱(chēng)密碼算法有DES、AES。
非對(duì)稱(chēng)密碼算法
非對(duì)稱(chēng)密碼又稱(chēng)公鑰密碼,加密和解密分別使用不同的密鑰,即私鑰和公鑰。公鑰密碼算法多用于加密小的數(shù)據(jù)塊,如加密密鑰或者數(shù)字簽名中使用的Hash函數(shù)值。常用公鑰密碼算法包括RSA、ECC。
密碼協(xié)議
密碼協(xié)議是指針對(duì)密碼算法的應(yīng)用。常見(jiàn)協(xié)議有SSL/TLS、Https。
其它密碼技術(shù)
hash函數(shù)、MAC、數(shù)字簽名、數(shù)字證書(shū)、隨機(jī)數(shù)生成器。
開(kāi)發(fā)人員實(shí)用密碼學(xué): https://cryptobook.nakov.com/
1.白盒密碼實(shí)現(xiàn)
白盒密碼技術(shù)從實(shí)現(xiàn)方式上可以分為兩類(lèi):靜態(tài)白盒和動(dòng)態(tài)白盒。
靜態(tài)白盒是指密碼算法結(jié)合特定的密鑰經(jīng)過(guò)白盒密碼技術(shù)處理后形成特定的密碼算法庫(kù),稱(chēng)為白盒庫(kù),白盒庫(kù)具備特定的密碼功能(加密、解密以及加解密),并能在白盒攻擊環(huán)境下有效保護(hù)原有密鑰的安全。靜態(tài)白盒更新密鑰,需要重新生成白盒庫(kù)。
動(dòng)態(tài)白盒是指白盒庫(kù)生成后就不需要再更新,原始密鑰經(jīng)過(guò)同樣的白盒密碼技術(shù)轉(zhuǎn)化為白盒密鑰。白盒密鑰傳入相匹配的白盒庫(kù)可以進(jìn)行正常的加密或解密功能。白盒密鑰是安全的,攻擊者不能通過(guò)分析白盒密鑰得到任何關(guān)于原始密鑰的信息。
2.白盒加密案例分析
常見(jiàn)的白盒算法有:白盒AES,白盒SMS4。
白盒SMS4的簡(jiǎn)單實(shí)現(xiàn)見(jiàn):https://github.com/ohhoo/White-box-Cryptographic/blob/master/wbSM4_Shang/wbSM4.cpp
白盒AES的簡(jiǎn)單實(shí)現(xiàn)見(jiàn):https://github.com/Gr1zz/WhiteBoxAES
AES算是我們?nèi)粘i_(kāi)發(fā)中最常用一種對(duì)稱(chēng)加密算法了,主要由如下四個(gè)過(guò)程實(shí)現(xiàn):
1.S盒字節(jié)替換 (SubBytes)
2.行移位(ShiftRows)
3.列混淆(MixColumns)
4.輪秘鑰加 (AddRoundKey)
參考:安卓App安全
地址:https://www.aqniukt.com/course/9415