ABpeer-to-peerSRTP encrypted

WebRTC

11 دقيقة قراءةتكنولوجيا الويب

WebRTC هو البروتوكول الذي يتيح لمتصفحين التحدث مع بعضهما البعض مباشرة - نظير إلى نظير، بزمن انتقال منخفض، مع الصوت أو الفيديو أو البيانات. لقد جعل مكالمات الفيديو المستندة إلى المتصفح قابلة للتطبيق. كما أنها أنشأت أيضًا فئة جديدة تمامًا من تسرب الخصوصية، لأنه للعثور على بعضها البعض من خلال NATs، يتعين على المتصفحات البحث عن عناوين IP العامة الخاصة بها بطريقة تكشفها لجافا سكريبت.

يتم توفير نص المقالة الكامل باللغة الإنجليزية أدناه.

WebRTC (الاتصال عبر الويب في الوقت الفعلي) عبارة عن مجموعة من واجهات برمجة التطبيقات المضمنة في كل متصفح حديث تتيح لصفحات الويب إنشاء اتصالات مباشرة من نظير إلى نظير مع بعضها البعض أو مع التطبيقات الأصلية. فهو يعمل على تشغيل Google Meet، وZoom في المتصفح، والدردشة الصوتية في Discord، ومساحات Twitter في يومهم، وعدد لا يحصى من الخدمات الأصغر. بدون WebRTC، سيظل فيديو المتصفح في الوقت الفعلي عبارة عن عرض فلاش أو إفلاس.

ما تحتويه المواصفات

WebRTC يجمع ثلاث واجهات برمجة تطبيقات رئيسية:

  • getUserMedia - يصل إلى الكاميرا و الميكروفون
  • RTCPeerConnection - يدير اتصال النظير الفعلي: تفاوض برنامج الترميز، والتشفير، واجتياز NAT، والتحكم في الازدحام
  • RTCDataChannel - يرسل بيانات ثنائية أو نصية عشوائية عبر الاتصال، نظير إلى نظير

The يستخدم الاتصال نفسه ICE (مؤسسة الاتصال التفاعلي) لاجتياز NAT، وDTLS لتشفير المصافحة، وSRTP لتشفير الوسائط. يتم تشفير الاتصال بالكامل من طرف إلى طرف بشكل افتراضي؛ لا يمكنك إيقاف تشغيله.

كيف يجد الزملاء بعضهم البعض

الجزء الصعب من نظير إلى نظير هو أن كلا النظيرين عادةً ما يكونان خلف NAT. يستخدم WebRTC ICE لاكتشاف مسارات الشبكة المحتملة:

  1. يسأل المتصفح خادم STUN "كيف يبدو عنوان IP العام والمنفذ؟" يرد خادم STUN بعنوان المصدر الذي شاهده - وهو التعيين الخارجي لـ NAT.
  2. يجمع المتصفح جميع عناوينه المرشحة: عناوين IP المحلية على الشبكة المحلية، وعنوان IP العام الذي اكتشفه STUN، اختياريًا مرحل TURN إذا تعذر اجتياز NAT.
  3. يتبادل الأقران قوائم المرشحين عبر قناة الإشارة (عادة ما يكون WebSocket لخادم التطبيق).
  4. يحاولون الاتصال بكل مجموعة حتى تنجح واحدة.

مشكلة تسرب IP

خطوة تجميع المرشح هي مصدر تسرب WebRTC IP. يمكن لـ JavaScript أن تطلب من المتصفح البدء في جمع مرشحي ICE - وسيكشف المتصفح عن عناوين IP العامة والمحلية الناتجة للصفحة. الصفحة التي تريد تتبعك، يمكنها الاتصال بـ new RTCPeerConnection().createDataChannel(...)، وجمع المرشحين، ومعرفة عنوان IP الحقيقي الخاص بك الآن بغض النظر عن أي تشويش على طبقة HTTP.

تم اكتشاف هذا في عام 2015 وسرعان ما أصبح أداة قياسية للخصوصية. تسريبات WebRTC هي السبب في أن الشخص الموجود على شبكة VPN لا يزال بإمكانه إظهار عنوان IP الحقيقي الخاص به لموقع ويب يسأل عن الطريق الصحيح.

ما تم فعله حيال ذلك

