WebAuthn की मदद से बेहतर तरीके से पुष्टि करने की सुविधा चालू करना

समस्या

फ़िशिंग, वेब पर सुरक्षा के लिए सबसे बड़ी समस्या है: हैकिंग से जुड़े खातों का 81% पिछले साल हैक या चोरी हुए पासवर्ड का इस्तेमाल किया. इंडस्ट्री का कलेक्टिव कॉन्टेंट बहु-स्तरीय पुष्टि (MFA) की तरह इस समस्या का समाधान हो गया है, लेकिन इन्हें लागू करने के तरीके में कई छोटे-छोटे हिस्से होते हैं और ज़्यादातर लोग अब भी फ़िशिंग को ठीक से हल नहीं कर पाते हैं. हम FIDO Alliance के साथ तब से काम कर रहे हैं, जब साल 2013 में, और हाल ही में, W3C ने फ़िशिंग से बचने की क्षमता वाला प्रोटोकॉल, जिसे किसी भी वेब ऐप्लिकेशन में इस्तेमाल किया जा सकता है.

WebAuthn क्या है?

Web Authentication API की मदद से वेब को ऐप्लिकेशन उपयोगकर्ता एजेंट की मदद से पुष्टि करने वाले लोगों का ऐक्सेस देता है – जो अक्सर हार्डवेयर टोकन, जिन्हें यूएसबी/बीएलई/एनएफ़सी पर ऐक्सेस किया जाता है या प्लैटफ़ॉर्म - जिसका इस्तेमाल ऐप्लिकेशन के स्कोप वाले जनरेट करने और उन्हें चुनौती देने के लिए किया जाता है (eTLD+k) सार्वजनिक पासकोड के क्रेडेंशियल. इसकी मदद से, कई तरह के काम किए जा सकते हैं. जैसे:

  • कम रुकावट और फ़िशिंग से बचने की क्षमता वाला 2FA (इसे साथ में इस्तेमाल किया जाना चाहिए पासवर्ड).
  • बिना पासवर्ड के, बायोमेट्रिक्स की मदद से दोबारा अनुमति दें.
  • पासवर्ड के बिना कम रुकावट और फ़िशिंग से बचने की क्षमता वाला 2FA (इस्तेमाल करने के लिए) बिना पासवर्ड वाले खातों के लिए).

ज़्यादातर बड़े ब्राउज़र इस एपीआई को लागू कर रहे हैं. साथ ही, इसका मकसद दोनों ही ऑनलाइन अपनी पहचान साबित करते समय मिलने वाले यूज़र इंटरफ़ेस (यूआई) को आसान बनाती हैं और फ़िशिंग को काफ़ी कम किया जा सकता है.

WebAuthn क्रेडेंशियल मैनेजमेंट एपीआई को बढ़ाता है और PublicKeyCredential नाम का क्रेडेंशियल टाइप. WebAuthn ऐब्स्ट्रैक्ट को की मदद से, ब्राउज़र और पुष्टि करने वाले के बीच बातचीत की जा सकती है. इसकी मदद से, उपयोगकर्ता ये काम कर सकता है:

  1. किसी वेबसाइट के लिए, सार्वजनिक पासकोड का क्रेडेंशियल बनाना और उसे रजिस्टर करना.
  2. किसी वेबसाइट की पुष्टि करने के लिए, यह साबित करें कि आपके पास किसी वेबसाइट का मालिकाना हक है बटन दबाएं.

Authenticator ऐसे डिवाइस हैं जो निजी/सार्वजनिक पासकोड के जोड़े जनरेट कर सकते हैं और डेटा इकट्ठा कर सकते हैं सहमति. सिर्फ़ टैप करके, हस्ताक्षर करने की सहमति दी जा सकती है. फ़िंगरप्रिंट या किसी अन्य तरीके से पढ़ा जा सकता है, बशर्ते वे FIDO2 फ़ॉर्मैट में हों की ज़रूरी शर्तें (इसके लिए सर्टिफ़िकेशन प्रोग्राम है FIDO Alliance की ओर से पुष्टि करने वाले लोग). Authenticator, इनमें से किसी एक तरीके से बनाया जा सकता है (जैसे कि स्मार्टफ़ोन पर फ़िंगरप्रिंट स्कैनर) या किसी भी अन्य ऐप्लिकेशन के ज़रिए यूएसबी, ब्लूटूथ स्मार्ट (बीएलई) या नियर-फ़ील्ड कम्यूनिकेशन (एनएफ़सी).

यह कैसे काम करता है

कुंजी का जोड़ा बनाना और उपयोगकर्ता को रजिस्टर करना

जब कोई उपयोगकर्ता किसी वेबसाइट (WebAuthn से रेफ़र किया गया) के लिए क्रेडेंशियल रजिस्टर करना चाहता है के रूप में:

  1. भरोसा करने वाला पक्ष, एक चुनौती जनरेट करता है.
  2. भरोसा करने वाला पक्ष, क्रेडेंशियल मैनेजर एपीआई के ज़रिए ब्राउज़र से यह काम करने के लिए कहता है डिवाइस की जानकारी देते हुए, भरोसेमंद पक्ष के लिए नया क्रेडेंशियल जनरेट करें सुविधाएं, जैसे कि डिवाइस उपयोगकर्ता की पुष्टि करने की सुविधा देता है या नहीं (बायोमेट्रिक्स वगैरह की मदद से).
  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. अगर Authenticator में, दिए गए क्रेडेंशियल में से कोई एक शामिल है, तो पुष्टि करने वाला उपयोगकर्ता की सहमति मिलने के बाद, वेब ऐप्लिकेशन पर हस्ताक्षर किया गया दावा दिखाता है.
  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 ऑथेंटिकेटर.

आने वाली रिलीज़ में, BLE और एनएफ़सी जैसे कई ट्रांसपोर्ट के लिए सहायता जोड़ी जाएगी. नया सीटीएपी 2 वायर प्रोटोकॉल चुनें. हम ज़्यादा ऐडवांस फ़्लो पर भी काम कर रहे हैं सीटीएपी 2 और WebAuthn से चालू की गई सुविधाएं, जैसे कि पिन से सुरक्षित पुष्टि करने वाले प्रोग्राम, लोकल खातों को चुनने के लिए (उपयोगकर्ता नाम या पासवर्ड टाइप करने के बजाय) और फ़िंगरप्रिंट रजिस्टर करने की सुविधा.

ध्यान दें कि Microsoft Edge इस एपीआई पर भी काम करता है और Firefox पर Firefox 60 के बाद से WebAuthn काम कर रहा है.

संसाधन

हम ज़्यादा जानकारी वाले दस्तावेज़ पर काम कर रहे हैं:

"वेब पर साइन अप और साइन इन करने के दौरान नया क्या है" सेशन ने Google I/O 2018 में WebAuthn के बारे में जानकारी दी.