ক্যারিয়ার ওয়াই-ফাই

ক্যারিয়ার ওয়াই-ফাই হল একটি অটোকানেকশন বৈশিষ্ট্য (এনক্রিপ্টেড IMSI ব্যবহার করে) যা অ্যান্ড্রয়েড 9 এবং তার পরবর্তী সংস্করণে উপলব্ধ যা ডিভাইসগুলিকে স্বয়ংক্রিয়ভাবে ক্যারিয়ার-প্রয়োগকৃত ওয়াই-ফাই নেটওয়ার্কের সাথে সংযুক্ত হতে দেয়। উচ্চ যানজট বা স্টেডিয়াম বা ভূগর্ভস্থ ট্রেন স্টেশনের মতো ন্যূনতম সেল কভারেজ সহ এলাকায়, ক্যারিয়ার ওয়াই-ফাই ব্যবহারকারীদের সংযোগ অভিজ্ঞতা এবং অফলোড ট্র্যাফিক উন্নত করতে পারে।

ক্যারিয়ার ওয়াই-ফাই বৈশিষ্ট্যযুক্ত ডিভাইসগুলি স্বয়ংক্রিয়ভাবে কনফিগার করা ক্যারিয়ার ওয়াই-ফাই নেটওয়ার্কগুলির সাথে সংযুক্ত হয় (পাবলিক কী সার্টিফিকেট সহ নেটওয়ার্ক)। যখন কোনও ব্যবহারকারী ম্যানুয়ালি কোনও ক্যারিয়ার ওয়াই-ফাই নেটওয়ার্ক থেকে সংযোগ বিচ্ছিন্ন করে, তখন নেটওয়ার্কটি 24 ঘন্টার জন্য অস্বীকার তালিকাভুক্ত থাকে (কোনও স্বয়ংক্রিয় সংযোগ নেই)। ব্যবহারকারীরা যেকোনো সময় অস্বীকার তালিকাভুক্ত নেটওয়ার্কগুলির সাথে ম্যানুয়ালি সংযোগ করতে পারেন।

বাস্তবায়ন

ক্যারিয়ার ওয়াই-ফাই বাস্তবায়নের জন্য ডিভাইস নির্মাতা এবং ক্যারিয়ারদের নিম্নলিখিতগুলি করতে হবে।

নির্মাতারা

অ্যান্ড্রয়েড ১১ এবং তার পরবর্তী ভার্সন চালিত ডিভাইসগুলির জন্য, প্রতিটি ক্যারিয়ারের জন্য ওয়াই-ফাই প্রোফাইল যোগ করতে ওয়াই-ফাই সাজেশন API ব্যবহার করুন।

অ্যান্ড্রয়েড ১০ বা তার আগের ভার্সনে চলমান ডিভাইসগুলির জন্য, ক্যারিয়ার কনফিগার ম্যানেজারে প্রতিটি ক্যারিয়ারের জন্য carrier_wifi_string_array প্যারামিটার কনফিগার করে Wi-Fi প্রোফাইল যোগ করুন।

  • carrier_wifi_string_array :

    একটি স্ট্রিং অ্যারে যেখানে প্রতিটি স্ট্রিং এন্ট্রি একটি Base64-এনকোডেড Wi-Fi SSID এবং একটি EAP টাইপ যা একটি কমা দ্বারা পৃথক করা হয়, যেখানে EAP টাইপ একটি পূর্ণসংখ্যা ( Extensible Authentication Protocol (EAP) Registry দেখুন)। উদাহরণস্বরূপ, নিম্নলিখিত কনফিগারেশনটি EAP-AKA ব্যবহার করে SOME_SSID_NAME এবং EAP-SIM ব্যবহার করে Some_Other_SSID এর জন্য:

    config {
      key: "carrier_wifi_string_array"
      text_array {
        item: "U09NRV9TU0lEX05BTUUK,23"
        item: "U29tZV9PdGhlcl9TU0lECg==,18"
      }
    }
    

