تفعيل المصادقة القوية باستخدام WebAuthn

المشكلة

التصيّد الاحتيالي هو أهم مشكلة أمنية على الويب: 81% من الحسابات المرتبطة بالقرصنة التي تم اختراقها العام الماضي باستخدام كلمات مرور ضعيفة أو مسروقة. الفريق العامل في المجال أن حل هذه المشكلة هو المصادقة متعددة العوامل، إلا أن عمليات التنفيذ مجزأة ولا يزال معظمها لا يعالج عمليات التصيّد الاحتيالي بشكل كافٍ. نحن نعمل مع تحالف FIDO Alliance منذ عام 2013، ومؤخرًا، مع إرشادات W3C لتنفيذ معيار بروتوكول مقاوم للتصيّد الاحتيالي يمكن استخدامه من خلال أي تطبيق ويب.

ما هو WebAuthn؟

تمنح Web Authentication API المواقع الإلكترونية الوصول عبر وكيل المستخدم عن طريق وكيل المستخدم إلى تطبيقات المصادقة - والتي غالبًا ما تكون الرموز المميّزة للأجهزة التي يتم الوصول إليها عبر USB/BLE/NFC أو وحدات مدمَجة مباشرةً في لمنصة Google- وذلك لأغراض إنشاء تحديات على مستوى التطبيق (eTLD+k) بيانات اعتماد المفتاح العام. ويتيح ذلك مجموعة متنوعة من حالات الاستخدام، مثل:

  • ميزة المصادقة الثنائية منخفضة الاحتكاك والمقاومة للتصيّد الاحتيالي (تُستخدم مع كلمة مرور).
  • إعادة التفويض بدون كلمات مرور ومستندة إلى المقاييس الحيوية
  • استخدام ميزة المصادقة الثنائية (2FA) المقاومة للتصيّد الاحتيالي بدون كلمة مرور (لاستخدامها) للحسابات بدون كلمات المرور).

تسير واجهة برمجة التطبيقات على المسار الصحيح ليتم تنفيذها بواسطة معظم المتصفحات الرئيسية، وهي تهدف إلى كلاهما يعمل على تبسيط واجهة المستخدم عند الحاجة إلى إثبات هويتك عبر الإنترنت إلى تقليل التصيد الاحتيالي بشكل كبير.

يعزز WebAuthn واجهة Credential Management API ويضيف أداة يسمى PublicKeyCredential. يستخرج WebAuthn الاتصال بين المتصفح وبرنامج المصادقة ويتيح للمستخدم إجراء ما يلي:

  1. إنشاء بيانات اعتماد المفتاح العام وتسجيلها لموقع ويب.
  2. مصادقة موقع ويب عن طريق إثبات امتلاك الملف الخاص المقابل المفتاح.

أدوات المصادقة هي أجهزة يمكنها إنشاء أزواج من المفاتيح الخاصة أو العامة وجمع البيانات أو موافقتك. يمكن منح الموافقة على التوقيع بنقرة بسيطة التي تتم قراءتها باستخدام بصمة الإصبع أو بأي وسيلة أخرى طالما أنها متوافقة مع FIDO2 (هناك برنامج شهادات المصادقات بواسطة تحالف FIDO). يمكن تضمين أدوات المصادقة في المنصة (مثل الماسحات الضوئية لبصمة الإصبع على الهواتف الذكية) أو المرفقة من خلال USB أو بلوتوث منخفض الطاقة (BLE) أو الاتصال القصير المدى (NFC)

آلية العمل

إنشاء مفتاحَي تشفير وتسجيل مستخدم

