मैसेज की पुष्टि करने वाला कोड
मैसेज स्ट्रीम का इस्तेमाल, ऑडियो स्विच को कॉन्फ़िगर करने के लिए किया जाता है. इनके बारे में यहां देखें ऑडियो स्विच मैसेज. इन अहम कॉन्फ़िगरेशन के लिए, सेवा देने वाली कंपनी को ताकि मैसेज, GMSCore (फ़ास्ट पेयर मॉड्यूल) से भेजा जाए, न कि किसी Seeker पर कोई दूसरा ऐप्लिकेशन मिल सकता है.
MAC (मैसेज की पुष्टि करने वाला कोड) जनरेट करें
FP सीकर, डिवाइस कॉन्फ़िगरेशन मैसेज के लिए मैसेज की पुष्टि करने वाला कोड जोड़ता है HMAC-SHA256 का इस्तेमाल करके. मैसेज के MAC में ये पहले 8 बाइट होते हैं:
sha256(concat((K ^ opad), sha256(concat((K ^ ipad), concat(nonce, message)))))
कहां
- K को Concat(खाता कुंजी, 48-बाइट ZEROs) से जनरेट किया जाता है.
- मैसेज, मैसेज स्ट्रीम का अतिरिक्त डेटा है.
- nonce को concat(session_nonce, message_nonce) से जनरेट होता है; सत्र नॉन्स और मैसेज नॉन्स की जानकारी नीचे दिए गए सेक्शन में दी गई है.
- opad, 64 बाइट की आउटर पैडिंग है, जिसमें दोहराए गए बाइट वैल्यू शामिल हैं
0x5C
. - ipad की इनर पैडिंग (जगह) 64 बाइट है, जिसमें दोहराए जाने वाले बाइट शामिल हैं
0x36
.
सेशन नॉन्स और मैसेज नॉन्स
रीप्ले अटैक को रोकने के लिए, प्रोवाइडर को यह पक्का करना होगा कि नॉन्स दोहराया गया. दोनों प्रोवाइडर पर क्लॉक या काउंटर सिंक्रोनाइज़ेशन बनाए रखने की वजह से और नौकरी ढूंढने वाला व्यक्ति सीधे तौर पर काम नहीं करता है, लेकिन प्रोवाइडर सेशन नॉन्स जनरेट करता है (हर कनेक्शन के हिसाब से) जिसे कनेक्शन के दौरान सभी मैसेज के साथ शेयर किया जाता है, जब कोई व्यक्ति मैसेज नॉन्स (हर मैसेज के लिए) जनरेट करता है, जो बिना किसी क्रम के होता है हर मैसेज के लिए जनरेट किया जाता है. हर मैसेज के लिए MAC जनरेट करने की नॉन्स सेशन नॉन्स और मैसेज नॉन्स का कॉम्बिनेशन, जैसे कि Concat(session_nonce, message_nonce) है.
हमने डिवाइस की जानकारी वाले इवेंट ग्रुप में एक सेशन नॉन्स जोड़ा है:
मैसेज ग्रुप का नाम | मान |
---|---|
डिवाइस की जानकारी का इवेंट | 0x03 |
मैसेज कोड का नाम | मान |
---|---|
सेशन नॉन्स | 0x0A |
RFCOMM के समय सेशन नॉन्स जनरेट होना चाहिए और सीकर को भेजा जाना चाहिए कनेक्ट करता है:
ऑक्टेट | डेटा टाइप | ब्यौरा | मान |
---|---|---|---|
0 | uint8 | डिवाइस की जानकारी का इवेंट | 0x03 |
1 | uint8 | सेशन नॉन्स | 0x0A |
2 से 3 | uint16 | डेटा की अतिरिक्त लंबाई | 0x0008 |
4 से 11 | सेशन नॉन्स | अलग-अलग |
MAC की ज़रूरत होने पर मैसेज भेजने के लिए, सीकर को नॉन्स मैसेज भेजना होगा और MAC को एक साथ मैसेज करें.
ऑक्टेट | डेटा टाइप | ब्यौरा | मान |
---|---|---|---|
0 | uint8 | मैसेज ग्रुप | अलग-अलग |
1 | uint8 | मैसेज का कोड | अलग-अलग |
2 से 3 | uint16 | डेटा की अतिरिक्त लंबाई(अतिरिक्त डेटा अवधि + 16) | अलग-अलग |
4 - n | अतिरिक्त डेटा | अलग-अलग | |
n + 1 - n + 8 | संदेश नॉन्स | अलग-अलग | |
n + 9 - n + 16 | मैसेज की पुष्टि करने वाला कोड | अलग-अलग |
MAC (मैसेज की पुष्टि करने वाला कोड) की पुष्टि करें
मैसेज की पुष्टि करने वाला कोड वाला मैसेज मिलने पर, सेवा देने वाली कंपनी जनरेट करने वाले फ़ंक्शन के जैसे फ़ंक्शन का इस्तेमाल करके इसे सत्यापित करेगा. इसका मतलब है कि मिला MAC, इसके पहले 8 बाइट के बराबर होना चाहिए
sha256(concat((K ^ opad), sha256(concat((K ^ ipad), concat(section_nonce, message_nonce, message)))))
कहां:
- K को
concat(account key, 48-byte ZEROs)
ने जनरेट किया है और सेवा देने वाली कंपनी ने MAC की पुष्टि करने के लिए, सेव की गई सभी खाता कुंजियों को पार करेगा. - message इसका अतिरिक्त डेटा है (मैसेज नॉन और MAC को छोड़कर) स्ट्रीम को बंद कर दिया जाएगा.
अगर MAC सही है, तो सेवा देने वाली कंपनी को दिखाई देगा. अगर ऐसा नहीं है, तो सेवा देने वाली कंपनी को गड़बड़ी की वजह 0x3 - के साथ एक एनएके भेजना होगा ग़लत संदेश प्रमाणीकरण कोड के कारण अनुमति नहीं दी गई.