ক্যারিয়ার কনফিগার ম্যানেজারে , প্রতিটি ক্যারিয়ারের জন্য নিম্নলিখিত প্যারামিটারগুলি কনফিগার করুন:

  • imsi_key_availability_int :

    IMSI এনক্রিপশনের জন্য ব্যবহৃত কীটি WLAN (বিট 1 সেট করা আছে), EPDG (বিট 0 সেট করা আছে), অথবা উভয়ের জন্য (বিট 0 এবং বিট 1 উভয়ই সেট করা আছে) উপলব্ধ কিনা তা সনাক্ত করে। উদাহরণস্বরূপ, নিম্নলিখিত কনফিগারেশনটি নির্দেশ করে যে IMSI এনক্রিপশন WLAN এর জন্য উপলব্ধ কিন্তু EPDG এর জন্য নয়:

    config {
      key: "imsi_key_availability_int"
      int_value: 2
    }
    
  • imsi_key_download_url_string :

    যে URL থেকে IMSI এনক্রিপশনের জন্য ব্যবহৃত ক্যারিয়ারের পাবলিক কী ধারণকারী প্রোটো ডাউনলোড করা হয়। উদাহরণস্বরূপ, নিম্নলিখিত কনফিগারেশনটি একটি নির্দিষ্ট URL প্রদান করে:

    config {
      key: "imsi_key_download_url_string"
      text_value: "https://www.some_company_name.com:5555/some_directory_name/some_filename.json"
    }
    
  • allow_metered_network_for_cert_download_bool : একটি ফ্ল্যাগ যা নির্দেশ করে যে একটি মিটারযুক্ত (সেলুলার) নেটওয়ার্কের মাধ্যমে ক্যারিয়ারের পাবলিক কী ডাউনলোড করার অনুমতি দেওয়া হবে কিনা। যদি এই ফ্ল্যাগটি সেট না করা থাকে, তাহলে Wi-Fi সংযোগ ছাড়াই একটি নতুন ডিভাইস ক্যারিয়ার ওয়াই-ফাই নেটওয়ার্কের সাথে সংযোগ করতে পারবে না কারণ এটি কী ডাউনলোড করার অনুমতি পাবে না।

    config {
      key: "allow_metered_network_for_cert_download_bool"
      bool_value: true
    }
    

বাহক

ক্যারিয়ার ওয়াই-ফাই বাস্তবায়নের জন্য, ক্যারিয়ারকে অবশ্যই IMSI গোপনীয়তা সুরক্ষা সক্ষম করতে হবে এবং একটি পাবলিক কী প্রদান করতে হবে।

IMSI গোপনীয়তা সুরক্ষা

অ্যান্ড্রয়েড পাবলিক কী ক্রিপ্টোগ্রাফি ব্যবহার করে গ্রাহকের স্থায়ী পরিচয় (IMSI) গোপনীয়তা রক্ষা করে। অ্যান্ড্রয়েড ওয়াই-ফাইয়ের জন্য IMSI গোপনীয়তা সুরক্ষার জন্য ওয়্যারলেস ব্রডব্যান্ড অ্যালায়েন্স (WBA) স্পেসিফিকেশন প্রয়োগ করে। যখন কোনও সংযোগের জন্য IMSI গোপনীয়তা সুরক্ষা সক্ষম করা হয়, তখন স্থায়ী গ্রাহকের পরিচয় স্পষ্টভাবে প্রেরণ করা হয় না।

স্থায়ী পরিচয় এনক্রিপশন

এনক্রিপ্ট করা স্থায়ী পরিচয়ের ফর্ম্যাটটি নিম্নরূপ:

  • স্থায়ী পরিচয় <EAP-Method><IMSI>@<NAI realm> ফর্ম্যাটে।
  • EAP-Method উপসর্গ হল একটি একক অক্টেট যা প্রমাণীকরণের জন্য ব্যবহৃত EAP পদ্ধতিকে সংজ্ঞায়িত করে:
    • 0 : ইএপি-ওরফে
    • 1 : ইএপি-সিম
    • 6 : ইএপি-ওরফে'
  • NAI রিয়েলম ফর্ম্যাট হল wlan.mnc<var>XXX</var>.mcc<var>YYY</var>.3gppnetwork.org যেখানে XXX সিম কার্ডের মোবাইল নেটওয়ার্ক কোড (MNC) দিয়ে এবং YYY মোবাইল কান্ট্রি কোড (MCC) দিয়ে প্রতিস্থাপিত করা হয়।
  • ক্যারিয়ার কর্তৃক প্রদত্ত একটি RSA পাবলিক কী ব্যবহার করে স্থায়ী পরিচয় এনক্রিপ্ট করা হয়। পাবলিক কীটি একটি X.509 সার্টিফিকেটে অন্তর্ভুক্ত থাকে।
  • এনক্রিপশন স্কিমটি হল RSAES-OAEP যার ক্রিপ্টোগ্রাফিক হ্যাশ ফাংশন হিসেবে SHA-256 ব্যবহার করা হয়েছে। এই এনক্রিপশন স্কিমটি প্রতিবার ব্যবহারের সময় একটি অনন্য সাইফার টেক্সটের নিশ্চয়তা দেয়, ফলে ট্র্যাকযোগ্য হতে পারে এমন আরেকটি স্থায়ী পরিচয় এড়ানো যায়।
  • RSA কী দৈর্ঘ্য ২০৪৮ বিট।
  • এনক্রিপশন বাফারটি 256 বাইট।
  • সাইফার টেক্সটটি Base64 দিয়ে এনকোড করা আছে।
  • আউটপুট এনক্রিপ্ট করা স্থায়ী পরিচয়ের দৈর্ঘ্য 344 বাইট।
Encrypted Permanent Identity = Base64(RSAES-OAEP-SHA-256(<EAP-Method><IMSI>@<NAI Realm>))
কী শনাক্তকারী

কী শনাক্তকারী হল একটি ঐচ্ছিক অ্যাট্রিবিউট মান জোড়া যা ক্যারিয়ার একটি সার্টিফিকেটের সাথে সংযুক্ত করে যাতে সার্ভার প্রমাণীকরণের সময় সঠিক ব্যক্তিগত কীটি সনাক্ত করতে পারে। কী শনাক্তকারীর একটি উদাহরণ হল CertificateSerialNumber=123456 । যদি কী শনাক্তকারী প্রদান করা হয়, তাহলে এটি প্রমাণীকরণ প্রক্রিয়ার অংশ হিসাবে স্পষ্টভাবে পাঠানো হয়।

সিম-ভিত্তিক EAP প্রমাণীকরণ পদ্ধতিতে পরিবর্তন

যখন কোনও সংযোগে IMSI গোপনীয়তা সুরক্ষা সক্ষম করা থাকে, তখন সিস্টেমটি EAP-Request/Identity প্রাপ্তির পরে স্থায়ী পরিচয় পাঠায় না, পরিবর্তে এটি একটি বেনামী লগইন দিয়ে সাড়া দেয়:

SERVER: EAP-Request/Identity
UE: EAP-Response/Identity AT_IDENTITY=<prefix>|anonymous@<NAI Realm>

<prefix> ঐচ্ছিক। যদি enable_eap_method_prefix_bool ক্যারিয়ার কনফিগারেশন true তে সেট করা থাকে, তাহলে পরিচয়ের প্রথম অক্ষর ( anonymous এর আগে) EAP এক্সচেঞ্জ শুরু হওয়ার আগে ব্যবহৃত EAP পদ্ধতির ধরণ সম্পর্কে সার্ভারকে অবহিত করে।

  • 0 : ইএপি-ওরফে
  • 1 : ইএপি-সিম
  • 6 : ইএপি-ওরফে'

যদি ক্যারিয়ার কনফিগারেশন false তে সেট করা থাকে, তাহলে এই উপসর্গটি বার্তায় অন্তর্ভুক্ত করা হবে না।

প্রতিক্রিয়ায়, সার্ভার একটি EAP-Request/AKA-Identity বার্তা পাঠায় এবং সিস্টেমটি নিম্নলিখিত বিন্যাসে প্রতিক্রিয়া জানায়:

SERVER: EAP-Request/AKA-Identity AT_ANY_ID_REQ
UE: EAP-Response/AKA-Identity AT_IDENTITY=<prefix>|<Encrypted Permanent Identity>|","|"<attribute>=<value>"

পরিচয়ের প্রথম অক্ষরটি সার্ভারকে জানায় যে একটি এনক্রিপ্ট করা পরিচয় ব্যবহৃত হচ্ছে, অথবা কনফিগার করা EAP পদ্ধতির ধরণ:

  • \0 : এনক্রিপ্ট করা স্থায়ী পরিচয়
  • 0 : ইএপি-ওরফে
  • 1 : ইএপি-সিম
  • 6 : ইএপি-ওরফে'

কী আইডেন্টিফায়ার অ্যাট্রিবিউট ভ্যালু পেয়ারটি ঐচ্ছিক এবং ব্যবহার না করা হলে এনক্রিপ্ট করা স্থায়ী আইডেন্টিটির শেষে যুক্ত করা হয় না।

এই মুহুর্তে, সার্ভার কী শনাক্তকারী (যদি সরবরাহ করা হয়) থেকে প্রাইভেট কীটি সনাক্ত করে, ক্যারিয়ার প্রাইভেট কী ব্যবহার করে এনক্রিপ্ট করা পরিচয়টি ডিক্রিপ্ট করে এবং স্বাভাবিক EAP প্রবাহ চালিয়ে যায়।

সফল প্রমাণীকরণের পরে, সার্ভার একটি দ্রুত পুনঃপ্রমাণীকরণ পরিচয় বা একটি অস্থায়ী পরিচয় (ছদ্মনাম) প্রদান করতে পারে, যা পরবর্তী সংযোগগুলিতে ব্যবহৃত হয়। যদি সার্ভার দ্বারা কোনও অস্থায়ী পরিচয় প্রদান না করা হয়, তাহলে সিস্টেম পরবর্তী সংযোগে এনক্রিপ্ট করা পরিচয় পাঠায়।

