תאריך פרסום: 4 בספטמבר 2024, תאריך עדכון אחרון: 16 באוקטובר 2024
גרסת המקור לניסיון של Digital Credentials API מתחילה לפעול ב-Chrome 128. Digital Credentials API הוא ממשק API חדש לפלטפורמת אינטרנט שמאפשר לאתרים לבקש באופן סלקטיבי מידע מאומת על המשתמש באמצעות פרטי כניסה דיגיטליים, כמו רישיון נהיגה או תעודת זהות שמאוחסנים בארנק דיגיטלי.
רקע
זהות דיגיטלית בעולם האמיתי הופכת למציאות, וישויות ציבוריות ופרטיות רבות מתחילות להנפיק פרטי כניסה דיגיטליים שמקושרים למכשיר. לדוגמה, עכשיו אפשר להקצות לאפליקציות ארנק דיגיטלי כמו Google Wallet במכשירים ניידים רישיונות נהיגה ותעודות מזהות בנייד במדינות נבחרות בארה"ב (כמו אריזונה, קליפורניה, קולורדו, ג'ורג'יה ומרילנד). בנוסף, מופיעים תקנות בנושא קבלת פרטי כניסה דיגיטליים לצורך אימותים מסוימים אונליין, וeIDAS 2.0 הוא דוגמה אחת לכך.
התכונות של פרטי הכניסה הדיגיטליים תלויות בפורמט שלהם, אבל בדרך כלל הן כוללות:
- אבטחה ופרטיות משופרות: השימוש בהצפנה מתקדמת ובשיטות אימות חזקות עוזר להגן על מידע רגיש ולהבטיח גישה מאובטחת. לדוגמה, הצגת פרטי כניסה בדרך כלל מוגנת באמצעות אימות משתמש דרך אפליקציית הארנק.
- גילוי נאות סלקטיבי: צדדים נסמכים (RP) יכולים לבקש מידע נבחר מהפרטי הכניסה, וכך לאפשר למשתמשים להגביל את הנתונים ששותפו לנתונים הנדרשים לתרחיש לדוגמה. לדוגמה, אפשר לשתף את העובדה שמשתמש מסוים מעל גיל 18 בלי לחשוף את תאריך הלידה שלו.
- יכולת פעולה הדדית: פרטי הכניסה צריכים לעמוד בתקנים בינלאומיים, כדי לאפשר תאימות במערכות ובמדינות שונות, וכך להקל על אישור חוצה גבולות.
- אפשרות אימות: נתוני פרטי הכניסה ששותפו חותמים על ידי המנפיק באופן דיגיטלי. ה-RP יכול לאמת את החתימה הזו כדי לאמת את האותנטיות של הנתונים.
בגלל שהם ניתנים לאימות, פרטי הכניסה הדיגיטליים יכולים לאפשר תרחישים לדוגמה כמו:
- אימות גיל: בקשה לציון גיל כדי לאמת את הגיל של משתמש לפני הצגת תוכן שחלה עליו הגבלת גיל או לפני רכישה של פריטים שחלה עליהם הגבלת גיל.
- אימות זהות: בקשה לשם ולכתובת כדי לאמת את הזהות של אדם לצורך תאימות משפטית או למניעת הונאות.
- בדיקת הרשאות נהיגה: אימות הזכאות של אדם לנהוג (לדוגמה, כששוכרים רכב).
אתרים התחילו לתקשר ישירות עם אפליקציות של ארנקים לנייד (למשל, באמצעות סכמות מותאמות אישית של כתובות URL) כדי לבקש פרטי כניסה דיגיטליים לתרחישי שימוש שונים. בדפדפנים רואים הזדמנות להפוך את האינטראקציה הזו למאובטחת יותר, עמידת יותר נגד ניצול לרעה וקלה יותר לשימוש באמצעות ממשק API שמיועד למטרה הזו.
אנחנו שמחים להציג את Digital Credentials API
Digital Credentials API הוא ממשק API חדש לפלטפורמת אינטרנט שמאפשר לאתרים של גורמים נתמכים לבקש הצגה של פרטי כניסה דיגיטליים מאפליקציות ארנק. ה-API זמין ב-Chrome כגרסת מקור לניסיון החל מגרסה 128 של Chrome.
ה-API לא תלוי בפרוטוקול, ומאפשר ל-RP לציין פרוטוקול בהתאם לדרישות שלו. כש-RP שולח בקשה, הדפדפן שולח את הבקשה למערכת ההפעלה לנייד, שמחפשת פרטי כניסה תואמים באפליקציות הארנק המותקנות. אם יימצאו כאלה, מערכת ההפעלה לנייד תבקש מהמשתמש לבחור אחת מהן ותשלח את הבקשה לארנק שנבחר על ידי המשתמש. אחרי אימות מקומי, הארנק מחזיר תשובה שמכילה את נתוני פרטי הכניסה המבוקשים.
התמיכה ב-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, פועלים לפי ההוראות הבאות:
- מתקינים את אפליקציית הארנק הווירטואלי לדוגמה לפי ההוראות.
- מורידים אפליקציית ארנק לדוגמה למכשיר Android. קוד המקור נמצא במאגר פרטי הכניסה לזהות של OpenWallet Foundation.
- מריצים את הפקודה
adb install -t <path-to-apk>
כדי להתקין את האפליקציה.
- פותחים את אפליקציית IC Wallet ומקצים רישיון נהיגה בנייד (mDL) לדוגמה.
- מקישים על לחצן התפריט ובוחרים באפשרות הוספת מסמך בחתימה עצמית.
- עוברים לכתובת https://digital-credentials.dev עם Chrome בגרסה 128 ואילך.
- מקישים על Request Credentials (OpenID4VP).
כדאי לעיין בדמו שמשתמש באתר הבדיקה https://digital-credentials.dev, שמאפשר למפתחים ליצור בקשות פרטי כניסה למאפיינים שונים:
כך פועל הדמו:
איך פועל ה-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) עבור 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). גרסאות מקור לניסיון מאפשרות לכם לנסות תכונות חדשות ולספק משוב לקהילת תקני האינטרנט לגבי נוחות השימוש, הפרקטיות והיעילות שלהן. מידע נוסף זמין במאמר תחילת העבודה עם ניסויים במקור. כדי להירשם לתקופת הניסיון הזו או לתקופת ניסיון אחרת למקור, אפשר להיכנס לדף ההרשמה.
- מבקשים אסימון למקור.
- מוסיפים את הטוקן לדפים. יש שתי דרכים לעשות זאת:
- מוסיפים תג
origin-trial
<meta>
לחלק העליון של כל דף. לדוגמה, זה עשוי להיראות כך:<meta http-equiv="origin-trial" content="TOKEN_GOES_HERE">.
- אם אפשר להגדיר את השרת, אפשר גם להוסיף את האסימון באמצעות כותרת HTTP מסוג
Origin-Trial
. כותרת התגובה שמתקבלת אמורה להיראות בערך כך:Origin-Trial: TOKEN_GOES_HERE.
- מוסיפים תג
מתן משוב
אם יש לכם משוב על Digital Credentials API, אתם יכולים לשלוח אותו למעקב הבעיות הייעודי של Chromium.