קביעות משופרות במכשירי Android מגרסה 13 ואילך

לאחרונה הודענו שחיזקנו את קביעות התקינות של Play Integrity API כדי שהן יהיו מהירות יותר, עמידות יותר בפני מתקפות ופרטיות יותר למשתמשים, וגם ביצענו שיפורים אחרים באבטחה.

סיכום השינויים

בהמשך המסמך הזה מופיע סיכום מפורט של השינויים ושאלות נפוצות. השינויים בתוצאות במאי 2025 היו כדלקמן:

מה מה השתנה ההשפעה המשוערת* אילו מכשירים
שינויים שמשפיעים על כל המפתחים ששולחים בקשות ל-Play Integrity API
תגובה של קביעת התקינות של המכשיר: meets-device-integrity נדרש פסק דין חיובי של הפעלה מאומתת שמגובה בחומרה ההשפעה מינימלית כי Play Integrity API כבר משתמש באותות אבטחה ברמת החומרה במכשירים עם Android 13 ואילך (כ-0.4%) ‫Android מגרסה 13 ואילך
תשובה של בדיקת תקינות האפליקציה: קביעת זיהוי האפליקציה ללא שינוי ההשפעה מינימלית, השינוי ישוקף בתוצאת הבדיקה של המכשיר (כ-0.4%) ‫Android מגרסה 13 ואילך
תגובה לגבי פרטי החשבון: קביעת התקינות של רישיון Play האפליקציה ששולחת את הבקשה צריכה להיות מותקנת או מעודכנת דרך Google Play ירידה קלה במספר התשובות עם רישיון (~2.5%) ‫Android מגרסה 6 ואילך
שינויים שמשפיעים רק על מפתחים ב-Play Console ועל מפתחים ב-Play SDK Console שמשתמשים בתכונות אופציונליות
תגובה לקביעת התקינות של המכשיר: meets-basic-integrity נדרש אימות עם מפְתח של פלטפורמת Android, אבל מצב האתחול יכול להיות מאומת או לא מאומת ירידה קלה בתגובות הבסיסיות (~0.4%) ‫Android מגרסה 13 ואילך
תגובה לקביעת התקינות של המכשיר: meets-strong-integrity נדרש עדכון אבטחה בשנה האחרונה ירידה בתגובות חזקות (~14.5%) ‫Android מגרסה 13 ואילך
כל האותות האופציונליים (חוץ ממאפייני המכשיר)** האפליקציה ששולחת את הבקשה צריכה להיות מותקנת או מעודכנת דרך Google Play ירידה באחוז התגובות שכוללות אותות אופציונליים (כ-7%) ‫Android מגרסה 13 ואילך

*כל אחוזי ההשפעה המשוערים שצוינו קודם התבססו על ממוצעים, ויכול להיות שהשינויים באפליקציות שונות היו קטנים או גדולים יותר בהתאם לבסיס ההתקנות שלהן.

**האותות האופציונליים (למעט מאפייני המכשיר) הם: meets-basic-integrity, meets-strong-integrity, פעילות במכשיר מהזמן האחרון, ביטול מכירה של מכשיר (בטא), סטטוס Play Protect וסיכון לגישה לאפליקציה.

שאלות נפוצות

סקירה כללית

מה זה Play Integrity API?

‫Play Integrity API עוזר לכם להעריך את רמת המהימנות של סביבת האפליקציה של המשתמשים. הוא עושה זאת על ידי קבלת מידע על המכשיר, האפליקציה והמשתמש, כדי שתוכלו לזהות ניצול לרעה ותקיפות פוטנציאליים ולהגיב להם.

אילו אותות מספק Play Integrity API?

ממשק Play Integrity API כולל את הזהות של האפליקציה ששולחת את הבקשה, מידע על כך שהאפליקציה הותקנה על ידי Google Play ומידע על כך שהמכשיר הוא מכשיר Android מקורי שאושר. האותות האלה מסופקים כברירת מחדל. אתם יכולים לקרוא את האותות האלה בשרת העורפי של האפליקציה ולהחליט אם ואיך האפליקציה צריכה להגיב. מפתחים ב-Google Play יכולים להביע הסכמה לקבלת אותות נוספים בהתקנות שלהם ב-Play, כדי לראות עוד יותר מידע.

