開發人員請注意,如果您的應用程式含有利用低安全 AES/ECB 模式的加密機制,請詳閱本文資訊。如果採用這種低安全模式加密內容,可能會導致密文的安全性較低,進而讓使用者資料暴露在風險中。如要在應用程式中找出低安全性加密模式的位置,請前往您應用程式在 Play 管理中心的通知專區。如果位置結尾是「(in dynamically loaded code)」,代表位置位於應用程式或應用程式所使用程式庫動態載入的程式碼。雖然有其他不建議採用的技術 (有些不建議採用的技術也違反Google Play 政策,且不應使用),應用程式通常會視需求提供功能而使用動態載入的程式碼。此外,封裝程式也能將應用程式程式碼轉換成動態載入的程式碼。
如何修正「不安全的編譯加密模式」快訊問題
請檢查您的應用程式,找出執行個體化加密的位置。如果發現下列設定模式,就表示該部分使用了不安全的 AES/ECB:
"AES"
"AES/ECB/NoPadding"
"AES/ECB/PKCS5Padding"
"AES/ECB/ISO10126Padding"
舉例來說,下列程式碼含有 "AES",表示預設使用 AES/ECB 模式:
// 管理中心快訊是指這個方法
public byte[] encryptionUtil(String key, String iv, byte[] plainText) {
Cipher cipher = Cipher.getInstance(“AES”); // 預設使用 AES/ECB 模式
SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(), “AES”);
cipher.init(Cipher.ENCRYPT_MODE, keySpec, paramSpec);
cipher.init(Cipher.ENCRYPT_MODE, keySpec, paramSpec);
return cipher.doFinal(plainText);
}
Google 建議開發人員使用 “AES/GCM/NoPadding”
,不要使用上述的不安全模式。
後續步驟
- 按照上方強調的步驟更新您的應用程式。
- 登入 Play 管理中心,提交應用程式的更新版本。
在您的申請進入審查階段前,新提交的應用程式或更新版本將處於待發布狀態。如果應用程式的問題未確實更正,您仍會收到警告。
我們很樂意提供協助
如有關於安全漏洞的技術問題,請前往 Stack Overflow 張貼問題並加上「android-security」標記。