silabs 21Q2 নিরাপদ BLE ডিভাইস নিরাপত্তা ল্যাব

BLE নিরাপত্তা ল্যাব ম্যানুয়াল

এই ল্যাবে, আপনি দেখতে পাবেন কিভাবে আরও নিরাপদ BLE ডিভাইস ডিজাইন করা যায়। আমরা একটি ওভার দিয়ে শুরু করবview স্ট্যাকের কিছু বৈশিষ্ট্য কীভাবে ব্যবহার করতে হয় এবং আরও সুরক্ষিত সংযোগের কৌশল সম্পর্কে কিছু সাধারণ পরামর্শের দিকে এগিয়ে যান এবং অবশেষে আমরা দেখতে পাব কীভাবে একটি পেরিফেরালকে প্রামাণিক হিসাবে শনাক্ত করতে BLE-তে ডিভাইস শংসাপত্রগুলি ব্যবহার করতে হয়।

শুরু করা

ব্লুটুথ এসampআপনি যে অ্যাপ্লিকেশনটি তৈরি করবেন তা একটি বুটলোডারের সাথে ব্যবহার করার উদ্দেশ্যে। আপনি যদি ব্র্যান্ডের নতুন EFR32MG21B এর সাথে কাজ করেন তবে এতে বুটলোডার থাকবে না। আপনি প্ল্যাটফর্ম বুটলোডারে একটি পূর্ব-নির্মিত বুটলোডার খুঁজে পেতে পারেনample-apps\bootloader-storage-internalsingle\efr32mg21a010f1024im32-brd4181a আপনার SDK ফোল্ডার।

  1. একটি soc-খালি s দিয়ে শুরু করুনample অ্যাপ। এই এসample অ্যাপটি একটি টেমপ্লেট হিসাবে ব্যবহৃত হয় এবং যেকোন BLE অ্যাপ্লিকেশনের জন্য একটি ভাল সূচনা পয়েন্ট করে।
    1. সরলতা স্টুডিও থেকে সিলিকন ল্যাবস প্রজেক্ট উইজার্ড খুলুন File মেনু -> নতুন।
    2. BRD4181C নির্বাচন করুন এবং 'পরবর্তী' বোতামে ক্লিক করুন।
    3. প্রযুক্তির প্রকারের অধীনে 'ব্লুটুথ (9)' চেকবক্সে ক্লিক করুন।
    4. হাইলাইট 'ব্লুটুথ - SoC খালি' তারপর পরবর্তী ক্লিক করুন।
    5. 'শেষ' বোতামে ক্লিক করুন।
  2. সুরক্ষিত এবং অরক্ষিত বৈশিষ্ট্যগুলিকে কীভাবে আলাদাভাবে বিবেচনা করা হয় তা দেখতে এখন আপনি কিছু বৈশিষ্ট্য যুক্ত করতে পারেন।
    1. প্রকল্পের slcp খুলুন file প্রজেক্ট এক্সপ্লোরার উইন্ডোতে ডাবল ক্লিক করে
    2. 'সফ্টওয়্যার উপাদান' ট্যাবটি হাইলাইট করুন এবং নীচে দেখানো হিসাবে GATT কনফিগারেশন টুল খুলুন: এবং gatt_configuration.btconf ইম্পোর্ট করতে নিচে দেখানো ইমপোর্ট টুল ব্যবহার করুন file প্রদত্ত উপকরণে সার্ভার ফোল্ডার থেকে।GATT ডাটাবেসের একটি কাস্টম পরিষেবা আছে, যাকে বলা হয় 'প্রশিক্ষণ', কিছু ডেটা আছে যা সুরক্ষিত এবং কিছু নেই। এটি আপনাকে একটি সুরক্ষিত বৈশিষ্ট্য বনাম একটি অরক্ষিত বৈশিষ্ট্য অ্যাক্সেস করার চেষ্টা করার সময় কী ঘটে তা তুলনা করতে দেয়৷ এটি খুব প্রাথমিক নিরাপত্তা সহ একটি ডিভাইস তৈরি করার একটি দ্রুত উপায়।
  3. অ্যাপ্লিকেশনটিতে কী ঘটছে তা ট্র্যাক করতে আমরা সরলতা স্টুডিওতে কনসোলে প্রিন্ট করতে সিরিয়াল পোর্ট ব্যবহার করব। এই উপাদানগুলি খুঁজে পাওয়ার সবচেয়ে সহজ উপায় হল সফ্টওয়্যার উপাদান ডায়ালগে সেগুলি অনুসন্ধান করা যেমন দেখানো হয়েছে:
      1. IO Stream USART কম্পোনেন্ট ইনস্টল করুন
      2. IO Stream Retarget STDIO কম্পোনেন্ট ইনস্টল করুন
      3. স্ট্যান্ডার্ড I/O উপাদান ইনস্টল করুন
      4. লগ উপাদান ইনস্টল করুন
      5. বোর্ড কন্ট্রোল কম্পোনেন্ট খুলুন এবং 'ভার্চুয়াল COM UART সক্ষম করুন' চালু করুন
      6. 'ডিবাগ অ্যাডাপ্টার' প্যানেলে অ্যাডাপ্টারটিতে ডান-ক্লিক করুন এবং 'লঞ্চ কনসোল' নির্বাচন করুন। 'সিরিয়াল 1' ট্যাব নির্বাচন করুন এবং কনসোল উইন্ডোর পাঠ্য এন্ট্রি ক্ষেত্রে কার্সারটি রাখুন এবং কনসোলটি জাগানোর জন্য এন্টার টিপুন।
  4. সংযোগ হ্যান্ডেল সংরক্ষণ করার জন্য sl_bt_on_event(), app.c এ পাওয়া একটি স্থানীয় পরিবর্তনশীল তৈরি করুন। ভেরিয়েবলটি অবশ্যই স্ট্যাটিক হতে হবে যেহেতু স্ট্যাক দ্বারা একটি ইভেন্ট উত্থাপিত হলে প্রতিবার এই ফাংশনটিকে কল করা হয় এবং আমরা চাই মানটি স্থায়ী হোক। সংযোগ হ্যান্ডেল পরে ব্যবহার করা হবেল্যাবের অংশ।
  5. আমরা কখন সংযুক্ত আছি, নিরাপত্তা মোড ইত্যাদি দেখার জন্য ইভেন্টের জন্য কিছু app_log() স্টেটমেন্ট সন্নিবেশ করুন
      1. app_log.h হেডার অন্তর্ভুক্ত করুন file
      2. sl_bt_evt_connection_opened – বন্ড হ্যান্ডেল মুদ্রণ করুন এবং সংযোগ হ্যান্ডেল সংরক্ষণ করুন। বন্ড হ্যান্ডেল 0xFF হলে, সংযুক্ত ডিভাইসগুলির মধ্যে কোন বন্ধন বিদ্যমান থাকে না। বিদ্যমান ইভেন্ট হ্যান্ডলারকে পরিবর্তন করুন যাতে এটি এরকম কিছু দেখায়:
      3. sl_bt_evt_connection_parameters – নিরাপত্তা মোড। এটি করা হয় যাতে আপনি নিরাপত্তা মোড পরিবর্তন হলে দেখতে পারেন। নিরাপত্তা মোডের সংখ্যায় পার্থক্য রয়েছে যেখানে নিরাপত্তা মোড 1, মান 0 ইত্যাদি দিয়ে গণনা করা হয়। আপনার অ্যাপ্লিকেশনে নিম্নলিখিত ইভেন্ট হ্যান্ডলার যোগ করুন:
      4. sl_bt_evt_connection_closed_id. সংযোগ হ্যান্ডেল আপডেট করতে এই ইভেন্ট হ্যান্ডলারটি পরিবর্তন করা হয়েছে। মান 0xFF কোন সক্রিয় সংযোগ নেই তা নির্দেশ করতে ব্যবহৃত হয়। app_log() কমান্ডটি সংযোগ বন্ধ হওয়ার কারণ প্রিন্ট করতে ব্যবহৃত হয়, স্ট্যাটাস কোডের তালিকা এখানে রয়েছে। বিদ্যমান ইভেন্ট হ্যান্ডলারকে পরিবর্তন করুন যাতে এটি এরকম কিছু দেখায়:
  6. প্রকল্পটি তৈরি করুন এবং ফ্ল্যাশ করুন। এই সময়ে, আমরা এস চালাবampGATT ডাটাবেস ছাড়াও এটি কোন পরিবর্তন ছাড়াই কীভাবে আচরণ করে তা দেখতে le অ্যাপ।
  7. নিম্নরূপ EFRConnect মোবাইল অ্যাপের সাথে সংযোগ করুন:
      1. 'ব্লুটুথ ব্রাউজার' আইকনে আলতো চাপুন।
      2. 'ট্রেনিং' নামের ডিভাইসে 'কানেক্ট' আইকনে ট্যাপ করুন।
  8. নিম্নরূপ অরক্ষিত বৈশিষ্ট্য পড়ুন:
      1. UUID a815944e-da1e-9d2a- 02e2-a8d15e2430a0 সহ অজানা পরিষেবার অধীনে 'আরো তথ্য' লিঙ্কে আলতো চাপুন।
      2. 'পড়ুন' আইকনে ট্যাপ করে অরক্ষিত বৈশিষ্ট্য, UUID f9e91a44-ca91-4aba-1c33-fd43ca270b4c পড়ুন। এখানে কোন চমক নেই। যেহেতু বৈশিষ্ট্যটি কোনওভাবেই সুরক্ষিত নয়, তাই এটি প্লেইনটেক্সট পাঠানো হবে।
  9. এখন সুরক্ষিত বৈশিষ্ট্য, UUID d4261dbb-dcd0-daab-ec95-deec088d532b পড়ুন। আপনার মোবাইল ফোন আপনাকে জোড়া এবং সংযোগ করার জন্য অনুরোধ করবে, আপনার মোবাইল OS এর উপর নির্ভর করে বার্তাটি পরিবর্তিত হতে পারে। আপনি জোড় করার অনুরোধটি গ্রহণ করার পরে, আপনাকে নিম্নরূপ কনসোলে একটি বার্তা দেওয়া উচিত: দ্রষ্টব্য: এই ম্যানুয়ালটির শেষে পরিশিষ্ট A-তে রেফারেন্সের জন্য I/O ক্ষমতা এবং পেয়ারিং পদ্ধতির একটি সারাংশ রয়েছে। পরিশিষ্ট B ব্লুটুথ নিরাপত্তা মোডগুলিকে সংক্ষিপ্ত করে৷