מהו אימות עם מפְתח של פלטפורמת Android?

אימות מפתח פלטפורמת Android מאפשר לאפליקציות לאמת את מצב המכשיר ולקבל אות חזק של תקינות האתחול שמגובה בחומרה. ההצפנה תלויה במפתח ש-Google מספקת בחנות המפתחות של המכשיר שמגובה בחומרה. ‫Play Integrity API כבר משתמש באימות עם מפְתח כדי לקבל אותות אבטחה ברמת החומרה בחלק מהמכשירים, ועכשיו הוא ישלב אותם בצורה מעמיקה יותר בכל המכשירים עם Android 13 ואילך.

שינויים בהחלטה

אילו שינויים בוצעו בקביעות התקינות של Play Integrity API במכשירים עם Android 13 ואילך?

‫Play Integrity API דורש עכשיו אותות אבטחה ברמת החומרה לכל קביעות התקינות:

  • התוצאה של זיהוי המכשיר meets-device-integrity מציינת שהמכשיר שבו האפליקציה פועלת הוא מכשיר Android מקורי ומאושר. כדי שהמכשיר יקבל את הסטטוס הזה, צריך לנעול את תוכנת האתחול שלו ולוודא שמערכת ההפעלה Android שנטענה היא תמונה של יצרן מכשירים מאושר.
  • קביעת התקינות של זיהוי המכשיר meets-strong-integrity מציינת שמדובר במכשיר Android מקורי ומאושר עם עדכון אבטחה מהזמן האחרון. כדי לקבל את התוצאה הזו, נדרשים meets-device-integrity ועדכוני אבטחה בשנה האחרונה לכל המחיצות של המכשיר, כולל תיקון של מחיצת מערכת ההפעלה Android ותיקון של מחיצת הספק. יכול להיות שהתנאי הזה ישתנה בעתיד.
  • התוצאה של זיהוי המכשיר meets-basic-integrity מציינת שהבדיקה בוצעה במכשיר פיזי עם מערכת Android. אפשר לנעול או לבטל את הנעילה של תוכנת האתחול של המכשיר, ואפשר לאמת או לבטל את האימות של מצב ההפעלה. יכול להיות שהמכשיר לא אושר, ובמקרה כזה Google לא יכולה לספק הבטחות לגבי אבטחה, פרטיות או תאימות לאפליקציות, ולא יכולה להבטיח שהמכשיר לא פועל כשרת proxy, למשל עבור מכשיר וירטואלי של Android. זה גם אומר שמכשירים עם הרשאות רוט יכולים להחזיר meets-basic-integrity כל עוד יש אימות מפתח.

השינויים האלה לא משפיעים על Play Integrity API ב-Play Games למחשב, שעדיין יחזיר meets-virtual-integrity.

למה שונו הקביעות של Play Integrity API במכשירים עם Android 13 ואילך?

‫Play Integrity API השתמש באופן חלקי באותות אבטחה ברמת החומרה ב-Android מגרסה 12 ומטה. הדרישה לאבטחה ברמת החומרה במכשירים עם Android 13 ואילך מאפשרת לקביעות התקינות של Play Integrity API להיות עמידות יותר בפני תוקפים, יעילות יותר לאפליקציות ופרטיות יותר למשתמשים. מפתחים יכולים לצפות לשיפורים הבאים במכשירים עם Android 13 ואילך:

  • הפחתה של כ-90% במספר האותות מהמכשיר שצריך לאסוף ולהעריך כדי ליצור את פסק הדין שמוגדר כברירת מחדל בשרתים של Google. אותות אופציונליים ימשיכו לדרוש איסוף של אותות נוספים.
  • שיפור בחביון של פסיקת הדין בעד 80% עבור בקשות רגילות במקרה הגרוע ביותר ובעד 80% עבור כל הבקשות הקלאסיות לקבלת פסיקת הדין שמוגדרת כברירת מחדל. אותות אופציונליים יכולים להגדיל את זמן האחזור.
  • רמת אמינות ותמיכה עקבית בכל גורמי הצורה של Android עם אימות מפתחות, כולל טלפונים ניידים, טאבלטים, מכשירים מתקפלים, טלוויזיות, מכוניות, Wear OS ו-ChromeOS.
  • הבחנה גדולה יותר בין כל תווית מכשיר בפסיקת זיהוי המכשיר: meets-strong-integrity,‏ meets-device-integrity ו-meets-basic-integrity.

