WebUSB
WebUSB هي مواصفات واجهة برمجة تطبيقات JavaScript (API) [ 1 ] لتوفير الوصول الآمن إلى أجهزة USB من تطبيقات الويب . [ 2 ]
تم نشره بواسطة مجموعة حاضنة منصات الويب. اعتبارًا من يوليو 2021، هو في حالة مسودة مجتمعية، ويدعمه [ 3 ] المتصفحات المبنية على كروميوم .
مقدمة
ناقل التسلسل العالمي ( USB) هو بروتوكول اتصال قياسي يُستخدم لنقل البيانات عبر الموصلات والكابلات من أجهزة الكمبيوتر إلى الأجهزة الطرفية أو أجهزة كمبيوتر أخرى. [ 4 ] WebUSB عبارة عن مجموعة من واجهات برمجة التطبيقات (APIs) التي تُمكّن الوصول إلى هذه الأجهزة من صفحات الويب. وقد طوّرها اتحاد شبكة الويب العالمية (W3C). [ 1 ] توفر واجهة برمجة تطبيقات WebUSB وسيلة آمنة ومألوفة للمطورين للتواصل مع الأجهزة الطرفية من صفحات الويب. تتكامل واجهة برمجة تطبيقات WebUSB مع مكتبات USB الحالية، وتُقلل من دورة تطوير دمج الأجهزة الجديدة في بيئة الويب، إذ لا تتطلب انتظار دعم المتصفحات لهذه الأجهزة.
ظهرت الإصدارات الأولى من WebUSB كبديل لتقنية Flash وChrome Serial وغيرها من الطرق المخصصة لربط المتصفحات بالأجهزة. يهدف WebUSB إلى تحقيق الأهداف الأربعة لأي واجهة مستخدم، وهي: سرعة الإنشاء، والتوافق مع مختلف الأنظمة، والمظهر الجذاب، وسهولة الوصول. [ 5 ]
تطبيق على بنية إنترنت الأشياء (IoT)
تستطيع واجهات برمجة تطبيقات WebUSB ربط بروتوكولات الأجهزة ببروتوكولات الإنترنت، مما يتيح إنشاء بوابات موحدة تربط الأجهزة الطرفية بالشبكات المركزية. [ 6 ]
أدى التطور الهائل في القدرات الحاسوبية خلال العقود القليلة الماضية إلى زيادة في الأجهزة الطرفية. وتُدمج أجهزة مثل المصابيح، ومقاييس الحرارة ، وأنظمة التكييف والتهوية ، والمحركات بشكل متزايد في خوادم التحكم المركزية عبر الإنترنت. [ 7 ] وقد تطورت هذه الأجهزة من بيئات تطوير معزولة وغير متكاملة سابقًا. ونتيجة لذلك، تفتقر إلى بروتوكول اتصال موحد ومتسق ضروري لتوفير اتصال فوري بخدمة ويب. يعمل إطار عمل واجهة برمجة تطبيقات WebUSB على توحيد البروتوكولات المتباينة، وهو قادر على إتاحة الوصول إلى الأجهزة غير القياسية المتوافقة مع ناقل USB التسلسلي العالمي (USB) عبر الإنترنت. [ 8 ]
يبدو أن WebUSB يقع بين طبقة الإدراك وطبقة الشبكة. [ 6 ] تتمثل الأهداف الرئيسية للبرمجيات في هذه البوابة في: قابلية التوسع، والتكلفة، والموثوقية. يُمكّن نشر مكتبات WebUSB عبر الحوسبة السحابية من تحقيق قابلية التوسع، كما أن انخفاض تكاليف التشغيل يُقلل التكلفة بشكل ملحوظ، وقد مكّن التطوير المستمر لها طوال فترة استخدامها من الوصول إلى درجة عالية من الموثوقية. [ 9 ]
شكّل WebUSB حجر الزاوية في إطار عمل بنية BIPES (المنصة المتكاملة القائمة على الكتل للأنظمة المدمجة). يهدف نموذج بنية الأنظمة هذا إلى تبسيط تطوير أنظمة إنترنت الأشياء من خلال تجميع البرامج ذات الصلة في "كتل" تمثل وحدات برمجية كاملة، ويمكن نشرها على جهاز طرفي من بنية تحتية سحابية مركزية. [ 10 ] وكما ذُكر سابقًا، يرتبط دور WebUSB ارتباطًا وثيقًا بقدرته على التواصل مع البرامج المدمجة عبر بروتوكول اتصال USB. بمجرد دخول المعلومات إلى بيئة JavaScript الخاصة بـ WebUSB، يمكن نقلها وتوصيلها عبر مجموعة متنوعة من بروتوكولات البرامج. [ 1 ] في نموذج البنية هذا، يربط WebUSB بين البرامج المدمجة ومتصفح الويب . ثم يتواصل متصفح الويب مع البيئة السحابية باستخدام بيانات موحدة مُنشأة بواسطة WebUSB. [ 10 ]
الاعتبارات الأمنية
يوفر WebUSB إمكانية الوصول إلى صفحة ويب لموصل جهاز طرفي. ينطوي تعريض أي جهاز للإنترنت على مخاطر ومخاوف أمنية كامنة. [ 7 ] صُممت منافذ USB بطبيعتها لتثق بالجهاز المتصل بها. أدى توصيل هذا المنفذ بتطبيق متصل بالإنترنت إلى ظهور مجموعة جديدة من المخاطر الأمنية، وتوسيع نطاق الهجمات المحتملة بشكل كبير. [ 8 ] [ 1 ]
على سبيل المثال، قد تطلب صفحة ويب خبيثة بيانات من جهاز طرفي، فيستجيب الجهاز للطلب ظنًا منه أنه يتصل عبر منفذ USB قياسي. وللحد من هذا النوع من الهجمات، طورت WebUSB requestDevice()استدعاء دالة تُعلم المستخدم بأن الموقع يطلب الوصول إلى الجهاز الطرفي. يشبه هذا آلية التحكم في طلبات الوصول في المتصفح عند رغبة صفحة ويب في الوصول إلى الكاميرا أو الميكروفون المدمجين. وبحسب مدى حذر المستخدم، قد يكون هذا البروتوكول كافيًا لمنع بعض الهجمات. أما البروتوكول الثاني الذي طُوّر فهو تحديد الطلب الصادر من سياق آمن. [ 11 ] [ 1 ] يضمن هذا عدم اعتراض أو تعديل كل من التعليمات البرمجية المراد تنفيذها والبيانات المُعادة أثناء النقل. يُطبّق هذا الأمان من خلال دالة claimInterface()، وهي دالة مدعومة من نظام التشغيل، وتضمن أن نسخة تنفيذ واحدة فقط يمكنها الوصول إلى الجهاز من خلال مساحة المستخدم أو مساحة النواة، مما يمنع التعليمات البرمجية الخبيثة على صفحة الويب من فتح قناة اتصال ثانية بالجهاز. [ 1 ] تضمنت الاعتبارات الأمنية الأخرى إنشاء سجل عام للاتصالات المعتمدة، ولكن تم التخلي عن هذه الفكرة في نهاية المطاف لأنها كانت تتطلب من البائعين تطوير أجهزة مع مراعاة WebUSB. [ 1 ]
مع ذلك، فإنّ سطح التهديد في منفذ USB ثنائي الاتجاه، ويمكن لجهاز طرفي خبيث مهاجمة الجهاز المضيف. ولا يمكن التخفيف من آثار جهاز طرفي مصاب بسهولة باستخدام واجهات برمجة تطبيقات WebUSB. في العديد من تكوينات الأجهزة، تُستخدم منافذ USB الموثوقة لتوفير ترقيات البرامج الثابتة، ويمكن لجهاز طرفي خبيث أن يمنح المهاجمين القدرة على البقاء في النظام. [ 11 ] [ 4 ]
نظراً للمخاوف الأمنية التي يثيرها WebUSB، فإنّ ما يُقدّر بنحو 76% فقط من المتصفحات يدعمه. وقد شهد دعم WebUSB على مستوى المتصفحات تذبذباً مستمراً، حيث قامت بعض المتصفحات بتعطيل الوصول إليه لفترات زمنية بعد اكتشاف تهديدات أمنية محددة. [ 12 ] ويُشابه هذا التذبذب في الدعم ما حدث مع Adobe Flash وGoogle Serial، اللذين لم يحققا الانتشار المطلوب لعدم إمكانية استخدامهما مع حلول كافية للمخاطر الأمنية الأساسية. [ 5 ]
يُستخدم في المصادقة متعددة العوامل
تُعدّ القدرة على امتلاك هوية رقمية والتحقق منها على الإنترنت أمرًا بالغ الأهمية للتفاعل مع البنية التحتية للإنترنت. ويمكن استخدام WebUSB، بالاشتراك مع أجهزة متخصصة وسجلات تعريف عامة، كعنصر أساسي في حلول البنية التحتية واسعة النطاق للهوية الرقمية على الإنترنت. [ 13 ] وتُتيح مكتبة واجهة برمجة تطبيقات WebUSB توحيد ربط الأجهزة الطرفية بصفحات الويب. ويجعل الاستثمار الأمني في WebUSB منه مكونًا برمجيًا مناسبًا لربط الأجهزة القابلة للتعريف بالإنترنت. [ 1 ] وقد أظهرت الأبحاث الحديثة قصور المصادقة القائمة على الرسائل النصية القصيرة، مُسلطةً الضوء على كيفية اختراق العناصر الرئيسية للبنية التحتية. [ 14 ] وتتضمن المقترحات البديلة لتأمين الهوية الرقمية استخدام أجهزة استشعار بيومترية و/أو مُعرّفات شخصية. ومع ذلك، فرغم كفاءة هذه التقنيات في تحديد هوية الأفراد، إلا أنه لا يُمكن دمجها بشكل كافٍ في بنية الإنترنت التقنية الحالية إلا من خلال WebUSB. [ 13 ] وتتوفر حلول آمنة تشفيرياً لتحديد الهوية الشخصية بدعم من الحكومات وأجهزة متخصصة. إلا أن هذه الحلول تفتقر إلى مواصفات عامة للبنية التحتية القائمة على الويب، ويصعب دعمها عمومًا. يمكن دعم بوابة الاتصال لبروتوكول الاتصال هذا بواسطة برامج وسيطة، مثل WebUSB. [ 10 ] [ 13 ]
يستخدم نظام نموذجي للمصادقة متعددة العوامل تقنية WebUSB بالتزامن مع جهاز تعريف، مثل بطاقة هوية مصممة وفقًا لمعايير ISO/IEC 7810 :2003 ID-1 [ 15 ] . تمثل هذه البطاقة تمثيلًا ماديًا لهوية الفرد. تعمل WebUSB كوسيط لتسهيل نقل البيانات المخزنة على الجهاز إلى خادم ويب محدد. يتم توقيع البطاقة رقميًا من قِبل جهة مُخوّلة، وتتصل رقميًا بالخادم. يتطلب هذا الاتصال جهازًا قادرًا على قراءة اتصالات ISO/IEC 14443 من النوع B. [ 16 ] ولجعل هذا الاتصال الرقمي صالحًا، تعمل WebUSB كموصل برمجي. [ 13 ]
الاستخدام
لن يعمل WebUSB إلا على المتصفحات المدعومة، مثل Chrome . ونظرًا لاعتبارات الخصوصية والأمان، سيعمل فقط في بيئة آمنة، أي عبر HTTPS ، ولا يمكن استدعاؤه إلا من خلال إجراءات المستخدم. على سبيل المثال، لإنشاء اتصال، navigator.usb.requestDevice()لا يمكن استدعاؤه إلا من خلال إيماءة المستخدم، مثل اللمس أو النقر بالماوس. وبالمثل، يمكن توفير الحماية من WebUSB باستخدام سياسة الميزات. على سبيل المثال ، Feature-Policy: fullscreen "*"; usb "none"; payment "self" https://payment.example.comسيمنع ذلك WebUSB من التشغيل. [ 17 ]
للوصول إلى الأجهزة المرئية للمتصفح، يتوفر خياران. navigator.usb.requestDevice()سيطلب من المستخدم تحديد منفذ USB الذي سيتم منحه الوصول، أو navigator.usb.getDevices()سيعرض قائمة بأجهزة USB التي يمكن للمستخدم الوصول إليها.
لتحسين عملية البحث عن الأجهزة، يوفر WebUSB عددًا من خيارات التصفية. تُمرر هذه المرشحات navigator.usb.requestDevice()ككائن تصفية JavaScript. وهذه المرشحات هي: vendorId، productId، classCode، ، protocolCode، serialNumberو subclassCode.
على سبيل المثال، تخيل الاتصال بجهاز أردوينو ، ويمكن القيام بذلك بالطريقة التالية. حيث يمثل 0x2341 جهاز أردوينو في قائمة معرفات USB [ 18 ].
navigator.usb.requestDevice ( { filters : [ { vendorId : 0x2341 } ] } ) . then ( device = > { console.log ( device.productName ) ; console.log ( device.manufacturerName ) ; } ) . catch ( error = > { console.error ( error ) ; } ) ;سيحتوي وصف USB deviceالذي تم إرجاعه من المقتطف أعلاه على جميع المعلومات المهمة حول الجهاز مثل: الإصدار، وحجم الحزمة، وخيارات التكوين، وما إلى ذلك.
أما الاستدعاء البديل navigator.usb.getDevices()فسيكون على النحو التالي؛
navigator.usb.getDevices ( ) . then ( devices = > { devices.forEach ( device = > { console.log ( device.productName ) ; console.log ( device.manufacturerName ) ; } ) ; } )للتواصل مع الجهاز، يلزم تنفيذ بعض استدعاءات الدوال المهمة. device.open()ستُنفذ هذه الدوال جميع الخطوات اللازمة لإعداد الجهاز، بما في ذلك device.selectConfiguration()ضبط الإعدادات، وتحديد كيفية تزويده بالطاقة، وعدد المنافذ. بعد ذلك، من المهم حجز المنفذ، ويمكن القيام بذلك من خلال device.claimInterfaceاستدعاء الدالة. سيُحاكي هذا اتصالاً سلكياً حقيقياً، ويضمن أن تكون صفحة الويب هذه هي الوحيدة القادرة على القراءة والكتابة إلى الجهاز حتى يتم قطع الاتصال. أخيراً، device.controlTransferOut()سيُهيئ الاستدعاء الجهاز للتواصل عبر واجهة برمجة تطبيقات WebUSB التسلسلية. بمجرد اكتمال الإعداد، يمكن نقل البيانات إلى الجهاز باستخدام device.transferIn()دالة لنقل البيانات بكميات كبيرة، وكذلك دالة device.transferOut()قراءة البيانات منه. [ 17 ] [ 1 ]
واجهات
من أجل تعميم التفاعل مع الأجهزة المادية، يدعم WebUSB عددًا من الواجهات التي تجرّد وظائف الأجهزة المحددة. [ 8 ]
| اسم الواجهة | وصف |
|---|---|
| USB | توفر هذه الواجهة خصائص وأساليب للعثور على أجهزة USB وتوصيلها من صفحة ويب. وهي ترث من واجهة أخرى EventTarget. |
| حدث اتصال USB | يتم تمرير حدث الاتصال هذا إلى الوكيل USB.onconnectأو USB.ondisconnectعندما يكتشف الوكيل تغييرًا في حالة الاتصال. |
| جهاز USB | واجهة توفر بيانات وصفية حول الجهاز المتصل وطرق التحكم به. والأهم من ذلك، أنها الواجهة الرئيسية التي سيستخدمها المطور للتفاعل مع الجهاز. |
| نتيجة نقل البيانات عبر USB | تمثيل لنتائج عملية نقل البيانات من الجهاز إلى المضيف. يتضمن حقلاً للبيانات وحالة النقل. توجد ثلاثة خيارات لحقول الحالة: "ok" تعني نجاح النقل، و"stall" تشير إلى وجود خطأ أدى إلى توقف العملية على الجهاز، و"babble" تشير إلى نقل بيانات أكثر من المتوقع. |
| USBIsochronousInTransferResult | يُشابه USBInTransferResultهذا تمثيل نقل البيانات من الجهاز إلى المضيف عند إجرائه عبر نقطة نهاية متزامنة. لا يحتوي على حقل حالة، بل على الحزم فقط. |
| حزمة نقل متزامنة عبر USB | يمثل هذا حالة حزمة بيانات فردية من طلب نقل البيانات من الجهاز إلى المضيف عبر نقطة نهاية متزامنة. ويمكن أن يُرجع الحالة إما "موافق" أو "متوقف". |
| نتيجة نقل البيانات المتزامنة عبر USB | يشبه USBInTransferResultهذا تمثيل نقل البيانات من المضيف إلى الجهاز عند القيام بذلك عبر نقطة نهاية متزامنة. |
| حزمة نقل البيانات الخارجية المتزامنة عبر USB | يمثل هذا حالة حزمة بيانات فردية من طلب نقل البيانات من المضيف إلى الجهاز عبر نقطة نهاية متزامنة. يحتوي على نفس حقول الحالة الموجودة في USBIsochronousInTransferPacket. |
| تكوين USB | يوفر معلومات حول تكوين معين لجهاز USB. يتضمن ذلك معلومات حول إصدار الجهاز، والحد الأقصى لحجم الحزمة، والواجهات المدعومة. |
| واجهة USB | يوفر معلومات حول واجهة يوفرها جهاز USB. يتضمن ذلك معلومات حول ما إذا كانت هذه الواجهة مُستخدمة، بالإضافة إلى بروتوكول الاتصال الخاص بها. |
| واجهة USB بديلة | يوفر معلومات حول تكوين معين للواجهة والأوضاع المحددة التي يمكن للجهاز العمل بها. |
| نقطة نهاية USB | هذا USBEndPointعبارة عن تدفق بيانات أحادي الاتجاه إما إلى داخل الجهاز أو خارجه. |
مراجع
- 1 2 3 4 5 6 7 8 9 جرانت، ر. (2021-10-06). "واجهة برمجة تطبيقات WebUSB" . WICG . تم الاسترجاع في 2022-01-07 .
- ↑ "الوصول إلى أجهزة USB عبر الويب" . مطورو جوجل . 30 مارس 2016.
- ↑ "WebUSB | هل يمكنني استخدام... جداول دعم HTML5 وCSS3 وما إلى ذلك" . caniuse.com . تم الاطلاع عليه بتاريخ 2021-07-02 .
- 1 2 أندرسون، دون (2001). بنية نظام ناقل التسلسل العالمي ( الطبعة الثانية). أديسون-ويسلي. ISBN 978-0-201-30975-1.
- 1 2 هينتون، سوز (18-06-2018). سوز هينتون - أخشى أن متصفحك قد تواصل مع الروبوتات مرة أخرى: مقدمة بسيطة إلى WebUSB . مؤتمر CSSSConf أستراليا.
- 1 2 بينيوال، غونجان؛ سينغروفا، أنيتا (2022). "مراجعة منهجية للأدبيات حول بوابات إنترنت الأشياء" . مجلة جامعة الملك سعود - علوم الحاسب والمعلومات . 34 (10): 9541-9563 . doi : 10.1016/j.jksuci.2021.11.007 . S2CID 244758915 .
- 1 2 روندون، ل؛ بابون، ل؛ أريس، أ؛ أكايا، أ؛ أولواغاك، أ (2021). "دراسة استقصائية حول أنظمة إنترنت الأشياء المؤسسية (E-IoT): منظور أمني" . ISO . arXiv : 2102.10695 . تاريخ الاسترجاع: 19 ديسمبر 2021 .
- 1 2 3 "واجهة برمجة تطبيقات WebUSB" . مدونات مطوري موزيلا . موزيلا. 2021. تم الاسترجاع في 19 ديسمبر 2021 .
- ↑ تالوكدر، أ.ك. (2020). "الجيل القادم من الويب: التقنيات والخدمات" . تحليلات البيانات الضخمة . سلسلة محاضرات في علوم الحاسوب. المجلد 12581. الصفحات 209-229 . doi : 10.1007/978-3-030-66665-1_14 . ISBN 978-3-030-66664-4. S2CID 230795240 . تم الاسترجاع بتاريخ 19-12-2021 .
- 1 2 3 مبتدئ، AGDS؛ غونسالفيس، إل إم جي؛ دي باولا كورين، جورجيا؛ تاماناكا، جي تي بي؛ هيرنانديز، AC. أروكا، RV (2020). "BIPES: النظام الأساسي المتكامل القائم على الكتلة للأنظمة المدمجة" . الوصول إلى IEEE . 8 : 197955– 197968. بيب كود : 2020IEEEA...8s7955J . دوى : 10.1109/ACCESS.2020.3035083 . S2CID 226854474 .
- 1 2 ليندستروم، ر (2021). "تمكين الهواتف الذكية من العمل كأجهزة طرفية لإنترنت الأشياء عبر واجهة برمجة تطبيقات WebUSB المستندة إلى المتصفح : مستقبل المتصفح والهاتف الذكي في أنظمة إنترنت الأشياء للإلكترونيات المنزلية" .
- ↑ "جوجل تعطل ميزة WebUSB في متصفح كروم وسط مخاوف من التصيد الاحتيالي" . مطورو XDA . 7 مارس 2018.
- 1 2 3 4 فوجيتا، واي؛ إينوماتا، إيه؛ كاشيوازاكي، إتش (2019). "تنفيذ وتقييم نظام مصادقة ويب متعدد العوامل باستخدام بطاقة رقم فردي وWebUSB". ندوة آسيا والمحيط الهادئ لعمليات وإدارة الشبكات .
- ↑ برايان كريبس (1 يونيو 2018). "اختراق ريديت يُسلط الضوء على حدود المصادقة عبر الرسائل النصية القصيرة" . كريبس على الأمن . تم الاطلاع عليه بتاريخ 19 ديسمبر 2021 .
- ↑ "ISO/IEC 7810:2003 - بطاقات الهوية - الخصائص الفيزيائية" . تم الاطلاع عليه بتاريخ 2022-01-07 .
- ↑ "ISO/IEC 14443-1:2018 - البطاقات وأجهزة الأمان لتحديد الهوية الشخصية - أجهزة التقارب بدون تلامس" . تم الاطلاع عليه بتاريخ 7 يناير 2022 .
- 1 2 بوفورت، فرانسيس (23 فبراير 2021). "الوصول إلى WebUSB" . web.dev . تم الاسترجاع في 6 يناير 2022 .
- ↑ "الوصول إلى WebUSB" . web.dev . تم الاسترجاع في 2022-01-06 .
روابط خارجية
- واجهات برمجة التطبيقات
- USB
- برمجة الويب
- تطوير مواقع الويب
- معايير الويب