নিরাপত্তা ব্যবস্থাপক কনফিগারেশন

নিরাপত্তা ব্যবস্থাপক ব্লুটুথ স্ট্যাকের অংশ যা নির্ধারণ করে কোন নিরাপত্তা বৈশিষ্ট্য ব্যবহার করা হবে। এই বৈশিষ্ট্যগুলির মধ্যে রয়েছে ম্যান-ইন-দ্য-মিডল (এমআইটিএম) সুরক্ষা, এলই সিকিউর সংযোগ (ওরফে ইসিডিএইচ), বন্ধনের জন্য নিশ্চিতকরণের প্রয়োজন, ইত্যাদি। সুরক্ষা ব্যবস্থাপক I/O ক্ষমতাগুলিও পরিচালনা করে যা জোড়া করার জন্য কোন পদ্ধতি ব্যবহার করা হয় তা নির্ধারণ করতে ব্যবহৃত হয়। /বন্ধন (সারাংশের জন্য পরিশিষ্ট A দেখুন)। এই বিভাগে আপনি একটি সহজ সেটআপ দেখতে পাবেন।

  1. পছন্দসই কনফিগারেশন সহ SM সেটআপ করুন। এই ল্যাবের জন্য হার্ডওয়্যার কনসোলে একটি পাসকি প্রদর্শন করা সহজ করে তোলে। MITM সুরক্ষা সক্ষম করার জন্য পাসকি এন্ট্রি একটি প্রয়োজনীয়তা। আপনার sl_bt_system_boot_id ইভেন্ট হ্যান্ডলারে নিম্নলিখিত কোড যোগ করুন। এটি ম্যান-ইন-দ্য-মিডলকে সক্ষম করে এবং রিমোট ডিভাইসকে জানায় যে আমাদের কাছে একটি পাসকি প্রদর্শন করার ক্ষমতা আছে, তবে এটিই সব।
  2. কনসোলে পাসকি প্রদর্শন করার জন্য, নীচে দেখানো হিসাবে একটি ইভেন্ট হ্যান্ডলার প্রয়োজন:
  3. বন্ধন মোড, বন্ধনের সর্বোচ্চ সংখ্যা ইত্যাদি সেট করুন। শুরু করতে নিম্নলিখিত কোডটি ব্যবহার করুন:এই সেটিংসগুলি আক্রমণকারীর আপনার ডিভাইসের সাথে বন্ধনের ক্ষমতা সীমিত করতে ব্যবহার করা যেতে পারে। যদি আপনার পণ্যের শুধুমাত্র একজন ব্যবহারকারীর প্রয়োজন হয়, তাহলে আপনি সর্বাধিক বন্ড 1 এ সীমাবদ্ধ করতে পারেন। এই কলগুলি যোগ করার একটি ভাল জায়গা হল sl_bt_system_boot_id ইভেন্ট হ্যান্ডলারে। ল্যাবের বাকি কাজগুলিকে আরও মসৃণ করতে আমরা এই সময়ে বন্ধন সক্ষম করব না তবে শুধুমাত্র একটি বন্ডের অনুমতি দেওয়ার জন্য আমরা একটি বন্ধন নীতি সেট করি৷ রেফারেন্সের জন্য, এই APIগুলির জন্য ডকুমেন্টেশন এখানে এবং এখানে পাওয়া যায়।
  4. sl_bt_evt_sm_bonded_id এবং sl_bt_evt_sm_bonding_failed_id-এর জন্য ইভেন্ট হ্যান্ডলার যোগ করুন। এই ইভেন্টগুলির জন্য প্রধান ব্যবহার বর্তমানে তথ্যপূর্ণ কিন্তু পরে ল্যাবে আপনি কার্যকারিতা যোগ করবেন।
  5. টার্গেট বোর্ডে তৈরি করুন এবং ফ্ল্যাশ করুন। EFRConnect এর সাথে সংযোগ করুন এবং আগের মতো সুরক্ষিত বৈশিষ্ট্য পড়ুন। এই সময়, আপনি কনসোলে প্রদর্শিত একটি পাসকি দেখতে পাবেন। অনুরোধ করা হলে আপনার মোবাইল ফোনে এই পাসকিটি লিখুন।
  6. বন্ধন নিশ্চিতকরণ চেষ্টা করুন. এই বৈশিষ্ট্যটি ব্যবহারকারীকে বন্ধন অনুরোধ নিশ্চিত করার প্রয়োজন করার ক্ষমতা দেয়। এটি করার ফলে অ্যাপ্লিকেশনটি কোন পিয়ার ডিভাইসগুলির সাথে এটি বন্ধন করে তার উপর নিয়ন্ত্রণ দেয়৷ একটি সম্ভাবনা হল বন্ডের অনুমতি দেওয়ার আগে ব্যবহারকারীকে একটি বোতাম টিপতে হবে।
    1. আপনার মোবাইল ফোনে ব্লুটুথ সেটিংস খুলুন এবং EFR32 ডিভাইসে বন্ডটি সরান। মোবাইল ফোন বাস্তবায়ন পরিবর্তিত হয় তাই এই পদক্ষেপের প্রয়োজন নাও হতে পারে। আপনি যদি আপনার ব্লুটুথ সেটিংসে 'প্রশিক্ষণ' ডিভাইসটি দেখতে না পান, তাহলে শুধু পরবর্তী ধাপে যান৷
    2. সফ্টওয়্যার উপাদানগুলিতে, সাধারণ বোতাম হ্যান্ডলারের একটি উদাহরণ ইনস্টল করুন।
    3. হেডার অন্তর্ভুক্ত করুন file app.c-এ sl_simple_button_instances.h
    4. sl_bt_evt_sm_bonding_confirm_id ইভেন্টের জন্য একটি হ্যান্ডলার যোগ করুন। এই ইভেন্ট হ্যান্ডলারের প্রধান কাজ হল ব্যবহারকারীকে জানানো যে একটি দূরবর্তী ডিভাইস একটি নতুন বন্ডের জন্য অনুরোধ করছে।
    5. ব্লুটুথ স্ট্যাকে একটি সিগন্যাল পাঠাতে সাধারণ বোতাম হ্যান্ডলারের জন্য একটি কলব্যাক ফাংশন যোগ করুন যে একটি বোতাম টিপানো হয়েছে। এটি ডিফল্ট কলব্যাককে ওভাররাইড করে যা সহজভাবে ফিরে আসে।
    6. একটি বহিরাগত সংকেত ইভেন্ট হ্যান্ডলার যোগ করুন. এই ঘটনাটি একটি সংকেত প্রাপ্তির প্রতিক্রিয়া হিসাবে উত্থাপিত হয়, যেমন পূর্ববর্তী ধাপে। বহিরাগত সংকেত ইভেন্ট বন্ধন নিশ্চিত করতে ব্যবহার করা হবে.
    7. বন্ধন নিশ্চিতকরণের প্রয়োজনের জন্য sl_bt_sm_configure এ কলটি পরিবর্তন করুন যেমন
    8. পুনর্নির্মাণ এবং ফ্ল্যাশ.
    9. EFRConnect এর সাথে সংযোগ করুন এবং আগের মতো সুরক্ষিত বৈশিষ্ট্য পড়ুন। এখন আপনি নিম্নরূপ কনসোলে একটি বার্তা দেখতে পাবেন:বন্ধন নিশ্চিত করতে PB0 টিপুন। এখন কনসোল বন্ধনের জন্য মোবাইল ফোনে প্রবেশ করানো পাসকি প্রদর্শন করবে। বন্ধন প্রক্রিয়া সম্পূর্ণ করতে পাসকি লিখুন।

 

টিপ: যখন স্ট্যাক পরিচালনা করা হয় না এমন একটি ইভেন্ট পাঠায় তখন একটি বার্তা প্রিন্ট করতে ইভেন্ট হ্যান্ডলারে ডিফল্ট কেস ব্যবহার করুন। স্ট্যাক আপনাকে গুরুত্বপূর্ণ কিছু বলার চেষ্টা করতে পারে।

বিয়ন্ড দ্য বেসিকস

এই মুহুর্তে, আপনি অ্যাডভান নিয়েছেনtage নিরাপত্তা বৈশিষ্ট্য যা আমাদের স্ট্যাক অফার করে। এখন আমাদের নিষ্পত্তি বৈশিষ্ট্য বুদ্ধিমান ব্যবহারের মাধ্যমে বাস্তবায়ন উন্নত করা যাক. নিম্নলিখিত পদক্ষেপগুলি ঐচ্ছিক এবং একে অপরের থেকে স্বাধীন, আপনি আচরণটি দেখতে বা সেগুলি একসাথে চেষ্টা করতে প্রতিটির পরে তৈরি এবং ফ্ল্যাশ করতে পারেন।

  1. ব্যর্থ বন্ড প্রচেষ্টায় সংযোগ বিচ্ছিন্ন করুন. হুমকি সনাক্ত করার জন্য এটি একটি ভাল জায়গা। যদি দূরবর্তী ডিভাইসটি এনক্রিপশন/প্রমাণিকরণ সমর্থন না করে বা সঠিক কী না থাকে তবে এটি একটি হ্যাকার হতে পারে। সুতরাং, সংযোগ বিচ্ছিন্ন করা যাক. sl_bt_sm_bonding_failed_id ইভেন্টে sl_bt_connection_close() এ একটি কল যোগ করার চেষ্টা করুন। API এখানে নথিভুক্ত করা হয়.আপনি ভুল পাসকি প্রবেশ করে এই বৈশিষ্ট্য পরীক্ষা করতে পারেন.
  2. শুধুমাত্র নির্দিষ্ট সময়ে বন্ধন অনুমতি. এটি একটি আক্রমণকারীকে একটি বন্ড গঠন করার সময়কে সীমিত করে এবং 'শুধু বন্ডেড সংযোগের অনুমতি দিন' বৈশিষ্ট্যটি ব্যবহার করা সম্ভব করে তোলে। ডিজাইনার কীভাবে বন্ডেবল মোড সক্ষম বা নিষ্ক্রিয় করবেন তা চয়ন করতে পারেন৷ এখানে প্রদর্শনের উদ্দেশ্যে, আমরা PB1 এর সাথে একটি 'সেটআপ মোড' সক্ষম করব এবং 30 সেকেন্ড পরে এটি নিষ্ক্রিয় করতে একটি টাইমার ব্যবহার করব।
    1. সাধারণ বোতাম ইন্টারফেসের একটি দ্বিতীয় দৃষ্টান্ত ইনস্টল করুন। এটি PB1 ব্যবহার সক্ষম করবে।
    2. বন্ধন সক্ষম/অক্ষম করতে স্ট্যাকে একটি ভিন্ন সংকেত পাঠাতে কলব্যাক পরিবর্তন করুন। ফলাফল এই মত কিছু দেখতে হবে:
    3. বাহ্যিক সংকেত ইভেন্ট হ্যান্ডলার পরিবর্তন করুন যাতে এটি এই নতুন সংকেত পরিচালনা করে। ফলাফল এই মত হওয়া উচিত:
    4. sl_bt_evt_system_soft_timer_id ইভেন্টের জন্য একটি ইভেন্ট হ্যান্ডলার যোগ করুন। এটি সেটআপ মোড নিষ্ক্রিয় করতে ব্যবহৃত হবে।
    5. নিম্নলিখিত কোডটি বন্ডেবল মোড সক্ষম করতে এবং সমস্ত সংযোগের অনুমতি দিতে বা বন্ডেবল মোড অক্ষম করতে এবং শুধুমাত্র বন্ডেড ডিভাইসগুলি থেকে সংযোগের অনুমতি দিতে ব্যবহার করা যেতে পারে:
    6. sl_bt_system_boot_id ইভেন্ট হ্যান্ডলারে নিম্নলিখিত কল যোগ করুন
    7. প্রকল্পটি তৈরি করুন এবং এটি ডিভাইসে ফ্ল্যাশ করুন।
    8. EFRConnect দিয়ে ডিভাইসের সাথে সংযোগ করার চেষ্টা করুন। সংযোগ ব্যর্থ হওয়া উচিত।
    9. এখন EFRConnect এর সাথে সংযোগ করার আগে PB1 চাপার চেষ্টা করুন। এবার সংযোগ সফল হবে। 30 সেকেন্ড পরে আপনি কনসোলে একটি বার্তা দেখতে পাবেন যা নির্দেশ করে যে ডিভাইসটি সেটআপ মোড থেকে প্রস্থান করছে। এর মানে হল বন্ডেবল মোড এখন নিষ্ক্রিয়।
  3. একটি সংযোগ গঠনে নিরাপত্তা বাড়ান। যেহেতু নিরাপত্তা ঐচ্ছিক, আমাদের GATT বৈশিষ্ট্যের উপর নির্ভর না করে যত তাড়াতাড়ি সম্ভব একটি এনক্রিপ্ট করা সংযোগের অনুরোধ করা উচিত। API এখানে নথিভুক্ত করা হয়. এই API কল করার জন্য একটি ভাল জায়গা হল sl_bt_evt_connection_opened_id ইভেন্টে৷ সংযোগ হ্যান্ডেলটি সংযোগ পরিবর্তনশীলে উপলব্ধ৷

