विशेषताएं
फ़ास्ट पेयर सेवा
फ़ास्ट पेयर की सुविधा देने वाली कंपनी के पास नीचे दी गई GATT सेवा होगी.
सेवा | यूयूआईडी |
---|---|
फ़ास्ट पेयर सेवा | 0xFE2C |
इस सेवा में नीचे दी गई विशेषताएं होंगी.
फ़ास्ट पेयर सेवा की विशेषता | एन्क्रिप्ट (सुरक्षित) किया गया है | अनुमतियां | यूयूआईडी |
---|---|---|---|
मॉडल आईडी | नहीं | पढ़ें | FE2C1233-8366-4814-8EB0-01DE32100BEA |
कुंजी के आधार पर पेयरिंग | नहीं | लिखें और सूचित करें | FE2C1234-8366-4814-8EB0-01DE32100BEA |
पासकी | नहीं | लिखें और सूचित करें | FE2C1235-8366-4814-8EB0-01DE32100BEA |
खाता कुंजी | नहीं | लिखें | FE2C1236-8366-4814-8EB0-01DE32100BEA |
डिवाइस की जानकारी देने वाली सेवा
फ़ास्ट पेयर की सुविधा देने वाली कंपनी को, डिवाइस की जानकारी देने वाली सेवा के साथ काम भी करना चाहिए.
सेवा | यूयूआईडी |
---|---|
डिवाइस की जानकारी देने वाली सेवा | 0x180A |
फ़ास्ट पेयर सीकर इन चीज़ों का इस्तेमाल करता है.
नाम | एन्क्रिप्ट (सुरक्षित) किया गया है | अनुमतियां | यूयूआईडी |
---|---|---|---|
फ़र्मवेयर संशोधन | नहीं | पढ़ें | 0x2A26 |
खासियत: मॉडल आईडी
इस विशेषता की मदद से नौकरी ढूंढने वाला, मॉडल आईडी को ज़रूरत के हिसाब से पढ़ सकता है. जब डिवाइस पर खोजे जाने लायक मोड में विज्ञापन दिखाया जा रहा हो. इसे हमेशा वापस आना चाहिए नीचे दिया गया डेटा:
ऑक्टेट | डेटा टाइप | ब्यौरा | मान |
---|---|---|---|
0 से 2 | uint24 |
मॉडल आईडी | बदलता रहता है |
खासियत: कुंजी का इस्तेमाल करके दूसरे डिवाइस से जोड़ना
यह विशेषता, कुंजी पर आधारित पेयरिंग प्रोसेस को कंट्रोल करती है. इस प्रक्रिया में, एक खास लेवल पर वे लोग जो यह पुष्टि करते हैं कि सेवा देने वाली कंपनी के पास पहले से शेयर की गई कुंजी होती है. कुंजी अलग है हर केस:
पहला केस: पहले से शेयर की गई कुंजी, स्पूफ़िंग (झूठे नाम से मेल भेजना) रोकने के लिए बनी सार्वजनिक/निजी कुंजी पर आधारित है और सीकर की अपनी सार्वजनिक/निजी कुंजी का जोड़ा है. दूसरे डिवाइस से जोड़ने की कोशिश की गई.
- सेवा देने वाली कंपनी, दूसरे डिवाइस से जोड़ने वाले मोड में है.
- नौकरी ढूंढने वाला व्यक्ति यह पुष्टि करता है कि सेवा देने वाले व्यक्ति या कंपनी के पास एंटी-स्पूफ़िंग निजी पासकोड.
ध्यान दें कि 'दूसरे डिवाइस से जोड़ना' मोड में होने पर, सेवा देने वाली कंपनी, सामान्य तरीके से. उदाहरण के लिए, ऐसे डिवाइस के साथ जोड़ा जा सकता है जो फ़ास्ट पेयर की कुंजी-आधारित पेयरिंग.
दूसरा केस: पहले से शेयर की गई कुंजी, खाते की कुंजियों में से एक है.
- प्रोवाइडर आम तौर पर दूसरे डिवाइस से जोड़ने वाले मोड में नहीं होता है. (हालाँकि, यह शर्त—विज्ञापन देने वाले को खाता कुंजी के इस्तेमाल की सुविधा देनी चाहिए, भले ही वह दूसरे डिवाइस से जोड़ने वाला मोड.)
- नौकरी ढूंढने वाला और सेवा देने वाला, दोनों ही इस बात की पुष्टि करते हैं कि दूसरे व्यक्ति के पास खाता कुंजी.
चूंकि दोनों मामले बहुत ही समान हैं, इसे छोड़कर जिसके लिए पहले से शेयर की गई कुंजी का उपयोग किया गया है, उन्हें प्रक्रिया में शामिल किया जाता है.
डेटा फ़ॉर्मैट
हर फ़ॉर्मैट का इस्तेमाल करने का तरीका जानने के लिए, तरीका देखें.
ऑक्टेट | डेटा टाइप | ब्यौरा | मान | ज़रूरी है? |
---|---|---|---|---|
0 - 15 | uint128 |
एन्क्रिप्ट (सुरक्षित) किया गया अनुरोध | बदलता रहता है | ज़रूरी है |
16 से 79 | सार्वजनिक कुंजी | बदलता रहता है | वैकल्पिक |
टेबल 1.1: एन्क्रिप्ट (सुरक्षित) किया गया अनुरोध, जिसे अनुरोध करने वाले व्यक्ति की विशेषता के हिसाब से लिखा गया है.
ऑक्टेट | डेटा टाइप | ब्यौरा | मान | ज़रूरी है? |
---|---|---|---|---|
0 | uint8 |
मैसेज किस तरह का है | 0x00 = कुंजी पर आधारित, दूसरे डिवाइस से जोड़ने का अनुरोध |
ज़रूरी है |
1 | uint8 |
झंडे
|
अलग-अलग | ज़रूरी है |
2 से 7 | uint48 |
इनमें से कोई एक:
|
अलग-अलग | ज़रूरी है |
8 से 13 | uint48 |
नौकरी ढूंढने वाले का बीआर/ईडीआर पता | अलग-अलग | सिर्फ़ तब प्रज़ेंट करें, जब फ़्लैग बिट 1 या 3 सेट हो |
n से 15 साल | कोई भी वैल्यू (साल्ट) | अलग-अलग | ज़रूरी है |
टेबल 1.2.1: रॉ अनुरोध (टाइप 0x00). एन्क्रिप्ट (सुरक्षित) किए गए डेटा से डिक्रिप्ट किया गया टेबल 1.1 में अनुरोध करें.
ऑक्टेट | डेटा टाइप | ब्यौरा | मान | ज़रूरी है? |
---|---|---|---|---|
0 | uint8 |
मैसेज किस तरह का है | 0x10 = कार्रवाई का अनुरोध |
ज़रूरी है |
1 | uint8 |
झंडे
|
अलग-अलग | ज़रूरी है |
2 से 7 | uint48 |
इनमें से कोई एक:
|
अलग-अलग | ज़रूरी है |
8 | uint8 |
मैसेज ग्रुप | अलग-अलग | अगर फ़्लैग बिट 0 सेट है, तो ज़रूरी है |
9 | uint8 |
मैसेज का कोड | अलग-अलग | अगर फ़्लैग बिट 0 सेट है, तो ज़रूरी है |
10 | uint8 |
यह फ़्लैग पर निर्भर करता है:
|
अलग-अलग | अगर फ़्लैग 0 या 1 सेट है, तो ज़रूरी है |
11 - n | अतिरिक्त डेटा | अलग-अलग | वैकल्पिक | |
n से 15 साल | कोई भी वैल्यू (साल्ट) | अलग-अलग | ज़रूरी है |
टेबल 1.2.2: रॉ अनुरोध (टाइप 0x10). एन्क्रिप्ट (सुरक्षित) किए गए डेटा से डिक्रिप्ट किया गया टेबल 1.1 में अनुरोध करें.
ऑक्टेट | डेटा टाइप | ब्यौरा | मान |
---|---|---|---|
0 | uint8 |
मैसेज किस तरह का है | 0x01 = कुंजी के आधार पर दूसरे डिवाइस से जोड़ने का रिस्पॉन्स |
1 से 6 | uint48 |
सेवा देने वाली कंपनी का सार्वजनिक (BR/EDR) पता | अलग-अलग |
7 से 15 | कोई भी वैल्यू (साल्ट) | अलग-अलग |
टेबल 1.3: रॉ जवाब. एन्क्रिप्ट (सुरक्षित) किया गया जवाब जनरेट करने के लिए, इस मोड को एन्क्रिप्ट (सुरक्षित) किया गया है टेबल 1.4.
ऑक्टेट | डेटा टाइप | ब्यौरा | मान |
---|---|---|---|
0 से 15 | uint128 |
एन्क्रिप्ट (सुरक्षित) किया गया जवाब | अलग-अलग |
टेबल 1.4: एन्क्रिप्ट (सुरक्षित) किया गया जवाब, जिसे प्रोवाइडर ने को सूचना दें.
खासियत: पासकी
इस एट्रिब्यूट का इस्तेमाल, कुंजी का इस्तेमाल करके एक-दूसरे से जोड़ने के लिए किया जाता है प्रक्रिया.
ऑक्टेट | डेटा टाइप | ब्यौरा | मान |
---|---|---|---|
0 - 15 | uint128 |
एन्क्रिप्ट (सुरक्षित) किया गया पासकी ब्लॉक | अलग-अलग |
टेबल 2.1: एन्क्रिप्ट (सुरक्षित) की गई पासकी ब्लॉक. यहां जाएं: इस्तेमाल के लिए, कुंजी के आधार पर दूसरे डिवाइस से जोड़ने की प्रोसेस.
ऑक्टेट | डेटा टाइप | ब्यौरा | मान |
---|---|---|---|
0 | uint8 |
मैसेज किस तरह का है | इनमें से एक:
|
1 से 3 | unit32 |
छह अंकों वाली पासकी | अलग-अलग |
4 से 15 | कोई भी वैल्यू (साल्ट) | अलग-अलग |
टेबल 2.2: रॉ पासकी ब्लॉक. टेबल 2.1 का डिक्रिप्ट किया गया वर्शन.
विशेषता: खाता कुंजी
डिवाइस जोड़ने के बाद, फ़ास्ट पेयर की सुविधा इस्तेमाल करने वाला व्यक्ति, फ़ास्ट पेयर की सुविधा के लिए खाता बटन दिखाएगा सेवा देने वाली कंपनी.
ऑक्टेट | डेटा टाइप | ब्यौरा | मान |
---|---|---|---|
0 - 15 | uint128 |
खाता कुंजी (एन्क्रिप्ट की गई) | अलग-अलग |
डेटा लिखने का अनुरोध मिलने पर, फ़ास्ट पेयर की सुविधा देने वाली कंपनी को ये काम करने होंगे:
- चरण 4 से जनरेट किए गए शेयर किए गए सीक्रेट का इस्तेमाल करके खाता कुंजी डिक्रिप्ट करें
प्रोसेस.
- सेवा देने वाली ऐसी कंपनियों के लिए जिन्हें बॉन्डिंग की ज़रूरत होती है (सामान्य):
- डिक्रिप्ट करने से पहले, पुष्टि करें कि शेयर किए गए सीक्रेट का इस्तेमाल 12वें चरण में पासकी के लिए अनुरोध. अगर इस सुविधा का इस्तेमाल करके वीडियो अपलोड नहीं किया जा सकता गोपनीय रखें, इस लिखने पर ध्यान न दें और छोड़ दें.
- फ़िलहाल, शेयर किए गए सीक्रेट (प्रक्रिया में K) का इस्तेमाल नहीं किया जाएगा इसे फिर से जोड़ने के लिए. ऐसे सभी अनुरोध जो इस कुंजी की मदद से एन्क्रिप्ट यानी सुरक्षित किए गए हों प्रोसेस को रीस्टार्ट किए बिना उसे अस्वीकार कर दिया जाएगा.
- सेवा देने वाली ऐसी कंपनियों के लिए जिन्हें बॉन्डिंग की ज़रूरत होती है (सामान्य):
- पुष्टि करें कि डिक्रिप्ट की गई वैल्यू,
0x04
से शुरू होती है. अगर ऐसा नहीं है, तो इसे अनदेखा करें लिखें और छोड़ें. - यह पता करना कि खाते की कुंजी की मौजूदा सूची में, नई सूची के लिए कोई जगह है या नहीं वैल्यू.
- अगर ऐसा नहीं है, तो सूची से हाल ही में सबसे कम इस्तेमाल की गई वैल्यू मिटाएं.
- सूची में नई वैल्यू जोड़ें.
सूची में मौजूद खाता कुंजियों का इस्तेमाल कुंजी के आधार पर दूसरे डिवाइस से जोड़ने के दौरान किया जाता है.
खासियत: फ़र्मवेयर में बदलाव
यह विशेषता सीकर को ज़रूरत के मुताबिक सेवा देने वाली कंपनी. इसे हमेशा नीचे दिया गया डेटा दिखना चाहिए:
ऑक्टेट | डेटा टाइप | ब्यौरा | मान |
---|---|---|---|
0 - var | utf8s |
फ़र्मवेयर रिविज़न कोड | अलग-अलग |
इसे एक utf8 स्ट्रिंग में इनकैप्सुलेट करना चाहिए, भले ही एक से ज़्यादा स्ट्रिंग हों सेवा देने वाली कंपनी पर फ़र्मवेयर (जैसे कि बाएं बड, दाएं बड, और केस के लिए तीन फ़र्मवेयर). सेवा देने वाला संगठन खास मामलों में खास स्ट्रिंग भी दिखा सकता है:
स्टेटस अपडेट करना: अगर सेवा देने वाली कंपनी, फ़िलहाल नए फ़र्मवेयर पर अपडेट कर रही है. इसके अलावा, सेवा देने वाली कंपनी, स्टेज किए गए फ़र्मवेयर का वर्शन दिखा सकती है.
असामान्य स्थिति: अगर सेवा देने वाला व्यक्ति असामान्य स्थिति में है. उदाहरण के लिए, यह गड़बड़ी हुई है, क्योंकि फ़र्मवेयर अपडेट नहीं हो सका. इस मान के कारण मैसेज दिखाने वाला व्यक्ति, ताकि उपयोगकर्ता को पता चल सके कि इसे अभी अपडेट करने की ज़रूरत है.
सेवा देने वाली कंपनी को फ़र्मवेयर में बदलाव की विशेषता के ऐक्सेस को इनके लिए सीमित करना चाहिए डिवाइस ट्रैकिंग को रोकें. सुझाई गई पाबंदियां:
- बॉन्ड किए गए डिवाइसों को किसी भी समय ऐक्सेस किया जाना चाहिए
- सेवा देने वाली कंपनी को खोजे जाने पर, किसी भी डिवाइस के पास उसका ऐक्सेस होना चाहिए
खासियत: अतिरिक्त डेटा
इस सेवा में ये विशेषताएं होंगी.
फ़ास्ट पेयर सेवा की विशेषता | एन्क्रिप्ट (सुरक्षित) किया गया है | अनुमतियां | यूयूआईडी |
---|---|---|---|
Data | नहीं | लिखें और सूचित करें | FE2C1237-8366-4814-8EB0-01DE32100BEA |
फ़ास्ट पेयर सेवा की पुरानी सुविधा (1/1/2021 से यह सेवा बंद कर दी जाएगी) | एन्क्रिप्ट (सुरक्षित) किया गया है | अनुमतियां | यूयूआईडी |
---|---|---|---|
Data | नहीं | लिखें और सूचित करें | 0x1237 |
इस विशेषता के बारे में लिखने या सूचना देने से पहले,
विशेषता FE2C1234-8366-4814-8EB0-01DE32100BEA
के ज़रिए हैंडशेक करना
के बारे में बात करते हैं. एईएस-सीटीआर का इस्तेमाल, डेटा को एन्क्रिप्ट (सुरक्षित) करने के लिए किया जाएगा
विशेषता है, जिसके एल्गोरिदम के बारे में नीचे बताया गया है. यह मोड ज़्यादा है
जो एक 16-बाइट वाले ब्लॉक से कहीं ज़्यादा सुरक्षित है. HMAC-SHA256 यह काम करेगा
का इस्तेमाल डेटा के रखरखाव को पक्का करने के लिए किया जाना चाहिए. इसके बारे में नीचे बताया गया है.
ऑक्टेट | ब्यौरा | मान |
---|---|---|
0 से 7 | HMAC-SHA256 के पहले 8 बाइट. | अलग-अलग |
8 से 15 | नॉन्स, जिसका इस्तेमाल AES-CTR एन्क्रिप्शन में किया जाता है. | अलग-अलग |
16 - वैर | एन्क्रिप्ट किया गया डेटा. | अलग-अलग |
टेबल 3.1: डेटा पैकेट, जिसे प्रोवाइडर ने खोज करने वाले व्यक्ति की ओर से लिखकर उसे सूचना भेजी जाती है या फिर सेवा देने वाले को सूचना भेजी जाती है.
ऑक्टेट | डेटा टाइप | ब्यौरा | मान |
---|---|---|---|
0 - var | byte array |
Data | अलग-अलग होता है, तो इसे टेबल 1.2.2 के डेटा आईडी के हिसाब से डिकोड किया जाता है:
|
टेबल 3.2: रॉ डेटा. एन्क्रिप्ट किए गए डेटा से इसमें डिक्रिप्ट किया गया टेबल 3.1.
सूचना का अनुरोध किए जाने पर (उदाहरण के लिए, Bit 2 इंच में अपने हिसाब से नाम का अनुरोध करना टेबल 1.2.1), फ़ास्ट पेयर की सुविधा देने वाली कंपनी को ये काम करने होंगे:
- नॉन्स के लिए क्रिप्टोग्राफ़िक तरीके से 8 बाइट जनरेट करें.
एईएस-सीटीआर का इस्तेमाल करके डेटा को एन्क्रिप्ट करें, जहां हर 16-बाइट वाला ब्लॉक इसका इस्तेमाल करके जनरेट किया जाता है
encryptedBlock[i] = clearBlock[i] ^ AES(key, concat((uint8) i, 0x00000000000000, nonce))
कहां
- AES कुंजी, प्रक्रिया के चौथे चरण में शेयर किया गया सीक्रेट है.
- क्लीयरब्लॉक[i] 16 बाइट का एक ब्लॉक है, जिसकी शुरुआत डेटा[i * 16] से होती है. आखिरी ब्लॉक 16 बाइट से कम हो सकता है.
को बनाने के लिए Concat(encryptBlock[0], EncryptBlock[1],...) का इस्तेमाल करें एन्क्रिप्ट किया गया डेटा.
इसके अनुसार HMAC-SHA256 जनरेट करें
sha256(concat((K ^ opad), sha256(concat((K ^ ipad), concat(nonce, encrypted_data)))))
कहां
- K, Concat(shared_secret, 48-बाइट ZEROs) से जनरेट होता है, Shared_secret, प्रक्रिया के चौथे चरण से लिया गया है.
- opad, 64 बाइट की आउटर पैडिंग है, जिसमें दोहराए गए बाइट वैल्यू शामिल हैं
0x5C
. - ipad 64 बाइट की इनर पैडिंग है, जिसमें दोहराए जाने वाले बाइट शामिल हैं
0x36
.
HMAC-SHA256 से पहले 8 बाइट को डेटा के प्रीफ़िक्स के तौर पर लें पैकेट में उपलब्ध है.
डेटा लिखने का अनुरोध मिलने पर, फ़ास्ट पेयर की सुविधा देने वाली कंपनी को ये काम करने होंगे:
- डेटा के भरोसेमंद होने की पुष्टि करने के लिए, इसके शुरुआती 8 बाइट देखें HMAC-SHA256.
एन्क्रिप्ट (सुरक्षित) किए गए डेटा को एईएस-सीटीआर की मदद से डिक्रिप्ट करें. हर ब्लॉक को बनाने के लिए
clearBlock[i] = encryptedBlock[i] ^ AES(key, concat((uint8) i, 0x00000000000000, nonce))
कहां
- एन्क्रिप्ट करने वाली ब्लॉक[i], 16 बाइट का एक ब्लॉक है, जो एन्क्रिप्ट किए गए_data[i * 16] से शुरू होता है. आखिरी ब्लॉक 16 बाइट से कम का हो सकता है.
- AES कुंजी हैंडशेक से जनरेट की जाती है या पहचानी जाती है, उदाहरण के लिए
- नेमिंग फ़्लो 1 में, यह ECDH से है, और इस पेयरिंग के लिए फिर से इस्तेमाल न करें. एन्क्रिप्ट (सुरक्षित) किए गए अनुरोधों से आने वाले कोई भी अनुरोध प्रक्रिया को फिर से शुरू किए बिना इस कुंजी को शामिल करना चाहिए अस्वीकार कर दिया गया.
- नेमिंग फ़्लो 2 में, यह खाते की कुंजी है.
रॉ डेटा बनाने के लिए, concat(clearBlock[0], clearBlock[1],...) करें.