เพิ่ม Play Integrity API

Play Integrity API สำหรับ PC จะช่วยคุณตรวจสอบว่าการโต้ตอบและคำขอของเซิร์ฟเวอร์มาจากอุปกรณ์ PC ของแท้ การตรวจจับการโต้ตอบที่อาจมีความเสี่ยงและเป็นการฉ้อโกงจะช่วยให้เซิร์ฟเวอร์แบ็กเอนด์ของแอปตอบสนองด้วยการดำเนินการที่เหมาะสมเพื่อป้องกันการโจมตีและลดการละเมิดได้

API จะแสดงผลการตัดสินที่ช่วยให้คุณตรวจจับภัยคุกคามที่อาจเกิดขึ้นได้ ซึ่งรวมถึง

  • อุปกรณ์และสภาพแวดล้อมที่มีความเสี่ยง: ผลการตัดสิน deviceIntegrity ช่วยให้คุณ ตรวจสอบได้ว่าแอปกำลังทำงานในอุปกรณ์ PC จริงหรืออินสแตนซ์จริง ของ Google Play Games สำหรับ PC

ผสานรวมกับ API

หากต้องการผสานรวม Play Integrity API สำหรับ PC เข้ากับแอป คุณต้องทำการตั้งค่าเริ่มต้นใน Google Cloud Console ก่อน หลังจากนั้น คุณต้องทำตาม ขั้นตอนต่อไปนี้สำหรับการตรวจสอบความสมบูรณ์แต่ละครั้ง

  1. เตรียมโทเค็นความสมบูรณ์
  2. ขอโทเค็นความสมบูรณ์
  3. ขอข้อมูลโทเค็น

การตั้งค่าเริ่มต้นใน Google Cloud Console

แอปหรือ SDK ทุกรายการที่เรียกใช้ Play Integrity API ต้องใช้โปรเจ็กต์ Google Cloud เพื่อตรวจสอบสิทธิ์การเรียกใช้และตรวจสอบการใช้งาน API หากต้องการสร้างโปรเจ็กต์ Cloud ใหม่หรือแอปของคุณเผยแพร่ภายนอก Google Play เท่านั้น คุณสามารถเปิดใช้การตอบกลับของ Play Integrity API จาก Google Cloud Console ได้

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

ขั้นตอนที่ 1: เตรียมโทเค็นความสมบูรณ์

void PrepareIntegrityToken(
  const PrepareIntegrityTokenParams & params,
  PrepareIntegrityTokenContinuation continuation
)

ก่อนขอโทเค็นความสมบูรณ์ (ดู RequestIntegrityToken) คุณต้องเตรียม (หรือ "วอร์มอัพ") Play Integrity API ซึ่งจะช่วยให้ Google Play แคชข้อมูลการรับรองบางส่วนอย่างชาญฉลาดในอุปกรณ์เพื่อลดเวลาในการตอบสนองในเส้นทางวิกฤตเมื่อคุณส่งคำขอผลการวินิจฉัยความสมบูรณ์

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

รายละเอียด
พารามิเตอร์ params: พารามิเตอร์ที่มีหมายเลขโปรเจ็กต์ Google Cloud
continuation: การเรียกกลับแบบไม่พร้อมกันเพื่อส่งคืนผู้ให้บริการโทเค็นความสมบูรณ์

ขั้นตอนที่ 2: ขอโทเค็นความสมบูรณ์

void RequestIntegrityToken(
  const RequestIntegrityTokenParams & params,
  RequestIntegrityTokenContinuation continuation
)

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

  • อุปกรณ์จริง: ระบุว่าแอปพลิเคชันของคุณกำลังทำงานในอุปกรณ์จริงที่มีอินสแตนซ์จริงของ Google Play Games สำหรับ PC และไม่มีการดัดแปลงหรือไม่

เมื่อตรวจสอบการดำเนินการของผู้ใช้ในแอปด้วย Play Integrity API สำหรับ PC คุณสามารถใช้ฟิลด์ RequestIntegrityTokenParams::request_hash เพื่อลดการโจมตีด้วยการดัดแปลงได้ ตัวอย่างเช่น เกมอาจต้องการรายงานคะแนนของผู้เล่นไปยังเซิร์ฟเวอร์แบ็กเอนด์ของเกม และเซิร์ฟเวอร์ของคุณต้องการยืนยันว่าคะแนนนี้ไม่ได้ถูกดัดแปลงโดยพร็อกซีเซิร์ฟเวอร์ Play Integrity API จะแสดงค่าที่คุณตั้งไว้ในฟิลด์นี้ภายใน การตอบกลับความสมบูรณ์ที่ลงนามแล้ว หากไม่มี requestHash ระบบจะเชื่อมโยงโทเค็นความสมบูรณ์กับอุปกรณ์เท่านั้น แต่จะไม่เชื่อมโยงกับคำขอที่เฉพาะเจาะจง ซึ่งจะเปิดโอกาสให้เกิดการโจมตี

