ข้อมูลนี้มีไว้สำหรับนักพัฒนาซอฟต์แวร์ของแอปที่มีรูปแบบการเข้ารหัสลับที่ไม่ปลอดภัย ซึ่งก็คือข้อความเข้ารหัสที่สร้างขึ้นด้วยคีย์ลับที่คำนวณแบบคงที่, Salt หรือเวกเตอร์การเริ่มต้น (IV) ดูตำแหน่งการเข้ารหัสลับที่ไม่ปลอดภัยได้ในการแจ้งเตือน Play Console สำหรับแอป
วิธีแก้ไขการแจ้งเตือน “รูปแบบการเข้ารหัสลับที่ไม่ปลอดภัย”
ตรวจสอบแอปเพื่อหาคีย์ที่คำนวณแบบคงที่ เวกเตอร์การเริ่มต้น และ/หรือ Salt ที่ใช้ในการเข้ารหัสลับและดูแลให้มีการสร้างค่าเหล่านี้อย่างปลอดภัย ตัวอย่างเช่น โค้ดต่อไปนี้ใช้คีย์ลับที่คำนวณแบบคงที่ได้และเวกเตอร์การเริ่มต้นที่คำนวณแบบคงที่ได้ // การแจ้งเตือนของ Console อ้างอิงเมธอดนี้
public byte[] encryptionUtil(String key, String iv, byte[] plainText) {
Cipher cipher = Cipher.getInstance(“AES/GCM/NoPadding”);
SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(), “AES”);
GCMParameterSpec paramSpec = new GCMParameterSpec(256, iv.getBytes());
cipher.init(Cipher.ENCRYPT_MODE, keySpec, paramSpec);
return cipher.doFinal(plainText);
}
// คีย์ที่ไม่ปลอดภัยและเวกเตอร์การเริ่มต้นจะระบุไว้ที่นี่และต้องมีการเปลี่ยนแปลง
byte[] cipherText = encryptionUtil(“abcdef...”, “010203040506”, plainText);
ค่าที่คำนวณแบบคงที่
ค่าที่คำนวณแบบคงที่คือค่าที่เหมือนกันในการดำเนินการกับแอปทุกครั้ง ค่ารหัสลับที่คำนวณแบบคงที่จะแยกออกจากแอปและใช้เพื่อโจมตีข้อมูลที่เข้ารหัสของแอปได้ แม้ว่าคุณปรับเปลี่ยนคีย์ เวกเตอร์การเริ่มต้น และ Salt ด้วยวิธีที่ซับซ้อนก่อนใช้งาน ค่าเหล่านี้จะยังคงไม่ปลอดภัยหากการปรับเปลี่ยนเหล่านี้เหมือนกันทั้งหมดในการดำเนินการกับโปรแกรมทุกครั้ง
แนวทางปฏิบัติที่ดีที่สุดสำหรับ Android
เราขอแนะนำให้ใช้ Jetpack Security สำหรับการเข้ารหัสลับแบบสมมาตร หากแอปเข้ารหัสคีย์ API, ข้อมูลส่วนบุคคลที่ระบุตัวบุคคลนั้นได้ (PII) หรือข้อมูลที่ละเอียดอ่อนอื่นๆ คุณจะใช้ EncryptedSharedPreferences เพื่อจัดเก็บข้อมูลนี้อย่างปลอดภัยโดยไม่ต้องกังวลเกี่ยวกับการใช้คีย์ลับ เวกเตอร์การเริ่มต้น และ Salt ดูแนวทางปฏิบัติที่ดีที่สุดและตัวอย่างเพิ่มเติมในหน้านี้ สำหรับการส่งข้อมูลไปยังระบบอื่นๆ อย่างปลอดภัย นักพัฒนาซอฟต์แวร์ควรใช้ TLS/SSL เพื่อรักษาความปลอดภัยการส่งข้อมูล
Jetpack Security ใช้โครงการโอเพนซอร์สของ Google อย่างเช่น Tink เพื่อจัดการการเข้ารหัสที่มีการตรวจสอบสิทธิ์แบบสมมาตร สำหรับ Use Case ขั้นสูงเกี่ยวกับการดำเนินการเข้ารหัสลับระดับต่ำกว่า เราขอแนะนำให้ใช้ Tink โดยตรง
หากแนวทางปฏิบัติที่ดีที่สุดสำหรับ Android ข้างต้นไม่ตรงกับ Use Case ของคุณ และคุณต้องจัดการคีย์ เวกเตอร์การเริ่มต้น และ Salt อย่างชัดแจ้ง เราขอแนะนำให้ปฏิบัติตามมาตรฐานเหล่านั้น
- คีย์ลับ: คีย์ลับแบบสมมาตรต้องเป็นแบบคาดเดาไม่ได้และเป็นความลับ สำหรับการเข้ารหัสข้อมูลในเครื่อง นักพัฒนาซอฟต์แวร์ควรสร้างคีย์ลับโดยใช้การสุ่มเพื่อความปลอดภัยแบบเข้ารหัสลับ (หรือจากข้อมูลที่ผู้ใช้สร้างขึ้น หากใช้ PBEKeySpecs) และจัดเก็บคีย์ลับโดยใช้ AndroidKeystore
- เวกเตอร์การเริ่มต้น: เวกเตอร์การเริ่มต้นต้องไม่ซ้ำกันและคาดเดาไม่ได้ในข้อความหลายรายการแต่ไม่จำเป็นต้องเป็นความลับ นักพัฒนาซอฟต์แวร์ควรสร้างเวกเตอร์การเริ่มต้นโดยใช้การสุ่มเพื่อความปลอดภัยแบบเข้ารหัสลับ นักพัฒนาซอฟต์แวร์ควรจัดเก็บหรือส่งเวกเตอร์การเริ่มต้นพร้อมด้วยข้อความเข้ารหัสที่เกี่ยวข้อง
- Salt: Salt ต้องไม่ซ้ำกันและคาดเดาไม่ได้ในแฮชหลายรายการแต่ไม่จำเป็นต้องเป็นความลับ นักพัฒนาซอฟต์แวร์ควรสร้าง Salt โดยใช้การสุ่มเพื่อความปลอดภัยแบบเข้ารหัสลับ นักพัฒนาซอฟต์แวร์ควรจัดเก็บหรือส่ง Salt พร้อมด้วยแฮชที่เกี่ยวข้อง
ขั้นตอนถัดไป
- อัปเดตแอปโดยทำตามขั้นตอนที่ไฮไลต์อยู่ด้านบน
- ลงชื่อเข้าใช้ Play Console และส่งแอปเวอร์ชันที่อัปเดตแล้ว