دعم بروتوكول أمان طبقة النقل (TLS) فـي IoT Hub

يستخدم IoT Hub بروتوكول أمان طبقة النقل (TLS) لتأمين الاتصالات مـن أجهزة IoT وخدماته. يتم حاليًا دعم ثلاثة إصدارات مـن بروتوكول TLS، وهي الإصدارات 1.0 و1.1 و1.2.

تعتبر TLS 1.0 و1.1 قديمة ومن المُخطط إهمالها. لمزيد مـن المعلومات، راجع إهمال TLS 1.0 و1.1 لـ IoT Hub. لتجنب المشكلات المستقبلية، استخدم TLS 1.2 كإصدار TLS الوحيد عند الاتصال بـ IoT Hub.

شهادة TLS لـخادم IoT Hub

أثناء تأكيد اتصال TLS، يقدم IoT Hub شهادات خادم ذات مفتاح RSA لتوصيل العملاء. في الماضي، كانت جميع الشهادات متجذرة من المرجع المصدق الجذري ل بالتيمور للثقة الإلكترونية. نظرا لأن جذر بالتيمور في نهاية العمر الافتراضي، فإننا بصدد الترحيل إلى جذر جديد يسمى DigiCert Global G2. يؤثر هذا الترحيل على جميع الأجهزة المتصلة حاليا ب IoT Hub. لمزيد من المعلومات، راجع تحديث شهادة IoT TLS.

على الرغم من أن عمليات ترحيل المرجع المصدق الجذري نادرة، فمن أجل المرونة في مشهد الأمان الحديث، يجب إعداد سيناريو IoT الخاص بك للحدث غير المحتمل الذي يتعرض فيه المرجع المصدق الجذري للخطر أو أن ترحيل المرجع المصدق الجذري في حالات الطوارئ ضروري. نوصي بشدة بأن تثق جميع الأجهزة في المراجع المصدقة الجذرية الثلاثة التالية:

  • Baltimore CyberTrust root CA
  • DigiCert Global G2 root CA
  • Microsoft RSA root CA 2017

للحصول على ارتباطات لتنزيل هذه الشهادات، راجع تفاصيل مرجع شهادات Azure.

شهادة TLS لخـادم التشفير البيضاوي (ECC) (معاينة)

تتوفر شهادة TLS لخادم IoT Hub ECC للمُعاينة العامة. أثناء تقديم أمان مشابه لشهادات RSA، يستخدم التحقق من صحة شهادة ECC (مع مجموعات التشفير ECC فقط) ما يصل إلى 40٪ أقل مـن الحوسبة والذاكرة وعرض النطاق الترددي. تعتبر هذه المدخرات مهمة لأجهزة IoT نظرًا لصغر حجمها وذاكرتها، ولدعم حالات الاستخدام في البيئات المحدودة لعرض النطاق الترددي للشبكة.

نوصي بشدة بأن تثق جميع الأجهزة التي تستخدم ECC في اثنين من المراجع المصدقة الجذرية التالية:

  • DigiCert Global G3 root CA
  • Microsoft RSA root CA 2017

للحصول على ارتباطات لتنزيل هذه الشهادات، راجع تفاصيل مرجع شهادات Azure.

لمُعاينة شهادة خادم ECC لـ IoT Hub:

  1. إنشاء مركز IoT جديد مـع تشغيل وضع المعاينة.
  2. قم بتكوين العميل الخاص بك لتضمين مجموعات تشفير ECDSA فقطواستبعاد أي مجموعات RSA. هذه هي مجموعات التشفير المدعومة للمعاينة العامة لشهادة ECC:
    • TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
    • TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
    • TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
    • TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
  3. قم بتوصيل العميل بمركز IoT للمُعاينة.

إنفاذ TLS 1.2 متوفر فـي مناطق محددة

لمزيد مـن الأمان، قم بتكوين IoT Hubs للسماح فقط باتصالات العميل التي تستخدم إصدار TLS 1.2 وفرض استخدام مجموعات التشفير. هذه الميزة مدعومة فقط فـي هذه المناطق:

  • شرق الولايات المتحدة
  • South Central US
  • West US 2
  • US Gov – أريزونا
  • US Gov - فيرجينيا (دعم TLS 1.0/1.1 غير متوفر فـي هذه المنطقة - يجب تمكين إنفاذ TLS 1.2 أو فشل إنشاء مركز IoT)

