android應(yīng)用安全開發(fā)之淺談加密算法的坑

android應(yīng)用安全開發(fā)之淺談加密算法的坑

ID:30774349

大?。?35.00 KB

頁數(shù):10頁

時間:2019-01-03

android應(yīng)用安全開發(fā)之淺談加密算法的坑_第1頁
android應(yīng)用安全開發(fā)之淺談加密算法的坑_第2頁
android應(yīng)用安全開發(fā)之淺談加密算法的坑_第3頁
android應(yīng)用安全開發(fā)之淺談加密算法的坑_第4頁
android應(yīng)用安全開發(fā)之淺談加密算法的坑_第5頁
資源描述:

《android應(yīng)用安全開發(fā)之淺談加密算法的坑》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。

1、Android應(yīng)用安全開發(fā)之淺談加密算法的坑作者:阿里移動安全@伊樵,@舟海阿里聚安全,一站式解決應(yīng)用開發(fā)安全問題Android開發(fā)屮,難免會遇到需要加解密一些數(shù)據(jù)內(nèi)容存到木地文件、或者通過網(wǎng)絡(luò)傳輸?shù)狡渌?wù)器和設(shè)備的問題,但并不是使用了加密就絕對安全了,如杲加密函數(shù)使用不正確,加密數(shù)據(jù)很容易受到逆向破解攻擊。還冇很多開發(fā)者沒冇意識到的加密算法的問題。1、需要了解的基本概念密碼學(xué)的三大作用:加密(Encryption)、認證(Authentication),鑒定(Identification)加密:防止壞人獲取你的數(shù)據(jù)。認證:防止壞人修改了你的數(shù)據(jù)而你卻并沒有發(fā)現(xiàn)

2、。鑒權(quán):防止壞人假冒你的身份。明文、密文、密鑰、對稱加密算法、汕對稱加密算法,這些基本概念和加密算法原理就不展開敘述了。2、AndroidSDK提供的API2.1Android加密相關(guān)API結(jié)構(gòu)AndroidSDK使用的API和JAVA提供的基本相似,山JavaCryptographyArchitecture(JCA,java加密體系結(jié)構(gòu)),JavaCryptographyExtension(JCE,Java加密擴展包),JavaSecureSocketsExtension(JSSE,Java安全套接字擴展包),JavaAuthenticationandAuthe

3、nticationService(JAAS,Java鑒別與安全服務(wù))組成。JCA提供基本的加密框架,如證卩、數(shù)字簽名、消息摘要和密鑰對產(chǎn)生器,對應(yīng)的AndroidAPI中的以下兒個包:java.securityjava?security?actjava?security?certjava?secu廠Vty?"irvterfacesjava?security?specJCE擴展了JCA,提供了各種加密算法、摘要算法、密鑰管理等功能,對應(yīng)的AndroidAPI中的以下兒個包:javax.cryptojavax.crypto.interfacesjavax.crypto

4、.specJSSE提供了SSL(基于安全套接層)的加密功能,使用HTTPS加密傳輸使用,對應(yīng)的AndroidAPI主要是java.net.ssl包屮。JAAS提供了在Java平臺上進行用戶身份鑒別的功能。對應(yīng)的AndroidAPI主要在以下兒個包:javax.security.authjavax.security.auth」oginjavax.security.auth.callbackjavax.security.auth.x500它們其實只是一組接口,實際的算法是可由不同的Provider提供,AndroidAPI默認的Provider主要是是BouncyCa

5、stle和OpenSSL。此外AndroidAPI還提供了android.security和android.security.keystore(API23新增)來管理keychain和keystore□2.2Base64編碼算法Base64編碼算法是—?種用64個字符(ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzOI23456789+/)來表示任意二進制數(shù)據(jù)的方法。在計算機網(wǎng)絡(luò)發(fā)展的早期,由于“歷史原因”,屯子郵件不支持非ASCII碼字符,如果耍傳送的電子郵件帶有非ASCII碼字符(諸如屮文)或者圖片,用

6、戶收到的電子郵件將會是一堆亂碼,因此發(fā)明了Base64編碼算法。至于為何會亂碼?請大家自行Google。在加解密算法屮,原始的數(shù)據(jù)和加密后的數(shù)據(jù)一般也是二進制數(shù)據(jù),為了不傳輸出錯,方便保存或者調(diào)試代碼,一般需要對加密后的數(shù)據(jù)進行base64編碼。Android提供了Base64編碼的工具類android.util.Base64,可以直接使用,不用自己去實現(xiàn)base64編碼的算法了。如:[]output=sha.digest();Stringresult二Base64.encodeToString(output,Base64.DEFAULT);開發(fā)者建議:base6

7、4只是一種編碼方式,并不是一種加密算法,不要使用base64來加密數(shù)據(jù)。2.3隨機數(shù)生成器在Android加密算法中需要隨機數(shù)時要使用SecureRandom來獲取隨機數(shù)。如:SecureRandomsr=SecureRandom();byte[]output=mb/te[16];sr?nextBytes(output);注意不要給SecureRandom設(shè)置種子。調(diào)用seededconstructor或者setSeed(byte[])是不安全的。SecureRandom()默認使用的是dev/urandom作為種子產(chǎn)生器,這個種子是不可預(yù)測的。開發(fā)者建議:1、不

8、要使用Ra

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。