קביעת התקינות של Play Integrity API ב-Play Games למחשב לא משתנה, והיא תהיה זהה ב-Android 12 ובגרסאות קודמות כמו ב-Android 13 ובגרסאות חדשות יותר.

איך אפשר לעדכן את הלוגיקה של ה-Backend באפליקציה כדי שהיא תתחשב בגרסת Android SDK לצורך קביעת פסקי דין לגבי יושרה?

אם רוצים להשתמש בלוגיקה שונה בשרת העורפי של האפליקציה על סמך גרסת Android SDK, אפשר להשתמש בשדה החדש של מאפייני המכשיר בקביעת התקינות. דוגמה:

Kotlin

val deviceIntegrity =
  JSONObject(payload).getJSONObject("deviceIntegrity")
val sdkVersion =
  if (deviceIntegrity.has("deviceAttributes")) {
    deviceIntegrity.getJSONObject("deviceAttributes").getInt("sdkVersion")
  } else {
    0
  }

if (sdkVersion >= 30) {
  // Provide Android R+ specific experience to the user.
}

Java

JSONObject deviceIntegrity =
  new JSONObject(payload).getJSONObject("deviceIntegrity");
int sdkVersion =
  deviceIntegrity.has("deviceAttributes")
    ? deviceIntegrity.getJSONArray("deviceAttributes").getInt("sdkVersion")
    : 0;

if (sdkVersion >= 30) {
  // Provide Android R+ specific experience to the user.
}

איך אפשר להשתמש בהגדרה הישנה של התווית meets-strong-integrity בכל הגרסאות של Android SDK?

כדי לעשות את זה, צריך לעדכן את לוגיקת ה-Backend של האפליקציה כך שתשתמש ב-meets-strong-integrity אם מדובר במכשיר עם Android בגרסה 12 ומטה, וב-meets-device-integrity אם מדובר במכשיר עם Android בגרסה 13 ומעלה. השימוש יהיה בשדה החדש של מאפייני המכשיר בקביעת התקינות, שמכיל את גרסת Android SDK. דוגמה:

Kotlin

val deviceRecognitionVerdict =
  if (deviceIntegrity.has("deviceRecognitionVerdict")) {
    deviceIntegrity.getJSONArray("deviceRecognitionVerdict").toString()
  } else {
    ""
  }

val deviceIntegrityToCheckFor =
  sdkVersion < 33 ? "MEETS_STRONG_INTEGRITY" : "MEETS_DEVICE_INTEGRITY";

if (deviceRecognitionVerdict.contains(deviceIntegrityToCheckFor)) {
  // Looks good!
}

Java

JSONObject deviceIntegrity =
  new JSONObject(payload).getJSONObject("deviceIntegrity");
String deviceRecognitionVerdict =
  deviceIntegrity.has("deviceRecognitionVerdict")
    ? deviceIntegrity.getJSONArray("deviceRecognitionVerdict").toString()
    : "";

String deviceIntegrityToCheckFor =
  sdkVersion < 33 ? "MEETS_STRONG_INTEGRITY" : "MEETS_DEVICE_INTEGRITY";

if (deviceRecognitionVerdict.contains(deviceIntegrityToCheckFor)) {
  // Looks good!
}

מכיוון שזהו גם אות שמגובה בחומרה, השדה של מאפייני המכשיר הוא הכי מהימן במכשירים עם Android 13 ואילך.

אילו עוד שינויים בוצעו בפסיקות?

