मोबाइल और इंटरनेट सेवा देने वाली कंपनी का वाई-फ़ाई

मोबाइल और इंटरनेट सेवा देने वाली कंपनी का वाई-फ़ाई, Android 9 और इसके बाद के वर्शन में उपलब्ध, अपने-आप कनेक्ट होने की सुविधा है. यह सुविधा, एन्क्रिप्ट (सुरक्षित) किए गए IMSI का इस्तेमाल करती है. इससे डिवाइस, मोबाइल और इंटरनेट सेवा देने वाली कंपनी के वाई-फ़ाई नेटवर्क से अपने-आप कनेक्ट हो जाते हैं. स्टेडियम या अंडरग्राउंड ट्रेन स्टेशन जैसी जगहों पर, जहां नेटवर्क की समस्या ज़्यादा होती है या जहां सेल कवरेज कम होता है, वहां मोबाइल और इंटरनेट सेवा देने वाली कंपनी का वाई-फ़ाई, उपयोगकर्ताओं के कनेक्टिविटी अनुभव को बेहतर बना सकता है और ट्रैफ़िक को कम कर सकता है.

मोबाइल और इंटरनेट सेवा देने वाली कंपनी के वाई-फ़ाई की सुविधा वाले डिवाइस, कॉन्फ़िगर किए गए वाई-फ़ाई नेटवर्क से अपने-आप कनेक्ट हो जाते हैं. ये ऐसे नेटवर्क होते हैं जिनमें सार्वजनिक पासकोड सर्टिफ़िकेट होता है. जब कोई उपयोगकर्ता, मोबाइल और इंटरनेट सेवा देने वाली कंपनी के वाई-फ़ाई नेटवर्क से मैन्युअल तरीके से डिसकनेक्ट होता है, तो उस नेटवर्क को 24 घंटे के लिए ब्लॉक कर दिया जाता है. इस दौरान, वह नेटवर्क अपने-आप कनेक्ट नहीं होता. उपयोगकर्ता, ब्लॉक किए गए नेटवर्क से किसी भी समय मैन्युअल तरीके से कनेक्ट हो सकते हैं.

लागू करना

मोबाइल और इंटरनेट सेवा देने वाली कंपनी का वाई-फ़ाई लागू करने के लिए, डिवाइस बनाने वाली कंपनियों और मोबाइल और इंटरनेट सेवा देने वाली कंपनियों को यह काम करना होगा.

डिवाइस बनाने वाली कंपनियां

Android 11 और इसके बाद के वर्शन पर काम करने वाले डिवाइसों के लिए, हर मोबाइल और इंटरनेट सेवा देने वाली कंपनी के लिए वाई-फ़ाई प्रोफ़ाइल जोड़ने के लिए, वाई-फ़ाई के सुझाव देने वाले एपीआई का इस्तेमाल करें.

Android 10 या इससे पहले के वर्शन पर काम करने वाले डिवाइसों के लिए, मोबाइल और इंटरनेट सेवा देने वाली कंपनी के कॉन्फ़िग मैनेजर में, हर मोबाइल और इंटरनेट सेवा देने वाली कंपनी के लिए carrier_wifi_string_array पैरामीटर कॉन्फ़िगर करके, वाई-फ़ाई प्रोफ़ाइल जोड़ें.

  • carrier_wifi_string_array:

    यह स्ट्रिंग कलेक्शन है. इसमें मौजूद हर स्ट्रिंग एंट्री, Base64 कोड में बदला गया वाई-फ़ाई एसएसआईडी और एक EAP टाइप होती है. इन्हें कॉमा से अलग किया जाता है. इसमें EAP टाइप एक पूर्णांक होता है. ज़्यादा जानकारी के लिए, एक्सटेंसिबल ऑथेंटिकेशन प्रोटोकॉल (EAP) रजिस्ट्री देखें. उदाहरण के लिए, यहां दिया गया कॉन्फ़िगरेशन, 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:

    यह वह यूआरएल है जिससे, IMSI को एन्क्रिप्ट (सुरक्षित) करने के लिए इस्तेमाल की गई मोबाइल और इंटरनेट सेवा देने वाली कंपनी की सार्वजनिक पासकोड वाली प्रोटो फ़ाइल डाउनलोड की जाती है. उदाहरण के लिए, यहां दिए गए कॉन्फ़िगरेशन में एक खास यूआरएल दिया गया है:

    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: यह एक फ़्लैग है. इससे यह पता चलता है कि मोबाइल और इंटरनेट सेवा देने वाली कंपनी के सार्वजनिक पासकोड को, मीटर वाले (मोबाइल) नेटवर्क पर डाउनलोड करने की अनुमति देनी है या नहीं. अगर यह फ़्लैग सेट नहीं है, तो वाई-फ़ाई कनेक्टिविटी के बिना कोई नया डिवाइस, मोबाइल और इंटरनेट सेवा देने वाली कंपनी के वाई-फ़ाई नेटवर्क से कनेक्ट नहीं हो पाएगा. ऐसा इसलिए, क्योंकि उसे कुंजी डाउनलोड करने की अनुमति नहीं होगी.

    config {
      key: "allow_metered_network_for_cert_download_bool"
      bool_value: true
    }
    

