بروتوكول التطبيق المقيد
بروتوكول التطبيقات المقيدة ( CoAP ) هو بروتوكول تطبيقات إنترنت متخصص قائم على بروتوكول UDP ، مُصمم للأجهزة ذات الموارد المحدودة، كما هو مُحدد في RFC 7252 (المنشور عام 2014). يُمكّن هذا البروتوكول الأجهزة ذات الموارد المحدودة، والتي تُسمى "عُقدًا"، من التواصل مع شبكة الإنترنت الأوسع باستخدام بروتوكولات مماثلة. صُمم CoAP للاستخدام بين الأجهزة على نفس الشبكة ذات الموارد المحدودة (مثل الشبكات منخفضة الطاقة أو المعرضة لفقدان البيانات)، وبين الأجهزة والعُقد العامة على الإنترنت، وبين الأجهزة على شبكات ذات موارد محدودة مختلفة متصلة جميعها بالإنترنت. يُستخدم CoAP أيضًا عبر آليات أخرى، مثل الرسائل النصية القصيرة (SMS) على شبكات الاتصالات المتنقلة.
بروتوكول CoAP هو بروتوكول طبقة التطبيق، مصمم للاستخدام في أجهزة الإنترنت ذات الموارد المحدودة، مثل عقد شبكات الاستشعار اللاسلكية . صُمم CoAP ليُترجم بسهولة إلى HTTP لتسهيل التكامل مع الويب، مع تلبية متطلبات خاصة مثل دعم البث المتعدد ، وانخفاض الحمل الزائد، والبساطة. [ 1 ] [ 2 ] يُعدّ البث المتعدد، وانخفاض الحمل الزائد، والبساطة من العوامل المهمة لإنترنت الأشياء (IoT) والتواصل بين الأجهزة (M2M)، والتي غالبًا ما تكون مُدمجة وتتمتع بذاكرة ومصدر طاقة أقل بكثير من أجهزة الإنترنت التقليدية. لذلك، تُعدّ الكفاءة بالغة الأهمية. يمكن تشغيل CoAP على معظم الأجهزة التي تدعم بروتوكول UDP أو ما يُماثله.
قامت مجموعة عمل بيئات RESTful المقيدة ( CoRE ) التابعة لفرقة عمل هندسة الإنترنت ( IETF ) بالعمل الرئيسي على توحيد هذا البروتوكول. ولجعل البروتوكول مناسبًا لتطبيقات إنترنت الأشياء (IoT) وتطبيقات الاتصال بين الآلات (M2M)، أُضيفت إليه وظائف جديدة متنوعة.
مواصفة
تم تحديد جوهر البروتوكول في RFC 7252. وقد تم اقتراح العديد من الامتدادات، ولا سيما:
- RFC 7641 (2015) مراقبة الموارد في بروتوكول التطبيق المقيد
- RFC 7959 (2016) عمليات النقل على مستوى الكتل في بروتوكول التطبيقات المقيدة (CoAP)
- RFC 8323 (2018) بروتوكول التطبيقات المقيدة (CoAP) عبر TCP وTLS و WebSockets
- RFC 8974 (2021) الرموز الموسعة والعملاء عديمي الحالة في بروتوكول التطبيقات المقيدة (CoAP)
تنسيقات الرسائل
يستخدم بروتوكول CoAP نوعين من الرسائل، الطلبات والاستجابات، باستخدام تنسيق رأس ثنائي بسيط. يرتبط CoAP افتراضيًا ببروتوكول UDP ، ويمكن ربطه اختياريًا ببروتوكول DTLS ، مما يوفر مستوى عالٍ من أمان الاتصالات. عند الربط ببروتوكول UDP، يجب أن تتسع الرسالة بأكملها ضمن حزمة بيانات واحدة. عند استخدامه مع بروتوكول 6LoWPAN كما هو محدد في RFC 4944، يجب أن تتسع الرسائل ضمن إطار IEEE 802.15.4 واحد لتقليل التجزئة.
يبلغ طول أصغر رسالة CoAP أربعة بايتات، وذلك في حال حذف حقول الرمز المميز والخيارات والحمولة، أي إذا اقتصرت على رأس CoAP فقط. يلي الرأس قيمة الرمز المميز (من 0 إلى 8 بايتات)، والتي قد تليها قائمة بالخيارات بتنسيق مُحسَّن من النوع والطول والقيمة. تُعتبر أي بايتات تلي الرأس والرمز المميز والخيارات (إن وُجدت) حمولة الرسالة، والتي تُسبق بعلامة الحمولة (0xFF) المكونة من بايت واحد. ويُستدل على طول الحمولة من طول حزمة البيانات.
| إزاحة ثمانية بت | 0 | 1 | 2 | 3 | |||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| إزاحة البت | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | |
| 4 | 32 | الإصدار | يكتب | طول الرمز المميز | رمز الطلب/الاستجابة | معرف الرسالة | |||||||||||||||||||||||||||
| 8 | 64 | رمز مميز (0-8 بايت) | |||||||||||||||||||||||||||||||
| 12 | 96 | ||||||||||||||||||||||||||||||||
| 16 | 128 | الخيارات (إن وجدت) | |||||||||||||||||||||||||||||||
| 20 | 160 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | الحمولة (إن وجدت) | |||||||||||||||||||||||
رأس CoAP ذو الحجم الثابت
تعتبر البايتات الأربعة الأولى إلزامية في جميع حزم بيانات CoAP، فهي تشكل رأس الحزمة ذي الحجم الثابت.
يمكن استخراج هذه الحقول من هذه البايتات الأربعة في لغة C عبر وحدات الماكرو التالية:
#define COAP_HEADER_VERSION(data) ( (0xC0 & (data)[0]) >> 6 ) #define COAP_HEADER_TYPE(data) ( (0x30 & (data)[0]) >> 4 ) #define COAP_HEADER_TKL(data) ( (0x0F & (data)[0]) >> 0 ) #define COAP_HEADER_CLASS(data) ( ((data)[1] >> 5) & 0x07 ) #define COAP_HEADER_CODE(data) ( ((data)[1] >> 0) & 0x1F ) #define COAP_HEADER_MID(data) ( ((data)[2] << 8) | (data)[3] )الإصدار (ver) (2 بت)
- يشير إلى رقم إصدار بروتوكول CoAP.
النوع (2 بت)
- يصف هذا نوع رسالة مخطط البيانات لسياق نوعي الرسائل للطلب والاستجابة.
- طلب
- 0 : قابل للتأكيد : تتوقع هذه الرسالة رسالة تأكيد مقابلة.
- 1 : غير قابل للتأكيد : هذه الرسالة لا تتطلب رسالة تأكيد.
- إجابة
- 2 : الإقرار : هذه الرسالة هي رد يؤكد استلام رسالة قابلة للتأكيد.
- 3 : إعادة الضبط : تشير هذه الرسالة إلى أنه تم استلام رسالة ولكن لم يتمكن من معالجتها.
- طلب
طول الرمز المميز (4 بتات)
- يشير إلى طول حقل الرمز المميز ذي الطول المتغير، والذي قد يتراوح طوله بين 0 و8 بايت.
رمز الطلب/الاستجابة (8 بتات)
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|
| فصل | شفرة | ||||||
تُشكّل البتات الثلاث الأكثر أهمية رقمًا يُعرف باسم "الفئة"، وهو مشابه لفئة رموز حالة HTTP . أما البتات الخمس الأقل أهمية فتُشكّل رمزًا يُقدّم تفاصيل إضافية حول الطلب أو الاستجابة. وعادةً ما يُرسل الرمز كاملًا بالشكل التالي class.code:
يمكنك العثور على أحدث رموز طلب/استجابة بروتوكول CoAP على، على الرغم من أن القائمة أدناه تقدم بعض الأمثلة:
- الطريقة: 0.XX
- فارغ
- يحصل
- بريد
- يضع
- يمسح
- أحضر
- رقعة
- iPATCH
- نجاح: 2.XX
- مخلوق
- تم الحذف
- صالح
- تم التغيير
- محتوى
- يكمل
- خطأ من جانب العميل: 4.XX
- اقتراح غير جيد
- غير مصرح به
- خيار سيئ
- مُحرَّم
- غير موجود
- الطريقة غير مسموح بها
- غير مقبول
- كيان الطلب غير مكتمل
- صراع
- فشل الشرط المسبق
- حجم كيان الطلب كبير جدًا
- تنسيق المحتوى غير مدعوم
- خطأ في الخادم: 5.XX
- خطأ في الخادم الداخلي
- لم يتم التنفيذ
- بوابة سيئة
- الخدمة غير متوفرة
- مهلة البوابات
- لا يدعم النظام استخدام البروكسي
- رموز الإشارة: 7.XX
- غير مُعيّن
- مدير خدمة العملاء
- بينغ
- بونغ
- يطلق
- إجهاض
معرّف الرسالة (16 بت)
- يستخدم للكشف عن تكرار الرسائل ومطابقة الرسائل من نوع التأكيد/إعادة التعيين مع الرسائل من نوع قابل للتأكيد/غير قابل للتأكيد.
رمز مميز
يحمل كل طلب رمزًا مميزًا (قد يكون فارغًا) تم توليد قيمته من قِبل العميل. يجب على الخادم إعادة إرسال قيمة كل رمز مميز إلى العميل في الاستجابة المقابلة دون أي تعديل. يُستخدم هذا الرمز كمعرّف محلي للعميل لمطابقة الطلبات والاستجابات، وخاصةً للطلبات المتزامنة.
لا تتم مطابقة الطلبات والاستجابات باستخدام مُعرّف الرسالة، لأن الاستجابة قد تُرسل في رسالة مختلفة عن رسالة التأكيد (التي تستخدم مُعرّف الرسالة للمطابقة). على سبيل المثال، يُمكن القيام بذلك لتجنب إعادة الإرسال إذا استغرق الحصول على النتيجة بعض الوقت. تُسمى هذه الاستجابة المنفصلة "استجابة منفصلة". في المقابل، يُسمى إرسال الاستجابة مباشرةً في رسالة التأكيد "استجابة مُدمجة"، ومن المتوقع أن تكون هذه الطريقة مُفضلة لأسباب تتعلق بالكفاءة.
خيار
| موضع البت | |||||||
|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| دلتا الخيار | طول الخيار | ||||||
| خيار دلتا الموسع (لا شيء، 8 بت، 16 بت) | |||||||
| تم تمديد طول الخيار (لا شيء، 8 بت، 16 بت) | |||||||
| قيمة الخيار | |||||||
دلتا الخيار:
- من 0 إلى 12: بالنسبة للفرق بين 0 و12: يمثل هذا القيمة الدقيقة للفرق بين مُعرّف الخيار الأخير ومُعرّف الخيار المطلوب، دون أي قيمة إضافية للفرق.
- 13: بالنسبة لقيمة دلتا من 13 إلى 268: قيمة دلتا الخيار الموسعة هي قيمة مكونة من 8 بتات تمثل قيمة دلتا الخيار مطروحًا منها 13
- 14: بالنسبة لقيمة دلتا من 269 إلى 65804: قيمة دلتا الخيار الموسعة هي قيمة 16 بت تمثل قيمة دلتا الخيار مطروحًا منها 269
- 15: محجوز لعلامة الحمولة، حيث يتم تعيين دلتا الخيار وطول الخيار معًا على 0xFF.
طول الخيار:
- من 0 إلى 12: بالنسبة لطول الخيار بين 0 و12: يمثل هذا القيمة الدقيقة للطول، دون أي قيمة ممتدة لطول الخيار.
- 13: بالنسبة لطول الخيار من 13 إلى 268: يمثل طول الخيار الممتد قيمة 8 بت تمثل قيمة طول الخيار مطروحًا منها 13
- 14: بالنسبة لطول الخيار من 269 إلى 65804: يمثل طول الخيار الممتد قيمة 16 بت تمثل قيمة طول الخيار مطروحًا منها 269
- 15: محجوز للاستخدام المستقبلي. من الخطأ تعيين حقل طول الخيار إلى 0xFF.
قيمة الخيار:
- يتم تحديد حجم حقل قيمة الخيار بواسطة قيمة طول الخيار بالبايت.
- يعتمد المعنى والتنسيق لهذا الحقل على الخيار المعني.
تطبيقات البروتوكول النشطة
| اسم | لغة البرمجة | تم تطبيق إصدار CoAP | العميل/الخادم | ميزات بروتوكول CoAP المُطبقة | رخصة | وصلة |
|---|---|---|---|---|---|---|
| غطاء | دارت | RFC 7252 | عميل | عمليات النقل على مستوى الكتل، والمراقبة، والبث المتعدد، والوساطة (جزئيًا) | معهد ماساتشوستس للتكنولوجيا | https://github.com/shamblett/coap |
| أيوكواب | بايثون 3 | RFC 7252، RFC 7641، RFC 7959، RFC 8323، RFC 7967، RFC 8132، RFC 9176، RFC 8613، RFC 9528 | العميل + الخادم | عمليات نقل على مستوى الكتل، ملاحظة (جزئية) | معهد ماساتشوستس للتكنولوجيا | pypi.python.org/pypi/aiocoap |
| الكاليفورنيوم | جافا | RFC 7252، RFC 7641، RFC 7959 | العميل + الخادم | ملاحظة، عمليات النقل على مستوى الكتل، البث المتعدد (منذ الإصدار 2.x)، DTLS (+ معرف اتصال DTLS 1.2) | الدوري الإنجليزي الممتاز + دوري الدرجة الثانية الإنجليزي | www.eclipse.org/californium github.com/eclipse/californium |
| CoAPSharp | سي شارب، دوت نت | RFC 7252 | العميل + الخادم | أساسي، مراقبة، كتلة، RD | معهد ماساتشوستس للتكنولوجيا | github.com/FemtomaxInc/coapsharp |
| FreeCoAP | ج | RFC 7252 | العميل + الخادم + وكيل HTTP/CoAP | النواة، DTLS، عمليات النقل على مستوى الكتلة | بي إس دي | github |
| Go-CoAP | يذهب | RFC 7252، RFC 8232، RFC 7641، RFC 7959 | العميل + الخادم | النواة، المراقبة، على مستوى الكتلة، البث المتعدد، TCP/TLS | رخصة أباتشي 2.0 | github.com/plgd-dev/go-coap |
| جافا-كوب | جافا | RFC 7252، RFC 7641، RFC 7959، RFC 8323 | العميل + الخادم | رخصة أباتشي 2.0 | github | |
| libcoap | ج | RFC 7252، RFC 7390، RFC 7641، RFC 7959، RFC 7967، RFC 8132، RFC 8323، RFC 8516، RFC 8613، RFC 8768، RFC 8974، RFC 9175، RFC 9177 | العميل + الخادم | النواة، المراقبة، البث المتعدد، عمليات النقل على مستوى الكتل، التصحيح/الجلب، OSCORE، (D)TLS | رخصة BSD/GPL | https://github.com/obgm/libcoap |
| libcoapy | بايثون | نفس الدعم الذي توفره مكتبة libcoap | معهد ماساتشوستس للتكنولوجيا | github.com/anyc/libcoapy | ||
| lobaro-coap | ج | RFC 7252 | العميل + الخادم | ملاحظة، التحويلات على مستوى الكتل | معهد ماساتشوستس للتكنولوجيا | www.lobaro.com/lobaro-coap |
| microCoAPy | مايكرو بايثون | RFC 7252 | العميل + الخادم | جوهر | رخصة أباتشي 2.0 | github.com/insighio/microCoAPy |
| نانوكوب | ج | RFC 7252 | العميل + الخادم | النواة، عمليات النقل على مستوى الكتل، DTLS | إل جي بي إل | api.riot-os.org/group__net__nanocoap.html |
| عقدة | جافا سكريبت | RFC 7252، RFC 7641، RFC 7959 | العميل + الخادم | النواة، الملاحظة، الكتلة | معهد ماساتشوستس للتكنولوجيا | github.com/mcollina/node-coap |
| كيو تي كواب | لغة سي++ | RFC 7252 | عميل | التحويلات الأساسية، والمراقبة، والتحويلات على مستوى الكتل | رخصة جنو العمومية، تجاري | https://doc.qt.io/qt-6/qtcoap-index.html |
| coap-rs | الصدأ | RFC 7252 | العميل + الخادم | خيار المراقبة، البث المتعدد، الأساسي، رمز استجابة " عدد كبير جدًا من الطلبات" | معهد ماساتشوستس للتكنولوجيا | github.com/Covertness/coap-rs |
تطبيقات الوكيل
توجد تطبيقات بروكسي توفر وظائف بروكسي أمامي أو عكسي لبروتوكول CoAP، بالإضافة إلى تطبيقات تقوم بالترجمة بين بروتوكولات مثل HTTP و CoAP.
توفر المشاريع التالية وظائف الوكيل:
مشاريع تستخدم بروتوكول CoAP
| اسم | لغة البرمجة | تم تطبيق إصدار CoAP | العميل/الخادم | ميزات بروتوكول CoAP المُطبقة | رخصة | وصلة |
|---|---|---|---|---|---|---|
| كواب شل | جافا | RFC 7252 | عميل | مراقبة، عمليات النقل على مستوى الكتل، DTLS | رخصة أباتشي 2.0 | https://github.com/tzolov/coap-shell |
| نحاس | جافا سكريبت (إضافة للمتصفح) | RFC 7252 | عميل | ملاحظة، التحويلات على مستوى الكتل | BSD ثلاثي البنود | https://github.com/mkovatsc/Copper https://addons.mozilla.org/firefox/addon/copper-270430/ |
تطبيقات البروتوكول غير النشطة
| اسم | لغة البرمجة | تم تطبيق إصدار CoAP | العميل/الخادم | ميزات بروتوكول CoAP المُطبقة | رخصة | وصلة |
|---|---|---|---|---|---|---|
| لا يمكن أن يكون | C++/C | RFC 7252 | العميل + الخادم | بي إس دي | https://github.com/staropram/cantcoap | |
| كانوبوس | يذهب | RFC 7252 | العميل + الخادم | جوهر | رخصة أباتشي 2.0 | https://github.com/zubairhamed/canopus |
| تطبيق بروتوكول CoAP للغة Go | يذهب | RFC 7252 | العميل + الخادم | الاشتراك الأساسي + المسودة | معهد ماساتشوستس للتكنولوجيا | https://github.com/dustin/go-coap |
| CoAP.NET | سي شارب | RFC 7252، coap-13، coap-08، coap-03 | العميل + الخادم | التحويلات الأساسية، والمراقبة، والتحويلات على مستوى الكتل | BSD ثلاثي البنود | https://github.com/smeshlink/CoAP.NET |
| CoAPthon | بايثون | RFC 7252 | العميل + الخادم + وكيل التوجيه + وكيل عكسي | مراقبة، اكتشاف خادم البث المتعدد، تحليل تنسيق رابط CoRE، على مستوى الكتلة | معهد ماساتشوستس للتكنولوجيا | https://github.com/Tanganelli/CoAPthon |
| eCoAP | ج | RFC 7252 | العميل + الخادم | جوهر | معهد ماساتشوستس للتكنولوجيا | https://gitlab.com/jobol/ecoap |
| الإربيوم لـ Contiki | ج | RFC 7252 | العميل + الخادم | ملاحظة، التحويلات على مستوى الكتل | BSD ثلاثي البنود | http://www.contiki-os.org/ (er-rest-example) |
| حيلة | غايل | RFC 7252، RFC 8323 | العميل + الخادم | رخصة جنو العمومية 3.0 أو أحدث | https://codeberg.org/eris/guile-coap | |
| iCoAP | أوبجكتيف سي | RFC 7252 | عميل | التحويلات الأساسية، والمراقبة، والتحويلات على مستوى الكتل | معهد ماساتشوستس للتكنولوجيا | https://github.com/stuffrabbit/iCoAP |
| jCoAP | جافا | RFC 7252 | العميل + الخادم | ملاحظة، التحويلات على مستوى الكتل | رخصة أباتشي 2.0 | https://code.google.com/p/jcoap/ |
| LibNyoci | ج | RFC 7252 | العميل + الخادم | النواة، المراقبة، الحظر، DTLS | معهد ماساتشوستس للتكنولوجيا | https://github.com/darconeous/libnyoci |
| ميكروباب | ج | RFC 7252 | العميل + الخادم | معهد ماساتشوستس للتكنولوجيا | https://github.com/1248/microcoap | |
| nCoap | جافا | RFC 7252 | العميل + الخادم | مراقبة، عمليات نقل البيانات على مستوى الكتل، تنسيق رابط CoRE، مسودة معرف نقطة النهاية | بي إس دي | https://github.com/okleine/nCoAP |
| قبعة روبي | روبي | RFC 7252 | العميل + الخادم (ديفيد) | أساسي، مراقبة، كتلة، RD | معهد ماساتشوستس للتكنولوجيا، رخصة جنو العمومية | https://github.com/nning/coap https://github.com/nning/david |
| مكتبة أجهزة Sensinode C | ج | RFC 7252 | العميل + الخادم | أساسي، مراقبة، كتلة، RD | تجاري | https://silver.arm.com/browse/SEN00 |
| مكتبة أجهزة جافا Sensinode | جافا إس إي | RFC 7252 | العميل + الخادم | أساسي، مراقبة، كتلة، RD | تجاري | https://silver.arm.com/browse/SEN00 |
| منصة سينسينود نانو سيرفيس | جافا إس إي | RFC 7252 | خادم سحابي | أساسي، مراقبة، كتلة، RD | تجاري | https://silver.arm.com/browse/SEN00 |
| SwiftCoAP | سويفت | RFC 7252 | العميل + الخادم | التحويلات الأساسية، والمراقبة، والتحويلات على مستوى الكتل | معهد ماساتشوستس للتكنولوجيا | https://github.com/stuffrabbit/SwiftCoAP |
| TinyOS CoapBlip | nesC/C | coap-13 | العميل + الخادم | ملاحظة، التحويلات على مستوى الكتل | بي إس دي | https://web.archive.org/web/20130312140509/http://docs.tinyos.net/tinywiki/index.php/CoAP |
| txThings | بايثون (تويستد) | RFC 7252 | العميل + الخادم | عمليات نقل على مستوى الكتل، ملاحظة (جزئية) | معهد ماساتشوستس للتكنولوجيا | https://github.com/mwasilak/txThings/ |
| YaCoAP | ج | معهد ماساتشوستس للتكنولوجيا | https://github.com/RIOT-Makers/YaCoAP | |||
التواصل الجماعي لـ CoAP
في العديد من تطبيقات بروتوكول CoAP، من الضروري القدرة على مخاطبة عدة موارد CoAP كمجموعة واحدة، بدلاً من مخاطبة كل مورد على حدة (على سبيل المثال، تشغيل جميع مصابيح CoAP في غرفة بطلب CoAP واحد يتم تفعيله عن طريق تشغيل مفتاح الإضاءة). ولتلبية هذه الحاجة، طورت IETF امتدادًا اختياريًا لبروتوكول CoAP في شكل RFC تجريبي: الاتصال الجماعي لبروتوكول CoAP - RFC 7390 [ 3 ]. يعتمد هذا الامتداد على البث المتعدد لبروتوكول الإنترنت (IP multicast) لإيصال طلب CoAP إلى جميع أعضاء المجموعة. يوفر استخدام البث المتعدد مزايا معينة، مثل تقليل عدد الحزم اللازمة لإيصال الطلب إلى الأعضاء. ومع ذلك، فإن للبث المتعدد أيضًا قيودًا، مثل ضعف الموثوقية وعدم كفاءته في استخدام ذاكرة التخزين المؤقت. هناك طريقة بديلة للاتصال الجماعي لبروتوكول CoAP تستخدم البث الأحادي بدلاً من البث المتعدد، وتعتمد على وجود وسيط يتم من خلاله إنشاء المجموعات. يرسل العملاء طلباتهم الجماعية إلى الوسيط، الذي بدوره يرسل طلبات أحادية البث فردية إلى أعضاء المجموعة، ويجمع الردود منهم، ويرسل ردًا مجمعًا إلى العميل. [ 4 ]
حماية
يحدد بروتوكول CoAP أربعة أوضاع أمان: [ 5 ]
- NoSec، حيث يتم تعطيل DTLS
- في حالة تفعيل بروتوكول DTLS، توجد قائمة بالمفاتيح المشتركة مسبقًا، ويتضمن كل مفتاح قائمة بالعُقد التي يمكن استخدامه للتواصل معها. يجب أن تدعم الأجهزة مجموعة تشفير AES.
- يستخدم بروتوكول RawPublicKey، حيث يتم تفعيل DTLS ويستخدم الجهاز زوج مفاتيح غير متماثل بدون شهادة، ويتم التحقق من صحتها خارج النطاق. يجب أن تدعم الأجهزة مجموعة تشفير AES وخوارزميات المنحنى الإهليلجي لتبادل المفاتيح.
- الشهادة، حيث يتم تمكين DTLS ويستخدم الجهاز شهادات X.509 للتحقق.
أُجريت أبحاثٌ حول تحسين بروتوكول DTLS من خلال تطبيق شركاء الأمان كموارد CoAP بدلاً من استخدام DTLS كغلاف أمان لحركة مرور CoAP. وقد أشارت هذه الأبحاث إلى تحسينات تصل إلى 6.5 أضعاف في التطبيقات المُحسَّنة. [ 6 ]
بالإضافة إلى DTLS، يحدد RFC8613 [ 7 ] بروتوكول أمان الكائنات للبيئات المقيدة RESTful ( OSCORE ) الذي يوفر الأمان لـ CoAP على مستوى التطبيق.
قضايا أمنية
على الرغم من أن معيار البروتوكول يتضمن أحكامًا للتخفيف من خطر هجمات تضخيم DDoS ، [ 8 ] إلا أن هذه الأحكام لا يتم تطبيقها عمليًا، [ 9 ] مما أدى إلى وجود أكثر من 580,000 هدف تقع في المقام الأول في الصين وهجمات تصل سرعتها إلى 320 جيجابت/ثانية. [ 10 ]
انظر أيضاً
مراجع
- ↑ RFC 7252، بروتوكول التطبيقات المقيدة (CoAP)
- ↑ " دمج شبكات الاستشعار اللاسلكية مع الويب " مؤرشف في 30 أغسطس 2017 على موقع Wayback Machine ، والتر، كوليتي 2011
- ↑ RFC 7390، التواصل الجماعي لـ CoAP
- ↑ " اتصالات جماعية مرنة تعتمد على البث الأحادي للأجهزة التي تدعم تقنية CoAP "، Ishaq, I.; هوبيكي، J .؛ فان دن أبيلي، ف.؛ روسي، J.؛ مورمان، آي . ديميستر، P. أجهزة الاستشعار 2014
- ↑ RFC 7252، بروتوكول التطبيقات المقيدة (CoAP)
- ↑ كابوسيل، أنجيلو؛ سيرفو، فاليريو؛ دي تشيكو، جيانلوكا؛ بيتريولي، كيارا (يونيو 2015). "الأمان كمورد لبروتوكول CoAP: تطبيق مُحسَّن لبروتوكول DTLS لإنترنت الأشياء". المؤتمر الدولي للاتصالات IEEE لعام 2015 (ICC) . IEEE. الصفحات 529-554 . doi : 10.1109/ICC.2015.7248379 . ISBN 978-1-4673-6432-4. S2CID 12568959 .
- ↑ بالومبيني، فرانشيسكا؛ سيتز، لودفيج؛ سيلاندر، جوران؛ ماتسون، جون (2019). "أمن الكائنات لبيئات RESTful المقيدة (OSCORE)" . tools.ietf.org . doi : 10.17487/RFC8613 . S2CID 58380874. تاريخ الاسترجاع: 7 مايو 2021 .
- ↑ «بروتوكول TLS 1.3 سينقذنا جميعًا، وأسباب أخرى تجعل إنترنت الأشياء لا يزال غير آمن»، داني جرانت، 24 ديسمبر 2017
- ↑ "عندما تعجز الآلات عن الكلام: قضايا الأمن والخصوصية في بروتوكولات بيانات الاتصال بين الآلات"، فيديريكو ماجي وراينر فوسيلر، 6 ديسمبر 2018
- ↑ "بروتوكول CoAP هو التطور الأبرز القادم لهجمات DDoS"، كاتالين سيمبانو، 5 ديسمبر 2018
روابط خارجية
- RFC 7252 "بروتوكول التطبيقات المقيدة (CoAP)"
- coap.me – خادم اختبار CoAP تديره جامعة بريمن
- بروتوكول نقل النص التشعبي
- بروتوكولات طبقة التطبيق
- إنترنت الأشياء
