ความโปร่งใสในการสมัครใช้ผลิตภัณฑ์ของ Google

เรามุ่งมั่นที่จะแสดงแอปผลิตภัณฑ์ทั้งหมดของ Google ในบันทึกความโปร่งใสเพื่อเพิ่มความน่าเชื่อถือในแอปของ Google เราได้เผยแพร่บันทึกความโปร่งใสเพื่อยืนยันต่อสาธารณะเกี่ยวกับ การกล่าวอ้างที่เราทำเกี่ยวกับ APK เหล่านี้

โมเดลภัยคุกคาม

ระบบความโปร่งใสสามารถใช้เพื่อตรวจหาและป้องกันการโจมตีซัพพลายเชนได้ เราจะยกตัวอย่างประกอบ

สมมติว่าผู้โจมตีแก้ไขแอป Google อย่างไม่สุจริตและสามารถลงนาม แอปด้วยคีย์ Signing ที่ใช้สำหรับการเผยแพร่ผ่าน Google Play เมื่อมีบันทึกความโปร่งใสของไบนารี ทุกคนที่ได้รับ APK ที่น่าสงสัยจะใช้บันทึกนี้เป็นแหล่งที่มาของข้อมูลที่ได้จากการสังเกตการณ์ที่ตรวจสอบได้เพื่อยืนยันความถูกต้องของ APK ได้ โดยจะพบว่า Google ไม่ได้เพิ่มข้อมูลเมตาของ APK ที่เกี่ยวข้องลงใน บันทึก และจะทราบว่าไม่ควรเชื่อถือ APK ที่ถูกบุกรุก

เนื่องจากการเผยแพร่ไปยังบันทึกเป็นกระบวนการที่แยกจากกระบวนการเผยแพร่ที่มีการลงนาม (ดังที่แสดงในแผนภาพระบบนิเวศ) จึงเป็นการยกระดับความยากในการโจมตีให้สูงขึ้นนอกเหนือจากการประนีประนอมคีย์

แม้ว่าเราวางแผนที่จะผสานรวมบันทึกนี้เข้ากับเครือข่ายพยานสาธารณะ โดยใช้โปรโตคอลพยานมาตรฐาน แต่เราขอแนะนำให้บุคคลภายนอกที่เป็นอิสระตรวจสอบความสมบูรณ์ของบันทึกที่เปิดเผยต่อสาธารณะนี้ บุคคลเหล่านี้สามารถยืนยันคุณสมบัติแบบต่อท้ายเท่านั้นของบันทึก และรายงานการ ดัดแปลงใดๆ

การมีอยู่ของระบบความโปร่งใสและโอกาสในการค้นพบการโจมตีเพิ่มเติม จะช่วยลดกิจกรรมที่เป็นอันตราย หาก APK ถูกบุกรุก แต่ผู้ใช้เชื่อถือเฉพาะ APK ที่อยู่ในบันทึก APK ที่ถูกบุกรุกจะต้องเปิดเผยต่อสาธารณะ ซึ่งจะเพิ่มโอกาสในการค้นพบว่ามี APK ที่ถูกบุกรุกอยู่ และสามารถดำเนินการเพื่อนำการเผยแพร่ APK นั้นออกได้

โมเดลผู้ร้องเรียน

โมเดลผู้กล่าวอ้างเป็นเฟรมเวิร์กที่ใช้กำหนดบทบาทและอาร์ติแฟกต์ในระบบที่ตรวจสอบได้ ในกรณีของความโปร่งใสของแอปของบุคคลที่หนึ่งของ Google คำกล่าวอ้างของเราคือ แฮชของไฟล์ APK ที่บันทึกไว้ในบันทึกนี้แสดงถึงเวอร์ชันที่เฉพาะเจาะจงของแอป Google อย่างเป็นทางการที่มีไว้สำหรับการใช้งานสาธารณะ

  • อ้างสิทธิ์GoogleApp: (ฉัน Google ขออ้างสิทธิ์ว่า $hashApp เป็นของ $googleApp) โดยมีรายละเอียดดังนี้
    • $hashApp คือแฮชการเข้ารหัส (เช่น SHA256) ของไฟล์ APK (รวมถึง APK แยก) ของ $googleApp เวอร์ชันที่เฉพาะเจาะจง
    • $googleApp เป็นแพ็กเกจ Android (APK) ที่ประกอบกันเป็นแอปที่ Google สร้างและจัดจำหน่าย

ทุกคนที่มีสำเนาของ $googleApp สามารถยืนยันการอ้างสิทธิ์นี้ได้ และเราอธิบายกระบวนการนี้อย่างละเอียดใน หน้าการยืนยัน

เนื้อหาบันทึก

เมื่อ Google เปิดตัว APK เวอร์ชันใหม่ ระบบจะเพิ่มรายการที่เกี่ยวข้องลงใน บันทึกความโปร่งใสของ APK ของบุคคลที่หนึ่งของ Google

แต่ละรายการในบันทึกนี้จะมีข้อมูลเมตา 4 ส่วน ดังนี้

  1. แฮชของไฟล์ APK ของแอปที่ Google ลงนาม นี่คือสตริงเลขฐานสิบหกของข้อมูลสรุป SHA256 ของทั้งไฟล์
  2. คำอธิบายประเภทของแฮชก่อนหน้า นี่คือสตริง
  3. ชื่อแพ็กเกจของ APK นี่คือสตริง
  4. หมายเลขเวอร์ชัน (versionCode) ของ APK โดยค่านี้ต้องเป็นจำนวนเต็มที่ไม่ใช่ 0

รูปแบบของรายการบันทึกคือการต่อข้อมูล 4 ส่วนเข้าด้วยกันโดยมีอักขระขึ้นบรรทัดใหม่ (\n) ดังตัวอย่างต่อไปนี้

hash\nSHA256(APK)\npackage_name\npackage_version\n

เนื่องจากเราวัดไฟล์ APK ทั้งหมด คำอธิบายแฮช จึงตั้งค่าเป็น SHA256(APK) ซึ่งจะช่วยให้ครอบคลุมเนื้อหาของแต่ละไฟล์อย่างครบถ้วน และช่วยให้ผู้ใช้ได้รับการวัดผลนี้ได้ง่ายขึ้น

แผนภาพระบบนิเวศ

แผนภาพระบบนิเวศของบันทึกที่ตรวจสอบได้