首頁  >  文章  >  Java  >  給初學者的 Android 加密工具

給初學者的 Android 加密工具

伊谢尔伦
伊谢尔伦原創
2016-11-30 10:10:181193瀏覽

 越來越多的駭客盯上了行動應用,每天都會增加,因為行動應用中有駭客感興趣的東西,如用戶資料。硬編碼(Hard-coded,註,固定寫死,不能修改的)安全秘鑰,SD 卡中以明文存放的個人信息,數據庫中未加密存儲的用戶名和密碼,收集的分析(analytics)並以明文方式發到遠端伺服器,這些情況都使得攻擊更容易(得手)。

給初學者的 Android 加密工具

 正確使用Cryptography 工具,能保護我們的敏感數據,確保隱私和數據完整。另一方面,加密難用且容易誤用( cryptography is hard to use and easy to misuse)。 注意容易被破解的加密方式(broken cryptography) (如,使用不安全演算法,或硬編碼秘鑰到二進位套件),請查閱清單2014年,行動領域10大風險。因此,從中得到什麼教訓?不用加密不可取,不能正確加密同樣不可取 (不提耗費的時間)。

  為了能在安卓平台上開發出安全的應用,接下來我們將介紹如何能既簡單又安全地進行加密。

  首先,概括性地介紹一些常見的可整合到安卓應用中的加密庫。加密庫是包含諸如加密演算法、填充方式和雜湊函數等工具的加密工具集合。

  Bouncy Castle

  充氣城堡軍團(Legion of the Bouncy Castle)是一個來自澳洲的公益團體,他們編寫了Bouncy Castle 這個廣泛使用的類別庫。該函式庫既提供了一個輕量級的密碼學 API,也是一個 Java 密碼擴充(JCE)的提供者。安卓平台已經內建了一個精簡的舊版 Bouncy Castle(同時為了適配安卓平台也做了一些細小的改動)。結果就是任何在應用程式中建置和使用最新版本 BouncyCastle 類別庫的嘗試都會導致類別載入衝突。

  Spongy Castle

  Spongy Castle 背後的動機是允許安卓開發者在應用程式中使用任意版本的 BouncyCastle 類別庫。 SpongyCastle 就是對最新版本的 BouncyCastle 進行了簡單地重新打包;所有的 org.bouncycastle.* 包重命名為了 org.spongycastle.*,所有 Java安全 API 提供者的名字由 BC 改為了 SC。

  OpenSSL

  OpenSSL 是一個實作了 SSL 和 TLS 協定以及通用密碼庫的開源工具包。 OpenSSL 已經移植到了許多平台,包括安卓。做為一個替代方案,你也可以從原始碼建置(使用安卓 NDK),然後綁定到應用程式中。

  現在我們假設出於應用程式的目的,你想要加密一些資料。你會使用哪個加密演算法,AES 還是 DES?你的秘鑰多長,128 還是 256 位元?你會使用哪種加密模式,ECB 還是 CBC?如果你對所有這些問題都沒有答案,也沒有好的理由,那麼你可能發現你正處於一個微妙的位置,雖然你擁有所有你想要的工具,但是你一點兒都不確定使用哪個、如何使用。

  這正是傻瓜密碼學工具包發揮作用的場景。這些工具包並沒有實現任何奇特的加密功能,也沒有嘗試替代任一上述的密碼學庫;相反它們基於這些類庫構建,唯一的目的是使得使用加密功能更簡單更安全。

  與通用密碼學庫相反,這些工具包通常只支援一部分演算法、模式、結構、參數。對於通用加密工具需要設定的部分,這些工具包為你提供了合理的預設值,以防你知道想要什麼,但是不知道如何使用,或者只在乎最終有安全的解決方案。讓我們檢查幾個這類工具包以便來更好的理解它們的運行規則。

  Keyczar

  Keyczar 是一組開源工具包,最初由兩位 Google Security Team(Google安全團隊)成員開發。 它用 Java,Python 和 C++ 語言實作。它支援對稱加密和費堆成加密兩種鑑權方式。 Keyczar 提供安全的預設設定,包括演算法,秘鑰長度和模式,秘鑰循環和版本化,初始向量(vector)和授權碼自動生成,支援國際化。該工具包基於JCE建置,( here),使用了Spongy Castle的安全提供者。

  AeroGear Crypto

  AeroGear Crypto 是 AeroGear 提供的一個小的 Java 函式庫。 它支援可認證的對稱加密,橢圓曲線加密,基於密碼的秘鑰推導。它也提供了演算法的明確設定。 AeroGear Crypto 在 android 平台依賴Spongy Castle,在其他平台上依賴 Bouncy Castle。該庫在 iOS,Windows Phone 和 Cordova 上同樣可用。

  Conceal

  為了能夠快速並使用很少內存對SD卡上的大型文件實現加密和認證,臉譜開發出了 Conceal。 Conceal既可以進行認證,也可以進行加密,同時預設也提供了金鑰管理功能。它使用的是 OpenSSL,不過只包含自己需要的部分,因此其大小僅為 85KB。 Conceal 網站上公佈的結果顯示它優於 Bouncy Castle。

  下表對上面所介紹的加密庫做了總結。請注意:上面介紹的所有的庫可以讓加密方面的新手安全地進行加密,不過高級開發人員可以不使用這些預設做法,可以按照自己的意願指定所有的加密細節(就像他們在使用其他加密庫那樣)。

AeroGear Crypto    AeroGear    Apache 2.0    

Conceal    Facebook    BSD   

加密庫        

開發公司       

許可證

摘要(To sum 行動開發者,你得花時間(精力)使你的應用程式便於使用,功能豐富,抓人眼球,但是,你不要忘了改善你應用的安全性。 如果你不懂怎麼著手,或擔心做不對,那就從文中提到的工具包中選擇一個,以便能夠開始。不管你決定選用哪個加密工具都好,都應避免自己實作加密演算法和加密協定; 應該只使用那些廣泛應用的,普遍認可的,經過考驗的演算法和協定。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn