ECDSA برای WebRTC - امنیت بهتر، حریم خصوصی بهتر و عملکرد بهتر

از Chrome 52، WebRTC از الگوریتم بسیار کارآمدتر و ایمن‌تری برای تولید گواهی (RTCCertificate) استفاده می‌کند: ECDSA. علاوه بر این، گواهی‌های RTCC اکنون می‌توانند با IndexedDB ذخیره شوند.

گواهی‌های RTCC گواهی‌های خودامضا هستند که در دست دادن DTLS هنگام راه‌اندازی یک اتصال همتای WebRTC استفاده می‌شوند. (DTLS اجرای پروتکل رمزنگاری TLS برای پروتکل های دیتاگرام مانند UDP است که توسط WebRTC استفاده می شود.)

تا همین اواخر، WebRTC از کلیدهای RSA-1024 برای گواهی ها استفاده می کرد. این کلیدها چندین معایب دارند:

  • تولید کلیدهای RSA-1024 می تواند تا حدود 1000 میلی ثانیه زمان تنظیم تماس اضافه کند.
  • کلیدهای 1024 بیتی RSA قدرت رمزنگاری کافی را ارائه نمی کنند.

از آنجایی که تولید گواهی با RSA-1024 کند است، برخی از برنامه های تلفن همراه به تهیه گواهی از قبل یا استفاده مجدد از آنها متوسل شده اند.

مشکل قدرت کلید را می‌توان با رفتن به کلیدهای RSA 2048 بیتی یا بیشتر حل کرد، اما این امر تنظیم تماس را چند ثانیه دیگر به تاخیر می‌اندازد. Chrome 52 به جای تغییر اندازه کلید RSA، کلیدهای ECDSA (الگوریتم امضای دیجیتال منحنی بیضی) را برای استفاده در گواهی ها پیاده سازی می کند. اینها به اندازه کلیدهای 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"
})

(برای اطلاعات بیشتر در مورد generateCertificate() به پیش نویس W3C مراجعه کنید.)

ذخیره سازی گواهی RTCC در IndexedDB

یکی دیگر از پیشرفت‌ها در Chrome 52: گواهی‌های RTCC مورد استفاده توسط WebRTC را می‌توان ذخیره و از فضای ذخیره‌سازی IndexedDB بارگیری کرد و نیازی به تولید گواهی‌های جدید بین جلسات نیست. این می تواند مفید باشد، برای مثال، اگر هنوز نیاز به استفاده از RSA دارید و می خواهید از سربار تولید RSA جلوگیری کنید. با ECDSA، کش کردن لازم نیست، زیرا به اندازه کافی سریع است که هر بار یک گواهی جدید تولید کند.

حافظه RTCCertificate IndexedDB قبلاً در فایرفاکس ارسال شده است و در Opera 39 قرار دارد.

بیشتر بدانید