मोबाइल और इंटरनेट सेवा देने वाली कंपनियां

मोबाइल और इंटरनेट सेवा देने वाली कंपनी के वाई-फ़ाई को लागू करने के लिए, मोबाइल और इंटरनेट सेवा देने वाली कंपनी को IMSI की निजता सुरक्षा की सुविधा चालू करनी होगी और सार्वजनिक पासकोड उपलब्ध कराना होगा.

IMSI की निजता सुरक्षा

Android, सार्वजनिक पासकोड क्रिप्टोग्राफ़ी का इस्तेमाल करके, किसी सदस्य की स्थायी पहचान (IMSI) की गोपनीयता को सुरक्षित रखता है. Android, वाई-फ़ाई के लिए IMSI की निजता सुरक्षा के लिए, वायरलेस ब्रॉडबैंड अलायंस (डब्ल्यूबीए) की खास जानकारी को लागू करता है. जब किसी कनेक्शन के लिए IMSI की निजता सुरक्षा की सुविधा चालू की जाती है, तो सदस्य की स्थायी पहचान को वायरलेस तरीके से सादे टेक्स्ट में ट्रांसमिट नहीं किया जाता.

स्थायी पहचान को एन्क्रिप्ट (सुरक्षित) करना

एन्क्रिप्ट (सुरक्षित) की गई स्थायी पहचान का फ़ॉर्मैट इस तरह होता है:

  • स्थायी पहचान, <EAP-Method><IMSI>@<NAI realm> के फ़ॉर्मैट में होती है.
  • EAP-Method प्रीफ़िक्स एक ऑक्टेट होता है. यह उस EAP तरीके के बारे में बताता है जिसका इस्तेमाल पुष्टि के लिए किया जाता है:
    • 0: EAP-AKA
    • 1: EAP-SIM
    • 6: EAP-AKA'
  • NAI realm का फ़ॉर्मैट wlan.mnc<var>XXX</var>.mcc<var>YYY</var>.3gppnetwork.org होता है. इसमें XXX की जगह सिम कार्ड का मोबाइल नेटवर्क कोड (एमएनसी) और YYY की जगह मोबाइल कंट्री कोड (एमसीसी) डाला जाता है.
  • स्थायी पहचान को, मोबाइल और इंटरनेट सेवा देने वाली कंपनी की ओर से उपलब्ध कराए गए आरएसए सार्वजनिक पासकोड का इस्तेमाल करके एन्क्रिप्ट (सुरक्षित) किया जाता है. सार्वजनिक पासकोड, X.509 सर्टिफ़िकेट में शामिल होता है.
  • एन्क्रिप्ट (सुरक्षित) करने का तरीका, RSAES-OAEP है. इसमें SHA-256 को क्रिप्टोग्राफ़िक हैश फ़ंक्शन के तौर पर इस्तेमाल किया जाता है. एन्क्रिप्ट (सुरक्षित) करने के इस तरीके से, हर बार एक यूनीक सिफ़र टेक्स्ट जनरेट होता है. इससे एक और स्थायी पहचान जनरेट होने से बचती है जिसे ट्रैक किया जा सकता है.
  • आरएसए कुंजी की लंबाई 2048 बिट होती है.
  • एन्क्रिप्ट (सुरक्षित) करने का बफ़र 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 पर सेट है, तो पहचान का पहला वर्ण (EAP एक्सचेंज शुरू होने से पहले anonymous) सर्वर को, EAP एक्सचेंज शुरू होने से पहले इस्तेमाल किए गए EAP तरीके के बारे में बताता है.

  • 0: EAP-AKA
  • 1: EAP-SIM
  • 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: EAP-SIM
  • 6: EAP-AKA'

