ক্যারিয়ার ওয়াই-ফাই হল একটি স্বয়ংক্রিয়-সংযোগ বৈশিষ্ট্য (এনক্রিপ্ট করা IMSI ব্যবহার করে) Android 9 এবং উচ্চতর সংস্করণে উপলব্ধ যা ডিভাইসগুলিকে স্বয়ংক্রিয়ভাবে ক্যারিয়ার-বাস্তবায়িত Wi-Fi নেটওয়ার্কগুলির সাথে সংযোগ করতে দেয়৷ উচ্চ যানজটের এলাকায় বা স্টেডিয়াম বা ভূগর্ভস্থ ট্রেন স্টেশনের মতো ন্যূনতম সেল কভারেজ সহ, ব্যবহারকারীদের সংযোগের অভিজ্ঞতা উন্নত করতে এবং ট্র্যাফিক অফলোড করতে ক্যারিয়ার ওয়াই-ফাই ব্যবহার করা যেতে পারে।
ক্যারিয়ার ওয়াই-ফাই বৈশিষ্ট্য সহ ডিভাইসগুলি স্বয়ংক্রিয়ভাবে কনফিগার করা ক্যারিয়ার ওয়াই-ফাই নেটওয়ার্কগুলির সাথে সংযুক্ত হয় (একটি সর্বজনীন কী শংসাপত্র সহ নেটওয়ার্কগুলি)৷ যখন একজন ব্যবহারকারী ম্যানুয়ালি একটি ক্যারিয়ার ওয়াই-ফাই নেটওয়ার্ক থেকে সংযোগ বিচ্ছিন্ন করে, তখন নেটওয়ার্কটি 24 ঘন্টার জন্য কালো তালিকাভুক্ত হয় (কোন স্বয়ংক্রিয়-সংযোগ নেই)। ব্যবহারকারীরা ম্যানুয়ালি যে কোনো সময় কালো তালিকাভুক্ত নেটওয়ার্কের সাথে সংযোগ করতে পারেন।
বাস্তবায়ন
বাহক ওয়াই-ফাই বাস্তবায়নের জন্য ডিভাইস নির্মাতা এবং ক্যারিয়ারদের অবশ্যই নিম্নলিখিতগুলি করতে হবে৷
নির্মাতারা
অ্যান্ড্রয়েড 11 এবং উচ্চতর সংস্করণে চলমান ডিভাইসগুলির জন্য, প্রতিটি ক্যারিয়ারের জন্য Wi-Fi প্রোফাইল যুক্ত করতে Wi-Fi সাজেশন API ব্যবহার করুন।
10 বা তার নিচে চলমান ডিভাইসগুলির জন্য, ক্যারিয়ার কনফিগার ম্যানেজারে প্রতিটি ক্যারিয়ারের জন্য carrier_wifi_string_array
প্যারামিটার কনফিগার করে Wi-Fi প্রোফাইল যোগ করুন।
carrier_wifi_string_array
: একটি স্ট্রিং অ্যারে যেখানে প্রতিটি স্ট্রিং এন্ট্রি একটি বেস64-এনকোডেড Wi-Fi SSID এবং একটি EAP প্রকার একটি কমা দ্বারা পৃথক করা হয়, যেখানে EAP প্রকারটি একটি পূর্ণসংখ্যা ( এক্সটেনসিবল অথেনটিকেশন প্রোটোকল (EAP) রেজিস্ট্রি পড়ুন)। উদাহরণস্বরূপ, নিম্নলিখিত কনফিগারেশনটি SOME_SSID_NAME এর জন্য EAP-AKA ব্যবহার করে এবং Some_Other_SSID EAP-SIM ব্যবহার করে: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 সংযোগ ছাড়াই একটি নতুন ডিভাইস ক্যারিয়ার Wi-Fi নেটওয়ার্কের সাথে সংযোগ করতে সক্ষম হবে না কারণ এটি কী ডাউনলোড করার অনুমতি পাবে না৷config { key: "allow_metered_network_for_cert_download_bool" bool_value: true }
বাহক
ক্যারিয়ার ওয়াই-ফাই বাস্তবায়ন করতে, ক্যারিয়ারকে অবশ্যই IMSI গোপনীয়তা সুরক্ষা সক্ষম করতে হবে এবং একটি সর্বজনীন কী প্রদান করতে হবে৷
IMSI গোপনীয়তা সুরক্ষা
অ্যান্ড্রয়েড পাবলিক কী ক্রিপ্টোগ্রাফি ব্যবহার করে গ্রাহকের স্থায়ী পরিচয়ের (IMSI) গোপনীয়তা রক্ষা করে। Android Wi-Fi এর জন্য IMSI গোপনীয়তা সুরক্ষার জন্য ওয়্যারলেস ব্রডব্যান্ড অ্যালায়েন্স (WBA) স্পেসিফিকেশন প্রয়োগ করে৷ যখন একটি সংযোগের জন্য IMSI গোপনীয়তা সুরক্ষা সক্ষম করা হয়, তখন স্থায়ী গ্রাহকের পরিচয় পরিষ্কারভাবে প্রেরণ করা হয় না।
স্থায়ী পরিচয় এনক্রিপশন
এনক্রিপ্ট করা স্থায়ী পরিচয়ের বিন্যাসটি নিম্নরূপ:
- স্থায়ী পরিচয়
<EAP-Method><IMSI>@<NAI realm>
এর বিন্যাসে। - EAP- পদ্ধতি উপসর্গ হল একটি একক অক্টেট যা প্রমাণীকরণের জন্য ব্যবহৃত EAP পদ্ধতিকে সংজ্ঞায়িত করে:
-
0
: EAP-AKA -
1
: ইএপি-সিম -
6
: EAP-AKA'
-
- NAI realm ফরম্যাট হল
wlan.mnc XXX .mcc YYY .3gppnetwork.org
যেখানেXXX
সিম কার্ডের মোবাইল নেটওয়ার্ক কোড (MNC) দিয়ে প্রতিস্থাপিত হয়েছে এবংYYY
মোবাইল কান্ট্রি কোড (MCC) দিয়ে প্রতিস্থাপিত হয়েছে। - স্থায়ী পরিচয় ক্যারিয়ার দ্বারা প্রদত্ত একটি RSA পাবলিক কী ব্যবহার করে এনক্রিপ্ট করা হয়। সর্বজনীন কী একটি X.509 শংসাপত্রে অন্তর্ভুক্ত করা হয়েছে।
- এনক্রিপশন স্কিম হল RSAES-OAEP যার সাথে SHA-256 ক্রিপ্টোগ্রাফিক হ্যাশ ফাংশন। এই এনক্রিপশন স্কিমটি প্রতিবার স্কিমটি ব্যবহার করার সময় একটি অনন্য সাইফার পাঠ্যের গ্যারান্টি দেয়, এইভাবে আরেকটি স্থায়ী পরিচয় এড়ানো যায় যা ট্র্যাকযোগ্য হতে পারে।
- RSA কী দৈর্ঘ্য 2048 বিট।
- এনক্রিপশন বাফার হল 256 বাইট।
- সাইফার টেক্সট বেস64 দিয়ে এনকোড করা হয়েছে।
- আউটপুট এনক্রিপ্ট করা স্থায়ী পরিচয় দৈর্ঘ্য 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
: EAP-AKA -
1
: ইএপি-সিম -
6
: EAP-AKA'
যদি ক্যারিয়ার কনফিগারেশন 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
: EAP-AKA -
1
: ইএপি-সিম -
6
: EAP-AKA'
মূল শনাক্তকারী অ্যাট্রিবিউট মান জোড়া ঐচ্ছিক এবং এনক্রিপ্ট করা স্থায়ী পরিচয়ের শেষে যুক্ত করা হয় না যদি ব্যবহার না হয়।
এই মুহুর্তে, সার্ভার কী শনাক্তকারী (যদি প্রদান করা হয়) থেকে ব্যক্তিগত কী সনাক্ত করে, ক্যারিয়ার ব্যক্তিগত কী ব্যবহার করে এনক্রিপ্ট করা পরিচয় ডিক্রিপ্ট করে এবং স্বাভাবিক EAP প্রবাহ অব্যাহত রাখে।
সফল প্রমাণীকরণের পরে, সার্ভার একটি দ্রুত পুনঃপ্রমাণকরণ পরিচয় বা একটি অস্থায়ী পরিচয় (ছদ্মনাম) প্রদান করতে পারে, যা পরবর্তী সংযোগগুলিতে ব্যবহৃত হয়। সার্ভার দ্বারা কোনো অস্থায়ী পরিচয় প্রদান না করা হলে, সিস্টেম পরবর্তী সংযোগে এনক্রিপ্ট করা পরিচয় পাঠায়।
ক্যারিয়ার শংসাপত্র পুনরুদ্ধার, মেয়াদ শেষ হওয়া এবং প্রত্যাহার
যে ক্ষেত্রে সিস্টেমে কোনো শংসাপত্র ইনস্টল করা নেই, সিস্টেমটি HTTP GET পদ্ধতি ব্যবহার করে একটি শংসাপত্র ডাউনলোড করতে imsi_key_download_url_string
ক্যারিয়ার কনফিগারেশনে প্রদত্ত URL ব্যবহার করে। সিস্টেম সেলুলার ডেটা ব্যবহার করে শুধুমাত্র যদি allow_metered_network_for_cert_download_bool
ক্যারিয়ার কনফিগারেশন true
সেট করা থাকে। অন্যথায়, একটি Wi-Fi সংযোগ উপলব্ধ থাকলেই সিস্টেমটি শংসাপত্রটি ডাউনলোড করে৷
শংসাপত্রের মেয়াদ শেষ হওয়া সিস্টেম দ্বারা প্রয়োগ করা হয়। সিস্টেমটি শংসাপত্রের মেয়াদ শেষ হওয়ার তারিখের 21 দিন আগে শংসাপত্রগুলি পুনর্নবীকরণ করার চেষ্টা শুরু করে এবং নতুন শংসাপত্র ডাউনলোড করতে একই 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 ব্যবহার করে, যা ক্যারিয়ারের শংসাপত্র হোস্ট করে যেখানে:
- সার্টিফিকেট থেকে সর্বজনীন কী এবং মেয়াদ উত্তোলন করা যেতে পারে।
সার্ভার থেকে তথ্য 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-----" } ] }