استجاب بائعو المتصفحات من خلال التقييد التدريجي لما يمكن أن تراه الصفحة من المرشحين:

  • السلوك الافتراضي في العصر الحديث Chrome/Firefox/Safari هو الكشف فقط عن عناوين IP المحلية (تلك الموجودة على الشبكة المحلية - عادةً 192.168.x أو 10.x) دون إذن صريح. تحل أسماء المضيفين
  • mDNS محل عنوان IP المحلي للاتصالات - بدلاً من الكشف عن 192.168.1.42، يستخدم المتصفح نطاقًا محليًا عشوائيًا. اسم المضيف.
  • إذا استدعت الصفحة getUserMedia (على سبيل المثال، مكالمة فيديو حقيقية)، فسيجمع المتصفح المرشحين الكاملين بما في ذلك عنوان IP العام - عند هذه النقطة تكون قد منحت إذن الوسائط على أي حال.

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

لماذا يهم نظير إلى نظير

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

حيث يتجه WebRTC

الخطوة الرئيسية التالية هي WebTransport (واجهة برمجة التطبيقات المستندة إلى QUIC منخفضة المستوى للتدفقات ثنائية الاتجاه غير في الوقت الفعلي) و WebCodecs (الوصول الأولي إلى أجهزة التشفير/فك التشفير). يفتحان معًا حالات استخدام جديدة مثل الألعاب السحابية، وتحويل ترميز الفيديو بزمن وصول منخفض في المتصفح، ونقل الملفات بشكل جماعي من نظير إلى نظير مع تحكم أفضل في الازدحام مقارنة بـ RTCDataChannel.

يتم أيضًا تحديث WebRTC نفسه — حيث يتم التخلص التدريجي من دلالات الخطة B SDP الأصلية لصالح الخطة الموحدة، ويصبح سطح واجهة برمجة التطبيقات (API) أكثر نظافة للمطورين.

الأسئلة المتداولة

هل يمكنني تعطيل WebRTC بالكامل؟
نعم، في Firefox: about:config → <code>media.peerconnection.enabled</code> → false. لا تعرض متصفحات Chromium مفتاح تبديل بدون امتداد (يحتوي uBlock Origin على إعداد؛ كما أن WebRTC Network Limiter من Google هو إعداد آخر). يؤدي التعطيل إلى انقطاع أي موقع يستخدم WebRTC للاتصال.
هل تحمي VPN من تسريبات WebRTC؟
يعتمد على المتصفح. لا تكشف المتصفحات الحديثة عن عنوان IP العام لـ JavaScript دون إذن الوسائط، لذا فإن تسرب WebRTC السلبي عبر VPN أمر نادر في الإعدادات الافتراضية. ولكن إذا اتصلت الصفحة بـ getUserMedia وقبل المستخدم، فيمكن للمرشحين المجمعين تضمين عنوان IP العام لشبكة VPN - وهذا متوقع - أو عنوان IP الحقيقي إذا كانت حزمة IPv6 تتسرب حول شبكة VPN.
ما هو خادم STUN ومن يديره؟
تعكس خوادم STUN فقط عنوان IP المصدر والمنفذ الذي يرونه - صغير الحجم، وعديم الحالة، ومجاني التشغيل. تقوم Google بتشغيل خادم STUN عام على stun.l.google.com:19302; يدير Twilio وMozilla وآخرون برامجهم. تستخدم العديد من التطبيقات Google بشكل افتراضي. ترى خوادم STUN فقط حدوث طلب؛ لا يرون الوسائط التي تتدفق بعد ذلك.
هل WebRTC مشفر؟
دائما، حسب المواصفات. تستمد مصافحة DTLS مفاتيح لـ SRTP، الذي يقوم بتشفير الوسائط. يتم تشفير قناة البيانات بواسطة DTLS. لا يمكنك تعطيل التشفير. يعد التشفير من طرف إلى طرف خاصية منفصلة - قد تكون المكالمات الجماعية من خلال SFU هي E2EE فقط إذا كان التطبيق ينفذها بشكل صريح (Zoom وSignal يفعلان ذلك، ولا تفعل ذلك العديد من التطبيقات الأبسط).
لماذا يعد الفيديو من متصفح إلى متصفح جيدًا الآن مقارنة بما كان عليه قبل عقد من الزمن؟
تسريع أجهزة الترميز (AV1، VP9، H.264 على وحدة معالجة الرسومات)، والتحكم في الازدحام المصمم خصيصًا للوسائط في الوقت الفعلي (خوارزمية التحكم في الازدحام من Google)، واجتياز NAT بشكل أفضل مما يجعل المسارات المباشرة ممكنة في كثير من الأحيان. وكلها داخل WebRTC.
شرح WebRTC: بروتوكول المتصفح الذي يشغل مكالمات الفيديو - وأحيانًا يسرب عنوان IP الخاص بك