אנחנו משקיעים באופן קבוע בשיפור המהימנות של האותות הקיימים ב-Play Integrity API, ומשיקים מעת לעת תכונות חדשות כדי לעזור למפתחים להתמודד עם איומים חדשים ועם תרחישי שימוש חדשים. שיפורים נוספים שביצענו בקביעות התקינות:

  • תגובה לגבי רישיון ב-Play: כדי להחזיר תגובה לגבי רישיון ב-Play, ‏ Play Integrity API דורש עכשיו תמיד שהאפליקציה ששולחת את הבקשה תותקן או תעודכן על ידי Google Play. השינוי הזה מתקן כמה מקרים קיצוניים ומקל על מפתחים לפרש את התגובה.
  • זמינות של אותות אופציונליים: כדי להשתמש בכל האותות האופציונליים שזמינים למפתחים באמצעות Google Play Console או Play SDK Console (למעט מאפייני מכשיר), האפליקציה ששולחת את הבקשה צריכה להיות מותקנת או מעודכנת על ידי Google Play ב-Android 13 ואילך. המידע הזה כולל את meets-strong-integrity, meets-basic-integrity, פעילות במכשיר מהזמן האחרון, זכירת נתונים שמשויכים למכשיר (בטא), הערכת הסיכון לגישה לאפליקציה והערכת הסיכון של Play Protect. הוספנו סטנדרטיזציה לכל הבקשות האחרות של Play Integrity API כדי לקבל את בדיקת המכשיר (עם התווית meets-device-integrity בלבד), את בדיקת המתקין, את בדיקת תקינות האפליקציה ואת מאפייני המכשיר (אם האפשרות הזו מופעלת).
  • שינויים בקביעת התקינות למכשירים ספציפיים: Play Integrity API משנה באופן אוטומטי את קביעת התקינות של המכשירים ביותר תרחישים כדי להגן על האפליקציות מוקדם יותר בכל גרסאות Android SDK, למשל כשקיימות ראיות לפעילות מוגזמת או לפגיעה במפתח. האפשרות הזו כוללת את היכולת של Play לחזור לאותות אחרים כדי ליצור פסיקות זמניות לגבי מכשירים עבור משתמשים, כשאותות שמגובים בחומרה לא זמינים. מומלץ למפתחים להשתמש בתיבות הדו-שיח לתיקון בעיות ב-Play בתוך האפליקציה או להפנות את המשתמשים אל אפליקציית חנות Play כדי לפתור בעיות שקשורות לתוצאות של בדיקת היושרה. עם הזמן, תיבות הדו-שיח האלה יתייחסו ליותר תרחישים ויכללו הנחיות ספציפיות למשתמשים, שיסבירו להם מה הם צריכים לתקן בהתאם למכשיר או לחשבון הספציפיים שלהם.

איך מדווחים על בעיות שקשורות לתוצאות של בדיקות יושרה?

כדי לדווח על בעיות בתשובות מ-Play Integrity API, בין אם הבעיה היא בקביעות ההיסטוריות או בקביעות החדשות, צריך לפעול לפי ההוראות בדף התמיכה.

זמינות

מה נדרש כדי ש-Play Integrity API יפעל?

כדי להשתמש ב-Play Integrity API, צריך להתקין את חנות Google Play ואת Google Play Services במכשיר, כולל מכשירי Android ו-Google Play Games למחשב. בקשות קלאסיות דורשות Android מגרסה 4.4 (רמת API‏ 19) ואילך, ובקשות רגילות דורשות Android מגרסה 5.0 (רמת API‏ 21) ואילך. במכשירים עם Android 13 (רמת API‏ 33) ואילך, ל-Play Integrity API תהיה עכשיו אותה רמת אמינות ותמיכה בכל הפורמטים של Android עם אימות מפתח, כולל טלפונים, טאבלטים, מכשירים מתקפלים, טלוויזיה, Auto, ‏ Wear OS ו-ChromeOS.

למה Play Integrity API נותן קביעות שונות למכשירים שונים?

‫Play Integrity API מספק כמה קביעות לגבי מכשירים כדי לתת מענה למפתחים עם תרחישי שימוש שונים ורמות שונות של סובלנות לסיכון, וכדי לאפשר אסטרטגיית אכיפה מדורגת. לדוגמה, אם האפליקציה והמכשיר מהימנים יותר, המפתח יכול לפשט את שלבי אימות המשתמש. לעומת זאת, אם המכשיר לא מוכר, המפתח יכול לדרוש אימות משתמש נוסף לפני ביצוע פעולות מוגנות או רגישות. זו יכולה להיות דרך יעילה לצמצם את הניצול לרעה ואת המתקפות.

מהו מכשיר Android מאושר?

