v1.3
ফাইন্ড মাই ডিভাইস নেটওয়ার্ক (FMDN) আনুষঙ্গিক স্পেসিফিকেশন বীকনিং ব্লুটুথ লো এনার্জি (BLE) ডিভাইসগুলি ট্র্যাক করার জন্য একটি এন্ড-টু-এন্ড এনক্রিপ্টেড পদ্ধতির সংজ্ঞা দেয়। এই পৃষ্ঠাটি FMDN কে ফাস্ট পেয়ার স্পেসিফিকেশনের এক্সটেনশন হিসাবে বর্ণনা করে। প্রদানকারীদের এই এক্সটেনশনটি সক্ষম করা উচিত যদি তাদের কাছে এমন ডিভাইস থাকে যা FMDN এর সাথে সামঞ্জস্যপূর্ণ এবং সেই ডিভাইসগুলির জন্য অবস্থান ট্র্যাকিং সক্ষম করতে ইচ্ছুক।
GATT স্পেসিফিকেশন
একটি অতিরিক্ত জেনেরিক অ্যাট্রিবিউট (GATT) বৈশিষ্ট্য নিম্নলিখিত শব্দার্থ সহ দ্রুত জোড়া পরিষেবাতে যোগ করা উচিত:
দ্রুত জোড়া পরিষেবা বৈশিষ্ট্য | এনক্রিপ্ট করা হয়েছে | অনুমতি | UUID |
---|---|---|---|
বীকন কর্ম | না | পড়ুন, লিখুন এবং অবহিত করুন | FE2C1238-8366-4814-8EB0-01DE32100BEA |
সারণি 1: FMDN-এর জন্য দ্রুত জোড়া পরিষেবার বৈশিষ্ট্য।
প্রমাণীকরণ
এই এক্সটেনশনের জন্য প্রয়োজনীয় ক্রিয়াকলাপগুলি একটি চ্যালেঞ্জ-প্রতিক্রিয়া প্রক্রিয়া দ্বারা সুরক্ষিত একটি লেখার অপারেশন হিসাবে সঞ্চালিত হয়। যে কোনো অপারেশন করার আগে, সারণী 1-এর বৈশিষ্ট্য থেকে অনুসন্ধানকারীকে একটি রিড অপারেশন করার আশা করা হয়, যার ফলে নিম্নলিখিত বিন্যাসে একটি বাফার হয়:
অক্টেট | ডেটা টাইপ | বর্ণনা | মান |
---|---|---|---|
0 | uint8 | প্রোটোকল প্রধান সংস্করণ নম্বর | 0x01 |
1 - 8 | বাইট অ্যারে | এক সময় এলোমেলো নন্স | পরিবর্তিত হয় |
প্রতিটি পঠিত ক্রিয়াকলাপের ফলে একটি ভিন্ন নন্স হওয়া উচিত এবং একটি একক ননস শুধুমাত্র একটি একক অপারেশনের জন্য বৈধ হওয়া উচিত। অপারেশন ব্যর্থ হলেও অকার্যকর করা আবশ্যক.
অনুসন্ধানকারী তারপরে একটি পরবর্তী লেখার অনুরোধে ব্যবহার করার জন্য একটি এক-কালীন প্রমাণীকরণ কী গণনা করে। প্রমাণীকরণ কীটি সারণী 2 থেকে 5 এ বর্ণিত হিসাবে গণনা করা হয়। অনুরোধ করা অপারেশনের উপর নির্ভর করে, অনুসন্ধানকারী নিম্নলিখিত কীগুলির একটি বা একাধিক সম্পর্কে জ্ঞান প্রমাণ করে:
অ্যাকাউন্ট কী : 16-বাইট ফাস্ট পেয়ার অ্যাকাউন্ট কী, যেমন ফাস্ট পেয়ার স্পেসিফিকেশনে সংজ্ঞায়িত করা হয়েছে।
মালিকের অ্যাকাউন্ট কী : প্রদানকারী মালিকের অ্যাকাউন্ট কী হিসাবে বিদ্যমান অ্যাকাউন্ট কীগুলির মধ্যে একটি বেছে নেয় যখন একজন অনুসন্ধানকারী প্রথমবার বীকন অ্যাকশন বৈশিষ্ট্যটি অ্যাক্সেস করে। প্রদানকারী ফ্যাক্টরি রিসেট না হওয়া পর্যন্ত নির্বাচিত মালিকের অ্যাকাউন্ট কী পরিবর্তন করা যাবে না। বিনামূল্যে অ্যাকাউন্ট কী স্লট ফুরিয়ে গেলে প্রদানকারী মালিকের অ্যাকাউন্ট কীটি সরিয়ে ফেলবে না ।
যে সমস্ত প্রদানকারীরা ইতিমধ্যেই FMDN সমর্থন করে যখন প্রথমবার পেয়ার করা হয় (অথবা ফ্যাক্টরি রিসেট করার পরে পেয়ার করা হলে এটি সমর্থন করে) প্রথম অ্যাকাউন্ট কী বেছে নেয়, কারণ এটিই একমাত্র বিদ্যমান অ্যাকাউন্ট কী যখন পেয়ার করার সময় প্রভিশনিং অবস্থা পড়ে।
যে সমস্ত প্রদানকারীরা ইতিমধ্যেই যুক্ত হওয়ার পরে FMDN সমর্থন লাভ করে (উদাহরণস্বরূপ, একটি ফার্মওয়্যার আপডেটের মাধ্যমে) বিদ্যমান যেকোনো অ্যাকাউন্ট কী বেছে নিতে পারে। ফার্মওয়্যার আপডেটের পর বীকন অ্যাকশন বৈশিষ্ট্য থেকে প্রভিশনিং স্টেট পড়তে ব্যবহৃত প্রথম অ্যাকাউন্ট কীটি বেছে নেওয়া যুক্তিসঙ্গত, ধরে নিলাম যে ব্যবহারকারী আপডেটটি করেছেন তিনিই প্রদানকারীর বর্তমান মালিক৷
ক্ষণস্থায়ী পরিচয় কী (EIK) : একটি 32-বাইট কী এফএমডিএন প্রভিশনিং প্রক্রিয়া সম্পাদন করার সময় অনুসন্ধানকারীর দ্বারা এলোমেলোভাবে বেছে নেওয়া হয়। এই কীটি ক্রিপ্টোগ্রাফিক কীগুলি বের করতে ব্যবহার করা হয় যা এন্ড-টু-এন্ড এনক্রিপ্ট করার লোকেশন রিপোর্টের জন্য ব্যবহৃত হয়। অন্বেষণকারী এটি ব্যাকএন্ডে প্রকাশ করে না।
পুনরুদ্ধার কী :
SHA256(ephemeral identity key || 0x01)
হিসাবে সংজ্ঞায়িত, প্রথম 8 বাইটে কাটা। কীটি ব্যাকএন্ডে সংরক্ষিত থাকে এবং ব্যবহারকারী এটিকে EIK পুনরুদ্ধার করতে ব্যবহার করতে পারে, যদি ব্যবহারকারী ডিভাইসে একটি বোতাম টিপে সম্মতি প্রকাশ করে।রিং কী :
SHA256(ephemeral identity key || 0x02)
হিসাবে সংজ্ঞায়িত, প্রথম 8 বাইটে কাটা। কীটি ব্যাকএন্ডে সংরক্ষিত থাকে এবং অনুসন্ধানকারী শুধুমাত্র ডিভাইসটি বাজানোর জন্য এটি ব্যবহার করতে পারে।অবাঞ্ছিত ট্র্যাকিং সুরক্ষা কী :
SHA256(ephemeral identity key || 0x03)
হিসাবে সংজ্ঞায়িত, প্রথম 8 বাইটে কাটা। কীটি ব্যাকএন্ডে সংরক্ষণ করা হয় এবং অনুসন্ধানকারী শুধুমাত্র অবাঞ্ছিত ট্র্যাকিং সুরক্ষা মোড সক্রিয় করতে এটি ব্যবহার করতে পারে।
অপারেশন
বৈশিষ্ট্যে লেখা ডেটার বিন্যাস সারণি 2 থেকে 5 তে দেওয়া হয়েছে। প্রতিটি অপারেশন পরবর্তীতে এই বিভাগে আরও বিশদে আলোচনা করা হয়েছে।
অক্টেট | ডেটা টাইপ | বর্ণনা | মান |
---|---|---|---|
0 | uint8 | ডেটা আইডি |
|
1 | uint8 | ডেটা দৈর্ঘ্য | পরিবর্তিত হয় |
2 - 9 | বাইট অ্যারে | এককালীন প্রমাণীকরণ কী | HMAC-SHA256(account key, protocol major version number || the last nonce read from the characteristic || data ID || data length || additional data) |
10 - var | বাইট অ্যারে | অতিরিক্ত তথ্য |
|
সারণি 2: বীকন প্রভিশনিং অনুরোধ।
অক্টেট | ডেটা টাইপ | বর্ণনা | মান |
---|---|---|---|
0 | uint8 | ডেটা আইডি | 0x04: ব্যবহারকারীর সম্মতিতে ক্ষণস্থায়ী পরিচয় কী পড়ুন |
1 | uint8 | ডেটা দৈর্ঘ্য | 0x08 |
2 - 9 | বাইট অ্যারে | এককালীন প্রমাণীকরণ কী | HMAC-SHA256(recovery key, protocol major version number || the last nonce read from the characteristic || data ID || data length) |
সারণি 3: বীকন প্রভিশনিং কী পুনরুদ্ধারের অনুরোধ।
অক্টেট | ডেটা টাইপ | বর্ণনা | মান |
---|---|---|---|
0 | uint8 | ডেটা আইডি |
|
1 | uint8 | ডেটা দৈর্ঘ্য | পরিবর্তিত হয় |
2 - 9 | বাইট অ্যারে | এককালীন প্রমাণীকরণ কী | HMAC-SHA256(ring key, protocol major version number || the last nonce read from the characteristic || data ID || data length || additional data) এর প্রথম 8 বাইট |
10 - var | বাইট অ্যারে | অতিরিক্ত তথ্য |
|
সারণি 4: রিং করার অনুরোধ।
অক্টেট | ডেটা টাইপ | বর্ণনা | মান |
---|---|---|---|
0 | uint8 | ডেটা আইডি |
|
1 | uint8 | ডেটা দৈর্ঘ্য | পরিবর্তিত হয় |
2 - 9 | বাইট অ্যারে | এককালীন প্রমাণীকরণ কী | HMAC-SHA256(unwanted tracking protection key, protocol major version number || the last nonce read from the characteristic || data ID || data length || additional data) |
10 - var | বাইট অ্যারে | অতিরিক্ত তথ্য |
|
সারণি 5: অবাঞ্ছিত ট্র্যাকিং সুরক্ষা অনুরোধ।
সারণি 6 এ তালিকাভুক্ত ট্রিগার বিজ্ঞপ্তিগুলি সফলভাবে লিখেছেন৷
0x05 ব্যতীত ডেটা আইডি সহ বিজ্ঞপ্তি: রিং স্টেট পরিবর্তন লেখার লেনদেনের আগে পাঠানো উচিত যা বিজ্ঞপ্তিটি ট্রিগার করে, অর্থাৎ, লেখার অনুরোধের জন্য একটি প্রতিক্রিয়া PDU পাঠানোর আগে।
অক্টেট | ডেটা টাইপ | বর্ণনা | মান |
---|---|---|---|
0 | uint8 | ডেটা আইডি |
|
1 | uint8 | ডেটা দৈর্ঘ্য | পরিবর্তিত হয় |
2 - 9 | বাইট অ্যারে | প্রমাণীকরণ | অপারেশন প্রতি বিস্তারিত |
10 - var | বাইট অ্যারে | অতিরিক্ত তথ্য |
|
সারণি 6: বীকন পরিষেবা প্রতিক্রিয়া।
সারণী 7 অপারেশন দ্বারা ফেরত সম্ভাব্য GATT ত্রুটি কোড তালিকা.
কোড | বর্ণনা | মন্তব্য |
---|---|---|
0x80 | অপ্রমাণিত | প্রমাণীকরণ ব্যর্থ হলে একটি লিখিত অনুরোধের প্রতিক্রিয়া হিসাবে ফিরে এসেছে (যে ক্ষেত্রে একটি পুরানো ননস ব্যবহার করা হয়েছিল) সহ) |
0x81 | অবৈধ মান | কোনো অবৈধ মান প্রদান করা হলে বা প্রাপ্ত ডেটাতে অপ্রত্যাশিত সংখ্যক বাইট থাকলে ফেরত দেওয়া হয়। |
0x82 | ব্যবহারকারীর সম্মতি নেই | ডেটা আইডি 0x04 সহ একটি লেখার অনুরোধের প্রতিক্রিয়া হিসাবে ফিরে এসেছে: ডিভাইসটি পেয়ারিং মোডে না থাকলে ব্যবহারকারীর সম্মতিতে ক্ষণস্থায়ী পরিচয় কী পড়ুন ৷ |
সারণী 7: GATT ত্রুটি কোড।
বীকনের পরামিতি পড়ুন
অনুসন্ধানকারী ডেটা আইডি 0x00 সহ টেবিল 2 থেকে একটি অনুরোধ সমন্বিত বৈশিষ্ট্যের জন্য একটি লেখার অপারেশন সম্পাদন করে বীকনের পরামিতিগুলির জন্য সরবরাহকারীকে জিজ্ঞাসা করতে পারে। প্রদানকারী যাচাই করে যে প্রদত্ত এককালীন প্রমাণীকরণ কী ডিভাইসে সংরক্ষিত অ্যাকাউন্ট কীগুলির সাথে মেলে৷
যাচাইকরণ ব্যর্থ হলে প্রদানকারী একটি অপ্রমাণিত ত্রুটি ফেরত দেয়।
সফল হলে, সরবরাহকারী সারণী 6 থেকে ডেটা আইডি 0x00 সহ একটি প্রতিক্রিয়ার সাথে বিজ্ঞপ্তি দেয়। প্রদানকারী নিম্নরূপ ডেটা সেগমেন্ট তৈরি করে:
অক্টেট | ডেটা টাইপ | বর্ণনা | মান |
---|---|---|---|
0 | uint8 | ক্রমাঙ্কিত শক্তি | ক্রমাঙ্কিত শক্তি 0m এ প্রাপ্ত হিসাবে (পরিসরে একটি মান [-100, 20])। 1 dBm রেজোলিউশন সহ একটি স্বাক্ষরিত পূর্ণসংখ্যা হিসাবে উপস্থাপন করা হয়েছে৷ |
1 - 4 | uint32 | ঘড়ির মান | সেকেন্ডে বর্তমান ঘড়ির মান (বড় এন্ডিয়ান)। |
5 | uint8 | বক্ররেখা নির্বাচন | উপবৃত্তাকার বক্ররেখা এনক্রিপশনের জন্য ব্যবহৃত হচ্ছে:
|
6 | uint8 | উপাদান | রিং করতে সক্ষম উপাদানের সংখ্যা:
|
7 | uint8 | রিং করার ক্ষমতা | সমর্থিত বিকল্পগুলি হল:
|
8-15 | বাইট অ্যারে | প্যাডিং | AES এনক্রিপশনের জন্য জিরো প্যাডিং। |
অনুরোধটি প্রমাণীকরণের জন্য ব্যবহৃত অ্যাকাউন্ট কী সহ ডেটা AES-ECB-128 এনক্রিপ্ট করা উচিত।
প্রমাণীকরণ বিভাগটিকে HMAC-SHA256(account key, protocol major version number || the last nonce read from the characteristic || data ID || data length || additional data after encryption || 0x01)
বীকনের প্রভিশনিং স্টেট পড়ুন
অনুসন্ধানকারী বীকনের প্রভিশনিং অবস্থার জন্য সরবরাহকারীকে জিজ্ঞাসা করতে পারে একটি লিখিত অপারেশন সম্পাদন করে ডেটা আইডি 0x01 সহ টেবিল 2 থেকে একটি অনুরোধ সমন্বিত বৈশিষ্ট্যে। প্রদানকারী যাচাই করে যে প্রদত্ত এককালীন প্রমাণীকরণ কী ডিভাইসে সংরক্ষিত অ্যাকাউন্ট কীগুলির সাথে মেলে৷
যাচাইকরণ ব্যর্থ হলে, প্রদানকারী একটি অপ্রমাণিত ত্রুটি ফেরত দেয়।
সফল হলে, সরবরাহকারী সারণী 6 থেকে ডেটা আইডি 0x01 সহ একটি প্রতিক্রিয়ার সাথে বিজ্ঞপ্তি দেয়। প্রদানকারী নিম্নরূপ ডেটা সেগমেন্ট তৈরি করে:
অক্টেট | ডেটা টাইপ | বর্ণনা | মান |
---|---|---|---|
0 | uint8 | প্রভিশনিং স্টেট | নিম্নলিখিত মান ধারণকারী একটি বিটমাস্ক:
|
1 - 20 বা 32 | বাইট অ্যারে | বর্তমান ক্ষণস্থায়ী শনাক্তকারী | 20 বা 32 বাইট (ব্যবহৃত এনক্রিপশন পদ্ধতির উপর নির্ভর করে) বীকন দ্বারা বিজ্ঞাপিত বর্তমান ক্ষণস্থায়ী আইডি নির্দেশ করে, যদি একটি ডিভাইসের জন্য সেট করা থাকে। |
প্রমাণীকরণ বিভাগটিকে HMAC-SHA256(account key, protocol major version number || the last nonce read from the characteristic || data ID || data length || additional data || 0x01)
একটি ক্ষণস্থায়ী পরিচয় কী সেট করুন
একটি FMDN বীকন হিসাবে একটি অপ্রস্তুত প্রদানকারীকে প্রভিশন করতে, অথবা ইতিমধ্যেই প্রভিশন করা প্রোভাইডারের ক্ষণস্থায়ী পরিচয় কী পরিবর্তন করতে, সিকার ডাটা আইডি 0x02 সহ টেবিল 2 থেকে একটি অনুরোধ সমন্বিত বৈশিষ্ট্যের জন্য একটি লেখার অপারেশন সম্পাদন করে। প্রদানকারী যাচাই করে যে:
- প্রদত্ত এককালীন প্রমাণীকরণ কী মালিকের অ্যাকাউন্ট কী-এর সাথে মেলে৷
- যদি একটি ক্ষণস্থায়ী পরিচয় কী-এর একটি হ্যাশ প্রদান করা হয়, হ্যাশ করা ক্ষণস্থায়ী পরিচয় কী বর্তমান ক্ষণস্থায়ী পরিচয় কী-এর সাথে মিলে যায়।
- যদি একটি ক্ষণস্থায়ী পরিচয় কী-এর একটি হ্যাশ প্রদান না করা হয়, তাহলে যাচাই করুন যে প্রদানকারীকে ইতিমধ্যেই একটি FMDN বীকন হিসাবে সরবরাহ করা হয়নি৷
যাচাইকরণ ব্যর্থ হলে, প্রদানকারী একটি অপ্রমাণিত ত্রুটি ফেরত দেয়।
সফল হলে, AES-ECB-128 এর দ্বারা মিলিত অ্যাকাউন্ট কী ব্যবহার করে ডিক্রিপ্ট করে ক্ষণস্থায়ী পরিচয় কী পুনরুদ্ধার করা হয়। কীটি ডিভাইসে টিকে থাকা উচিত এবং সেই বিন্দু থেকে প্রদানকারীর FMDN ফ্রেমের বিজ্ঞাপন দেওয়া শুরু করা উচিত। নতুন ক্ষণস্থায়ী পরিচয় কী BLE সংযোগ বন্ধ হওয়ার সাথে সাথে কার্যকর হয়। সরবরাহকারী সারণী 6 থেকে ডেটা আইডি 0x02 সহ একটি প্রতিক্রিয়ার সাথে বিজ্ঞপ্তি দেয়৷
প্রমাণীকরণ বিভাগটিকে HMAC-SHA256(account key, protocol major version number || the last nonce read from the characteristic || data ID || data length || 0x01)
ক্ষণস্থায়ী পরিচয় কী সাফ করুন
প্রদানকারীর বীকন অংশটিকে আনপ্রভিশন করতে, সিকার বৈশিষ্ট্যের জন্য একটি লেখার ক্রিয়া সম্পাদন করে, ডেটা আইডি 0x03 সহ টেবিল 2 থেকে একটি অনুরোধ সমন্বিত। প্রদানকারী যাচাই করে যে:
- প্রদত্ত এককালীন প্রমাণীকরণ কী মালিকের অ্যাকাউন্ট কী-এর সাথে মেলে৷
- হ্যাশ করা ক্ষণস্থায়ী পরিচয় কী বর্তমান ক্ষণস্থায়ী পরিচয় কী-এর সাথে মেলে।
যদি প্রদানকারীকে একটি FMDN বীকন হিসাবে প্রবিধান করা না হয় বা যাচাইকরণ ব্যর্থ হয়, তাহলে এটি একটি অপ্রমাণিত ত্রুটি ফেরত দেয়৷
সফল হলে, প্রদানকারী কী ভুলে যায় এবং FMDN ফ্রেমের বিজ্ঞাপন বন্ধ করে দেয়। সরবরাহকারী সারণী 6 থেকে ডেটা আইডি 0x03 সহ একটি প্রতিক্রিয়ার সাথে বিজ্ঞপ্তি দেয়৷ প্রমাণীকরণ বিভাগটিকে HMAC-SHA256(account key, protocol major version number || the last nonce read from the characteristic || data ID || data length || 0x01)
ব্যবহারকারীর সম্মতিতে ক্ষণস্থায়ী পরিচয় কী পড়ুন
এই বিকল্পটি শুধুমাত্র একটি হারানো কী পুনরুদ্ধার করার জন্য উপলব্ধ, কারণ কীটি শুধুমাত্র স্থানীয়ভাবে অনুসন্ধানকারী দ্বারা সংরক্ষণ করা হয়। যেমন, এই ক্ষমতাটি তখনই পাওয়া যায় যখন ডিভাইসটি পেয়ারিং মোডে থাকে বা ডিভাইসে একটি ফিজিক্যাল বোতাম চাপার পরে কিছু সীমিত সময়ের জন্য (যা ব্যবহারকারীর সম্মতি গঠন করে)।
ক্লিয়ারটেক্সট কী পুনরুদ্ধার করতে সক্ষম হওয়ার জন্য অনুসন্ধানকারীকে অবশ্যই ব্যাকএন্ডে পুনরুদ্ধার কী সংরক্ষণ করতে হবে, তবে এটি EIK নিজেই সংরক্ষণ করে না।
EIK পড়ার জন্য, অনুসন্ধানকারী বৈশিষ্ট্যের জন্য একটি লেখার ক্রিয়া সম্পাদন করে, ডেটা আইডি 0x04 সহ টেবিল 3 থেকে একটি অনুরোধ সমন্বিত। প্রদানকারী যাচাই করে যে:
- হ্যাশ করা পুনরুদ্ধার কী প্রত্যাশিত পুনরুদ্ধার কীটির সাথে মেলে।
- ডিভাইসটি EIK পুনরুদ্ধার মোডে আছে।
যাচাইকরণ ব্যর্থ হলে, প্রদানকারী একটি অপ্রমাণিত ত্রুটি ফেরত দেয়।
ডিভাইসটি পেয়ারিং মোডে না থাকলে, প্রদানকারী একটি নো ইউজার কনসেন্ট ত্রুটি ফেরত দেয়।
সফল হলে, সরবরাহকারী সারণী 6 থেকে ডেটা আইডি 0x04 সহ একটি প্রতিক্রিয়ার সাথে বিজ্ঞপ্তি দেয়।
প্রমাণীকরণ বিভাগটি HMAC-SHA256(recovery key, protocol major version number || the last nonce read from the characteristic || data ID || data length || additional data || 0x01)
রিং অপারেশন
অন্বেষক সারণী 4 থেকে ডেটা আইডি 0x05 সহ একটি অনুরোধ সমন্বিত বৈশিষ্ট্যের জন্য একটি লেখার অপারেশন সম্পাদন করে প্রদানকারীকে একটি শব্দ বাজাতে বলতে পারে। প্রদানকারী নিম্নরূপ ডেটা সেগমেন্ট তৈরি করে:
অক্টেট | ডেটা টাইপ | বর্ণনা | মান |
---|---|---|---|
0 | uint8 | রিং অপারেশন | নিম্নলিখিত মান ধারণকারী একটি বিটমাস্ক:
|
1 - 2 | uint16 | সময় শেষ | ডেসিসেকেন্ডে সময়সীমা। শূন্য হতে হবে না এবং 10 মিনিটের সমান হতে হবে না। নিজেকে নীরব করার আগে কতক্ষণ রিং করা উচিত তা নির্ধারণ করতে প্রদানকারী এই মানটি ব্যবহার করে। ডিভাইসের কোনো উপাদান ইতিমধ্যে বাজলে টাইমআউটটি ইতিমধ্যে কার্যকরীটিকে ওভাররাইড করে৷ রিং অপারেশন 0x00 এ সেট করা থাকলে, টাইমআউট উপেক্ষা করা হয়। |
3 | uint8 | আয়তন |
|
অনুরোধ পাওয়ার পরে, প্রদানকারী যাচাই করে যে:
- প্রদত্ত এক-কালীন প্রমাণীকরণ কীটি রিং কী-এর সাথে মেলে৷
- অনুরোধ করা রাজ্যটি রিং করতে পারে এমন উপাদানগুলির সাথে মেলে৷
যদি প্রদানকারীকে একটি FMDN বীকন হিসাবে প্রবিধান করা না হয় বা যাচাইকরণ ব্যর্থ হয়, তাহলে এটি একটি অপ্রমাণিত ত্রুটি ফেরত দেয়৷ যাইহোক, যদি প্রদানকারীর অবাঞ্ছিত ট্র্যাকিং সুরক্ষা সক্রিয় থাকে এবং ট্রিগারকারী অবাঞ্ছিত ট্র্যাকিং সুরক্ষা অনুরোধে স্কিপ রিংিং প্রমাণীকরণ পতাকা চালু থাকে, প্রদানকারীর সেই চেকটি এড়িয়ে যাওয়া উচিত। প্রমাণীকরণ ডেটা এখনও অনুসন্ধানকারীর দ্বারা সরবরাহ করা হবে বলে আশা করা হচ্ছে, তবে এটি একটি নির্বিচারে মান সেট করা যেতে পারে।
যখন রিং শুরু হয় বা শেষ হয় তখন ডাটা আইডি 0x05 সহ টেবিল 6 এ নির্দেশিত একটি বিজ্ঞপ্তি পাঠানো হয়। বিজ্ঞপ্তির বিষয়বস্তু নিম্নরূপ সংজ্ঞায়িত করা হয়েছে:
অক্টেট | ডেটা টাইপ | বর্ণনা | মান |
---|---|---|---|
0 | uint8 | বাজানো অবস্থা |
|
1 | uint8 | রিং উপাদান | উপাদানগুলির একটি বিটমাস্ক সক্রিয়ভাবে বাজছে, যেমন অনুরোধে সংজ্ঞায়িত করা হয়েছে। |
2 - 3 | uint16 | সময় শেষ | ডেসিসেকেন্ডে বাজানোর জন্য বাকি সময়। যদি ডিভাইসটি রিং করা বন্ধ করে দেয়, 0x0000 ফেরত দিতে হবে। |
প্রমাণীকরণ বিভাগটি HMAC-SHA256(ring key, protocol major version number || the nonce used to initiate the ringing command || data ID || data length || additional data || 0x01)
রিং বা রিং বন্ধ করার অনুরোধ পাওয়ার সময় ডিভাইসটি ইতিমধ্যেই অনুরোধকৃত রিং অবস্থায় থাকলে, প্রদানকারীকে যথাক্রমে 0x00: শুরু বা 0x04: থামানো (GATT অনুরোধ) সহ একটি রিং বাজানো অবস্থায় একটি বিজ্ঞপ্তি পাঠাতে হবে। এই অনুরোধটি বিদ্যমান রাজ্যের পরামিতিগুলিকে ওভাররাইড করে, যাতে রিং করার সময়কাল বাড়ানো যায়।
যদি প্রদানকারীর একটি ফিজিক্যাল বোতাম থাকে (বা টাচ সেন্স সক্ষম করা থাকে), রিং সক্রিয় থাকা অবস্থায় চাপ দিলে সেই বোতামটি রিংিং ফাংশন বন্ধ করে দেবে।
বীকনের বাজানো অবস্থা পান
বীকনের বাজানো অবস্থা পেতে, অনুসন্ধানকারী বৈশিষ্ট্যের জন্য একটি লেখার অপারেশন সম্পাদন করে, এতে ডেটা আইডি 0x06 সহ টেবিল 4 থেকে একটি অনুরোধ রয়েছে। প্রদানকারী যাচাই করে যে প্রদত্ত এককালীন প্রমাণীকরণ কীটি রিং কী-এর সাথে মেলে৷
যদি প্রদানকারীকে একটি FMDN বীকন হিসাবে প্রবিধান করা না হয় বা যদি যাচাইকরণ ব্যর্থ হয়, প্রদানকারী একটি অপ্রমাণিত ত্রুটি ফেরত দেয়৷
সফল হলে, সরবরাহকারী সারণী 6 থেকে ডেটা আইডি 0x06 সহ একটি প্রতিক্রিয়ার সাথে বিজ্ঞপ্তি দেয়। প্রদানকারী নিম্নরূপ ডেটা সেগমেন্ট তৈরি করে:
অক্টেট | ডেটা টাইপ | বর্ণনা | মান |
---|---|---|---|
0 | uint8 | রিং উপাদান | রিং করার অনুরোধে সংজ্ঞায়িত উপাদানগুলি সক্রিয়ভাবে বাজছে। |
1 - 2 | uint16 | সময় শেষ | ডেসিসেকেন্ডে বাজানোর জন্য বাকি সময়। মনে রাখবেন যে ডিভাইসটি রিং না হলে, 0x0000 ফেরত দেওয়া উচিত। |
প্রমাণীকরণ বিভাগটি HMAC-SHA256 (ring key, protocol major version number || the last nonce read from the characteristic || data ID || data length || additional data || 0x01)
অবাঞ্ছিত ট্র্যাকিং সুরক্ষা মোড
অবাঞ্ছিত ট্র্যাকিং সুরক্ষা মোডের উদ্দেশ্য যে কোনও ক্লায়েন্টকে কোনও সার্ভার যোগাযোগ ছাড়াই আপত্তিজনক ডিভাইসগুলি সনাক্ত করতে দেওয়া। ডিফল্টরূপে, প্রদানকারীকে আইডি রোটেশনে বর্ণিত সমস্ত শনাক্তকারীকে ঘোরানো উচিত। আমার ডিভাইস খুঁজুন পরিষেবাটি আমার ডিভাইস খুঁজুন নেটওয়ার্কের মাধ্যমে একটি অবাঞ্ছিত ট্র্যাকিং সুরক্ষা মোড সক্রিয়করণ অনুরোধ রিলে করতে পারে। এটি করার মাধ্যমে, পরিষেবাটি প্রদানকারীকে অস্থায়ীভাবে একটি নির্দিষ্ট MAC ঠিকানা ব্যবহার করতে বাধ্য করে, যা ক্লায়েন্টদের ডিভাইসটি সনাক্ত করতে এবং ব্যবহারকারীকে সম্ভাব্য অবাঞ্ছিত ট্র্যাকিং সম্পর্কে সতর্ক করতে দেয়।
বীকনের অবাঞ্ছিত ট্র্যাকিং সুরক্ষা মোড সক্রিয় বা নিষ্ক্রিয় করতে, অনুসন্ধানকারী যথাক্রমে ডেটা আইডি 0x07 বা 0x08 সহ টেবিল 5 থেকে একটি অনুরোধ সমন্বিত বৈশিষ্ট্যের জন্য একটি লেখার অপারেশন করে।
অবাঞ্ছিত ট্র্যাকিং সুরক্ষা মোড সক্ষম করার সময়
প্রদানকারী নিম্নরূপ ডেটা সেগমেন্ট তৈরি করে:
অক্টেট | ডেটা টাইপ | বর্ণনা | মান |
---|---|---|---|
0 | uint8 | নিয়ন্ত্রণ পতাকা |
অবাঞ্ছিত ট্র্যাকিং সুরক্ষা মোড নিষ্ক্রিয় না হওয়া পর্যন্ত পতাকাগুলি কার্যকর হয়৷ |
প্রদানকারী যাচাই করে যে প্রদত্ত এককালীন প্রমাণীকরণ কীটি অবাঞ্ছিত ট্র্যাকিং সুরক্ষা কী-এর সাথে মেলে৷ যদি প্রদানকারীকে একটি FMDN বীকন হিসাবে প্রবিধান করা না হয় বা যাচাইকরণ ব্যর্থ হয়, তাহলে এটি একটি অপ্রমাণিত ত্রুটি ফেরত দেয়৷
যখন অবাঞ্ছিত ট্র্যাকিং সুরক্ষা মোড সক্রিয় করা হয়, তখন বীকনের MAC প্রাইভেট অ্যাড্রেস রোটেশন ফ্রিকোয়েন্সি প্রতি 24 ঘন্টায় একবারে হ্রাস করা উচিত। বিজ্ঞাপিত ক্ষণস্থায়ী শনাক্তকারীকে যথারীতি ঘোরানো উচিত। ফ্রেমের ধরনটি 0x41 এ সেট করা উচিত। রাষ্ট্রটি হ্যাশড পতাকা বিভাগেও প্রতিফলিত হয়।
অবাঞ্ছিত ট্র্যাকিং সুরক্ষা মোড নিষ্ক্রিয় করার সময়
প্রদানকারী যাচাই করে যে:
- প্রদত্ত এক-কালীন প্রমাণীকরণ কী অবাঞ্ছিত ট্র্যাকিং সুরক্ষা কী-এর সাথে মেলে।
- হ্যাশ করা ক্ষণস্থায়ী পরিচয় কী বর্তমান ক্ষণস্থায়ী পরিচয় কী-এর সাথে মেলে।
যদি প্রদানকারীকে একটি FMDN বীকন হিসাবে সরবরাহ করা না হয় বা যাচাইকরণ ব্যর্থ হয়, প্রদানকারী একটি অপ্রমাণিত ত্রুটি ফেরত দেয়।
যখন অবাঞ্ছিত ট্র্যাকিং সুরক্ষা মোড নিষ্ক্রিয় করা হয়, তখন বীকনের MAC ঠিকানাটিকে আবার স্বাভাবিক হারে ঘোরানো শুরু করা উচিত, ক্ষণস্থায়ী শনাক্তকারী ঘূর্ণনের সাথে সিঙ্ক্রোনাইজ করা। ফ্রেমের ধরনটি 0x40 এ সেট করা উচিত। রাষ্ট্রটি হ্যাশড পতাকা বিভাগেও প্রতিফলিত হয়।
সফল হলে, সরবরাহকারী সারণী 6 থেকে ডেটা আইডি 0x07 বা 0x08 সহ একটি প্রতিক্রিয়ার সাথে বিজ্ঞপ্তি দেয়।
প্রমাণীকরণ বিভাগটিকে HMAC-SHA256(unwanted tracking protection key, protocol major version number || the last nonce read from the characteristic || data ID || data length || 0x01)
বিজ্ঞাপিত ফ্রেম
প্রভিশন করার পর, প্রোভাইডার প্রতি 2 সেকেন্ডে অন্তত একবার FMDN ফ্রেমের বিজ্ঞাপন দেবেন বলে আশা করা হচ্ছে। যদি ফাস্ট পেয়ার ফ্রেমের বিজ্ঞাপন দেওয়া হয়, তাহলে প্রদানকারীর উচিত নিয়মিত ফাস্ট পেয়ার বিজ্ঞাপনের মধ্যে FMDN ফ্রেমগুলিকে ইন্টারলিভ করা। উদাহরণস্বরূপ, প্রতি দুই সেকেন্ডে, প্রদানকারীর উচিত সাতটি ফাস্ট পেয়ার বিজ্ঞাপন এবং একটি FMDN বিজ্ঞাপন।
FMDN ফ্রেম একটি সর্বজনীন কী বহন করে যা ক্রাউডসোর্সিং নেটওয়ার্কে অবদান রাখে এমন কোনো সমর্থনকারী ক্লায়েন্টের অবস্থান প্রতিবেদন এনক্রিপ্ট করতে ব্যবহৃত হয়। দুই ধরনের উপবৃত্তাকার কার্ভ কী পাওয়া যায়: একটি 160-বিট কী যা লিগ্যাসি BLE 4 ফ্রেমের সাথে মানানসই, অথবা 256-বিট কী যার জন্য বর্ধিত বিজ্ঞাপন ক্ষমতা সহ BLE 5 প্রয়োজন। প্রদানকারীর বাস্তবায়ন নির্ধারণ করে কোন বক্ররেখা ব্যবহার করা হয়।
একটি FMDN ফ্রেম নিম্নরূপ গঠন করা হয়েছে।
অক্টেট | মান | বর্ণনা |
---|---|---|
0 | 0x02 | দৈর্ঘ্য |
1 | 0x01 | ফ্ল্যাগ ডেটা টাইপ মান |
2 | 0x06 | ফ্ল্যাগ ডেটা |
3 | 0x18 বা 0x19 | দৈর্ঘ্য |
4 | 0x16 | পরিষেবা ডেটা ডেটা টাইপ মান |
5 | 0xAA | 16-বিট পরিষেবা UUID |
6 | 0xFE | ... |
7 | 0x40 বা 0x41 | অবাঞ্ছিত ট্র্যাকিং সুরক্ষা মোড ইঙ্গিত সহ FMDN ফ্রেম টাইপ |
8..27 | 20-বাইট ক্ষণস্থায়ী শনাক্তকারী | |
28 | হ্যাশড পতাকা |
সারণি 8: FMDN ফ্রেম একটি 160-বিট বক্ররেখা সমর্থন করে।
সারণি 9 একটি 256-বিট বক্ররেখার জন্য বাইট অফসেট এবং মান দেখায়।
অক্টেট | মান | বর্ণনা |
---|---|---|
0 | 0x02 | দৈর্ঘ্য |
1 | 0x01 | ফ্ল্যাগ ডেটা টাইপ মান |
2 | 0x06 | ফ্ল্যাগ ডেটা |
3 | 0x24 বা 0x25 | দৈর্ঘ্য |
4 | 0x16 | পরিষেবা ডেটা ডেটা টাইপ মান |
5 | 0xAA | 16-বিট পরিষেবা UUID |
6 | 0xFE | ... |
7 | 0x40 বা 0x41 | অবাঞ্ছিত ট্র্যাকিং সুরক্ষা মোড ইঙ্গিত সহ FMDN ফ্রেম টাইপ |
8..39 | 32-বাইট ক্ষণস্থায়ী শনাক্তকারী | |
40 | হ্যাশড পতাকা |
সারণি 9: FMDN ফ্রেম একটি 256-বিট বক্ররেখা সমর্থন করে।
ইফেমেরাল আইডেন্টিফায়ার (EID) গণনা
AES-ECB-256 ক্ষণস্থায়ী পরিচয় কী সহ নিম্নলিখিত ডেটা কাঠামো এনক্রিপ্ট করে একটি র্যান্ডম তৈরি হয়:
অক্টেট | মাঠ | বর্ণনা |
---|---|---|
0 - 10 | প্যাডিং | মান = 0xFF |
11 | কে | ঘূর্ণন সময়ের সূচক |
12 - 15 | TS[0]...TS[3] | বীকন টাইম কাউন্টার, 32-বিট বিগ-এন্ডিয়ান ফর্ম্যাটে। K সর্বনিম্ন বিট সাফ করা হয়. |
16 - 26 | প্যাডিং | মান = 0x00 |
27 | কে | ঘূর্ণন সময়ের সূচক |
28 - 31 | TS[0]...TS[3] | বীকন টাইম কাউন্টার, 32-বিট বিগ-এন্ডিয়ান ফর্ম্যাটে। K সর্বনিম্ন বিট সাফ করা হয়. |
সারণি 10: একটি সিউডোর্যান্ডম সংখ্যার নির্মাণ।
এই গণনার ফলাফল হল একটি 256-বিট সংখ্যা, r'
নির্দেশিত।
বাকি গণনার জন্য, SECP160R1
বা SECP256R1
উপবৃত্তাকার বক্ররেখা ক্রিপ্টোগ্রাফিক অপারেশনের জন্য ব্যবহার করা হয়। SEC 2-এ বক্ররেখার সংজ্ঞা দেখুন: প্রস্তাবিত উপবৃত্তাকার বক্ররেখা ডোমেন পরামিতি , যা পরবর্তী রেফারেন্স Fp
, n
এবং G
সংজ্ঞায়িত করে।
r'
এখন r = r' mod n
গণনা করে সসীম ক্ষেত্রের Fp
এ প্রজেক্ট করা হয়েছে। অবশেষে, গণনা করুন R = r * G
, যা বক্ররেখার একটি বিন্দু যা ব্যবহার করা পাবলিক কীকে উপস্থাপন করে। বীকন Rx
বিজ্ঞাপন দেয়, যা R
এর x
স্থানাঙ্ক, এটির ক্ষণস্থায়ী শনাক্তকারী হিসাবে।
হ্যাশড পতাকা
হ্যাশড পতাকা ক্ষেত্রটি নিম্নরূপ গণনা করা হয় (বিটগুলি সর্বাধিক উল্লেখযোগ্য থেকে কম গুরুত্বপূর্ণ পর্যন্ত উল্লেখ করা হয়):
- বিট 0-4: সংরক্ষিত (শূন্যে সেট)।
- বিট 5-6 নিম্নরূপ ডিভাইসের ব্যাটারি স্তর নির্দেশ করে:
- 00: ব্যাটারি স্তর ইঙ্গিত অসমর্থিত
- 01: সাধারণ ব্যাটারি স্তর
- 10: নিম্ন ব্যাটারি স্তর
- 11: গুরুতরভাবে নিম্ন ব্যাটারি স্তর (শীঘ্রই ব্যাটারি প্রতিস্থাপন প্রয়োজন)
- বীকন অবাঞ্ছিত ট্র্যাকিং সুরক্ষা মোডে থাকলে বিট 7 1 এ সেট করা হয় এবং অন্যথায় 0।
এই বাইটের চূড়ান্ত মান তৈরি করতে, এটিকে SHA256(r)
এর সর্বনিম্ন উল্লেখযোগ্য বাইট সহ xor-ed করা হয়।
লক্ষ্য করুন যে r বক্ররেখার আকারের সাথে সারিবদ্ধ হওয়া উচিত। শূন্যকে সবচেয়ে উল্লেখযোগ্য বিট হিসেবে যোগ করুন যদি এটির উপস্থাপনা 160 বা 256 বিটের থেকে ছোট হয়, অথবা সবচেয়ে গুরুত্বপূর্ণ বিটগুলি ছেঁটে ফেলা উচিত যদি এটির উপস্থাপনা 160 বা 256 বিটের থেকে বড় হয়।
যদি বীকন ব্যাটারি স্তরের ইঙ্গিত সমর্থন না করে এবং অবাঞ্ছিত ট্র্যাকিং সুরক্ষা মোডে না থাকে, তাহলে বিজ্ঞাপন থেকে এই বাইটটিকে সম্পূর্ণরূপে বাদ দেওয়ার অনুমতি দেওয়া হয়৷
EID সহ এনক্রিপশন
একটি বার্তা m
এনক্রিপ্ট করতে, একজন sighter (বীকন থেকে Rx
পড়া) নিম্নলিখিতগুলি করবে:
- EID গণনা বিভাগে সংজ্ঞায়িত
Fp
এ একটি র্যান্ডম সংখ্যাs
চয়ন করুন। - গণনা করুন
S = s * G
-
R = (Rx, Ry)
বক্ররেখা সমীকরণে প্রতিস্থাপন করে এবং সম্ভাব্য ফলাফলের মধ্যে থেকে একটি নির্বিচারেRy
মান বাছাই করে গণনা করুন। - 256-বিট AES কী
k = HKDF-SHA256((s * R)x)
গণনা করুন যেখানে(s * R)x
হল বক্ররেখা গুণনের ফলাফলেরx
স্থানাঙ্ক। লবণ নির্দিষ্ট করা নেই। - বিগ-এন্ডিয়ান বিন্যাসে
URx
এবংLRx
যথাক্রমেRx
এর উপরের এবং নীচের 80-বিট হতে দিন। একইভাবে,S
এর জন্যUSx
এবংLSx
সংজ্ঞায়িত করুন। - গণনা
nonce = LRx || LSx
- গণনা
(m', tag) = AES-EAX-256-ENC(k, nonce, m)
- মালিকের কাছে
(URx, Sx, m', tag)
পাঠান, সম্ভবত একটি অবিশ্বস্ত দূরবর্তী পরিষেবার মাধ্যমে৷
EID দিয়ে এনক্রিপ্ট করা মানগুলির ডিক্রিপশন
মালিকের ক্লায়েন্ট, যা EIK এবং রোটেশন পিরিয়ড এক্সপোনেন্টের দখলে থাকে, নিম্নরূপ বার্তাটি ডিক্রিপ্ট করে:
-
URx
দেওয়া হয়েছে, বীকন টাইম কাউন্টার মান প্রাপ্ত করুন যার উপর ভিত্তি করেURx
। সাম্প্রতিক অতীত এবং নিকট ভবিষ্যতের জন্য বীকন টাইম কাউন্টার মানগুলির জন্য মালিকের ক্লায়েন্ট কম্পিউটিংRx
মান দ্বারা এটি করা যেতে পারে। -
URx
ভিত্তিক বীকন টাইম কাউন্টার মান দেওয়া, EID গণনা বিভাগে সংজ্ঞায়িতr
এর প্রত্যাশিত মান গণনা করুন। -
R = r * G
কম্পিউট করুন এবং sighter দ্বারা প্রদত্তURx
এর মানের সাথে একটি মিল যাচাই করুন। - বক্ররেখা সমীকরণে প্রতিস্থাপনের মাধ্যমে
S = (Sx, Sy)
গণনা করুন এবং সম্ভাব্য ফলাফল থেকে একটি নির্বিচারেSy
মান বেছে নিন। - কম্পিউট
k = HKDF-SHA256((r * S)x)
যেখানে(r * S)x
হল বক্র গুণের ফলাফলেরx
স্থানাঙ্ক। - গণনা
nonce = LRx || LSx
- কম্পিউট
m = AES-EAX-256-DEC(k, nonce, m', tag)
আইডি ঘূর্ণন
একটি সমাধানযোগ্য (RPA) বা অ-মীমাংসাযোগ্য (NRPA) BLE ঠিকানা FMDN ফ্রেমের বিজ্ঞাপনের জন্য ব্যবহার করতে হবে৷ LE অডিও (LEA) ডিভাইসগুলির জন্য RPA প্রয়োজন এবং অন্যান্য ডিভাইসগুলির জন্য সুপারিশ করা হয়, লোকেটার ট্যাগগুলি ব্যতীত যেগুলি বন্ধন ব্যবহার করে না৷
ফাস্ট পেয়ার বিজ্ঞাপন, FMDN বিজ্ঞাপন এবং সংশ্লিষ্ট BLE ঠিকানা(গুলি) একই সময়ে ঘুরতে হবে। ঘূর্ণন গড়ে প্রতি 1024 সেকেন্ডে ঘটতে হবে। যে সুনির্দিষ্ট বিন্দুতে বীকন নতুন শনাক্তকারীর বিজ্ঞাপন দেওয়া শুরু করে সেটি অবশ্যই উইন্ডোর মধ্যে র্যান্ডমাইজ করা উচিত।
ঘূর্ণন সময়কে এলোমেলো করার প্রস্তাবিত পদ্ধতি হল এটিকে পরবর্তী প্রত্যাশিত ঘূর্ণন সময় (যদি কোন র্যান্ডমাইজেশন প্রয়োগ করা না হয়) এবং 1 থেকে 204 সেকেন্ডের পরিসরে একটি ইতিবাচক এলোমেলো সময় ফ্যাক্টর সেট করা।
যখন ডিভাইসটি অবাঞ্ছিত ট্র্যাকিং সুরক্ষা মোডে থাকে, তখন FMDN বিজ্ঞাপনের BLE ঠিকানা ঠিক করা উচিত, কিন্তু FP অ-আবিষ্কারযোগ্য বিজ্ঞাপনের জন্য RPA (যেমন ফাস্ট পেয়ার) ঘুরতে হবে। বিভিন্ন প্রোটোকলের জন্য বিভিন্ন ঠিকানা ব্যবহার করা গ্রহণযোগ্য।
শক্তি ক্ষতি থেকে পুনরুদ্ধার
ক্ষণস্থায়ী শনাক্তকারীর সমাধান করা বিজ্ঞাপনের সময় এটির ঘড়ির মানের সাথে দৃঢ়ভাবে আবদ্ধ থাকে, তাই এটি গুরুত্বপূর্ণ যে প্রদানকারী তার ঘড়ির মান পুনরুদ্ধার করতে পারে যদি একটি পাওয়ার ক্ষতি হয়। এটি সুপারিশ করা হয় যে প্রদানকারী তার বর্তমান ঘড়ির মান দিনে অন্তত একবার অভোলাটাইল মেমরিতে লিখে, এবং বুট করার সময় প্রদানকারী NVM চেক করে দেখেন যে কোনও মান আছে যা থেকে আরম্ভ করা যায় কিনা। ক্ষণস্থায়ী শনাক্তকারীর সমাধানকারীরা যুক্তিসঙ্গত ঘড়ির ড্রিফট এবং এই ধরনের পাওয়ার লস পুনরুদ্ধারের জন্য যথেষ্ট সময় উইন্ডোতে রেজোলিউশন প্রয়োগ করবে।
প্রদানকারীদের এখনও ঘড়ির গতি কমানোর জন্য সমস্ত প্রচেষ্টা করা উচিত, কারণ রেজোলিউশন সময় উইন্ডো সীমিত। কমপক্ষে একটি অতিরিক্ত ঘড়ি সিঙ্ক্রোনাইজেশন পদ্ধতি প্রয়োগ করা উচিত ( অ-আবিষ্কারযোগ্য ফাস্ট পেয়ার ফ্রেমের বিজ্ঞাপন বা বার্তা স্ট্রিম বাস্তবায়ন)।
দ্রুত জোড়া বাস্তবায়ন নির্দেশিকা
এই বিভাগে FMDN সমর্থনকারী প্রদানকারীদের উপর দ্রুত জোড়া বাস্তবায়নের বিশেষ দিকগুলি বর্ণনা করে৷
লোকেটার ট্যাগ নির্দিষ্ট নির্দেশিকা
- যদি প্রদানকারীকে পেয়ার করা হয়, কিন্তু 5 মিনিটের মধ্যে FMDN-এর ব্যবস্থা করা না হয় (অথবা যদি ডিভাইসটি পেয়ার করার সময় একটি OTA আপডেট প্রয়োগ করা হয় কিন্তু FMDN-এর ব্যবস্থা করা না হয়), প্রদানকারীর উচিত তার ফ্যাক্টরি কনফিগারেশনে ফিরে যাওয়া এবং সঞ্চিত অ্যাকাউন্ট কীগুলি সাফ করা উচিত।
- প্রোভাইডার পেয়ার হওয়ার পরে, FMDN প্রভিশন না হওয়া পর্যন্ত বা 5 মিনিট না হওয়া পর্যন্ত এটির MAC ঠিকানা পরিবর্তন করা উচিত নয়।
- ডিভাইস থেকে ক্ষণস্থায়ী পরিচয় কী সাফ করা হলে, ডিভাইসটিকে ফ্যাক্টরি রিসেট করতে হবে এবং সঞ্চিত অ্যাকাউন্ট কীগুলিও সাফ করতে হবে।
- প্রদানকারীর উচিত স্বাভাবিক ব্লুটুথ জোড়ার প্রচেষ্টা প্রত্যাখ্যান করা এবং শুধুমাত্র দ্রুত জোড়া জোড়া গ্রহণ করা।
- সরবরাহকারীকে অবশ্যই এমন একটি ব্যবস্থা অন্তর্ভুক্ত করতে হবে যা ব্যবহারকারীদের ডিভাইসটিকে ফ্যাক্টরি রিসেট না করে সাময়িকভাবে বিজ্ঞাপন বন্ধ করতে দেয় (উদাহরণস্বরূপ, বোতামগুলির সংমিশ্রণ টিপে)।
- পাওয়ার হারানোর পরে, রিড বীকন প্যারামিটারগুলির পরবর্তী আহ্বান না হওয়া পর্যন্ত ডিভাইসটিকে অ-আবিষ্কারযোগ্য ফাস্ট পেয়ার ফ্রেমের বিজ্ঞাপন দেওয়া উচিত৷ এটি সিকারকে ডিভাইসটি সনাক্ত করতে এবং ঘড়িটি সিঙ্ক্রোনাইজ করতে দেয় এমনকি যদি একটি উল্লেখযোগ্য ঘড়ির প্রবাহ ঘটে থাকে।
- অ-আবিষ্কারযোগ্য ফাস্ট পেয়ার ফ্রেমের বিজ্ঞাপন দেওয়ার সময়, UI ইঙ্গিতগুলি সক্ষম করা উচিত নয়৷
- ডিসকভারেবল ফাস্ট পেয়ার ফ্রেমের বিজ্ঞাপন দেওয়া উচিত নয় যখন প্রোভাইডার FMDN-এর জন্য প্রবিধান থাকে।
- প্রদানকারী একটি অপ্রমাণিত পদ্ধতিতে (যেমন নাম বা শনাক্তকারী) কোনো সনাক্তকারী তথ্য তথ্য প্রকাশ করা উচিত নয়।
ক্লাসিক ব্লুটুথ ডিভাইস-নির্দিষ্ট নির্দেশিকা
এই বিভাগে FMDN সমর্থন করে এমন ক্লাসিক ব্লুটুথ ডিভাইসের বিশেষ দিকগুলি বর্ণনা করে৷
ইতিমধ্যে পেয়ার করা ডিভাইসের FMDN বিধান
সিকারের সাথে পেয়ার করার সময় প্রোভাইডার সবসময় FMDN এর জন্য প্রবিধান করা হয় না, কিন্তু তার কিছুক্ষণ পরে। সেই ক্ষেত্রে, প্রদানকারীর কাছে একটি আপ-টু-ডেট BLE MAC ঠিকানা নাও থাকতে পারে যা একটি GATT সংযোগ স্থাপনের জন্য প্রয়োজন। ইতিমধ্যেই যুক্ত থাকাকালীন তার BLE ঠিকানা পাওয়ার জন্য প্রদানকারীকে নিম্নলিখিত উপায়গুলির মধ্যে অন্তত একটিকে সমর্থন করতে হবে:
- প্রদানকারী পর্যায়ক্রমে ফাস্ট পেয়ার অ্যাকাউন্ট ডেটার বিজ্ঞাপন দিতে পারে যা অনুসন্ধানকারীকে একটি BLE স্ক্যানের মাধ্যমে তার BLE ঠিকানা খুঁজে পেতে দেয়।
এই পদ্ধতিটি এমন প্রদানকারীদের জন্য উপযুক্ত যারা বার্তা স্ট্রিম বাস্তবায়ন করে না। - প্রদানকারী ক্লাসিক ব্লুটুথের মাধ্যমে ফাস্ট পেয়ার মেসেজ স্ট্রিমের মাধ্যমে এই ডেটা প্রদান করতে পারে।
এই পদ্ধতির সরবরাহকারীদের স্যুট করে যা ব্লুটুথের ওপরে সিকারের সাথে সংযুক্ত থাকাকালীন দ্রুত জুড়ি ফ্রেমের বিজ্ঞাপন দেয় না।
উভয় পদ্ধতির সমর্থন করা ব্যবহারকারী এফএমডিএন এর জন্য ডিভাইসটি সরবরাহ করতে পারে এমন সম্ভাবনা বাড়িয়ে তোলে।
দ্রুত জোড় বার্তা স্ট্রিম
সরবরাহকারী দ্রুত জুড়ি বার্তা প্রবাহ বাস্তবায়ন করতে পারে এবং এটি ডিভাইস সম্পর্কিত তথ্য সম্পর্কে সন্ধানকারীকে অবহিত করতে এটি ব্যবহার করতে পারে। বার্তা প্রবাহ বাস্তবায়ন এই বিভাগে বর্ণিত কিছু বৈশিষ্ট্য সক্ষম করে।
প্রদানকারীকে প্রতিবার বার্তা স্ট্রিম আরএফসিওএমএম চ্যানেল প্রতিষ্ঠিত হওয়ার পরে ডিভাইস তথ্য বার্তা প্রেরণ করা উচিত।
ফার্মওয়্যার সংস্করণ (ডিভাইস তথ্য কোড 0x09) এবং ট্র্যাকিং ক্ষমতা
যখন কোনও ফার্মওয়্যার আপডেট সরবরাহকারীর কাছে এফএমডিএন সমর্থন যুক্ত করে, তখন কোনও সংযুক্ত সিকার ব্যবহারকারীকে সে সম্পর্কে অবহিত করতে পারে এবং এটি বিধানের প্রস্তাব দিতে পারে। অন্যথায়, এফএমডিএন প্রভিশন শুরু করতে ব্যবহারকারীকে ম্যানুয়ালি ব্লুটুথ ডিভাইস তালিকায় নেভিগেট করতে হবে।
এটির অনুমতি দেওয়ার জন্য, সরবরাহকারীকে ফার্মওয়্যার সংস্করণ সম্পত্তি (কোড 0x09) ব্যবহার করা উচিত একটি স্ট্রিং মান রিপোর্ট করতে যা ফার্মওয়্যার সংস্করণ উপস্থাপন করে। এছাড়াও, সরবরাহকারীর প্রোটোকলটি সমর্থন করা উচিত যা ফার্মওয়্যার আপডেটের কারণে সিকারকে সক্ষমতা পরিবর্তনগুলি সম্পর্কে জানতে দেয়।
অক্টেট | ডেটা টাইপ | বর্ণনা | মান |
---|---|---|---|
0 | uint8 | ডিভাইস তথ্য ইভেন্ট | 0x03 |
1 | uint8 | ফার্মওয়্যার সংস্করণ | 0x09 |
2 - 3 | uint16 | অতিরিক্ত ডেটা দৈর্ঘ্য | পরিবর্তিত হয় |
var | বাইট অ্যারে | সংস্করণ স্ট্রিং | পরিবর্তিত হয় |
সারণী 11: ডিভাইস তথ্য ইভেন্ট: আপডেট ফার্মওয়্যার সংস্করণ।
একটি সক্ষমতা আপডেটের অনুরোধ (0x0601) পাওয়ার পরে, যদি সরবরাহকারী এফএমডিএন ট্র্যাকিংয়ের জন্য সমর্থন সক্ষম করে থাকে তবে এটি সারণী 12 -এ প্রদর্শিত হিসাবে প্রতিক্রিয়া জানাতে হবে।
অক্টেট | ডেটা টাইপ | বর্ণনা | মান |
---|---|---|---|
0 | uint8 | ডিভাইস সক্ষমতা সিঙ্ক ইভেন্ট | 0x06 |
1 | uint8 | এফএমডিএন ট্র্যাকিং | 0x03 |
2 - 3 | uint16 | অতিরিক্ত ডেটা দৈর্ঘ্য | 0x0007 |
4 | uint8 | এফএমডিএন প্রভিশনিং রাষ্ট্র | 0x00 যদি অপ্রমাণিত হয়; 0x01 যদি কোনও অ্যাকাউন্ট দ্বারা বিধান করা হয় |
5 - 10 | বাইট অ্যারে | ডিভাইসের বর্তমান বিএল ম্যাক ঠিকানা | পরিবর্তিত হয় |
সারণী 12: ডিভাইস সক্ষমতা সিঙ্ক ইভেন্ট: ট্র্যাকিং ক্ষমতা যুক্ত করা হয়েছে।
বর্তমান সাময়িক শনাক্তকারী (ডিভাইস তথ্য কোড 0x0 বি)
সরবরাহকারী বর্তমান ইড এবং ঘড়ির মানটি প্রতিবেদন করতে বর্তমান ইফেমেরাল আইডেন্টিফায়ার (কোড 0x0 বি) ব্যবহার করতে পারেন যখন সরবরাহকারী এফএমডিএন -এর জন্য বিধান করা হয়, একটি ঘড়ির ড্রিফ্টের ক্ষেত্রে সিকারকে সিঙ্ক করার জন্য (উদাহরণস্বরূপ, ড্রেনড ব্যাটারির কারণে)। অন্যথায়, সিকার এই উদ্দেশ্যে আরও ব্যয়বহুল এবং কম নির্ভরযোগ্য সংযোগ শুরু করে।
অক্টেট | ডেটা টাইপ | বর্ণনা | মান |
---|---|---|---|
0 | uint8 | ডিভাইস তথ্য ইভেন্ট | 0x03 |
1 | uint8 | বর্তমান সাময়িক শনাক্তকারী | 0x0B |
2 - 3 | uint16 | অতিরিক্ত ডেটা দৈর্ঘ্য | 0x0018 বা 0x0024 |
4 - 7 | বাইট অ্যারে | ঘড়ির মান | উদাহরণ: 0x13F9EA80 |
8 - 19 বা 31 | বাইট অ্যারে | বর্তমান Eid দ | উদাহরণ: 0x112233445556677889900112233445556677889900 |
সারণী 13: ডিভাইস তথ্য ইভেন্ট: ঘড়ি সিঙ্ক।
ফ্যাক্টরি রিসেট
কারখানার পুনরায় সেট করে এমন ডিভাইসগুলির জন্য: যদি কোনও কারখানার পুনরায় সেট করা হয় তবে সরবরাহকারীকে অবশ্যই বীকনিং বন্ধ করতে হবে এবং সাময়িক পরিচয় কী এবং মালিকের অ্যাকাউন্ট কী সহ সমস্ত সঞ্চিত অ্যাকাউন্ট কীগুলি মুছতে হবে।
কারখানার পুনরায় সেট করার পরে (ম্যানুয়াল বা প্রোগ্রাম্যাটিক হয়), ব্যবহারকারী ডিভাইসটি মুছে ফেলার পরে অবিলম্বে জুটি প্রবাহটি শুরু করতে বাধা দেওয়ার জন্য সরবরাহকারীর দ্রুত জোড়ের বিজ্ঞাপন শুরু করা উচিত নয়।
অযাচিত ট্র্যাকিং প্রতিরোধ
প্রত্যয়িত এফএমডিএন ডিভাইসগুলি অবশ্যই অযাচিত অবস্থান ট্র্যাকার (ডিউএলটি) সনাক্ত করার জন্য ক্রস-প্ল্যাটফর্ম স্পেসিফিকেশনের বাস্তবায়ন সংস্করণে প্রয়োজনীয়তাগুলি পূরণ করতে হবে।
FMDN এর জন্য নির্দিষ্ট প্রাসঙ্গিক নির্দেশিকা ডল্ট স্পেকের সাথে অনুগত হতে:
- যে কোনও এফএমডিএন সামঞ্জস্যপূর্ণ ডিভাইস অবশ্যই নিকটস্থ ডিভাইস কনসোলে নিবন্ধিত হতে হবে এবং "আমার ডিভাইসটি সন্ধান করুন" সক্ষমতা সক্রিয় করতে হবে।
- ডিভাইসটি অবশ্যই আনুষঙ্গিক তথ্য অপারেশন এবং অ-মালিক নিয়ন্ত্রণগুলি সহ ডিউএলটি স্পেসের বাস্তবায়ন সংস্করণে সংজ্ঞায়িত আনুষঙ্গিক অ-মালিক পরিষেবা এবং বৈশিষ্ট্যগুলি প্রয়োগ করতে হবে।
- ব্যাকওয়ার্ড সামঞ্জস্যতার সময়কালে, ডিউল্ট স্পেসে সংজ্ঞায়িত হিসাবে, এই নথিতে সংজ্ঞায়িত হিসাবে বিজ্ঞাপনিত ফ্রেমে কোনও পরিবর্তন নেই।
- "অবাঞ্ছিত ট্র্যাকিং সুরক্ষা মোড" এই নথিতে সংজ্ঞায়িত "পৃথক রাষ্ট্র" এর মানচিত্রে ডিউল্ট স্পেক দ্বারা সংজ্ঞায়িত করা হয়েছে।
- আনুষঙ্গিক তথ্য ওপকোডগুলি বাস্তবায়নের জন্য গাইডলাইনস:
- Get_product_data 8-বাইটের প্রয়োজনীয়তার সাথে ফিট করার জন্য কনসোল দ্বারা সরবরাহিত মডেল আইডিটি ফিরিয়ে দেওয়া উচিত। For example, model ID 0xFFFFFF is returned as 0x0000000000FFFFFF.
- Get_manufacter_name এবং get_model_name কনসোলে প্রদত্ত মানগুলির সাথে মেলে।
- Get_accessory_category জেনেরিক "লোকেশন ট্র্যাকার" মানটি ফেরত দিতে পারে যদি অন্য কোনও বিভাগের চেয়ে ভাল ডিভাইসের ধরণটি ফিট করে না।
- Get_accessory_capabilitics অবশ্যই বেজে ওঠার পাশাপাশি বিএল সনাক্তকারী অনুসন্ধানের জন্য সমর্থনটি নির্দেশ করতে হবে।
- Get_network_id গুগলের শনাক্তকারী (0x02) ফিরিয়ে দেওয়া উচিত।
- Get_identifier opcode বাস্তবায়নের জন্য গাইডলাইনস:
- অপারেশনটি কেবল 'আইডেন্টিফিকেশন' মোডটি সক্রিয় করার পরে 5 মিনিটের জন্য একটি বৈধ প্রতিক্রিয়া ফিরিয়ে দেওয়া উচিত, যার জন্য বোতাম প্রেসগুলির সংমিশ্রণ প্রয়োজন। একটি ভিজ্যুয়াল বা অডিও সিগন্যাল ব্যবহারকারীকে নির্দেশ করতে হবে যে সরবরাহকারী সেই মোডে প্রবেশ করেছে। সেই মোডটি সক্রিয় করার জন্য মডেল-নির্দিষ্ট নির্দেশাবলী অবশ্যই গুগলকে শংসাপত্রের প্রয়োজনীয়তা হিসাবে এবং নির্দেশাবলীতে কোনও আপডেট বা পরিবর্তনের কমপক্ষে 10 দিন আগে সরবরাহ করতে হবে।
- প্রতিক্রিয়াটি হিসাবে নির্মিত হয়েছে: বর্তমান সাময়িক শনাক্তকারীর প্রথম 10 বাইট, তারপরে
HMAC-SHA256(recovery key, the truncated current ephemeral identifier)
- সাউন্ড_স্টার্ট ওপকোড বাস্তবায়নের জন্য গাইডলাইনস:
- কমান্ডটি সমস্ত উপলভ্য উপাদানগুলিতে বাজানো ট্রিগার করা উচিত।
- সর্বাধিক সমর্থিত ভলিউম ব্যবহার করা উচিত।
- বেজে ওঠার জন্য প্রস্তাবিত সময়কাল 12 সেকেন্ড।
- লোকেটার ট্যাগগুলিতে অবশ্যই এমন একটি প্রক্রিয়া অন্তর্ভুক্ত থাকতে হবে যা ব্যবহারকারীদের অস্থায়ীভাবে ডিভাইসটি পুনরায় সেট না করে বিজ্ঞাপন বন্ধ করতে দেয় (উদাহরণস্বরূপ, বোতামগুলির সংমিশ্রণ টিপুন)।
- অক্ষম নির্দেশাবলী অবশ্যই একটি সর্বজনীনভাবে উপলভ্য ইউআরএলে নথিভুক্ত করা উচিত এবং গুগলকে শংসাপত্রের প্রয়োজনীয়তা হিসাবে এবং নির্দেশাবলীতে কোনও আপডেট বা পরিবর্তনের কমপক্ষে 10 দিন আগে সরবরাহ করতে হবে।
- ইউআরএল স্থানীয়করণকে সমর্থন করা উচিত। ক্লায়েন্টের উপর নির্ভর করে, ভাষাটি ক্যোয়ারী প্যারাম ("এইচএল = এন") হিসাবে সরবরাহ করা হবে বা "গ্রহণ-ভাষা" এইচটিটিপি শিরোনাম ব্যবহার করা হবে।
স্যুইচেবল প্রোটোকল নির্দেশিকা
- একবারে কেবল একটি প্রোটোকল ব্যবহার করা উচিত। নিশ্চিত করুন যে একাধিক নেটওয়ার্ক একই সাথে ডিভাইসে কাজ করতে পারে না। বিভিন্ন প্রোটোকলের মধ্যে সংবেদনশীল ব্যবহারকারীর ডেটা কমিংিং নেই তা নিশ্চিত করার জন্য এই প্রয়োজনীয়তা প্রয়োজন।
- এটি ডিভাইসে একটি হার্ড রিসেট ওয়ার্কফ্লো অন্তর্ভুক্ত করার পরামর্শ দেওয়া হয় যা কোনও ব্যবহারকারীকে আলাদা নেটওয়ার্কের সাথে একটি ডিভাইস পুনরায় সেটআপ করতে দেয়।
- কোনও নেটওয়ার্কে কোনও ডিভাইস আপডেট করার প্রক্রিয়াটি নেটওয়ার্কগুলির মধ্যে ব্যবহারকারী বান্ধব এবং ন্যায়সঙ্গত হওয়া উচিত। কোনও ব্যবহারকারী অবশ্যই কোনও নেটওয়ার্ককে পছন্দ না করে কোন নেটওয়ার্ক ব্যবহার করতে চান তা চয়ন করতে সক্ষম হতে হবে। এই প্রবাহটি গুগল দল দ্বারা অনুমোদিত হওয়া দরকার।
ফার্মওয়্যার আপডেট
ওটিএ আপডেটের প্রক্রিয়া এবং বিতরণ তাদের নিজস্ব মোবাইল বা ওয়েব অ্যাপ্লিকেশন কর্মপ্রবাহ ব্যবহার করে অংশীদার দ্বারা পরিচালনা করা উচিত।
সামঞ্জস্য
আমার ডিভাইস নেটওয়ার্কের সন্ধান করুন অবস্থান পরিষেবা এবং ব্লুটুথ চালু করার জন্য। সেল পরিষেবা বা ইন্টারনেট সংযোগ প্রয়োজন। অ্যান্ড্রয়েড 9+ এবং বয়স-যোগ্য ব্যবহারকারীদের জন্য নির্দিষ্ট কিছু দেশে কাজ করে।
চেঞ্জলগ
এফএমডিএন সংস্করণ | তারিখ | মন্তব্য করুন |
---|---|---|
v1 | প্রাথমিক অ্যাক্সেসের জন্য এফএমডিএন স্পেকের প্রাথমিক প্রকাশ। | |
v1.1 | ফেব্রুয়ারী 2023 |
|
v1.2 | এপ্রিল 2023 |
|
v1.3 | ডিসেম্বর 2023 |
|