দ্রুত জোড়া পদ্ধতি
পদ্ধতি
অবিলম্বে সাধারণ BR/EDR বা BLE বন্ধন পদ্ধতির যেকোনও আবেদন করার পরিবর্তে, অনুসন্ধানকারী প্রথমে কী-ভিত্তিক পেয়ারিং বৈশিষ্ট্যের উপর বিজ্ঞপ্তিগুলি সক্ষম করে এবং তারপরে টেবিল 1.1 -এ ডেটা লেখে।
ফাস্ট পেয়ার সিকারের কাছ থেকে লিখিত অনুরোধ পরিচালনা করার সময়, ফাস্ট পেয়ার প্রদানকারী নিম্নলিখিতগুলি করবে:
- যদি ঐচ্ছিক পাবলিক কী ক্ষেত্রটি উপস্থিত থাকে :
- ডিভাইস পেয়ারিং মোডে না থাকলে, লেখাটি উপেক্ষা করুন এবং প্রস্থান করুন।
- অন্যথায়:
- প্রাপ্ত পাবলিক কী ব্যবহার করুন (secp256r1 উপবৃত্তাকার বক্ররেখায় একটি 64-বাইট পয়েন্ট), পূর্বে ইনস্টল করা অ্যান্টি-স্পুফিং প্রাইভেট কী - এছাড়াও secp256r1, এবং একটি 256-বিট AES কী তৈরি করতে উপবৃত্ত-কার্ব ডিফি-হেলম্যান অ্যালগরিদম ব্যবহার করুন৷
- 256-বিট AES কী হ্যাশ করতে SHA-256 ব্যবহার করুন।
- ফলাফলের প্রথম 128 বিট নিন। এটি হল অ্যান্টি-স্পুফিং AES কী, পরবর্তী ধাপে ব্যবহৃত হয়।
AES-128 ব্যবহার করে, মানটিকে ডিক্রিপ্ট করার চেষ্টা করুন। যেহেতু মানটি একটি একক 16-বাইট AES ব্লক, তাই কোনো IV বা মাল্টি-ব্লক সাইফার মোডের প্রয়োজন নেই।
- কোন কী ব্যবহার করবেন:
- যদি ধাপ 1 এ একটি অ্যান্টি-স্পুফিং AES কী তৈরি করা হয়, তাহলে সেই কীটি ব্যবহার করুন।
- অন্যথায়, অবিরত অ্যাকাউন্ট কী তালিকার প্রতিটি কী চেষ্টা করুন।
- যদি একটি কী সফলভাবে মানটিকে ডিক্রিপ্ট করে, তাহলে বিরতি করুন এবং পরবর্তী ধাপে চালিয়ে যান।
মানটি সফলভাবে ডিক্রিপ্ট করা হয় যদি আউটপুটটি সারণি 1.2.1 বা সারণী 1.2.2- এর বিন্যাসের সাথে মেলে - (অর্থাৎ, যদি এটিতে হয় দ্রুত জোড়া প্রদানকারীর বর্তমান BLE ঠিকানা, অথবা দ্রুত জোড়া প্রদানকারীর সর্বজনীন ঠিকানা থাকে)।
দ্রষ্টব্য: প্যাকেটের শেষে একটি লবণ সংযুক্ত আছে। যখন সম্ভব, এই লবণ ট্র্যাক করা উচিত, এবং যদি প্রদানকারী একটি ইতিমধ্যে ব্যবহৃত লবণ সম্বলিত একটি অনুরোধ পায়, রিপ্লে আক্রমণ প্রতিরোধ করার জন্য অনুরোধ উপেক্ষা করা উচিত।
ট্র্যাকিং সল্টের বিকল্প হিসাবে, যদি লেখাটিতে প্রদানকারীর ব্যক্তিগত ঠিকানা অন্তর্ভুক্ত থাকে, তাহলে রিপ্লে আক্রমণ প্রতিরোধ করার আরেকটি উপায় হল পরবর্তী সমাধানযোগ্য ব্যক্তিগত ঠিকানা ঘূর্ণনের সময়কে এগিয়ে আনা যাতে পরবর্তী কী-ভিত্তিক পেয়ারিং লেখার আগে ঘূর্ণন ঘটে। গৃহীত
- কোন কী ব্যবহার করবেন:
যদি কোনো কী সফলভাবে মানটিকে ডিক্রিপ্ট করতে না পারে, তাহলে লেখাটি উপেক্ষা করুন এবং প্রস্থান করুন।
- এই ব্যর্থতার একটি গণনা রাখুন. ব্যর্থতার সংখ্যা 10 হলে, সমস্ত নতুন অনুরোধ অবিলম্বে ব্যর্থ করুন। ব্যর্থতার গণনা 5 মিনিটের পরে, পাওয়ার চালু হওয়ার পরে বা সাফল্যের পরে পুনরায় সেট করুন।
অন্যথায়, K হিসাবে সফল কী সংরক্ষণ করুন। পাসকি ডিক্রিপ্ট করার জন্য এই কে ব্যবহারযোগ্য হিসাবে চিহ্নিত করুন এবং এই LE লিঙ্কে প্রাপ্ত ব্যক্তিগতকৃত নাম লিখুন, তবে অন্য কোনও লেখা নয় বা অন্য কোনও লিঙ্কে কোনও লেখা নেই৷ পেয়ারিং শুরু না হলে 10 সেকেন্ড পরে K বাতিল করতে একটি টাইমার শুরু করুন। এছাড়াও এই LE লিঙ্ক সংযোগ বিচ্ছিন্ন হলে K বাতিল করুন।
সারণী 1.3 -এ দেখানো 16-বাইটের কাঁচা প্রতিক্রিয়া তৈরি করুন, টাইপ এবং প্রদানকারীর BR/EDR ঠিকানা একত্রিত করে, এবং তারপর প্যাকেটের অবশিষ্ট অংশ র্যান্ডম বাইটের একটি ব্লক (অর্থাৎ একটি লবণ) দিয়ে পূরণ করুন।
সারণি 1.4 এ দেখানো 16-বাইট এনক্রিপ্ট করা প্রতিক্রিয়া তৈরি করতে K এর সাথে কাঁচা প্রতিক্রিয়া এনক্রিপ্ট করুন। কী-ভিত্তিক পেয়ারিং বৈশিষ্ট্যে একটি বিজ্ঞপ্তির মাধ্যমে এটি পাঠান।
অনুরোধ পতাকা পড়ুন:
- যদি অনুরোধের ফ্ল্যাগ বাইটে বিট 2 সেট করে 1 থাকে , তবে ব্যক্তিগতকৃত নামের সাথে অতিরিক্ত ডেটা বৈশিষ্ট্যকে অবহিত করুন।
- যদি অনুরোধের ফ্ল্যাগ বাইটে বিট 1 থাকে 1 সেট করে:
- এটি ইঙ্গিত করে যে অনুসন্ধানকারী প্রদানকারীকে অনুরোধ করছে যাতে 8-13 বাইটে উপস্থিত থাকে তার BR/EDR ঠিকানায় বন্ধন শুরু করতে।
- প্রার্থীর BR/EDR ঠিকানায় একটি জোড়ার অনুরোধ পাঠান। পেয়ারিং রিকোয়েস্ট অবশ্যই নিচের বর্ণনা অনুযায়ী হতে হবে ("জোড়া করার সময়" ধাপ)।
- এটির প্রয়োজনীয়তার কারণ: প্রদানকারীর সূচনা কিছু ডিভাইসে একটি সমস্যার সমাধান করে।
- যদি অনুরোধের ফ্ল্যাগ বাইটে বিট 1 সেট করে 0 থাকে:
- একটি জোড়ার অনুরোধের জন্য 10 সেকেন্ড পর্যন্ত অপেক্ষা করুন। যদি কেউ না পায়, প্রস্থান করুন।
- মনে রাখবেন যে এটি একটি BR/EDR অনুরোধ হতে পারে, একটি ভিন্ন ঠিকানা থেকে (সমাধানযোগ্য ব্যক্তিগত ঠিকানার পরিবর্তে অনুসন্ধানকারীর সর্বজনীন ঠিকানা)। আমরা জোড় করার সময় পুনরায় যাচাই করব যে অনুরোধকারী ডিভাইসটি K এর দখলে রয়েছে।
জোড় করার সময়:
- যখন একটি পেয়ারিং অনুরোধ/প্রতিক্রিয়া প্যাকেট অনুসন্ধানকারীর কাছ থেকে গৃহীত হয়: যদি অনুরোধে ডিভাইসের ক্ষমতা NoInput/NoOutput হয়, তাহলে জাস্ট ওয়ার্কস পেয়ারিং পদ্ধতি ব্যবহার করা এড়াতে এন্ড পেয়ারিং।
- প্রদানকারীর পাঠানো পেয়ারিং রিকোয়েস্ট/প্রতিক্রিয়া প্যাকেটের জন্য: ডিসপ্লে/হ্যাঁ নাতে ডিভাইস ক্যাপাবিলিটি ফিল্ড সেট করুন এবং MITM সুরক্ষা প্রয়োজনীয় -এ প্রমাণীকরণের প্রয়োজনীয়তা সেট করুন। এটি নিউমেরিক তুলনা পেয়ারিং পদ্ধতিকে ট্রিগার করে (অ্যান্ড্রয়েডে পাসকি কনফার্মেশন নামেও পরিচিত)। আমরা নিশ্চিত করতে এটির উপর নির্ভর করি যে অনুরোধকারী ডিভাইসটি প্রকৃতপক্ষে দ্রুত জুটি সন্ধানকারী, এবং কোনও ম্যান-ইন-দ্য-মিডল নেই। উদাহরণ দেখুন।
- এটির প্রয়োজনীয়তার কারণ: আউট-অফ-ব্যান্ড পেয়ারিং পদ্ধতিটি আরও উপযুক্ত হবে, তবে প্ল্যাটফর্মটি অ্যান্ড্রয়েডের সমস্ত পছন্দসই সংস্করণে এটি প্রকাশ করে না।
যখন পাসকি নিশ্চিতকরণের প্রয়োজন হয় , পাসকি বৈশিষ্ট্যে একটি লেখার জন্য 10 সেকেন্ড পর্যন্ত অপেক্ষা করুন।
- সাধারণত, এই পেয়ারিং পদ্ধতির মাধ্যমে, ব্যবহারকারী নিশ্চিত করবে যে প্রতিটি ডিভাইসের স্ক্রিনে প্রদর্শিত পাসকিগুলি অভিন্ন৷ পরিবর্তে, শুধুমাত্র এই জোড়ার জন্য, আমরা সেগুলিকে BLE-তে স্থানান্তর করি, বিশ্বস্ত প্রাক-ভাগ করা কী দিয়ে এনক্রিপ্ট করা।
- মনে রাখবেন যে স্ক্রীন বা কীবোর্ড আছে এমন ডিভাইসগুলির জন্য এই পদ্ধতিটি নেওয়া উচিত নয় কারণ এটি MITM সুরক্ষার উপর সামান্য আপস করে। এই কারণে ফাস্ট পেয়ার বর্তমানে এই ধরনের ডিভাইসগুলিকে সমর্থন করে না৷
- যদি 10 সেকেন্ড টাইমার একটি পাসকি না লেখার মেয়াদ শেষ হয়ে যায়, তাহলে K বাতিল করুন।
যখন একটি মান পাসকি বৈশিষ্ট্যে লেখা হয় , তখন এটি এনক্রিপ্ট করা পাসকি ব্লক। একটি কাঁচা পাসকি ব্লক পেতে K এর সাথে এটিকে ডিক্রিপ্ট করুন, যার ফর্ম্যাটে বৈশিষ্ট্য দেখানো হয়েছে: পাসকি > টেবিল 2.2 - (টাইপ = সিকারস পাসকি)।
যদি ডিক্রিপশন ব্যর্থ হয়, লেখাটি উপেক্ষা করুন এবং কে বাতিল করুন।
অন্যথায়, Raw Passkey ব্লকে একটি 6-সংখ্যার পাসকি P Seeker ধারণ করে, যেটি সেই পাসকি যা প্রার্থীর প্রত্যাশা।
আমাদের নিজস্ব প্রত্যাশিত পাসকি, পি প্রদানকারীর সাথে পি সিকারের তুলনা করুন।
- মান সমান হলে, নিশ্চিতকরণে "হ্যাঁ" উত্তর দিন।
- অন্যথায়, নিশ্চিতকরণে "না" উত্তর দিন, যার ফলে পেয়ারিং ব্যর্থ হবে।
পেয়ারিং ব্যর্থ হয়েছে কিনা তা নির্বিশেষে, অন্য একটি কাঁচা পাসকি ব্লক তৈরি করুন, যার ফর্ম্যাটে বৈশিষ্ট্য দেখানো হয়েছে: পাসকি > টেবিল 2.2 , আমাদের নিজস্ব প্রত্যাশিত পাসকি, P প্রদানকারী ।
- নিশ্চিত করুন যে ব্লকের সঠিক ধরন আছে (প্রোভাইডারের পাসকি; টেবিল দেখুন)। দ্রষ্টব্য: অনুসন্ধানকারীর কাছ থেকে প্রাপ্ত পাসকি ব্লক থেকে লবণ পুনরায় ব্যবহার করবেন না। একটি নতুন র্যান্ডম মান তৈরি করুন।
K এর সাথে কাঁচা পাসকি ব্লক এনক্রিপ্ট করুন এবং পাসকি বৈশিষ্ট্যে একটি বিজ্ঞপ্তির মাধ্যমে ফলাফল এনক্রিপ্ট করা পাসকি ব্লক পাঠান।
যদি অনুসন্ধানকারী সঠিক পাসকি P গ্রহণ করে এবং ডিক্রিপ্ট করে, তবে অনুসন্ধানকারী নিশ্চিতকরণের জন্য "হ্যাঁ" উত্তর দেবে এবং জোড়া সফল হবে৷
- যদি পেয়ারিং সফল হয়, তাহলে এই LE লিঙ্কে অ্যাকাউন্ট কী লেখাগুলি ডিক্রিপ্ট করার জন্য K কে ব্যবহারযোগ্য হিসাবে চিহ্নিত করুন, কিন্তু পরবর্তী কোনো পাসকি লেখার জন্য নয় বা অন্য কোনো লিঙ্কে লেখার জন্য নয়৷ 10 সেকেন্ড পরে K বাতিল করতে একটি টাইমার শুরু করুন। এছাড়াও একটি অ্যাকাউন্ট কী লেখার যেকোনো প্রচেষ্টা অনুসরণ করে K কে বাতিল করুন এবং, ধাপ 4 অনুযায়ী, যদি LE লিঙ্কটি সংযোগ বিচ্ছিন্ন হয়ে যায়।
- পেয়ারিং ব্যর্থ হলে, কে বাতিল করুন।
ডিভাইসের ক্ষমতার ক্ষেত্রটি ডিফল্ট I/O ক্ষমতা এবং প্রমাণীকরণের প্রয়োজনীয়তাগুলিকে ডিফল্টে স্যুইচ করুন যাতে নতুন জোড়া প্রত্যাশিতভাবে চলতে থাকে।
মনে রাখবেন যে সরবরাহকারীদের জন্য বন্ধন প্রয়োজন হয় না, অনুসন্ধানকারী প্রদানকারীর কাছে একটি জোড়ার অনুরোধ পাঠায় না, সেটি হল ধাপ 8 - ধাপ 17 এড়িয়ে গেছে। এছাড়াও, অ্যাকাউন্ট কী বৈশিষ্ট্যে "কে" ব্যবহার করা হয়।