لتمكين فرض TLS 1.2، اتبع الخطوات الواردة فـي إنشاء مركز IoT في مدخل Microsoft Azure، باستثناء

  • اختر منطقة مـن واحدة في القائمة أعلاه.

  • ضمن Management -> Advanced -> Transport Layer Security (TLS) -> الـحد الأدنى لإصدار TLS، حدد 1.2. يظهر هذا الإعداد فقط لمركز IoT الذي تم إنشاؤه فـي المنطقة المدعومة.

    Screenshot showing how to turn on TLS 1.2 enforcement during IoT hub creation

لاستخدام قالب ARM للإنشاء، قم بتوفير IoT Hub جديد فـي أي من المناطق المدعومة وتعيين minTlsVersionالخاصية إلى 1.2 في مواصفات المورد:

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "resources": [
        {
            "type": "Microsoft.Devices/IotHubs",
            "apiVersion": "2020-01-01",
            "name": "<provide-a-valid-resource-name>",
            "location": "<any-of-supported-regions-below>",
            "properties": {
                "minTlsVersion": "1.2"
            },
            "sku": {
                "name": "<your-hubs-SKU-name>",
                "tier": "<your-hubs-SKU-tier>",
                "capacity": 1
            }
        }
    ]
}

سوف يرفض مورد IoT Hub الذي تم إنشاؤه باستخدام هذا التكوين عملاء الجهاز والخدمة الذين يحاولون الاتصال باستخدام إصدارات TLS 1.0 و1.1. وبالمثل، سيتم رفض تأكيد اتصال TLS إذا ClientHello لم تسرد الرسالة أيًا من الشفرات الموصى بها.

إشعار

minTlsVersion الخاصية للقراءة فقط ولا يمكن تغييرها بمجرد إنشاء مورد IoT Hub. لذلك من الضروري أن تختبر وتتحقق بشكل صحيح من توافق جميع أجهزة وخدمات IoT مع TLS 1.2 والشفرات الموصى بها مسبقًا.

عند تجاوز الفشل، سوف تظل خاصية minTlsVersion IoT Hub فعالة في المنطقة المقترنة جغرافيًا بعد تجاوز الفشل.

مجموعات التشفير

سوف تفرض مراكز IoT التي تم تكوينها لقبول TLS 1.2 فقط أيضًا استخدام مجموعات التشفير الموصى بها التالية:

  • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384

بالنسبة لـ IoT Hubs غير المكونة لإنفاذ TLS 1.2، لا يزال TLS 1.2 يعمل مع مجموعات التشفير التالية:

  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
  • TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
  • TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
  • TLS_RSA_WITH_AES_256_GCM_SHA384
  • TLS_RSA_WITH_AES_128_GCM_SHA256
  • TLS_RSA_WITH_AES_256_CBC_SHA256
  • TLS_RSA_WITH_AES_128_CBC_SHA256
  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
  • TLS_RSA_WITH_AES_256_CBC_SHA
  • TLS_RSA_WITH_AES_128_CBC_SHA
  • TLS_RSA_WITH_3DES_EDE_CBC_SHA(سيتم إهمال هذا التشفير في 10/01/2022 ولن يتم استخدامه بعد الآن لمصافحات TLS)

يُمكن للعميل اقتراح قائمة مجموعات تشفير أعلى لاستخدامها أثناء ClientHello. ومع ذلك، قد لا يكون بعضها مدعومًا من قبل IoT Hub (على سبيل المثال، ECDHE-ECDSA-AES256-GCM-SHA384). في هذه الحالة، سوف يحاول IoT Hub اتباع تفضيل العميل، ولكن في النهاية التفاوض على مجموعة التشفير باستخدام ServerHello.

تكوين TLS لـ SDK وIoT Edge

استخدم الارتباطات أدناه لتكوين TLS 1.2 والشفرات المَسموح بها في SDKs لعميل IoT Hub.

اللغة الإصدارات التي تَدعم TLS 1.2 الوثائق
C العلامة 2019-12-11 أو أحدث الارتباط
Python الإصدار 2.0.0 أو أحـدث الارتباط
C#‎ الإصـدار 1.21.4 أو أحـدث الارتباط
Java الإصـدار 1.19.0 أو أحـدث الارتباط
NodeJS الإصـدار 1.12.2 أو أحـدث الارتباط