ক্যারিয়ার সার্টিফিকেট পুনরুদ্ধার, মেয়াদোত্তীর্ণকরণ এবং প্রত্যাহার

যদি সিস্টেমে কোনও শংসাপত্র ইনস্টল না থাকে, তাহলে সিস্টেমটি HTTP GET পদ্ধতি ব্যবহার করে একটি শংসাপত্র ডাউনলোড করতে imsi_key_download_url_string ক্যারিয়ার কনফিগারেশনে প্রদত্ত URL ব্যবহার করে। allow_metered_network_for_cert_download_bool ক্যারিয়ার কনফিগারেশনটি true তে সেট করা থাকলেই সিস্টেমটি সেলুলার ডেটা ব্যবহার করে। অন্যথায়, শুধুমাত্র Wi-Fi সংযোগ উপলব্ধ থাকলেই সিস্টেমটি শংসাপত্র ডাউনলোড করে।

সিস্টেম সার্টিফিকেটের মেয়াদ শেষ হওয়ার তারিখ কার্যকর করে। সিস্টেম সার্টিফিকেটের মেয়াদ শেষ হওয়ার ২১ দিন আগে সার্টিফিকেট পুনর্নবীকরণের চেষ্টা শুরু করে এবং নতুন সার্টিফিকেট ডাউনলোড করার জন্য একই URL ব্যবহার করে।

যদি সার্ভার এনক্রিপ্ট করা পরিচয়টি ডিক্রিপ্ট করতে না পারে, তাহলে সার্ভার EAP এক্সচেঞ্জ বন্ধ করার জন্য AT_NOTIFICATION কোড General Failure (16384) সহ একটি EAP-Request/AKA-Notification বার্তা পাঠায়।

যদি সার্টিফিকেটটি বাতিল করা হয় বা মেয়াদোত্তীর্ণ হয়, তাহলে সার্ভারটি EAP এক্সচেঞ্জটি বন্ধ করার জন্য AT_NOTIFICATION কোড Certificate Replacement Required (16385) সহ একটি EAP-Request/AKA-Notification বার্তা পাঠায়। প্রতিক্রিয়ায়, সিস্টেমটি সার্টিফিকেটটি সরাতে হবে কিনা এবং একই URL থেকে একটি নতুন সার্টিফিকেট ডাউনলোড করার চেষ্টা করতে হবে কিনা তা নির্ধারণ করার জন্য অভ্যন্তরীণ হিউরিস্টিক প্রয়োগ করে।

পাবলিক কী প্রদান করুন

একটি সার্ভারে একটি সর্বজনীন URL প্রদান করুন, বিশেষ করে TLS এর উপর HTTP ব্যবহার করে, যা ক্যারিয়ারের সার্টিফিকেট হোস্ট করে যেখানে:

  1. সার্টিফিকেট থেকে পাবলিক কী এবং মেয়াদোত্তীর্ণতা বের করা যেতে পারে।
  2. সার্ভার থেকে তথ্য JSON ফর্ম্যাটে নিম্নরূপ:

    Property: key-identifier
    Type: String
    Encoding: UTF-8
    Description: Specifies an identifier that the carrier would like to attach to the certificate.
    Optional: Yes
    
    Property: certificate
    Property alternative name: public-key
    Type: String
    Encoding: Base64
    Description: The content of the carrier's X.509 certificate.
    Optional: No
    
    Property: key-type
    Type: String
    Encoding: UTF-8
    Description: Specifies the module that will use the key. The value for type must be either WLAN or EPDG.
    Optional: Yes. If the key-type property isn't included, then its value defaults to WLAN.
    

    নিচে একটি পাবলিক কী-এর উদাহরণ দেওয়া হল।

    {
    "carrier-keys" : [ {
      "key-identifier" : "CertificateSerialNumber=5xxe06d4",
      "public-key" : "-----BEGIN CERTIFICATE-----\r\nTIIDRTCCAi2gAwIBAgIEVR4G1DANBgkqhkiG9w0BAQsFADBTMQswCQYDVQQGEwJVUzELMAkGA1UE\r\nCBMCTkExCzAJBgNVBAcTAk5BMQswCQYDVQQKEwJOQTELMAkGA1UECxMCTkExEDAOBgNVBAMTB1Rl\r\nc3RiT6N1/w==\r\n-----END CERTIFICATE-----"
    } ]
    }