নিরাপদ পরিচয়

এখন যেহেতু আমাদের কাছে আরও সুরক্ষিত ব্লুটুথ ডিভাইস আছে, আসুন প্রমাণীকরণের ধাপ উন্নত করি। পূর্ববর্তী প্রশিক্ষণ ল্যাবে কমান্ড লাইনের সাহায্যে ভল্ট ডিভাইসের সুরক্ষিত পরিচয় কীভাবে যাচাই করা যায় তা আপনি ইতিমধ্যেই দেখেছেন। এই বিভাগে, আমরা দেখব কিভাবে একটি BLE ডিভাইস অন্য BLE ডিভাইসের শংসাপত্রের চেইনকে অনুরোধ করে এবং একটি চ্যালেঞ্জ পাঠানোর মাধ্যমে তার পরিচয় যাচাই করতে পারে। সমস্ত সুরক্ষিত ভল্ট অংশ তাদের নিজস্ব ডিভাইস শংসাপত্র এবং ব্যাচ শংসাপত্র ধারণ করে। ফ্যাক্টরি এবং রুট সার্টিফিকেট সম্পূর্ণ সার্টিফিকেট চেইনের যাচাইকরণ সক্ষম করতে ক্লায়েন্ট অ্যাপ্লিকেশনে হার্ড কোড করা হয়। নিরাপদ পরিচয় সম্পর্কে আরো বিস্তারিত জানার জন্য AN1268 দেখুন।

  1. নীচের মত ডিভাইস প্রত্যয়ন স্বাক্ষর সংরক্ষণের জন্য একটি বিশ্বব্যাপী বাফার সংজ্ঞায়িত করুন:
  2. JustWorks পেয়ারিং ব্যবহার করতে নিরাপত্তা ব্যবস্থাপক কনফিগারেশন সেট করুন। এটি করা হয় যাতে সংযোগটি এনক্রিপ্ট করা হয়। অনুশীলনে, MITM সুরক্ষা ব্যবহার করা উচিত তবে ল্যাবটিকে সহজ রাখতে, আমরা JustWorks ব্যবহার করব। sl_bt_sm_configure-এ কলটি পরিবর্তন করে নিম্নলিখিতটিতে ফিরে যান:এছাড়াও, system_boot ইভেন্ট হ্যান্ডলারে setup_mode(true) কলটি মন্তব্য করুন।
  3. প্রদত্ত উপকরণ থেকে helpers.c খুলুন এবং app.c-এ বিষয়বস্তু অনুলিপি করুন। এই কলব্যাক ফাংশনগুলি শংসাপত্রগুলিকে সেগমেন্ট করার মতো কাজগুলি সম্পাদন করে যাতে সেগুলিকে BLE এর মাধ্যমে পাঠানো যায়, শংসাপত্রের চেইন যাচাই করা যায় এবং চ্যালেঞ্জ তৈরি/যাচাই করা যায়।
  4. সর্বোচ্চ স্থানান্তর ইউনিট (MTU) আকার নির্ধারণ করা প্রয়োজন যাতে শংসাপত্রগুলিকে ভাগ করা যায় এবং পুনরায় একত্রিত করা যায়। এখানে দেখানো হিসাবে MTU সংরক্ষণ করতে একটি বিশ্বব্যাপী পরিবর্তনশীল সংজ্ঞায়িত করুন:তারপরে নীচে দেখানো হিসাবে GATT MTU বিনিময় ইভেন্টের জন্য একটি ইভেন্ট হ্যান্ডলার যোগ করুন:
  5. তিনটি ব্যবহারকারীর ডেটা বৈশিষ্ট্য রয়েছে যা পড়া যেতে পারে। এই বৈশিষ্ট্যগুলি ডিভাইস শংসাপত্র, ব্যাচ শংসাপত্র এবং চ্যালেঞ্জের সাথে যোগাযোগ করতে ব্যবহৃত হয়। এই ব্যবহারকারী পড়ার অনুরোধগুলি পরিচালনা করতে একটি কলব্যাক ফাংশন ব্যবহার করা হয়। নীচে দেখানো হিসাবে এই ফাংশন কল করার জন্য একটি হ্যান্ডলার যোগ করুন:কলব্যাক এমটিইউ ব্যবহার করে ধাপ #2 থেকে সেগমেন্টে এবং প্রয়োজন অনুযায়ী সার্টিফিকেট পাঠায়। এটি স্বাক্ষরিত চ্যালেঞ্জ পাঠানোও পরিচালনা করে।
  6. ক্লায়েন্ট একটি চ্যালেঞ্জ পাঠায়, একটি এলোমেলো নম্বর যা সার্ভার দ্বারা স্বাক্ষরিত হবে, GATT বৈশিষ্ট্যগুলির একটি লিখে৷ এই কারণে, নীচের মত ব্যবহারকারী লেখার অনুরোধ ইভেন্টের জন্য অ্যাপ্লিকেশনটির একটি হ্যান্ডলার থাকা প্রয়োজন:
  7. নিরাপদ পরিচয় সমর্থন যোগ করুন fileপ্রকল্পে এস:
    1. প্রজেক্টে প্রদত্ত উপকরণ থেকে app_se_manager_macro.h, app_se_manager_secure_identity.c এবং app_se_secure_identity.h। এইগুলো files-এ শংসাপত্রের আকার পাওয়া, ডিভাইসের সর্বজনীন কী পাওয়া এবং একটি চ্যালেঞ্জ স্বাক্ষর করার মতো কাজের জন্য কিছু সহায়ক ফাংশন রয়েছে।
    2. app.c-এ app_se_manager_secure_identity.h অন্তর্ভুক্ত করুন।
  8. প্রদত্ত উপাদানগুলি থেকে প্রদত্ত gatt_configuration-attest.btconf আমদানি করুন৷ এই GATT ডাটাবেসটিকে নিরাপদ প্রত্যয়ন বলা হয় যার মধ্যে চারটি বৈশিষ্ট্য রয়েছে যা আমাদের ডিভাইসের পরিচয় যাচাই করতে ব্যবহার করা হবে। এর মধ্যে রয়েছে ডিভাইস সার্টিফিকেট, ব্যাচ সার্টিফিকেট, চ্যালেঞ্জ এবং রেসপন্স।
  9. ক্লায়েন্ট, যা গেটওয়ের মতো একটি ডিভাইস অনুকরণ করতে ব্যবহৃত হয়, এটি একটি সম্পূর্ণ প্রকল্প হিসাবে সরবরাহ করা হয় কারণ এটি তৈরি করা আরও জটিল। সাধারণভাবে, ক্লায়েন্টের ক্রিয়াকলাপ নিম্নরূপ:
    1. সুরক্ষিত প্রত্যয়ন পরিষেবার বিজ্ঞাপন দেওয়া ডিভাইসগুলির জন্য স্ক্যান করে এবং তাদের সাথে সংযোগ করে।
    2. GATT ডাটাবেস পরিষেবা এবং বৈশিষ্ট্যগুলি আবিষ্কার করে।
    3. ডিভাইস এবং ব্যাচ শংসাপত্রগুলি পড়ে এবং ফ্যাক্টরি এবং রুট শংসাপত্র ব্যবহার করে শংসাপত্রের চেইন যাচাই করে যা এটি ফ্ল্যাশে সংরক্ষণ করেছে৷
    4. সার্ভারে একটি র্যান্ডম চ্যালেঞ্জ পাঠায়।
    5. চ্যালেঞ্জের প্রতিক্রিয়া যাচাই করার প্রচেষ্টা।
    6. যাচাইকরণ ব্যর্থ হলে সংযোগ বন্ধ করে।
  10. আপনার সার্ভার WSTK/রেডিওবোর্ডে সার্ভার প্রকল্প তৈরি করুন এবং ফ্ল্যাশ করুন।
  11. প্রদত্ত উপকরণগুলিতে ক্লায়েন্ট ফোল্ডার থেকে ক্লায়েন্ট প্রকল্প আমদানি করুন। আপনার ক্লায়েন্ট WSTK/রেডিওবোর্ডে ক্লায়েন্ট প্রকল্প তৈরি করুন এবং ফ্ল্যাশ করুন।
  12. ক্লায়েন্ট WSTK রিসেট টিপুন এবং সিরিয়াল কনসোল খুলুন। ক্লায়েন্ট আমাদের নিরাপদ পরিচয় পরিষেবার বিজ্ঞাপন দেওয়ার জন্য ডিভাইসগুলির জন্য স্ক্যান করা শুরু করে এবং যখন এটি একটি খুঁজে পাবে তখন সংযোগ করবে৷
  13. ক্লায়েন্ট কিছু বার্তা প্রদর্শন করবে যে এটি সার্ভারটিকে সার্টিফিকেট চেইনের যাচাইকরণ সম্পর্কে পছন্দসই পরিষেবা এবং স্থিতি বার্তাগুলির সাথে খুঁজে পেয়েছে।
  14. যাচাইকরণ পাস হলে, ক্লায়েন্ট একটি র্যান্ডম নম্বর তৈরি করবে, যাকে চ্যালেঞ্জ বলা হয় এবং এটি সার্ভারে পাঠাবে। সার্ভার তার নিরাপদে রাখা ব্যক্তিগত ডিভাইস কী দিয়ে চ্যালেঞ্জে স্বাক্ষর করবে এবং ক্লায়েন্টকে ফেরত স্বাক্ষর করবে, একে চ্যালেঞ্জ প্রতিক্রিয়া বলা হয়। ক্লায়েন্ট তারপর স্বাক্ষর যাচাই করতে পূর্বে প্রাপ্ত ডিভাইস শংসাপত্রে সর্বজনীন কী ব্যবহার করে। এটি নিশ্চিত করার জন্য করা হয় যে সার্ভারের কাছে সত্যিই ব্যক্তিগত কী আছে যা এটি দাবি করেছে। চ্যালেঞ্জটি সঠিকভাবে যাচাই করা হলে, সেই প্রভাবে একটি বার্তা প্রদর্শিত হবে; অন্যথায়, সংযোগ বন্ধ করা হয়, এবং কেন ব্যাখ্যা করে একটি বার্তা প্রদর্শিত হয়।
  15. যাচাইকরণ সত্যিই কাজ করে তা নিশ্চিত করতে এখন একটি অবৈধ শংসাপত্র পাঠান। আপনি user_read_request_cb() পরিবর্তন করতে পারেন শংসাপত্রের ডেটা বা চ্যালেঞ্জ প্রতিক্রিয়াকে দূষিত করতে।