מכשיר Android מאושר (נקרא גם מכשיר Android מאושר על ידי Play Protect) הוא מכשיר שמופעלת בו תוכנה צפויה שעברה מאות בדיקות תאימות של Google, שפועל בהתאם למודל האבטחה וההרשאות של Android, ושנשלח עם חבילת התכונות של Google Play Protect נגד תוכנות זדוניות. כש-Play Integrity API מצליח לאמת שמדובר במכשיר Android מקורי ומאושר, הוא מחזיר את התגובה meets-device-integrity בקביעת התקינות של זיהוי המכשיר.

מהו מכשיר meets-basic-integrity?

בנוסף, Play Integrity API מחזיר תשובה אופציונלית בחוות הדעת על המכשיר, meets-basic-integrity. אם מכשיר מחזיר רק את פסק הדין meets-basic-integrity בלי meets-device-integrity או meets-strong-integrity, המשמעות היא שלא ניתן לאמת את מערכת ההפעלה Android, אבל יש אימות מפתח. המשמעות היא שהבדיקה בוצעה במכשיר פיזי עם Android, אבל Google לא יכולה להבטיח את האבטחה, הפרטיות או התאימות של האפליקציות במכשיר, ולא יכולה להבטיח שהמכשיר לא פועל כשרת proxy, למשל עבור מופע וירטואלי של Android. בהתאם לתרחישי השימוש של המפתחים ולמידת הסיכון שהם מוכנים לקחת, הם יכולים להחליט איך הם רוצים שהאפליקציה שלהם תפעל במכשירים האלה.

האם כל מפתח יכול להשתמש ב-Play Integrity API?

כן, כל מפתח אפליקציות ל-Android יכול לשלוח בקשות ל-Play Integrity API כדי לקבל את קביעות התקינות שמוגדרות כברירת מחדל. השימוש מוגבל ל-10,000 בקשות ביום, ללא קשר לערוץ ההפצה. מפתחים שמפרסמים את האפליקציות שלהם ב-Google Play בנוסף לערוצי הפצה אחרים יכולים גם לבקש להגדיל את המכסה היומית שלהם.

האם כל מפתח יכול להשתמש באימות מפתח פלטפורמה של Android?

כן, כל מפתח אפליקציות ל-Android יכול להשתמש באימות מפתח הפלטפורמה של Android כדי לקבל רשומה של אימות מפתח, שאפשר לאמת באמצעות האישור הציבורי של מפתח הבסיס לאימות של Google. Play Integrity API מאפשר למפתחים ליהנות מאימות עם מפְתח וממאפיינים נוספים בלי הצורך להטמיע בעצמם אימות עם מפְתח, שהוא תהליך מורכב.

אכיפה

איך מפתחים משתמשים בקביעות של Play Integrity API?

המפתחים מחליטים אם להשתמש בתוצאות של Play Integrity API ואיך להשתמש בהן. יש מפתחים שאוספים את האותות לצורך ניתוח פנימי למניעת התנהלות פוגעת, ויש מפתחים שמקבלים החלטות לגבי התנהגות האפליקציה שלהם על סמך התוצאה. לדוגמה, מפתחים יכולים לדרוש ממכשירים עם רמת מהימנות נמוכה לבצע שלבי אימות משתמש נוספים בזמן יצירת חשבון, או להחליט שמכשירים עם רמת מהימנות נמוכה יוכלו לשחק יחד באותו שרת מרובה משתתפים.

האם Play Integrity API חוסם משתמשים או מכשירים?

לא, Play Integrity API לא חוסם גישה לאף פונקציונליות בעצמו. זהו שירות אופציונלי למפתחים שמספק אותות, והמפתחים בוחרים איך לפעול בהתאם לאותות האלה.

מה המשתמשים צריכים לעשות אם המכשיר שלהם נכשל בבדיקות המכשיר של Play Integrity API?

המשתמשים יכולים להיכנס לאפליקציית חנות Play במכשיר, לפתוח את תפריט ההגדרות, לגלול למטה אל 'מידע כללי' ולבדוק את הקטע 'אישור תאימות ל-Play Protect'. אם יש בעיה באישור התאימות של המכשיר ל-Play Protect, יופיע לחצן שהמשתמשים יכולים ללחוץ עליו כדי לנסות לפתור את הבעיה. הפעולה הזו תרענן את סטטוס האישור של המכשיר ותספק הנחיות ספציפיות לגבי מה שצריך לתקן.