عندما يريد المستخدم تسجيل بيانات اعتماد لأحد المواقع الإلكترونية (يشار إليها بواسطة WebAuthn) "كجهة اعتماد"):

  1. الطرف المُعتمد يُنشئ تحديًا.
  2. يطلب الطرف المعتمد من المتصفح، من خلال واجهة برمجة تطبيقات Credential Manager API، تنفيذ ما يلي: إنشاء بيانات اعتماد جديدة لجهة الاعتماد، مع تحديد الجهاز إمكاناتها، مثلاً ما إذا كان الجهاز يوفّر مصادقة المستخدم الخاصة به (باستخدام المقاييس الحيوية وغيرها)
  3. بعد حصول برنامج المصادقة على موافقة المستخدم، ينشئ برنامج المصادقة لمفتاحين وتعرض المفتاح العام والإقرار الاختياري الموقَّع موقعك الإلكتروني.
  4. يعيد تطبيق الويب توجيه المفتاح العام إلى الخادم.
  5. يخزن الخادم المفتاح العام، إلى جانب هوية المستخدم، لتذكره بيانات الاعتماد لعمليات المصادقة المستقبلية.
let credential = await navigator.credentials.create({ publicKey: {
  challenge: new Uint8Array([117, 61, 252, 231, 191, 241, ...]),
  rp: { id: "acme.com", name: "ACME Corporation" },
  user: {
    id: new Uint8Array([79, 252, 83, 72, 214, 7, 89, 26]),
    name: "jamiedoe",
    displayName: "Jamie Doe"
  },
  pubKeyCredParams: [ {type: "public-key", alg: -7} ]
}});

مصادقة مستخدم

عندما يحتاج موقع ويب إلى الحصول على دليل على أنه يتفاعل مع البيانات المستخدم:

  1. تنشئ المجموعة الموثوق بها تحدٍ وتزوّد المتصفح بقائمة من بيانات الاعتماد المسجلة للمستخدم. يمكن أن يشير أيضًا إلى مكان ابحث عن بيانات الاعتماد، على سبيل المثال، على برنامج مصادقة محلي مدمج، أو على جهاز خارجي عبر USB أو BLE وما إلى ذلك.
  2. يطلب المتصفح من برنامج المصادقة توقيع الاختبار.
  3. إذا كان برنامج المصادقة يحتوي على أحد بيانات الاعتماد المحددة، سيجري برنامج المصادقة. يعرض تأكيدًا موقَّعًا إلى تطبيق الويب بعد تلقّي موافقة المستخدم.
  4. يعيد تطبيق الويب توجيه التأكيد الموقَّع إلى الخادم الخاص بالجهة المعتمَدة. للتحقق منه.
  5. وبعد تحقّق الخادم من صحتها، يتم أخذ مسار المصادقة في الاعتبار. وناجح.
let credential = await navigator.credentials.get({ publicKey: {
  challenge: new Uint8Array([139, 66, 181, 87, 7, 203, ...]),
  rpId: "acme.com",
  allowCredentials: [{
    type: "public-key",
    id: new Uint8Array([64, 66, 25, 78, 168, 226, 174, ...])
  }],
  userVerification: "required",
}});

تجربة WebAuthn بنفسك على https://webauthndemo.appspot.com/.

ما الجديد؟

يتم إطلاق الإصدار التجريبي من Chrome 67 مع دعم navigator.credentials.get({publicKey: ...}) وnavigator.credentials.create({publicKey:... }) ويتيح استخدام مصادقات U2F/CTAP 1 عبر نقل USB على سطح المكتب

ستؤدي الإصدارات القادمة إلى إتاحة المزيد من وسائل النقل، مثل BLE وNFC البروتوكول الأحدث CTAP 2 السلكي. ونعمل أيضًا على مسارات أكثر تقدمًا يتم تفعيلها من خلال CTAP 2 وWebAuthn، مثل المصادقات المحمية برقم التعريف الشخصي، تحديد الحسابات (بدلاً من كتابة اسم مستخدم أو كلمة مرور)، وتسجيل بصمة الإصبع.

يُرجى العلم أنّ متصفّح Microsoft Edge يتوافق أيضًا مع واجهة برمجة التطبيقات. ويتيح Firefox استخدام WebAuthn بدءًا من Firefox 60.

الموارد

نعمل على إعداد مستندات أكثر تفصيلاً:

الجلسة حول "الميزات الجديدة في الاشتراك وتسجيل الدخول على الويب" في مؤتمر Google I/O 2018، وهو بروتوكول WebAuthn