חדש: גרסת המקור לניסיון של Digital Credentials API

גרסת המקור לניסיון של Digital Credentials API מתחילה ב-Chrome 128. Digital Credentials API הוא ממשק API חדש של פלטפורמת אינטרנט שמאפשר לאתרים לבקש באופן סלקטיבי מידע שניתן לאמת לגבי המשתמש באמצעות פרטי כניסה דיגיטליים, כמו רישיון נהיגה או תעודת זהות ששמורה בארנק דיגיטלי.

רקע

הזהות הדיגיטלית בעולם האמיתי הופכת למציאות, והרבה ישויות ציבוריות ופרטיות מתחילות להנפיק פרטי כניסה דיגיטליים שקשורים למכשיר. לדוגמה, מעכשיו אפשר להקצות רישיונות נהיגה ותעודות מזהות למכשירים ניידים במדינות נבחרות בארה"ב (כמו אריזונה, קליפורניה, קולורדו, ג'ורג'יה ומרילנד) לאפליקציות של ארנק דיגיטלי, כמו Google Wallet, במכשירים ניידים. קיימות גם תקנות בנוגע לקבלת פרטי כניסה דיגיטליים בבדיקות אימות מסוימות באינטרנט, ו-eIDAS 2.0 הוא דוגמה אחת לכך.

רישיון נהיגה בנייד ב'Google Wallet'
רישיון נהיגה נייד ב-Google Wallet.

התכונות של ההסמכות בדיגיטל תלויות בפורמט שלו, אבל בדרך כלל הן כוללות:

  • אבטחה ופרטיות משופרות: השימוש בהצפנה מתקדמת ובשיטות אימות חזקות עוזר להגן על מידע אישי רגיש ולהבטיח גישה מאובטחת. לדוגמה, הצגת פרטי כניסה בדרך כלל מוגנת מאחורי אימות משתמש באמצעות אפליקציית הארנק.
  • גילוי נאות סלקטיבי: צדדים מהימנים (RP) יכולים לבקש מידע מסוים מפרטי הכניסה, וכך המשתמשים יכולים להגביל את הנתונים שישותפו למה שנחוץ לתרחיש לדוגמה. לדוגמה, ניתן לשתף משתמש מעל גיל 18 בלי לחשוף את תאריך הלידה של המשתמש.
  • יכולת פעולה הדדית: האישור צריך לעמוד בתקנים בינלאומיים, מה שמאפשר תאימות בין מערכות ומדינות שונות, כדי לאפשר קבלה של מוצרים בינלאומיים.
  • אימות: נתוני פרטי הכניסה ששותפו חתומים באופן דיגיטלי על ידי המנפיק. הגורם המוגבל (RP) יכול לאמת את החתימה הזו כדי לאמת את האותנטיות של הנתונים.

בגלל פרטי הכניסה הדיגיטליים ניתן לאמת אותם, הם יכולים לאפשר תרחישים לדוגמה כמו:

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

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

חדש: Digital Credentials API

Digital Credentials API הוא API חדש של פלטפורמת אינטרנט שמאפשר לאתרים של RP לבקש להציג פרטי כניסה דיגיטליים מאפליקציות של ארנקים. ה-API זמין ב-Chrome כגרסת מקור לניסיון החל מ-Chrome 128.

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

תרשים תקשורת בין הדפדפן, הארנק והצד הנסמך.

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

בהשקה, Google Wallet ישולב עם Digital Credentials API, ויאפשר לעסקים ולארגונים נבחרים ליזום בקשה למשתמשים להציג את התעודה המזהה שלהם באינטרנט דרך Chrome ב-Android, ולאמת את האותנטיות של הנתונים שהועברו על ידי בדיקת החתימה הקריפטוגרפית. כדי להשתתף בתוכנית, יש למלא את הטופס הזה כדי להביע עניין בקבלת תעודות מזהות דיגיטליות מ-Google Wallet.

בקרוב, חשבונות Google ישתמשו בממשק ה-API גם לאימות של משתמשים מסוימים תאריך לידה. משתמשים המתגוררים במדינה נתמכת בארה"ב יוכלו להשתמש בתעודה המזהה שהונפקה על ידי המדינה או ברישיון הנהיגה שלהם שהוקצו באפליקציות Google Wallet הזמינות (כולל Google Wallet) כדי לשתף עם Google רק את תאריך הלידה שלהם, בלי לשתף פרטים אחרים לגבי הזהות שלהם. כך המשתמשים יוכלו להוכיח ל-Google שהם עומדים בדרישות הגיל שקשורות לחשבון, תוך שמירה על הפרטיות שלהם.

רוצה לנסות?

כדי לנסות את Digital Credentials API, פועלים לפי ההוראות הבאות:

  1. מתקינים את אפליקציית הארנק לדוגמה לפי ההוראות המפורטות בדף הזה.
  2. מפעילים את אפליקציית IC Wallet ומקצים רישיון נהיגה לנייד (mDL) להדגמה.
    • מקישים על לחצן התפריט ובוחרים באפשרות הוספת מסמך עם חתימה עצמית.
  3. עוברים אל https://digital-credentials.dev ב-Chrome מגרסה 128 ואילך.
  4. מקישים על Request Credentials (OpenID4VP).

בדוק את ההדגמה באמצעות https://digital-credentials.dev, אתר בדיקה למפתחים שנועד ליצור בקשות פרטי כניסה למאפיינים שונים:

כך פועלת ההדגמה:

