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 ঠিকানা খুঁজে পেতে দেয়।
এই পদ্ধতিটি এমন প্রদানকারীদের জন্য উপযুক্ত যারা বার্তা স্ট্রিম বাস্তবায়ন করে না। - প্রদানকারী ক্লাসিক ব্লুটুথের মাধ্যমে ফাস্ট পেয়ার মেসেজ স্ট্রিমের মাধ্যমে এই ডেটা প্রদান করতে পারে।
ব্লুটুথের মাধ্যমে সিকারের সাথে কানেক্ট থাকা অবস্থায় ফাস্ট পেয়ার ফ্রেমের বিজ্ঞাপন দেয় না এমন প্রোভাইডারদের জন্য এই পদ্ধতিটি উপযুক্ত।
উভয় পন্থা সমর্থন করলে ব্যবহারকারী FMDN-এর জন্য ডিভাইসের ব্যবস্থা করতে পারে এমন সম্ভাবনা বাড়িয়ে দেয়।
দ্রুত জোড়া বার্তা প্রবাহ
প্রদানকারী দ্রুত জোড়া বার্তা স্ট্রীম বাস্তবায়ন করতে পারে এবং ডিভাইসের তথ্য সম্পর্কে অনুসন্ধানকারীকে অবহিত করতে এটি ব্যবহার করতে পারে। বার্তা স্ট্রীম বাস্তবায়ন এই বিভাগে বর্ণিত নির্দিষ্ট বৈশিষ্ট্যগুলিকে সক্ষম করে৷
প্রতিবার মেসেজ স্ট্রীম RFCOMM চ্যানেল প্রতিষ্ঠিত হলে প্রদানকারীকে একবার ডিভাইস তথ্য বার্তা পাঠাতে হবে।
ফার্মওয়্যার সংস্করণ (ডিভাইস তথ্য কোড 0x09) এবং ট্র্যাকিং ক্ষমতা
যখন একটি ফার্মওয়্যার আপডেট প্রদানকারীকে FMDN সমর্থন যোগ করে, তখন একজন সংযুক্ত অনুসন্ধানকারী ব্যবহারকারীকে এটি সম্পর্কে অবহিত করতে পারে এবং এটির ব্যবস্থা করার প্রস্তাব দিতে পারে। অন্যথায়, FMDN প্রভিশনিং শুরু করতে ব্যবহারকারীকে ম্যানুয়ালি ব্লুটুথ ডিভাইসের তালিকায় নেভিগেট করতে হবে।
এটির অনুমতি দেওয়ার জন্য, প্রদানকারীকে ফার্মওয়্যার সংস্করণের প্রতিনিধিত্ব করে এমন একটি স্ট্রিং মান রিপোর্ট করতে ফার্মওয়্যার সংস্করণ বৈশিষ্ট্য (কোড 0x09) ব্যবহার করা উচিত। উপরন্তু, প্রদানকারীর প্রোটোকল সমর্থন করা উচিত যা অনুসন্ধানকারীকে ফার্মওয়্যার আপডেটের কারণে সক্ষমতার পরিবর্তন সম্পর্কে জানতে দেয়।
অক্টেট | ডেটা টাইপ | বর্ণনা | মান |
---|---|---|---|
0 | uint8 | ডিভাইস তথ্য ইভেন্ট | 0x03 |
1 | uint8 | ফার্মওয়্যার সংস্করণ | 0x09 |
2 - 3 | uint16 | অতিরিক্ত ডেটা দৈর্ঘ্য | পরিবর্তিত হয় |
var | বাইট অ্যারে | সংস্করণ স্ট্রিং | পরিবর্তিত হয় |
সারণী 11: ডিভাইস তথ্য ইভেন্ট: আপডেট করা ফার্মওয়্যার সংস্করণ।
একটি সক্ষমতা আপডেটের অনুরোধ (0x0601) পাওয়ার পরে, যদি প্রদানকারী FMDN ট্র্যাকিংয়ের জন্য সমর্থন সক্ষম করে থাকে, তাহলে সারণি 12-এ দেখানো হিসাবে এটির প্রতিক্রিয়া জানানো উচিত।
অক্টেট | ডেটা টাইপ | বর্ণনা | মান |
---|---|---|---|
0 | uint8 | ডিভাইস ক্ষমতা সিঙ্ক ইভেন্ট | 0x06 |
1 | uint8 | FMDN ট্র্যাকিং | 0x03 |
2 - 3 | uint16 | অতিরিক্ত ডেটা দৈর্ঘ্য | 0x0007 |
4 | uint8 | FMDN প্রভিশনিং স্টেট | 0x00 যদি ব্যবস্থা না থাকে; 0x01 যদি কোনো অ্যাকাউন্ট দ্বারা প্রবিধান করা হয় |
5 - 10 | বাইট অ্যারে | ডিভাইসের বর্তমান BLE MAC ঠিকানা | পরিবর্তিত হয় |
সারণী 12: ডিভাইস ক্ষমতা সিঙ্ক ইভেন্ট: ট্র্যাকিং ক্ষমতা যোগ করা হয়েছে।
বর্তমান ক্ষণস্থায়ী শনাক্তকারী (ডিভাইস তথ্য কোড 0x0B)
ক্লক ড্রিফটের (উদাহরণস্বরূপ, ব্যাটারির নিষ্কাশনের কারণে) ক্লক ড্রিফ্টের ক্ষেত্রে সিকারকে সিঙ্ক করার জন্য প্রদানকারী বর্তমান ইআইডি এবং ঘড়ির মান রিপোর্ট করার জন্য বর্তমান ক্ষণস্থায়ী শনাক্তকারী (কোড 0x0B) ব্যবহার করতে পারে। অন্যথায়, অনুসন্ধানকারী এই উদ্দেশ্যে আরও ব্যয়বহুল এবং কম নির্ভরযোগ্য সংযোগ শুরু করে।
অক্টেট | ডেটা টাইপ | বর্ণনা | মান |
---|---|---|---|
0 | uint8 | ডিভাইস তথ্য ইভেন্ট | 0x03 |
1 | uint8 | বর্তমান ক্ষণস্থায়ী শনাক্তকারী | 0x0B |
2 - 3 | uint16 | অতিরিক্ত ডেটা দৈর্ঘ্য | 0x0018 বা 0x0024 |
4 - 7 | বাইট অ্যারে | ঘড়ির মান | উদাহরণ: 0x13F9EA80 |
8 - 19 বা 31 | বাইট অ্যারে | বর্তমান ইআইডি | উদাহরণ: 0x112233445566778899001122344556677889900 |
সারণী 13: ডিভাইস তথ্য ইভেন্ট: ঘড়ি সিঙ্ক।
ফ্যাক্টরি রিসেট
ফ্যাক্টরি রিসেট সমর্থন করে এমন ডিভাইসগুলির জন্য: যদি একটি ফ্যাক্টরি রিসেট করা হয়, প্রদানকারীকে অবশ্যই বীকনিং বন্ধ করতে হবে এবং মালিকের অ্যাকাউন্ট কী সহ ক্ষণস্থায়ী পরিচয় কী এবং সমস্ত সঞ্চিত অ্যাকাউন্ট কীগুলি মুছে ফেলতে হবে৷
ফ্যাক্টরি রিসেট করার পরে (হয় ম্যানুয়াল বা প্রোগ্রাম্যাটিক), প্রদানকারীর অবিলম্বে ফাস্ট পেয়ারের বিজ্ঞাপন দেওয়া শুরু করা উচিত নয়, যাতে ব্যবহারকারী ডিভাইসটি মুছে ফেলার সাথে সাথে পেয়ারিং ফ্লো শুরু না হয়।
অবাঞ্ছিত ট্র্যাকিং প্রতিরোধ
প্রত্যয়িত FMDN ডিভাইসগুলিকে অবশ্যই অবাঞ্ছিত অবস্থান ট্র্যাকার (DULT) সনাক্ত করার জন্য ক্রস-প্ল্যাটফর্ম স্পেসিফিকেশনের বাস্তবায়ন সংস্করণের প্রয়োজনীয়তা পূরণ করতে হবে।
DULT স্পেকের সাথে সঙ্গতিপূর্ণ হতে FMDN-এর জন্য নির্দিষ্ট প্রাসঙ্গিক নির্দেশিকা:
- যেকোন FMDN সামঞ্জস্যপূর্ণ ডিভাইস অবশ্যই নিকটবর্তী ডিভাইস কনসোলে নিবন্ধিত হতে হবে এবং "আমার ডিভাইস খুঁজুন" সক্ষমতা সক্রিয় থাকতে হবে।
- ডিভাইসটিকে অবশ্যই আনুষঙ্গিক তথ্য ক্রিয়াকলাপ এবং অ-মালিক নিয়ন্ত্রণ সহ DULT স্পেকের বাস্তবায়ন সংস্করণে সংজ্ঞায়িত আনুষঙ্গিক নন-ওনার পরিষেবা এবং বৈশিষ্ট্য প্রয়োগ করতে হবে।
- পিছিয়ে থাকা সামঞ্জস্যের সময়কালে, যেমন DULT স্পেকে সংজ্ঞায়িত করা হয়েছে, এই নথিতে সংজ্ঞায়িত বিজ্ঞাপনের ফ্রেমে কোনো পরিবর্তন নেই।
- এই নথিতে সংজ্ঞায়িত "অবাঞ্ছিত ট্র্যাকিং সুরক্ষা মোড" DULT স্পেস দ্বারা সংজ্ঞায়িত "বিচ্ছিন্ন অবস্থা"-তে মানচিত্র করে৷
- আনুষঙ্গিক তথ্য অপকোড বাস্তবায়নের জন্য নির্দেশিকা:
- Get_Product_Data কে কনসোল দ্বারা প্রদত্ত মডেল আইডিটি ফেরত দেওয়া উচিত, 8-বাইটের প্রয়োজনীয়তার জন্য শূন্য প্যাড করা। উদাহরণস্বরূপ, মডেল আইডি 0xFFFFFF 0x0000000000FFFFFF হিসাবে ফেরত দেওয়া হয়।
- Get_Manufacturer_Name এবং Get_Model_Name কনসোলে প্রদত্ত মানগুলির সাথে মেলে।
- Get_Accessory_Category জেনেরিক "অবস্থান ট্র্যাকার" মান ফেরত দিতে পারে যদি অন্য কোনো বিভাগ ডিভাইসের ধরনের সাথে ভালোভাবে ফিট না করে।
- Get_Accessory_Capabilities রিং বাজানোর পাশাপাশি BLE আইডেন্টিফায়ার লুকআপের জন্য সমর্থন নির্দেশ করতে হবে।
- Get_Network_ID Google এর শনাক্তকারী (0x02) ফেরত দিতে হবে।
- Get_Identifier opcode বাস্তবায়নের জন্য নির্দেশিকা:
- ব্যবহারকারীর 'শনাক্তকরণ' মোড সক্রিয় করার পরে অপারেশনটি শুধুমাত্র 5 মিনিটের জন্য একটি বৈধ প্রতিক্রিয়া ফেরত দেবে, যার জন্য বোতাম টিপের সংমিশ্রণ প্রয়োজন। একটি ভিজ্যুয়াল বা অডিও সিগন্যাল ব্যবহারকারীকে নির্দেশ করবে যে প্রদানকারী সেই মোডে প্রবেশ করেছে। সেই মোড সক্রিয় করার জন্য মডেল-নির্দিষ্ট নির্দেশাবলী অবশ্যই Google-কে সার্টিফিকেশনের প্রয়োজনীয়তা হিসেবে প্রদান করতে হবে এবং নির্দেশাবলীর যেকোনো আপডেট বা পরিবর্তনের কমপক্ষে 10 দিন আগে।
- প্রতিক্রিয়াটি এইভাবে তৈরি করা হয়েছে: বর্তমান ক্ষণস্থায়ী শনাক্তকারীর প্রথম 10 বাইট, তারপরে
HMAC-SHA256(recovery key, the truncated current ephemeral identifier)
।
- NFC এর উপর শনাক্তকারী বাস্তবায়নের জন্য নির্দেশিকা:
- URL হিসেবে,
find-my.googleapis.com/lookup
ব্যবহার করুন। -
e
প্যারামিটার হিসাবে, Get_Identifier , হেক্স এনকোডের জন্য তৈরি করা একই প্রতিক্রিয়া ব্যবহার করুন। -
pid
প্যারামিটার হিসাবে, Get_Product_Data , হেক্স এনকোডের জন্য তৈরি করা একই প্রতিক্রিয়া ব্যবহার করুন।
- URL হিসেবে,
- Sound_Start opcode বাস্তবায়নের জন্য নির্দেশিকা:
- কমান্ডটি সমস্ত উপলব্ধ উপাদানগুলিতে রিং ট্রিগার করা উচিত।
- সর্বাধিক সমর্থিত ভলিউম ব্যবহার করা উচিত।
- রিং বাজানোর জন্য প্রস্তাবিত সময়কাল হল 12 সেকেন্ড।
- লোকেটার ট্যাগগুলিকে অবশ্যই এমন একটি প্রক্রিয়া অন্তর্ভুক্ত করতে হবে যা ব্যবহারকারীদের ডিভাইসটিকে ফ্যাক্টরি রিসেট না করেই সাময়িকভাবে বিজ্ঞাপন বন্ধ করতে দেয় (উদাহরণস্বরূপ, বোতামগুলির সংমিশ্রণ টিপে)।
- অক্ষম করার নির্দেশাবলী অবশ্যই একটি সর্বজনীনভাবে উপলব্ধ URL-এ নথিভুক্ত করতে হবে এবং সার্টিফিকেশনের প্রয়োজন হিসাবে Google-কে প্রদান করতে হবে এবং নির্দেশাবলীর যেকোনো আপডেট বা পরিবর্তনের কমপক্ষে 10 দিন আগে।
- URL স্থানীয়করণ সমর্থন করা উচিত. ক্লায়েন্টের উপর নির্ভর করে, ভাষাটি একটি কোয়েরি প্যারাম ("hl=en") হিসাবে বা "স্বীকার-ভাষা" HTTP শিরোনাম ব্যবহার করে প্রদান করা হবে।
পরিবর্তনযোগ্য প্রোটোকল নির্দেশিকা
- একবারে শুধুমাত্র একটি প্রোটোকল ব্যবহার করা উচিত। নিশ্চিত করুন যে ডিভাইসে একসাথে একাধিক নেটওয়ার্ক কাজ করতে পারে না। বিভিন্ন প্রোটোকলের মধ্যে সংবেদনশীল ব্যবহারকারীর ডেটার কোনো মিল নেই তা নিশ্চিত করার জন্য এই প্রয়োজনীয়তা প্রয়োজন।
- ডিভাইসটিতে একটি হার্ড রিসেট ওয়ার্কফ্লো অন্তর্ভুক্ত করার পরামর্শ দেওয়া হয় যা ব্যবহারকারীকে একটি ভিন্ন নেটওয়ার্কের সাথে একটি ডিভাইস পুনরায় সেটআপ করতে দেয়৷
- একটি নেটওয়ার্কে একটি ডিভাইস আপডেট করার প্রক্রিয়াটি ব্যবহারকারী বান্ধব এবং নেটওয়ার্কগুলির মধ্যে ন্যায়সঙ্গত হওয়া উচিত। একজন ব্যবহারকারীকে অবশ্যই কোন একটি নেটওয়ার্ককে অগ্রাধিকার না দিয়ে তারা কোন নেটওয়ার্ক ব্যবহার করতে চান তা চয়ন করতে সক্ষম হতে হবে৷ এই প্রবাহটি Google টিমের দ্বারা অনুমোদিত হওয়া প্রয়োজন৷
ফার্মওয়্যার আপডেট
OTA আপডেটের প্রক্রিয়া এবং বিতরণ অংশীদারদের তাদের নিজস্ব মোবাইল বা ওয়েব অ্যাপ ওয়ার্কফ্লো ব্যবহার করে পরিচালনা করা উচিত।
সামঞ্জস্য
আমার ডিভাইস খুঁজুন নেটওয়ার্কের জন্য অবস্থান পরিষেবা এবং ব্লুটুথ চালু করা প্রয়োজন। সেল সার্ভিস বা ইন্টারনেট সংযোগ প্রয়োজন। Android 9+ এবং নির্দিষ্ট দেশে বয়স-যোগ্য ব্যবহারকারীদের জন্য কাজ করে।
চেঞ্জলগ
FMDN সংস্করণ | তারিখ | মন্তব্য করুন |
---|---|---|
v1 | প্রারম্ভিক অ্যাক্সেসের জন্য FMDN স্পেকের প্রাথমিক প্রকাশ। | |
v1.1 | ফেব্রুয়ারী 2023 |
|
v1.2 | এপ্রিল 2023 |
|
v1.3 | ডিসেম্বর 2023 |
|
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 ঠিকানা খুঁজে পেতে দেয়।
এই পদ্ধতিটি এমন প্রদানকারীদের জন্য উপযুক্ত যারা বার্তা স্ট্রিম বাস্তবায়ন করে না। - প্রদানকারী ক্লাসিক ব্লুটুথের মাধ্যমে ফাস্ট পেয়ার মেসেজ স্ট্রিমের মাধ্যমে এই ডেটা প্রদান করতে পারে।
ব্লুটুথের মাধ্যমে সিকারের সাথে কানেক্ট থাকা অবস্থায় ফাস্ট পেয়ার ফ্রেমের বিজ্ঞাপন দেয় না এমন প্রোভাইডারদের জন্য এই পদ্ধতিটি উপযুক্ত।
উভয় পন্থা সমর্থন করলে ব্যবহারকারী FMDN-এর জন্য ডিভাইসের ব্যবস্থা করতে পারে এমন সম্ভাবনা বাড়িয়ে দেয়।
দ্রুত জোড়া বার্তা প্রবাহ
প্রদানকারী দ্রুত জোড়া বার্তা স্ট্রীম বাস্তবায়ন করতে পারে এবং ডিভাইসের তথ্য সম্পর্কে অনুসন্ধানকারীকে অবহিত করতে এটি ব্যবহার করতে পারে। বার্তা স্ট্রীম বাস্তবায়ন এই বিভাগে বর্ণিত নির্দিষ্ট বৈশিষ্ট্যগুলিকে সক্ষম করে৷
প্রতিবার মেসেজ স্ট্রীম RFCOMM চ্যানেল প্রতিষ্ঠিত হলে প্রদানকারীকে একবার ডিভাইস তথ্য বার্তা পাঠাতে হবে।
ফার্মওয়্যার সংস্করণ (ডিভাইস তথ্য কোড 0x09) এবং ট্র্যাকিং ক্ষমতা
যখন একটি ফার্মওয়্যার আপডেট প্রদানকারীকে FMDN সমর্থন যোগ করে, তখন একজন সংযুক্ত অনুসন্ধানকারী ব্যবহারকারীকে এটি সম্পর্কে অবহিত করতে পারে এবং এটির ব্যবস্থা করার প্রস্তাব দিতে পারে। অন্যথায়, FMDN প্রভিশনিং শুরু করতে ব্যবহারকারীকে ম্যানুয়ালি ব্লুটুথ ডিভাইসের তালিকায় নেভিগেট করতে হবে।
এটির অনুমতি দেওয়ার জন্য, প্রদানকারীকে ফার্মওয়্যার সংস্করণের প্রতিনিধিত্ব করে এমন একটি স্ট্রিং মান রিপোর্ট করতে ফার্মওয়্যার সংস্করণ বৈশিষ্ট্য (কোড 0x09) ব্যবহার করা উচিত। উপরন্তু, প্রদানকারীর প্রোটোকল সমর্থন করা উচিত যা অনুসন্ধানকারীকে ফার্মওয়্যার আপডেটের কারণে সক্ষমতার পরিবর্তন সম্পর্কে জানতে দেয়।
অক্টেট | ডেটা টাইপ | বর্ণনা | মান |
---|---|---|---|
0 | uint8 | ডিভাইস তথ্য ইভেন্ট | 0x03 |
1 | uint8 | ফার্মওয়্যার সংস্করণ | 0x09 |
2 - 3 | uint16 | অতিরিক্ত ডেটা দৈর্ঘ্য | পরিবর্তিত হয় |
var | বাইট অ্যারে | সংস্করণ স্ট্রিং | পরিবর্তিত হয় |
সারণী 11: ডিভাইস তথ্য ইভেন্ট: আপডেট করা ফার্মওয়্যার সংস্করণ।
একটি সক্ষমতা আপডেটের অনুরোধ (0x0601) পাওয়ার পরে, যদি প্রদানকারী FMDN ট্র্যাকিংয়ের জন্য সমর্থন সক্ষম করে থাকে, তাহলে সারণি 12-এ দেখানো হিসাবে এটির প্রতিক্রিয়া জানানো উচিত।
অক্টেট | ডেটা টাইপ | বর্ণনা | মান |
---|---|---|---|
0 | uint8 | ডিভাইস ক্ষমতা সিঙ্ক ইভেন্ট | 0x06 |
1 | uint8 | FMDN ট্র্যাকিং | 0x03 |
2 - 3 | uint16 | অতিরিক্ত ডেটা দৈর্ঘ্য | 0x0007 |
4 | uint8 | FMDN প্রভিশনিং স্টেট | 0x00 যদি ব্যবস্থা না থাকে; 0x01 যদি কোনো অ্যাকাউন্ট দ্বারা প্রবিধান করা হয় |
5 - 10 | বাইট অ্যারে | ডিভাইসের বর্তমান BLE MAC ঠিকানা | পরিবর্তিত হয় |
সারণী 12: ডিভাইস ক্ষমতা সিঙ্ক ইভেন্ট: ট্র্যাকিং ক্ষমতা যোগ করা হয়েছে।
বর্তমান ক্ষণস্থায়ী শনাক্তকারী (ডিভাইস তথ্য কোড 0x0B)
ক্লক ড্রিফটের (উদাহরণস্বরূপ, ব্যাটারির নিষ্কাশনের কারণে) ক্লক ড্রিফ্টের ক্ষেত্রে সিকারকে সিঙ্ক করার জন্য প্রদানকারী বর্তমান ইআইডি এবং ঘড়ির মান রিপোর্ট করার জন্য বর্তমান ক্ষণস্থায়ী শনাক্তকারী (কোড 0x0B) ব্যবহার করতে পারে। অন্যথায়, অনুসন্ধানকারী এই উদ্দেশ্যে আরও ব্যয়বহুল এবং কম নির্ভরযোগ্য সংযোগ শুরু করে।
অক্টেট | ডেটা টাইপ | বর্ণনা | মান |
---|---|---|---|
0 | uint8 | ডিভাইস তথ্য ইভেন্ট | 0x03 |
1 | uint8 | বর্তমান ক্ষণস্থায়ী শনাক্তকারী | 0x0B |
2 - 3 | uint16 | অতিরিক্ত ডেটা দৈর্ঘ্য | 0x0018 বা 0x0024 |
4 - 7 | বাইট অ্যারে | ঘড়ির মান | উদাহরণ: 0x13F9EA80 |
8 - 19 বা 31 | বাইট অ্যারে | বর্তমান ইআইডি | উদাহরণ: 0x112233445566778899001122344556677889900 |
সারণী 13: ডিভাইস তথ্য ইভেন্ট: ঘড়ি সিঙ্ক।
ফ্যাক্টরি রিসেট
ফ্যাক্টরি রিসেট সমর্থন করে এমন ডিভাইসগুলির জন্য: যদি একটি ফ্যাক্টরি রিসেট করা হয়, প্রদানকারীকে অবশ্যই বীকনিং বন্ধ করতে হবে এবং মালিকের অ্যাকাউন্ট কী সহ ক্ষণস্থায়ী পরিচয় কী এবং সমস্ত সঞ্চিত অ্যাকাউন্ট কীগুলি মুছে ফেলতে হবে৷
ফ্যাক্টরি রিসেট করার পরে (হয় ম্যানুয়াল বা প্রোগ্রাম্যাটিক), প্রদানকারীর অবিলম্বে ফাস্ট পেয়ারের বিজ্ঞাপন দেওয়া শুরু করা উচিত নয়, যাতে ব্যবহারকারী ডিভাইসটি মুছে ফেলার সাথে সাথে পেয়ারিং ফ্লো শুরু না হয়।
অবাঞ্ছিত ট্র্যাকিং প্রতিরোধ
প্রত্যয়িত FMDN ডিভাইসগুলিকে অবশ্যই অবাঞ্ছিত অবস্থান ট্র্যাকার (DULT) সনাক্ত করার জন্য ক্রস-প্ল্যাটফর্ম স্পেসিফিকেশনের বাস্তবায়ন সংস্করণের প্রয়োজনীয়তা পূরণ করতে হবে।
DULT স্পেকের সাথে সঙ্গতিপূর্ণ হতে FMDN-এর জন্য নির্দিষ্ট প্রাসঙ্গিক নির্দেশিকা:
- যেকোন FMDN সামঞ্জস্যপূর্ণ ডিভাইস অবশ্যই নিকটবর্তী ডিভাইস কনসোলে নিবন্ধিত হতে হবে এবং "আমার ডিভাইস খুঁজুন" সক্ষমতা সক্রিয় থাকতে হবে।
- ডিভাইসটিকে অবশ্যই আনুষঙ্গিক তথ্য ক্রিয়াকলাপ এবং অ-মালিক নিয়ন্ত্রণ সহ DULT স্পেকের বাস্তবায়ন সংস্করণে সংজ্ঞায়িত আনুষঙ্গিক নন-ওনার পরিষেবা এবং বৈশিষ্ট্য প্রয়োগ করতে হবে।
- পিছিয়ে থাকা সামঞ্জস্যের সময়কালে, যেমন DULT স্পেকে সংজ্ঞায়িত করা হয়েছে, এই নথিতে সংজ্ঞায়িত বিজ্ঞাপনের ফ্রেমে কোনো পরিবর্তন নেই।
- এই নথিতে সংজ্ঞায়িত "অবাঞ্ছিত ট্র্যাকিং সুরক্ষা মোড" DULT স্পেস দ্বারা সংজ্ঞায়িত "বিচ্ছিন্ন অবস্থা"-তে মানচিত্র করে৷
- আনুষঙ্গিক তথ্য অপকোড বাস্তবায়নের জন্য নির্দেশিকা:
- Get_Product_Data কে কনসোল দ্বারা প্রদত্ত মডেল আইডিটি ফেরত দেওয়া উচিত, 8-বাইটের প্রয়োজনীয়তার জন্য শূন্য প্যাড করা। উদাহরণস্বরূপ, মডেল আইডি 0xFFFFFF 0x0000000000FFFFFF হিসাবে ফেরত দেওয়া হয়।
- Get_Manufacturer_Name এবং Get_Model_Name কনসোলে প্রদত্ত মানগুলির সাথে মেলে।
- Get_Accessory_Category জেনেরিক "অবস্থান ট্র্যাকার" মান ফেরত দিতে পারে যদি অন্য কোনো বিভাগ ডিভাইসের ধরনের সাথে ভালোভাবে ফিট না করে।
- Get_Accessory_Capabilities রিং বাজানোর পাশাপাশি BLE আইডেন্টিফায়ার লুকআপের জন্য সমর্থন নির্দেশ করতে হবে।
- Get_Network_ID Google এর শনাক্তকারী (0x02) ফেরত দিতে হবে।
- Get_Identifier opcode বাস্তবায়নের জন্য নির্দেশিকা:
- ব্যবহারকারীর 'শনাক্তকরণ' মোড সক্রিয় করার পরে অপারেশনটি শুধুমাত্র 5 মিনিটের জন্য একটি বৈধ প্রতিক্রিয়া ফেরত দেবে, যার জন্য বোতাম টিপের সংমিশ্রণ প্রয়োজন। একটি ভিজ্যুয়াল বা অডিও সিগন্যাল ব্যবহারকারীকে নির্দেশ করবে যে প্রদানকারী সেই মোডে প্রবেশ করেছে। সেই মোড সক্রিয় করার জন্য মডেল-নির্দিষ্ট নির্দেশাবলী অবশ্যই Google-কে সার্টিফিকেশনের প্রয়োজনীয়তা হিসেবে প্রদান করতে হবে এবং নির্দেশাবলীর যেকোনো আপডেট বা পরিবর্তনের কমপক্ষে 10 দিন আগে।
- প্রতিক্রিয়াটি এইভাবে তৈরি করা হয়েছে: বর্তমান ক্ষণস্থায়ী শনাক্তকারীর প্রথম 10 বাইট, তারপরে
HMAC-SHA256(recovery key, the truncated current ephemeral identifier)
।
- NFC এর উপর শনাক্তকারী বাস্তবায়নের জন্য নির্দেশিকা:
- URL হিসেবে,
find-my.googleapis.com/lookup
ব্যবহার করুন। -
e
প্যারামিটার হিসাবে, Get_Identifier , হেক্স এনকোডের জন্য তৈরি করা একই প্রতিক্রিয়া ব্যবহার করুন। -
pid
প্যারামিটার হিসাবে, Get_Product_Data , হেক্স এনকোডের জন্য তৈরি করা একই প্রতিক্রিয়া ব্যবহার করুন।
- URL হিসেবে,
- Sound_Start opcode বাস্তবায়নের জন্য নির্দেশিকা:
- কমান্ডটি সমস্ত উপলব্ধ উপাদানগুলিতে রিং ট্রিগার করা উচিত।
- সর্বাধিক সমর্থিত ভলিউম ব্যবহার করা উচিত।
- রিং বাজানোর জন্য প্রস্তাবিত সময়কাল হল 12 সেকেন্ড।
- লোকেটার ট্যাগগুলিকে অবশ্যই এমন একটি প্রক্রিয়া অন্তর্ভুক্ত করতে হবে যা ব্যবহারকারীদের ডিভাইসটিকে ফ্যাক্টরি রিসেট না করেই সাময়িকভাবে বিজ্ঞাপন বন্ধ করতে দেয় (উদাহরণস্বরূপ, বোতামগুলির সংমিশ্রণ টিপে)।
- অক্ষম করার নির্দেশাবলী অবশ্যই একটি সর্বজনীনভাবে উপলব্ধ URL-এ নথিভুক্ত করতে হবে এবং সার্টিফিকেশনের প্রয়োজন হিসাবে Google-কে প্রদান করতে হবে এবং নির্দেশাবলীর যেকোনো আপডেট বা পরিবর্তনের কমপক্ষে 10 দিন আগে।
- URL স্থানীয়করণ সমর্থন করা উচিত. ক্লায়েন্টের উপর নির্ভর করে, ভাষাটি একটি কোয়েরি প্যারাম ("hl=en") হিসাবে বা "স্বীকার-ভাষা" HTTP শিরোনাম ব্যবহার করে প্রদান করা হবে।
পরিবর্তনযোগ্য প্রোটোকল নির্দেশিকা
- একবারে শুধুমাত্র একটি প্রোটোকল ব্যবহার করা উচিত। নিশ্চিত করুন যে ডিভাইসে একসাথে একাধিক নেটওয়ার্ক কাজ করতে পারে না। বিভিন্ন প্রোটোকলের মধ্যে সংবেদনশীল ব্যবহারকারীর ডেটার কোনো মিল নেই তা নিশ্চিত করার জন্য এই প্রয়োজনীয়তা প্রয়োজন।
- ডিভাইসটিতে একটি হার্ড রিসেট ওয়ার্কফ্লো অন্তর্ভুক্ত করার পরামর্শ দেওয়া হয় যা ব্যবহারকারীকে একটি ভিন্ন নেটওয়ার্কের সাথে একটি ডিভাইস পুনরায় সেটআপ করতে দেয়৷
- একটি নেটওয়ার্কে একটি ডিভাইস আপডেট করার প্রক্রিয়াটি ব্যবহারকারী বান্ধব এবং নেটওয়ার্কগুলির মধ্যে ন্যায়সঙ্গত হওয়া উচিত। একজন ব্যবহারকারীকে অবশ্যই কোন একটি নেটওয়ার্ককে অগ্রাধিকার না দিয়ে তারা কোন নেটওয়ার্ক ব্যবহার করতে চান তা চয়ন করতে সক্ষম হতে হবে৷ এই প্রবাহটি Google টিমের দ্বারা অনুমোদিত হওয়া প্রয়োজন৷
ফার্মওয়্যার আপডেট
OTA আপডেটের প্রক্রিয়া এবং বিতরণ অংশীদারদের তাদের নিজস্ব মোবাইল বা ওয়েব অ্যাপ ওয়ার্কফ্লো ব্যবহার করে পরিচালনা করা উচিত।
সামঞ্জস্য
আমার ডিভাইস খুঁজুন নেটওয়ার্কের জন্য অবস্থান পরিষেবা এবং ব্লুটুথ চালু করা প্রয়োজন। সেল সার্ভিস বা ইন্টারনেট সংযোগ প্রয়োজন। Android 9+ এবং নির্দিষ্ট দেশে বয়স-যোগ্য ব্যবহারকারীদের জন্য কাজ করে।
চেঞ্জলগ
FMDN সংস্করণ | তারিখ | মন্তব্য করুন |
---|---|---|
v1 | প্রারম্ভিক অ্যাক্সেসের জন্য FMDN স্পেকের প্রাথমিক প্রকাশ। | |
v1.1 | ফেব্রুয়ারী 2023 |
|
v1.2 | এপ্রিল 2023 |
|
v1.3 | ডিসেম্বর 2023 |
|