Conscrypt

تعمل وحدة Conscrypt على تسريع تحسينات الأمان وتحسين أمان الجهاز بدون الاعتماد على تحديثات OTA. ويستخدم هذا الإصدار رمز Java ومكتبة برمجية أساسية لتنفيذ بروتوكول TLS في Android بالإضافة إلى جزء كبير من وظائف التشفير في Android، مثل أدوات إنشاء المفاتيح والأصفار الترميزية وملخّصات الرسائل. تتوفّر مكتبة Conscrypt كأحد مكتبات البرامج المفتوحة المصدر، إلا أنّها تتضمّن بعض التخصصات عند تضمينها في منصة Android.

تستخدم وحدة Conscrypt مكتبة BoringSSL، وهي مكتبة أصلية تم إنشاؤها من مكتبة OpenSSL من قِبل Google وتُستخدَم في العديد من منتجات Google لتشفير البيانات وتوفير بروتوكول أمان طبقة النقل (TLS) (على رأسها Google Chrome)، إلى جانب رمز Conscrypt (كل من رمز Java والرمز الأصلي). لا تتوفّر إصدارات رسمية من BoringSSL (ينشئ جميع المستخدمين الإصدار من المصدر) ولا تقدّم أي ضمانات بشأن استقرار واجهة برمجة التطبيقات أو ABI.

التغييرات في Android 15

يحظر نظام التشغيل Android 15 استخدام الإصدارَين 1.0 و1.1 من طبقة النقل الآمنة. سبق أن تم إيقاف هذين الإصدارين نهائيًا في Android، ولكن تم الآن حظرهما للتطبيقات التي تستهدف الإصدار 15 من Android.

التغييرات في Android 14

يقدّم نظام التشغيل Android 14 مخزنًا قابلاً للتعديل للثقة في الجذر ضمن Conscrypt. توفّر شهادات CA (أو الشهادات) جذور الثقة للمفاتيح العامة المستخدَمة في Android و الإنترنت بشكل عام. ويتم التحقّق من هذه الشهادات بشكل روتيني لضمان التوقيع التشفيري الصحيح، لذلك يجب توفيرها وتخزينها على جميع الأجهزة التي تعتمد عليها.

قبل توفُّر Mainline، كان نظام Android يخزّن الشهادات في قسم النظام (في ملف ‎ system/ca-certificates) ويحدّثها مع كل إصدار من Android. باستخدام Mainline، أصبح من الممكن تعديل الشهادات بشكلٍ متكرّر باستخدام تحديثات Mainline. من المفترض أن تؤدي هذه الميزة الجديدة إلى تبسيط عمليات التحديث، والسماح لنا بحلّ المشاكل بشكل أسرع، والمساعدة في إطالة عمر الأجهزة.

بدءًا من Android 14، يتم تخزين شهادات ثقة الجذر في ملف APEX الخاص بوحدة Conscrypt وقسم النظام. سيظل بإمكان التطبيقات اختيار شهاداتها وتعديل سلوك الشهادة باستخدام NetworkSecurityConfig.

يتضمّن نظام التشغيل Android 14 التغييرات الأخرى التالية في وحدة Conscrypt:

  • تمت إضافة عملية تنفيذ معرّف المحتوى المميّز AES-CMAC.
  • تم إيقاف عمليات تنفيذ "التشفير المتقدّم للملفات (PBE) مع معيار HmacSHA2-*" نهائيًا وإزالتها.
  • تمت إضافة دعم محدود لمفاتيح X25519 واتفاقيات المفاتيح والتوقيعات.
  • تم تعديل BoringSSL لضمان صحة X.509.
  • إيقاف دعم الشهادات الموقَّعة بتنسيق MD5 في واجهات برمجة التطبيقات العامة CertPath ولم يتم قبول هذه الشهادات لاتصالات TLS منذ مستوى واجهة برمجة التطبيقات 16.

التغييرات في Android 10

لا يتضمّن نظام التشغيل Android 9 واجهة برمجة تطبيقات عامة خاصة بنظام التشغيل Android لـ Conscrypt، ولكنه يستخدم بدلاً من ذلك مقدّم أمان ينفذ فئات عادية لبنية التشفير في جافا (JCA) بما في ذلك Cipher وMessageDigest، و Java Secure Socket Extension (JSSE)، بما في ذلك SSLSocket وSSLEngine. يتفاعل المستخدمون مع هذه الفئات، ويتم استخدام بعض واجهات برمجة تطبيقات Conscrypt غير المتاحة للجميع من خلال libcore أو رمز الإطارات.

يضيف نظام التشغيل Android 10 عددًا صغيرًا من طرق واجهة برمجة التطبيقات العامة في android.net.ssl للوصول إلى وظائف Conscrypt التي لا تعرِضها الفئات ضمن javax.net.ssl. يتضمّن الإصدار Android 10 أيضًا نسخة مُبسّطة من مكتبة Bouncy Castle لتوفير أدوات cryptographic الأقل رواجًا كجزء من Android Runtime (غير مضمّنة في وحدة Conscrypt).

التنسيق والتبعيات

يتم توزيع وحدة Conscrypt (com.android.conscrypt) كملف APEX يحتوي على رمز Conscrypt Java ومكتبة Conscrypt أصلية ترتبط ديناميكيًا بمكتبات Android NDK (مثل liblog). وتشمل المكتبة الأصلية أيضًا نسخة من BoringSSL تم التحقّق منها (الشهادة رقم 3753) من خلال برنامج التحقّق من صحة وحدات التشفير (CMVP) التابع لمعهد NIST.

تعرض وحدة Conscrypt واجهات برمجة التطبيقات التالية:

  • واجهات برمجة التطبيقات المتاحة للجميع هي إضافات للفئات والواجهات في الحِزم ضمن java.* وjavax.*، بالإضافة إلى الفئات ضمن android.net.ssl.*. لا يستدعي رمز التطبيق الخارجي Conscrypt مباشرةً. تضمن معايير Platform API أن تظل واجهات برمجة التطبيقات هذه متوافقة مع الإصدارات القديمة والإصدارات المستقبلية.
  • واجهات برمجة التطبيقات الأساسية للنظام الأساسي هي واجهات برمجة تطبيقات مخفية يستخدمها إطار العمل للوصول إلى وظائف غير علنية. هذه التطبيقات محدودة نسبيًا، وأكبر مستخدم لها هو NetworkSecurityConfig، الذي يمدّد مدير ثقة Conscrypt (المكوّن الذي يتحقق من الشهادات) لتنفيذ ميزة إعداد أمان الشبكة.
  • تقتصر واجهات برمجة التطبيقات داخل النواة على دوال الإنشاء التي لا تحتوي على وسيطات والتي يتمّ استدعاؤها بشكلٍ عاكس من خلال آلية JCA وJSEE.