ข้อมูลนี้มีไว้สำหรับนักพัฒนาแอปซึ่งมีการเข้ารหัสที่ใช้โหมด AES/ECB ที่มีความปลอดภัยน้อย การเข้ารหัสเนื้อหาโดยใช้โหมดที่ไม่ปลอดภัยนี้อาจส่งผลให้มีข้อความเข้ารหัสที่ไม่ปลอดภัย และมีโอกาสทำให้ข้อมูลผู้ใช้มีความเสี่ยงได้ คุณดูตำแหน่งของโหมดการเข้ารหัสที่มีความปลอดภัยน้อยในแอปได้จากการแจ้งเตือนใน Play Console สำหรับแอปของคุณ หากตำแหน่งลงท้ายด้วย "(โค้ดที่โหลดแบบไดนามิก)" แสดงว่าตำแหน่งอยู่ในโค้ดที่โหลดแบบไดนามิกโดยแอปหรือไลบรารีที่แอปใช้ แอปพลิเคชันมักใช้โค้ดที่โหลดแบบไดนามิกผ่านการนำส่งฟีเจอร์แบบออนดีมานด์ แต่ก็มีเทคนิคที่ไม่แนะนำอื่นๆ เช่นกัน (เทคนิคที่ไม่แนะนำบางอย่างยังละเมิดนโยบายของ Google Play และไม่ควรนำมาใช้อีกด้วย) นอกจากนี้ เครื่องมือสร้างแพ็กเกจสามารถเปลี่ยนรูปแบบโค้ดของแอปพลิเคชันให้เป็นโค้ดที่โหลดแบบไดนามิก
วิธีแก้ไขการแจ้งเตือน "โหมดการเข้ารหัสที่ไม่ปลอดภัย"
ตรวจสอบตำแหน่งในแอปที่มีการสร้างอินสแตนซ์ Cipher โหมดการกำหนดค่าต่อไปนี้จะบอกเป็นนัยว่ามีการใช้งาน AES/ECB ที่ไม่ปลอดภัย
"AES"
"AES/ECB/NoPadding"
"AES/ECB/PKCS5Padding"
"AES/ECB/ISO10126Padding"
ตัวอย่างเช่น โค้ดต่อไปนี้ใช้โหมด AES/ECB โดยค่าเริ่มต้น เนื่องจากมีการระบุ "AES"
// การแจ้งเตือนของ Console อ้างอิงเมธอดนี้
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 Console และส่งแอปเวอร์ชันอัปเดตแล้ว
ระหว่างนี้แอปใหม่หรืออัปเดตของแอปจะมีสถานะรอการเผยแพร่จนกว่าจะมีการตรวจสอบคำขอ คุณจะยังคงเห็นคำเตือนหากยังไม่ได้อัปเดตแอปให้ถูกต้อง
เราพร้อมช่วยเหลือคุณ
หากมีคำถามทางเทคนิคเกี่ยวกับช่องโหว่ คุณอาจโพสต์ไว้ที่ Stack Overflow โดยใช้แท็ก "android-security"