หากต้องการลดปัญหานี้เมื่อขอผลการตัดสินความสมบูรณ์ ให้ทำดังนี้

  • คำนวณข้อมูลสรุปของพารามิเตอร์คำขอที่เกี่ยวข้องทั้งหมด (เช่น SHA256 ของการซีเรียลไลซ์คำขอที่เสถียร) จากการกระทำของผู้ใช้หรือคำขอของเซิร์ฟเวอร์ที่เกิดขึ้น
  • ตั้งค่าฟิลด์ RequestIntegrityTokenParams::request_hash เป็น ค่าแฮช
รายละเอียด
พารามิเตอร์ params: พารามิเตอร์ที่มี RequestTokenData ที่เตรียมไว้และแฮชคำขอตรวจสอบความสมบูรณ์
continuation: การเรียกกลับแบบไม่พร้อมกันเพื่อส่งคืนข้อมูล

ขั้นตอนที่ 3: ขอข้อมูลโทเค็น

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

  1. สร้างบัญชีบริการภายในโปรเจ็กต์ Google Cloud ที่ลิงก์กับแอป
  2. ในเซิร์ฟเวอร์ของแอป ให้ดึงโทเค็นการเข้าถึงจากข้อมูลเข้าสู่ระบบบัญชีบริการ โดยใช้ขอบเขต playintegrity แล้วส่งคำขอต่อไปนี้

    playintegrity.googleapis.com/v1/<var>PACKAGE_NAME</var>:decodePcIntegrityToken -d \
     '{ "integrity_token": "<var>INTEGRITY_TOKEN</var>" }'
    
  3. อ่านการตอบกลับ JSON

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

{
  "requestDetails": { ... },
  "deviceIntegrity": { ... },
}

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

ฟิลด์รายละเอียดคำขอ

ฟิลด์ requestDetails มีข้อมูลเกี่ยวกับคำขอ ซึ่งรวมถึง ข้อมูลที่นักพัฒนาแอปให้ไว้ใน requestHash สำหรับคำขอมาตรฐาน และ nonce สำหรับคำขอแบบคลาสสิก

"requestDetails": {
  // Application package name this attestation was requested for.
  // Note that this field might be spoofed in the middle of the request.
  "requestPackageName": "com.package.name",
  // The timestamp when the integrity token was requested.
  "requestTime": "1675655009345"
  // Request hash provided by the developer.
  "requestHash": "aGVsbG8gd29scmQgdGhlcmU",
}

ค่าเหล่านี้ควรตรงกับค่าของคำขอเดิม ดังนั้น ให้ยืนยันส่วน requestDetailsของเพย์โหลด JSON โดยตรวจสอบว่า requestPackageNameและrequestHashตรงกับสิ่งที่ส่งในคำขอ เดิม

ฟิลด์ความสมบูรณ์ของอุปกรณ์

ฟิลด์ deviceIntegrity สามารถมีค่าเดียว deviceRecognitionVerdict ซึ่งมีป้ายกำกับอย่างน้อย 1 รายการที่แสดงถึงความสามารถของอุปกรณ์ในการบังคับใช้ความสมบูรณ์ของแอป หากอุปกรณ์ไม่เป็นไปตามเกณฑ์ของป้ายกำกับใดๆ ฟิลด์ deviceIntegrity จะไม่แสดง deviceRecognitionVerdict

"deviceIntegrity": {
  "deviceRecognitionVerdict": ["MEETS_PC_INTEGRITY"]
}

โดยค่าเริ่มต้น deviceRecognitionVerdict จะมีข้อมูลต่อไปนี้

MEETS_PC_INTEGRITY
แสดงผลการตัดสินหากแอปทำงานในสภาพแวดล้อม PC ของแท้ ซึ่ง ไม่พบการดัดแปลงในอุปกรณ์
ว่าง (ค่าว่าง)
แอปกําลังทํางานในอุปกรณ์ที่มีสัญญาณการโจมตี (เช่น การฮุก API) หรือการบุกรุกระบบ (เช่น การรูท) หรือแอปไม่ทํางานใน อุปกรณ์จริง (เช่น โปรแกรมจําลองที่ไม่ผ่านการตรวจสอบความน่าเชื่อถือของ Google Play)

โควต้าการใช้งาน

ขีดจำกัดการใช้งาน Play Integrity API

แอปของคุณจะมีคำขอได้ไม่เกิน 10,000 รายการต่อแอปต่อวัน คุณขอเพิ่มจำนวนสูงสุดต่อวันได้โดยทำตามวิธีการต่อไปนี้ หากแอปต้องรองรับผู้ใช้จำนวนมากขึ้น

