ميزة ECDSA لـ WebRTC - مستوى أمان أفضل وخصوصية أفضل وأداء أفضل

بدءًا من الإصدار 52 من Chrome، يستخدم WebRTC خوارزمية أكثر كفاءة وأمانًا لإنشاء شهادات (شهادة RTC): ECDSA. بالإضافة إلى ذلك، يمكن الآن تخزين شهادات RTC باستخدام قاعدة البيانات المفهرسة.

شهادات RTC هي شهادات موقَّعة ذاتيًا وتُستخدَم في تأكيد اتصال DTLS عند إعداد اتصال نظير في WebRTC. (بروتوكول أمان طبقة النقل لمخطّطات البيانات (DTLS) هو تطبيق لبروتوكول التشفير TLS لبروتوكولات مخطط البيانات مثل UDP الذي يستخدمه WebRTC).

حتى وقت قريب، كان WebRTC يستخدم مفاتيح RSA-1024 للشهادات. هناك العديد من العيوب لهذه المفاتيح:

  • قد يستغرق إنشاء مفاتيح RSA-1024 مدة تصل إلى 1,000 ملي ثانية تقريبًا في وقت إعداد المكالمة.
  • لا توفر مفاتيح RSA 1024 بت قوة التشفير الكافية.

بسبب بطء عملية إنشاء الشهادات باستخدام RSA-1024، لجأت بعض التطبيقات المتوافقة مع الأجهزة الجوّالة إلى إعداد الشهادات مسبقًا أو إعادة استخدامها.

يمكن حل مشكلة قوة المفتاح عن طريق الانتقال إلى مفاتيح RSA 2048 بت أو أكثر، ولكن هذا قد يؤخر إعداد المكالمة لعدة ثوانٍ إضافية. بدلاً من تغيير حجم مفتاح التشفير RSA، ينفِّذ Chrome 52 مفاتيح ECDSA (خوارزمية التوقيع الرقمي Eliptic Curve) لاستخدامها في الشهادات. لا تقل قوة هذه المفاتيح عن مفاتيح RSA 3072 بت، ولكنها أسرع بعدة آلاف مرة: لا يتعدى حجم النفقات العامة لإعداد المكالمات مع ECDSA بضع مللي ثانية.

وبوجه عام، تتيح مفاتيح ECDSA مستوى أمان أفضل وخصوصية أفضل وأداء أفضل، خاصةً على الأجهزة الجوّالة. لهذه الأسباب، تم تفويض ECDSA في مسودة بنية أمان WebRTC.

ومن Chrome 47، يمكنك الاشتراك في ECDSA:

// or webkitRTCPeerConnection
RTCPeerConnection.generateCertificate({
    name: "ECDSA",
    namedCurve: "P-256"
}).then(function(certificate) {
    var pc = new RTCPeerConnection({..., certificates: [certificate]});
});

بدايةً من Chrome 52، ومع أنّ ميزة ECDSA مُفعَّلة تلقائيًا، لا يزال بإمكانك اختيار إنشاء شهادات RSA:

pc.generateCertificate({
    name: "RSASSA-PKCS1-v1_5",
    modulusLength: 2048,
    publicExponent: new Uint8Array([1, 0, 1]),
    hash: "SHA-256"
})

(يُرجى الاطّلاع على مسودة W3C لمزيد من المعلومات حول generateCertificate()).

تخزين شهادة RTC في قاعدة البيانات المفهرسة

تحسين آخر في Chrome 52: يمكن حفظ شهادات RTC الخاصة بـ WebRTC وتحميلها من مساحة تخزين IndexedDB، ما يؤدي إلى تجنُّب الحاجة إلى إنشاء شهادات جديدة بين الجلسات. يمكن أن يكون ذلك مفيدًا، على سبيل المثال، إذا كنت لا تزال بحاجة إلى استخدام RSA وتريد تجنُّب النفقات العامة لإنشاء الإعلانات المتجاوبة على شبكة البحث. مع ECDSA، ليس من الضروري التخزين المؤقت لأنّه سريع بما يكفي لإنشاء شهادة جديدة في كل مرة.

سبق أن تم شحن مساحة تخزين RTCCertificate IndexedDB في Firefox، وهي متوفّرة في Opera 39.

التعرف على المزيد