फ़ास्ट पेयर प्रोसेस

काम का तरीका

किसी भी सामान्य BR/EDR या BLE बॉन्ड प्रक्रिया का तुरंत इस्तेमाल करने के बजाय, सीकर सबसे पहले कुंजी-आधारित पेयरिंग की विशेषता के बारे में सूचनाएं पाने की सुविधा चालू करता है. इसके बाद, वह डेटा को टेबल 1.1 में लिखता है.

फ़ास्ट पेयर सीकर से लिखने के अनुरोध पर कार्रवाई करते समय, फ़ास्ट पेयर की सुविधा देने वाली कंपनी को ये काम करना होगा:

  1. अगर सार्वजनिक कुंजी वाला वैकल्पिक फ़ील्ड मौजूद है, तो:
    1. अगर डिवाइस दूसरे डिवाइस से जोड़ने वाले मोड में नहीं है, तो लिखने या बंद करने को अनदेखा करें.
    2. या फिर:
      1. 256-बिट AES कुंजी जनरेट करने के लिए, मिली सार्वजनिक कुंजी (secp256r1 दीर्घवृत्तीय वक्र पर 64-बाइट का बिंदु), पहले से इंस्टॉल की गई एंटी-स्पूफ़िंग निजी कुंजी - secp256r1, और एलिप्टिक-कर्व डिफ़ी-हेलमैन एल्गोरिदम का भी इस्तेमाल करें.
      2. 256-बिट AES कुंजी को हैश करने के लिए, SHA-256 का इस्तेमाल करें.
      3. नतीजे के पहले 128 बिट लें. यह अगले चरण में इस्तेमाल की गई एंटी-स्पूफ़िंग AES कुंजी है.
  2. AES-128 का इस्तेमाल करके, वैल्यू को डिक्रिप्ट करें. इसकी वैल्यू एक 16-बाइट AES ब्लॉक है, इसलिए IV या मल्टी-ब्लॉक साइफ़र मोड की ज़रूरत नहीं होती.

    1. किस कुंजी का इस्तेमाल करना है:
      1. अगर पहले चरण में एंटी-स्पूफ़िंग AES कुंजी जनरेट की गई थी, तो उस कुंजी का इस्तेमाल करें.
      2. अगर ऐसा नहीं है, तो खाता कुंजी की मौजूदा सूची में मौजूद हर कुंजी का इस्तेमाल करके देखें.
    2. अगर कोई कुंजी, वैल्यू को डिक्रिप्ट कर देती है, तो ब्रेक करें और अगले चरण पर जाएं.
    3. अगर आउटपुट टेबल 1.2.1 या टेबल 1.2.2 में दिए गए फ़ॉर्मैट से मेल खाता है, तो वैल्यू को डिक्रिप्ट किया जा सकता है. इसका मतलब है कि अगर उसमें फ़ास्ट पेयर की सुविधा देने वाली कंपनी का मौजूदा बीएलई पता या फ़ास्ट पेयर की सुविधा देने वाली कंपनी का सार्वजनिक पता मौजूद है.

      ध्यान दें: पैकेट के आखिर में सॉल्ट होता है. जब भी संभव हो, तब इन सॉल्ट को ट्रैक किया जाना चाहिए. अगर सेवा देने वाली कंपनी को ऐसा अनुरोध मिलता है जिसमें पहले से इस्तेमाल किए जा चुके सॉल्ट मौजूद हों, तो रीप्ले हमलों को रोकने के लिए, अनुरोध को अनदेखा किया जाना चाहिए.

    4. सॉल्ट को ट्रैक करने के विकल्प के तौर पर, अगर कॉन्टेंट में सेवा देने वाली कंपनी का निजी पता शामिल है, तो रीप्ले हमले से बचने का एक और तरीका यह है कि समाधान किए जा सकने वाले अगले निजी पते के रोटेशन के समय को आगे बढ़ाया जाए. इससे 'की-आधारित पेयरिंग' के अगले राइट को स्वीकार किए जाने से पहले ही रोटेशन हो जाता है.

  3. अगर कोई भी कुंजी, वैल्यू को डिक्रिप्ट नहीं कर पाती, तो लिखने या बाहर निकलने के विकल्प को अनदेखा करें.

    1. इन असफलताओं पर नज़र रखें. जब किसी गड़बड़ी की संख्या 10 हो जाए, तो सभी नए अनुरोधों को तुरंत खारिज कर दें. पावर चालू होने के पांच मिनट, या चार्जिंग हो जाने के बाद, गड़बड़ी की गिनती को रीसेट करें.
  4. अगर ऐसा नहीं है, तो सही कुंजी को K के तौर पर सेव करें. इस LE लिंक पर मिले पासकी और आपके हिसाब से बनाए गए नाम को डिक्रिप्ट करने के लिए, इस K को इस्तेमाल किया जा सकता है. हालांकि, इसमें अन्य लिंक या अन्य लिंक पर कोई लिखा नहीं गया है. अगर पेयर करना शुरू नहीं किया गया है, तो 10 सेकंड के बाद K को खारिज करने के लिए टाइमर शुरू करें. अगर यह LE लिंक डिसकनेक्ट हो जाता है, तो K को भी खारिज करें.

  5. टेबल 1.3 में दिखाया गया 16-बाइट का रॉ रिस्पॉन्स बनाएं. इसके लिए, टाइप और सेवा देने वाले के बीआर/ईडीआर पते को जोड़ें. इसके बाद, पैकेट के बाकी हिस्से में रैंडम बाइट के ब्लॉक (यानी सॉल्ट) को भरें.

  6. टेबल 1.4 में दिखाए गए 16-बाइट का एन्क्रिप्ट किया गया रिस्पॉन्स बनाने के लिए, रॉ रिस्पॉन्स को K के साथ एन्क्रिप्ट (सुरक्षित) करें. इसे कुंजी-आधारित पेयरिंग की विशेषता वाले नोटिफ़िकेशन के ज़रिए भेजें.

  7. अनुरोध फ़्लैग पढ़ें:

    1. अगर अनुरोध के फ़्लैग बाइट के लिए बिट 2, 1 पर सेट है, तो मनमुताबिक नाम के साथ डेटा की अतिरिक्त विशेषता को सूचना दें.
    2. अगर अनुरोध के फ़्लैग बाइट में बिट 1 को 1 पर सेट किया गया है, तो:
      1. इससे पता चलता है कि सेवा देने वाले व्यक्ति से, सीकर के बीआर/ईडीआर पते को जोड़ने का अनुरोध किया जा रहा है. यह पते 8 से 13 तक के बाइट में मौजूद होता है.
      2. नौकरी ढूंढने वाले के बीआर/ईडीआर पते पर, दूसरे डिवाइस से जोड़ने का अनुरोध भेजें. दूसरे डिवाइस से जोड़ने का अनुरोध नीचे बताए गए तरीके के मुताबिक होना चाहिए ("जोड़ने के दौरान" चरण).
      3. इसकी वजह: कुछ डिवाइसों पर, सेवा देने वाली कंपनी से किसी समस्या को हल कराने के लिए कहा जाता है.
    3. अगर अनुरोध के फ़्लैग बाइट में बिट 1 को 0 पर सेट किया गया है, तो:
      1. दूसरे डिवाइस से जोड़ने के अनुरोध के लिए, 10 सेकंड तक इंतज़ार करें. अगर कुछ भी नहीं मिलता है, तो बाहर निकलें.
      2. ध्यान दें कि यह बीआर/ईडीआर अनुरोध हो सकता है. यह किसी दूसरे पते (जिसका पता ढूंढने वाले निजी पते के बजाय वह सार्वजनिक पता है) से लिया गया हो. डिवाइस को जोड़ने के दौरान, हम फिर से पुष्टि करेंगे कि अनुरोध करने वाले डिवाइस के पास K है या नहीं.
  8. डिवाइस से जोड़ने के दौरान:

    1. सीकर को दूसरे डिवाइस से जोड़ने का अनुरोध/रिस्पॉन्स पैकेट मिलने पर: अगर अनुरोध में डिवाइस की क्षमता Noइनपुट/No Input है, तो Just Works जोड़े जाने के तरीके का इस्तेमाल करने से बचने के लिए, पेयरिंग बंद करें.
    2. सेवा देने वाली कंपनी की ओर से दूसरे डिवाइस से जोड़ने के लिए भेजे गए अनुरोध/रिस्पॉन्स पैकेट के लिए: डिवाइस की क्षमता फ़ील्ड को Display/YesNo पर सेट करें और MITM सुरक्षा ज़रूरी है पर पुष्टि करने की शर्तें सेट करें. इससे, 'संख्या में तुलना' जोड़ने के तरीके को ट्रिगर किया जाता है. Android पर पासकी की पुष्टि करना भी कहा जाता है. हम इससे इस बात की पुष्टि करते हैं कि अनुरोध करने वाला डिवाइस वाकई में फ़ास्ट पेयर सीकर (वह डिवाइस जो फ़ास्ट पेयर की सुविधा देने वाला डिवाइस है) है और उसे अपनी पसंद के लोगों से जोड़ने की कोई ज़रूरत नहीं है. उदाहरण देखें.
    3. इसकी वजह यह है: आउट-ऑफ़-बैंड जोड़ने का तरीका बेहतर होगा. हालांकि, प्लैटफ़ॉर्म इसे Android के सभी ज़रूरी वर्शन पर नहीं दिखाता है.
  9. पासकी की पुष्टि करने की ज़रूरत होने पर, पासकी की विशेषता में बदलाव करने के लिए, 10 सेकंड तक इंतज़ार करें.

    1. आम तौर पर, दूसरे डिवाइस से जोड़ने के इस तरीके का इस्तेमाल करने पर, उपयोगकर्ता यह पुष्टि करता है कि हर डिवाइस की स्क्रीन पर दिखने वाली पासकी एक जैसी हैं. इसके बजाय, सिर्फ़ इस डिवाइस को जोड़ने के लिए, हम उन्हें पहले से शेयर की गई भरोसेमंद कुंजी की मदद से एन्क्रिप्ट (सुरक्षित) करके, BLE पर ट्रांसफ़र करते हैं.
    2. ध्यान दें कि जिन डिवाइसों में स्क्रीन या कीबोर्ड होता है उन्हें यह तरीका नहीं अपनाना चाहिए, क्योंकि इससे एमआईटीएम सुरक्षा को थोड़ा नुकसान पहुंच सकता है. इस वजह से, फ़ास्ट पेयर की सुविधा फ़िलहाल इस तरह के डिवाइस पर काम नहीं करती.
    3. अगर 10 सेकंड का टाइमर, पासकी लिखे बिना ही खत्म हो जाता है, तो K को खारिज करें.
  10. जब पासकी की विशेषता पर वैल्यू लिखी जाती है, तो यह एन्क्रिप्ट (सुरक्षित) किया गया पासकी ब्लॉक होता है. रॉ पासकी ब्लॉक बनाने के लिए, इसे K के साथ डिक्रिप्ट करें और इसके फ़ॉर्मैट को एट्रिब्यूटिस्टिक: पासकी > टेबल 2.2 - (टाइप = सीकर की पासकी) में दिखाया गया हो.

  11. अगर डिक्रिप्शन विफल होता है, तो लिखने के लिए अनदेखा करें और K को खारिज कर दें.

  12. अगर ऐसा नहीं है, तो रॉ पासकी ब्लॉक में छह अंकों वाली Pसीकर वाली पासकी मौजूद होती है. यह वह पासकी है जो सीकर को चाहिए.

  13. Pseeker की तुलना हमारी अपनी ज़रूरी पासकी, PProvider से करें.

    1. अगर वैल्यू बराबर हैं, तो पुष्टि के लिए "हां" में जवाब दें.
    2. अगर ऐसा नहीं है, तो पुष्टि करने वाले मैसेज के लिए "नहीं" में जवाब दें, क्योंकि इससे पेयर नहीं हो पाएगा.
  14. दूसरे डिवाइस से जोड़ा नहीं जा सका या नहीं, एक और रॉ पासकी ब्लॉक बनाएं. इसके लिए, कैटगरी यह है: पासकी > टेबल 2.2 में दिखाया गया फ़ॉर्मैट इस्तेमाल करें. इसमें हमारा अनुमान PProvider होगा.

    1. पक्का करें कि ब्लॉक का टाइप सही हो (सेवा देने वाले की पासकी; टेबल देखें). ध्यान दें: सीकर से मिली पासकी ब्लॉक के सॉल्ट का दोबारा इस्तेमाल न करें. कोई नई वैल्यू जनरेट करें.
  15. K से रॉ पासकी ब्लॉक को एन्क्रिप्ट (सुरक्षित) करें. साथ ही, पासकी की विशेषता पर सूचना भेजकर, एन्क्रिप्ट किया गया पासकी ब्लॉक भेजें.

  16. अगर नौकरी ढूंढने वाले को सही पासकी P मिलती है और वह उसे डिक्रिप्ट कर देता है, तो पुष्टि करने वाला व्यक्ति भी पुष्टि के लिए "हां" का जवाब देगा. ऐसा करने पर, दूसरे डिवाइस से जोड़ दिया जाएगा.

    1. अगर दूसरे डिवाइस से जुड़ जाता है, तो इस LE लिंक पर K को डिक्रिप्ट करने के लिए, 'खाता कुंजी' को 'इस्तेमाल किया जा सकता है' के तौर पर मार्क करें हालांकि, बाद में जो पासकी लिखा जा रहा है या किसी अन्य लिंक पर नहीं लिखा गया है उसके लिए ऐसा नहीं किया जाएगा. 10 सेकंड के बाद K को खारिज करने के लिए टाइमर शुरू करें. साथ ही, खाता कुंजी लिखने की किसी भी कोशिश के बाद K को खारिज करें. अगर एलई लिंक डिसकनेक्ट हो जाता है, तो चौथे चरण के मुताबिक.
    2. अगर दूसरे डिवाइस से नहीं जोड़ा जा सकता, तो K को खारिज करें.
  17. डिवाइस की क्षमताओं वाले फ़ील्ड को वापस डिफ़ॉल्ट I/O सुविधाओं और पुष्टि करने की ज़रूरी शर्तों पर स्विच करें, ताकि नए पेयरिंग उम्मीद के मुताबिक बनी रहें.

ध्यान दें कि जिन कंपनियों के लिए बॉन्ड की ज़रूरत नहीं होती उनके लिए, नौकरी ढूंढने वाला, पेयरिंग का अनुरोध नहीं भेजता. इसका मतलब है कि आठवें से 17वें चरण को छोड़ दिया जाता है. साथ ही, खाता कुंजी की विशेषता में "K" का इस्तेमाल किया जाता है.

उदाहरण
पहला उदाहरण: दूसरे डिवाइस से जोड़ने की कोशिश की गई (मैन-इन-द-मिडल नहीं).
दूसरा उदाहरण: डिवाइस को मैन इन द मिडल के साथ जोड़ने की कोशिश नहीं की जा सकी.