कुंजी आइडेंटिफ़ायर एट्रिब्यूट की वैल्यू पेयर एक विकल्प है. अगर इसका इस्तेमाल नहीं किया जाता है, तो इसे एन्क्रिप्ट (सुरक्षित) की गई स्थायी पहचान के आखिर में नहीं जोड़ा जाता.

इस समय, सर्वर कुंजी आइडेंटिफ़ायर (अगर उपलब्ध कराया गया है) से निजी पासकोड ढूंढता है. इसके बाद, मोबाइल और इंटरनेट सेवा देने वाली कंपनी के निजी पासकोड का इस्तेमाल करके, एन्क्रिप्ट (सुरक्षित) की गई पहचान को डिक्रिप्ट करता है. इसके बाद, सामान्य EAP फ़्लो जारी रहता है.

पुष्टि होने के बाद, सर्वर, तेज़ी से फिर से पुष्टि करने के लिए पहचान या अस्थायी पहचान (छद्म नाम) उपलब्ध करा सकता है. इसका इस्तेमाल, बाद के कनेक्शन में किया जाता है. अगर सर्वर, अस्थायी पहचान उपलब्ध नहीं कराता है, तो सिस्टम, बाद के कनेक्शन में एन्क्रिप्ट (सुरक्षित) की गई पहचान भेजता है.

मोबाइल और इंटरनेट सेवा देने वाली कंपनी के सर्टिफ़िकेट को वापस पाना, उसकी समयसीमा खत्म होना, और उसे रद्द करना

अगर सिस्टम में कोई सर्टिफ़िकेट इंस्टॉल नहीं है, तो सिस्टम, imsi_key_download_url_string मोबाइल और इंटरनेट सेवा देने वाली कंपनी के कॉन्फ़िगरेशन में दिए गए यूआरएल का इस्तेमाल करके, एचटीटीपी जीईटी तरीके से सर्टिफ़िकेट डाउनलोड करता है. सिस्टम, मोबाइल डेटा का इस्तेमाल सिर्फ़ तब करता है, जब allow_metered_network_for_cert_download_bool मोबाइल और इंटरनेट सेवा देने वाली कंपनी का कॉन्फ़िगरेशन true पर सेट हो. इसके अलावा, सिस्टम, वाई-फ़ाई कनेक्शन उपलब्ध होने पर ही सर्टिफ़िकेट डाउनलोड करता है.

सर्टिफ़िकेट की समयसीमा खत्म होने की तारीख को सिस्टम लागू करता है. सिस्टम, सर्टिफ़िकेट की समयसीमा खत्म होने की तारीख से 21 दिन पहले, सर्टिफ़िकेट रिन्यू करने की कोशिश शुरू कर देता है. साथ ही, नया सर्टिफ़िकेट डाउनलोड करने के लिए, उसी यूआरएल का इस्तेमाल करता है.

अगर सर्वर, एन्क्रिप्ट (सुरक्षित) की गई पहचान को डिक्रिप्ट नहीं कर पाता है, तो सर्वर, AT_NOTIFICATION कोड General Failure (16384) के साथ EAP-Request/AKA-Notification मैसेज भेजता है, ताकि EAP एक्सचेंज को खत्म किया जा सके.

अगर सर्टिफ़िकेट रद्द कर दिया जाता है या उसकी समयसीमा खत्म हो जाती है, तो सर्वर, AT_NOTIFICATION कोड Certificate Replacement Required (16385) के साथ EAP-Request/AKA-Notification मैसेज भेजता है, ताकि EAP एक्सचेंज को खत्म किया जा सके. इसके जवाब में, सिस्टम इंटरनल ह्यूरिस्टिक्स लागू करके यह तय करता है कि सर्टिफ़िकेट हटाना है या नहीं. साथ ही, यह तय करता है कि उसी यूआरएल से नया सर्टिफ़िकेट डाउनलोड करना है या नहीं.

सार्वजनिक पासकोड उपलब्ध कराना

किसी सर्वर के लिए, सार्वजनिक यूआरएल उपलब्ध कराएं. इसके लिए, टीएलएस पर एचटीटीपी का इस्तेमाल करें. इस यूआरएल पर, मोबाइल और इंटरनेट सेवा देने वाली कंपनी का सर्टिफ़िकेट होस्ट किया जाता है. इसमें:

  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-----"
    } ]
    }