SSL (Secure Sockets Layer) و TLS (Transport Layer Security) هما بروتوكولان تشفيران يضمنان نقلاً آمناً للبيانات بين العميل والخادم عبر الشبكة. يقومان بتشفير كل حركة المرور، مما يمنع اعتراض البيانات أو تعديلها من قبل المهاجمين. وفقاً لتقرير Google Transparency Report (2025)، أكثر من 95% من حركة المرور المحمولة في العالم تستخدم تشفير TLS. بدون هذا البروتوكول، يمكن قراءة أي معلومات تُرسل عبر شبكة Wi-Fi مفتوحة أو شبكة محمولة من قبل أطراف ثالثة. Cloudflare, 2024
النقاط الرئيسية
SSL (Secure Sockets Layer) هو بروتوكول طورته Netscape في عام 1995 لحماية حركة مرور الويب. لم يُنشر الإصدار الأول SSL 1.0 علناً أبداً؛ استُخدم SSL 2.0 (1995) و SSL 3.0 (1996) حتى أوائل العقد الأول من القرن الحادي والعشرين، لكنهما احتويا على ثغرات أمنية خطيرة. خلف SSL TLS (Transport Layer Security) — نسخة محسنة معيارية من IETF. استند TLS 1.0 (1999) على SSL 3.0، بينما ابتعدت الإصدارات اللاحقة TLS 1.1 (2006) و TLS 1.2 (2008) و TLS 1.3 (2018) تدريجياً عن البنية الأصلية، مضيفة خوارزميات تشفير جديدة ومصححة الثغرات. اليوم، يُعتبر SSL قديماً، وجميع الأنظمة الحديثة تستخدم TLS، على الرغم من أن كلا البروتوكولين يُذكران معاً غالباً باسم SSL/TLS بدافع العادة.
بدأ تاريخ SSL/TLS مع الحاجة إلى نقل آمن للبيانات في الويب المبكر. في عام 1994، طورت Netscape SSL 1.0 لمتصفح Navigator، لكن البروتوكول لم يُنشر أبداً بسبب مشاكل أمنية خطيرة. صدر SSL 2.0 في عام 1995 واُستخدم عملياً، لكنه احتوى على العديد من الثغرات: عدم وجود حماية ضد هجمات الوسيط (Man-in-the-Middle)، خوارزميات تشفير ضعيفة، وقابلية لهجمات الاقتطاع. أصلح SSL 3.0 (1996) معظم المشاكل، لكن بحلول عام 2014 اكتُشفت ثغرة POODLE، وبعدها أعلنت IETF رسمياً أن جميع إصدارات SSL قديمة. حسنت TLS 1.0–1.3 تدريجياً القوة التشفيرية والأداء والخصوصية، حيث اختزل TLS 1.3 المصافحة من جولتين إلى جولة واحدة — وهو أمر بالغ الأهمية للتطبيقات المحمولة ذات الاتصالات غير المستقرة.
المصافحة (Handshake) هي عملية إنشاء اتصال آمن بين العميل والخادم. تتكون من عدة خطوات متتالية يتفق خلالها الطرفان على إصدار البروتوكول، ويختاران خوارزميات التشفير، ويتبادلان المفاتيح، ويصادق كل منهما على الآخر. في TLS 1.3، تستغرق المصافحة جولة شبكة واحدة فقط (1-RTT)، بينما في TLS 1.2 كانت تتطلب جولتين (2-RTT).
الخطوة الأولى هي أن يرسل العميل ClientHello — رسالة تحتوي على قائمة بإصدارات TLS المدعومة، ومجموعات التشفير، ورقماً عشوائياً. يرد الخادم بـ ServerHello يحتوي على الإصدار والتشفير المختارين، وشهادته X.509، وتوقيعاً رقمياً. يتحقق العميل من الشهادة عبر سلسلة سلطات التصديق (CA)، وينشئ مفتاح جلسة ويرسله مشفراً بالمفتاح العام للخادم من الشهادة. بعد تأكيد الخادم، يبدأ النقل الآمن للبيانات. تستغرق المصافحة بأكملها من 1 إلى 3 ملي ثانية على الأجهزة الحديثة، مما يجعلها غير محسوسة للمستخدم.
أساس مصادقة TLS هو البنية التحتية للمفتاح العام (PKI) المبنية على شهادات بتنسيق X.509. تحتوي كل شهادة على: اسم النطاق (الاسم الشائع أو اسم الموضوع البديل)، المفتاح العام للخادم، اسم المُصدر (سلطة التصديق)، تاريخ انتهاء الصلاحية، والتوقيع الرقمي لسلطة التصديق. يتحقق العميل من شهادة الخادم عبر سلسلة الثقة: من شهادة الخادم إلى سلطة التصديق الجذرية، التي شهادتها مضمنة في نظام التشغيل. على أجهزة Android، تُخزن الشهادات الجذرية في مخزن مفاتيح النظام، المُحدَّث عبر Google Play Services؛ في iOS — عبر تحديثات iOS. عند كسر أي حلقة في السلسلة (شهادة منتهية الصلاحية، عدم تطابق النطاق، سلطة تصديق غير معروفة)، يقطع العميل الاتصال. للشهادات الموقعة ذاتياً (المستخدمة في التطوير)، يلزم ثقة صريحة — في Android عبر Network Security Config، في iOS عبر NSExceptionDomains في Info.plist. تتضمن عملية التحقق من سلسلة الشهادات أيضاً التحقق من حالة الإلغاء عبر CRL (قائمة إلغاء الشهادات) أو OCSP (بروتوكول حالة الشهادة عبر الإنترنت)، على الرغم من أن طلبات OCSP غالباً ما تُتجاوز على الأجهزة المحمولة لتسريع الاتصال — وهذا مقايضة بين الأمان والأداء يجب على المعماريين مراعاتها.
على الرغم من أن المصطلحين SSL و TLS يُستخدمان غالباً بالتبادل، إلا أن هناك فروقاً تقنية جوهرية بينهما تؤثر على أمان وأداء التطبيقات المحمولة.
| الخاصية | SSL 3.0 | TLS 1.2 | TLS 1.3 |
|---|---|---|---|
| سنة الإصدار | 1996 | 2008 | 2018 |
| الحالة | قديم (RFC 7568) | نشط (موصى به) | حالي (أفضل) |
| جولات الذهاب والإياب | 2 | 2 | 1 |
| خوارزمية تبادل المفاتيح | RSA | RSA, ECDHE | ECDHE (فقط) |
| التشفير الموثق | لا | GCM, CCM | AEAD إلزامي |
| السرية التامة للتوجيه (PFS) | لا | اختياري | إلزامي |
الفرق الرئيسي بين TLS 1.3 وسابقيه هو الاستخدام الإلزامي للسرية التامة للتوجيه (PFS) عبر بروتوكول ECDHE. هذا يعني أنه حتى لو حصل المهاجم على المفتاح الخاص للخادم، فلن يتمكن من فك تشفير حركة المرور المعترضة سابقاً. للتطبيقات المحمولة، حيث اختراق الخادم هو تهديد حقيقي، فإن TLS 1.3 مع PFS هو متطلب أمان إلزامي.
الإصدارات القديمة من SSL و TLS لديها ثغرات موثقة تجعلها غير مناسبة للاستخدام في الإنتاج. تهاجم POODLE (CVE-2014-3566) SSL 3.0 عبر padding oracle، مما يسمح بفك تشفير ملفات تعريف ارتباط الجلسة في 256 طلباً. تستغل BEAST (CVE-2011-3389) ثغرة في TLS 1.0 في وضع CBC عبر IV قابل للتنبؤ. Heartbleed (CVE-2014-0160) — ليست ثغرة في البروتوكول بل خطأ في تنفيذ OpenSSL يسمح بقراءة ذاكرة الخادم: وفقاً لـ Netcraft، كان أكثر من 500,000 خادم معرضاً للخطر في عام 2014. بدءاً من Android 10 (API 29) و iOS 13، جميع هذه البروتوكولات معطلة على مستوى النظام. ومع ذلك، يجب على المطورين التحقق من تكوين الخادم عبر اختبار SSL Labs (qualys.com) قبل إطلاق التطبيق للتأكد من عدم وجود مجموعات تشفير قديمة ودعم TLS 1.3.
في التطبيقات المحمولة، يحمي TLS البيانات على ثلاثة مستويات: تشفير المحتوى (لا يمكن لأحد باستثناء الخادم قراءة البيانات)، التحقق من السلامة (لا يمكن تغيير البيانات أثناء النقل)، ومصادقة الخادم (العميل متأكد من أنه يتصل بالخادم الصحيح). المصادقة مهمة بشكل خاص: بدونها، يمكن للمهاجم انتحال الخادم عبر انتحال DNS أو نقطة وصول Wi-Fi مزيفة.
وفقاً لدراسة Google Play Protect (2024)، 76% من تطبيقات Android تستخدم TLS بشكل صحيح مع التحقق من الشهادات. أما الـ 24% المتبقية فترتكب أخطاء: تعطيل التحقق من الشهادات للاختبار (وتنسى إعادة تفعيله في الإنتاج)، استخدام شهادات موقعة ذاتياً دون تحقق، أو السماح ببروتوكولات قديمة مثل SSL 3.0 و TLS 1.0. Apple App Transport Security (ATS) في iOS تطلب TLS 1.2 كحد أدنى منذ 2017، واعتباراً من iOS 15 تستخدم TLS 1.3 افتراضياً لجميع طلبات الشبكة. لحماية إضافية، يُوصى أيضاً بتطبيق Certificate Pinning — الربط بشهادة خادم محددة.
لننظر إلى مثال لتكوين اتصال HTTPS آمن في Android باستخدام OkHttp — إحدى مكتبات الشبكات الأكثر شيوعاً. يتضمن التكوين الصحيح فرض استخدام TLS 1.3 والتحقق من الشهادات.
val client = OkHttpClient.Builder()
.connectionSpecs(
listOf(
ConnectionSpec.Builder(ConnectionSpec.MODERN_TLS)
.tlsVersions(TlsVersion.TLS_1_3, TlsVersion.TLS_1_2)
.cipherSuites(
CipherSuite.TLS_AES_128_GCM_SHA256,
CipherSuite.TLS_AES_256_GCM_SHA384,
CipherSuite.TLS_CHACHA20_POLY1305_SHA256
)
.build()
)
)
.hostnameVerifier { hostname, session ->
SSLSession.DefaultHostnameVerifier.verify(hostname, session)
}
.build()
في هذا المثال، نقصر مجموعة إصدارات TLS المدعومة على 1.3 و 1.2 فقط، باستثناء TLS 1.0/1.1 القديمة. تُختار مجموعات التشفير من الخوارزميات الحديثة مع وضع AEAD والسرية التامة للتوجيه الإلزامية. يتحقق HostnameVerifier من تطابق اسم المضيف مع الشهادة. في iOS، يتم تكوين مماثل عبر إعدادات URLSession مع معامل tlsMinimumSupportedProtocolVersion المضبوط على .TLSv13. إضافياً، في iOS يمكن ضبط tlsMaximumSupportedProtocolVersion للحد من الإصدار الأعلى — مفيد للتوافق مع الخوادم القديمة التي لم تنتقل بعد إلى TLS 1.3. يضمن هذا التكوين أقصى مستوى من الأمان لنقل البيانات في تطبيق محمول.
الأسئلة الشائعة
TLS هو إصدار أحدث وأكثر أماناً من البروتوكول. SSL قديم ويجب عدم استخدامه (RFC 7568). عملياً، يشير كلا المصطلحين إلى تشفير HTTPS، لكن تقنياً جميع الأنظمة الحديثة تعمل عبر TLS 1.2 أو 1.3.
قم بتثبيت أداة بروكسي مثل Burp Suite أو Charles Proxy واعترض حركة مرور التطبيق. إذا كان الاتصال يستخدم HTTPS والشهادة صالحة — فالتطبيق يستخدم TLS. إذا كانت حركة المرور عبر HTTP — فلا يوجد تشفير.
مسموح فقط TLS 1.2 و TLS 1.3 لبنيات الإنتاج. يجب تعطيل البروتوكولات SSL 3.0 و TLS 1.0 و TLS 1.1 على كل من الخادم وتطبيق العميل. منذ 2020، تتطلب المنصات الرئيسية (Android, iOS, المتصفحات) TLS 1.2 كحد أدنى.
نعم، يُوصى بذلك. يتحقق TLS من الشهادة عبر سلسلة سلطات التصديق، لكن إذا تم اختراق أي سلطة تصديق (كما حدث مع DigiNotar في 2011)، يمكن للمهاجم إصدار شهادة مزيفة. يضيف التثبيت طبقة تحقق إضافية.
TLS 1.3 يقلل وقت إنشاء الاتصال من جولتين إلى جولة واحدة، مما يعطي تحسناً بنسبة 30–50% عند الاتصال الأول. للتطبيقات المحمولة ذات الاتصالات غير المستقرة (المترو، القطارات)، هذا أمر بالغ الأهمية لسرعة تحميل البيانات.
الخلاصة
سنقوم بتطوير تطبيق جوال جاهز
تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.
اقرأ أيضًا