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

תאריך פרסום: 4 בספטמבר 2024, תאריך עדכון אחרון: 16 באוקטובר 2024

גרסת המקור לניסיון של 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 כגרסת מקור לניסיון החל מגרסה 128 של Chrome.

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

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

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

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

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

רוצה לנסות?

דרישות:

  • Google Play Services מגרסה 23.40 ואילך
  • Chrome מגרסה 128 ואילך
  • מפעילים את הדגל בקטע chrome://flags#web-identity-digital-credentials

כדי לנסות את 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: מציינים פרוטוקול המרה באמצעות מחרוזת. בזמן הניסיון במקור, הפרוטוקול הראשי שאנחנו מפתחים הוא "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
            }
          ]
        }
      }],
    }
  }
}

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

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

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

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

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

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

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

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

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

  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.