การดำเนินการ โควต้ารายวันต่อแอป Notes
คำขอโทเค็น 10,000 ใช้ร่วมกันระหว่าง Play Integrity API สำหรับ PC และ Play Integrity API สำหรับคำขอแบบคลาสสิกและมาตรฐาน
การถอดรหัสโทเค็นในเซิร์ฟเวอร์ของ Google 10,000 ใช้ร่วมกันระหว่าง Play Integrity API สำหรับ PC รวมถึง Play Integrity API สำหรับ คำขอแบบคลาสสิกและมาตรฐาน

เพิ่มจำนวนคำขอสูงสุดต่อวัน

หากต้องการมีสิทธิ์เพิ่มจำนวนคำขอสูงสุดต่อวัน แอปของคุณต้องพร้อมให้บริการใน Google Play นอกเหนือจากช่องทางการเผยแพร่อื่นๆ

หากต้องการขอเพิ่มจำนวนคำขอสูงสุดต่อวัน ให้ทำดังนี้

  1. ลิงก์โปรเจ็กต์ Google Cloud ที่คุณใช้สำหรับ Play Integrity API ใน Play Console
  2. ตรวจสอบว่าคุณใช้ตรรกะ API อย่างถูกต้องแล้ว ซึ่งรวมถึง กลยุทธ์การลองใหม่ที่แนะนํา
  3. ขอเพิ่มโควต้าโดยใช้แบบฟอร์มนี้

การเพิ่มโควต้า Play Integrity API อาจใช้เวลาถึง 1 สัปดาห์ ดังนั้นเราขอแนะนำ ให้ตรวจสอบการใช้งาน Play Integrity API ใน Google Play Console หรือใน Google Cloud Console ซึ่งคุณยังตั้งค่าการแจ้งเตือนโควต้าได้ด้วย เพื่อ หลีกเลี่ยงการหยุดชะงักของบริการ

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

ข้อควรพิจารณาด้านความปลอดภัย

Play Integrity API จะมีประโยชน์สูงสุดต่อแอปเมื่อคุณทำตามแนวทางปฏิบัติแนะนำต่อไปนี้

มีกลยุทธ์ต่อต้านการละเมิด

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

รวบรวมข้อมูลการวัดและส่งข้อมูลและทำความเข้าใจกลุ่มเป้าหมายก่อนดำเนินการ

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

ขอผลการตัดสินความสมบูรณ์ในเวลาที่เหมาะสม

คุณควรส่งคำขอ API ให้ใกล้เคียงกับเวลาของการดำเนินการหรือคำขอของเซิร์ฟเวอร์ที่คุณต้องการป้องกันให้มากที่สุด

ทำให้คำขอ API เลียนแบบได้ยาก

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

หลีกเลี่ยงการแคชผลการตัดสินความสมบูรณ์

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

ส่งช่วงการตอบกลับจากเซิร์ฟเวอร์ไปยังแอป

การมีผลลัพธ์การตัดสินใจที่หลากหลายจะจำลองได้ยากกว่าการส่งการตอบกลับแบบไบนารี อนุญาต / ปฏิเสธจากเซิร์ฟเวอร์กลับไปยังแอปสำหรับการตอบกลับแต่ละครั้ง เช่น คุณอาจใช้ชุดการตอบกลับที่เกี่ยวข้อง เช่น อนุญาต อนุญาตโดยมี ขีดจำกัด อนุญาตโดยมีขีดจำกัดหลังจากทำ CAPTCHA เสร็จสมบูรณ์ และปฏิเสธ

แสดงข้อความแสดงข้อผิดพลาดที่ดำเนินการได้

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

วางแผนสำหรับปัญหาหรือการหยุดทำงานที่ไม่คาดคิด

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

ข้อกำหนดในการให้บริการและความปลอดภัยของข้อมูล

การเข้าถึงหรือใช้ Play Integrity API สำหรับ PC หมายความว่าคุณยอมรับข้อกำหนดในการให้บริการของ Play Integrity API โปรดอ่านและทำความเข้าใจข้อกำหนดและนโยบายที่เกี่ยวข้องทั้งหมดก่อนเข้าถึง API

Google Play มีส่วนความปลอดภัยของข้อมูลสำหรับนักพัฒนาแอปเพื่อเปิดเผยแนวทางปฏิบัติในการเก็บรวบรวม การแชร์ และการรักษาความปลอดภัยข้อมูลของแอป เพื่อให้ผู้ใช้ได้รับทราบข้อมูล หากต้องการความช่วยเหลือในการกรอกแบบฟอร์มข้อมูล โปรดดูข้อมูลเกี่ยวกับวิธีที่ Play Integrity API จัดการข้อมูล