يمكن تكوين أجهزة IoT Edge لاستخدام TLS 1.2 عند الاتصال بـ IoT Hub. لهـذا الغرض، استخدم صفحة وثائق IoT Edge.

مصادقة الجهاز

بعد تأكيد اتصال TLS ناجح، يمكن لـ IoT Hub مصُادقة جهاز باستخدام مفتاح متماثل أو شهادة X.509. بالنسبة للمصادقة المستندة إلى الشهادة، يمكن أن تكون هذه أي شهادة X.509، بما فـي ذلك ECC. يتحقق IoT Hub مـن صحة الشهادة مقابل بصمة الإبهام أو المرجع المصدق (CA) الذي توفره. لمَعرفة المزيد، راجع شهادات X.509 المدعومة.

دعم TLS المتبادل

تضمن مصادقة TLS المتبادلة مصادقة العميل لشهادة الخادم (IoT Hub) ومصادقةالخادم (IoT Hub) لشهادة العميل X.509 أو بصمة الإبهام X.509. يتم تنفيذ التخويل بواسطة IoT Hub بعد اكتمال المصادقة .

بالنسبة لبروتوكولات AMQP وMQTT، يطلب IoT Hub شهادة عميل في تأكيد اتصال TLS الأولي. إذا تم توفير واحد، يقوم IoT Hub بمصادقة شهادة العميل ويصادق العميل على شهادة IoT Hub. تسمى هذه العملية مصادقة TLS المتبادلة. عندما يتلقى IoT Hub حزمة اتصال MQTT أو يفتح ارتباط AMQP، يقوم IoT Hub بإجراء تخويل للعميل الطالب ويحدد ما إذا كان العميل يتطلب مصادقة X.509. إذا تم إكمال مصادقة TLS المتبادلة وتم تفويض العميل للاتصال كجهاز، يسمح بذلك. ومع ذلك، إذا كان العميل يتطلب مصادقة X.509 ولم يتم إكمال مصادقة العميل أثناء تأكيد اتصال TLS، فإن IoT Hub يرفض الاتصال.

بالنسبة لبروتوكول HTTP، عندما يقدم العميل طلبه الأول، يتحقق IoT Hub مما إذا كان العميل يتطلب مصادقة X.509 وإذا اكتملت مصادقة العميل، يقوم IoT Hub بإجراء التخويل. إذا لم تكتمل مصادقة العميل، فإن IoT Hub يرفض الاتصال

تثبيت الشهادة

لا ينصح بشدة بتثبيت الشهادات وتصفيتها لشهادات خادم TLS (المعروفة باسم الشهادات الطرفية) والشهادات المتوسطة المقترنة بنقاط نهاية IoT Hub حيث تقوم Microsoft بشكل متكرر بطرح هذه الشهادات مع إشعار بسيط أو بدون إشعار. إذا كان يجب عليك تثبيت الشهادات الجذر فقط كما هو موضح في منشور مدونة Azure IoTهذا.

التفاوض على طول الجزء الأقصى لـ TLS (معاينة)

يدعم IoT Hub أيضًا التفاوض على طول جزء TLS الأقصى، والذي يعرف أحيانًا باسم التفاوض على حجم إطار TLS. هذه الميزة قيد المعاينة العامة.

استخدم هذه الميزة لتحديد الحد الأقصى لطول جزء النص العادي إلـى قيمة أصغر من 2^14 بايت افتراضي. بمجرد التفاوض، يبدأ IoT Hub والعميل فـي تجزئة الرسائل لضمان أن جميع الأجزاء أصغر من طول التفاوض. هذا السلوك مفيد لحساب الأجهزة المُقيدة أو الذاكرة. لمَعرفة المزيد، راجع مواصفات ملحق TLS الرسمية.

دعم SDK الرسمي لميزة المعاينة العامة هـذه غير متوفر بعد. لبدء

  1. إنشاء مركز IoT جديد مـع تشغيل وضع المعاينة.
  2. عند استخدام OpenSSL، استدعي SSL_CTX_set_tlsext_max_fragment_length لتحديد حجم الجزء.
  3. قم بتوصيل العميل الخاص بك بمعاينة IoT Hub.

الخطوات التالية