1. המשתמש מגיע לאתר של הצד הנסמך, ומתבקש להציג את שם המשפחה המאומת שלו, שם פרטי והבטחת גיל מעל 21.
2. הדפדפן מאשר אם המשתמש מתכוון לשתף פרטי כניסה דיגיטליים כלשהם עם האתר הזה.
3. מערכת ההפעלה מציגה את המידע המבוקש ופרטי כניסה כשירים שיכולים להתאים לבקשה שהמשתמש יכול לבחור ולהשלים את הבקשה.
4. הארנק מאמת את המשתמש באופן מקומי באמצעות ביטול הנעילה של המסך.

5. פרטי הכניסה הדיגיטליים המבוקשים מועברים עכשיו לאתר של הגורם הנסמך.

איך ה-API פועל

Digital Credentials API מבוסס על הבסיס של Credential Management API, אבל מפלטפורמת API עצמאית: navigator.identity. בהתקשרות אל navigator.identity.get(), האתר יכול לבקש פרטי כניסה דיגיטליים ששמורים באפליקציית ארנק לנייד. הקצר הזה. התשובות שלך יעזרו לנו להשתפר.

// Gets a CBOR with specific fields out of mobile driver's license as an mdoc
const controller = new AbortController();
const {protocol, data} = await navigator.identity.get({
  signal: controller.signal,
  digital: {
    providers: [{
      protocol: "openid4vp",
      request: {
        response_type: "vp_token",
        nonce: "n-0S6_WzA2Mj",
        client_metadata: {...},
        presentation_definition: {...}
      }
    }],
  }
});

פלטפורמת ה-API הבסיסית דומה ל-navigator.credentials.get(), אבל היא מקבלת רק פרטי כניסה מסוג "digital". בסוג של פרטי הכניסה בדיגיטל, מוסיפים מערך providers שמכיל IdentityRequestProvider עם הפרמטרים הבסיסיים הבאים:

  • protocol: ציון פרוטוקול Exchange עם מחרוזת. בזמן גרסת המקור לניסיון, הפרוטוקול הראשי שפותח הוא "openid4vp".
  • request: מילוי הפרמטרים שאפליקציות ארנק דיגיטלי מקבלות עבור הפרוטוקול שצוין. עבור "openid4vp", הפרמטרים מוגדרים ב-OpenID for Verifiable presentation (OID4VP) במפרט W3C Digital Credentials API.

מטען ייעודי (payload) לדוגמה לסוג פרטי הכניסה הדיגיטליים באמצעות OID4VP:

{
  protocol: 'openid4vp',
  request: {
    response_type: 'vp_token',
    nonce: 'gf69kepV+m5tGxUIsFtLi6pwg=',
    client_metadata: {},
    presentation_definition: {     
      id: 'mDL-request-demo',
      input_descriptors: [{
        id: "org.iso.18013.5.1.mDL",
        format: {
          mso_mdoc: {
            alg: ["ES256"]
          }
        },
        constraints: {
          limit_disclosure: "required",
          fields: [
            {
              path: ["$['org.iso.18013.5.1']['family_name']"],
              intent_to_retain: false
            }, {
              path: ["$['org.iso.18013.5.1']['given_name']"],
              intent_to_retain: false
            }, {
              path: ["$['org.iso.18013.5.1']['age_over_21']"],
              intent_to_retain: false
            }
          ]
        }
      }],
    }
  }
}

עם הבקשה הזו, ארנקים שיש בהם mDLs במכשיר יספקו פרטי כניסה ניתנים לאימות שמכילים:

  • שם המשפחה של המשתמש.
  • השם הפרטי של המשתמש.
  • ערך בוליאני שמציין אם המשתמש מעל גיל 21 או לא.

דוגמה למטען ייעודי (payload) של תגובה:

{
  data: '{\n  "vp_token": "o2d2ZXJzaW9uYz..."\n}'
  id: '',
  protocol: 'openid4vp',
  type: 'digital'
}

בדוגמה הזו, נשלחה בקשה לפרטי הכניסה באמצעות הפרוטוקול "openid4vp" והתשובה מכילה "vp_token" בנכס data. כדי ללמוד איך לנתח את התשובה ולאמת את פרטי הכניסה, אפשר לעיין במאמר OpenID for Verifiable Transparency (OID4VP) במפרט של W3C Digital Credentials API.

Digital Credentials API נתמך ב-Chrome ב-Android כגרסת מקור לניסיון. בשלב זה, Chrome במחשב שולחני וב-iOS לא תומך בכך. במנועי דפדפנים אחרים, שיחות פעילות מתבצעות באמצעות קבוצת הקהילה של W3C Web Incubator.

השתתפות בגרסת המקור לניסיון

לצורכי פיתוח, אפשר להפעיל את Digital Credentials API באופן מקומי על ידי הפעלת התכונה הניסיונית chrome://flags#web-identity-digital-credentials של Chrome ב-Chrome 128 ואילך.

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

  1. מבקשים אסימון למקור.
  2. מוסיפים את האסימון לדפים שלכם. אפשר לעשות זאת בשתי דרכים:
    • מוסיפים תג origin-trial <meta> בחלק העליון של כל דף. לדוגמה, זה עשוי להיראות כך: <meta http-equiv="origin-trial" content="TOKEN_GOES_HERE">.
    • אם אפשר להגדיר את השרת, אפשר גם להוסיף את האסימון באמצעות כותרת HTTP של Origin-Trial. כותרת התגובה שמתקבלת אמורה להיראות בערך כך:Origin-Trial: TOKEN_GOES_HERE.

מתן משוב

אם יש לכם משוב על Digital Credentials API, אתם יכולים לשלוח אותו לכלי הייעודי למעקב אחר בעיות ב-Chromium.