পরিশিষ্ট A - I/O ক্ষমতা এবং জোড়া পদ্ধতি
পরিশিষ্ট বি - নিরাপত্তা মোড এবং স্তর

সিলিকন ল্যাবসের স্ট্যাকে ব্লুটুথ লো এনার্জির জন্য সিকিউরিটি মোড 1 হল একমাত্র মোড। স্তরগুলি নিম্নরূপ:

  • লেভেল 1 কোন নিরাপত্তা নেই
  • এনক্রিপশন সহ লেভেল 2 অননুমোদিত জোড়া
  • এনক্রিপশন সহ লেভেল 3 প্রমাণীকৃত পেয়ারিং
  • শক্তিশালী এনক্রিপশন সহ লেভেল 4 প্রমাণীকৃত সুরক্ষিত সংযোগ (ECDH কী বিনিময়)

 

দলিল/সম্পদ

silabs 21Q2 নিরাপদ BLE ডিভাইস নিরাপত্তা ল্যাব [পিডিএফ] ব্যবহারকারী ম্যানুয়াল
21Q2 নিরাপদ BLE ডিভাইস নিরাপত্তা ল্যাব, নিরাপদ BLE ডিভাইস নিরাপত্তা ল্যাব, নিরাপত্তা ল্যাব

তথ্যসূত্র

একটি মন্তব্য করুন

আপনার ইমেল ঠিকানা প্রকাশ করা হবে না. প্রয়োজনীয় ক্ষেত্রগুলি চিহ্নিত করা হয়েছে *