تعمل وحدة Conscrypt على تسريع تحسينات الأمان وتحسين أمان الجهاز بدون الاعتماد على تحديثات OTA. ويستخدم هذا الإصدار رمز Java ومكتبة برمجية أساسية لتنفيذ بروتوكول TLS في Android بالإضافة إلى جزء كبير من وظائف التشفير في Android، مثل أدوات إنشاء المفاتيح والأصفار الترميزية وخلاصات الرسائل. تتوفّر مكتبة Conscrypt كأحد مكتبات البرامج المفتوحة المصدر، إلا أنّها تتضمّن بعض التخصصات عند تضمينها في منصة Android.
تستخدم وحدة Conscrypt مكتبة BoringSSL، وهي مكتبة أصلية تم إنشاؤها من مكتبة OpenSSL من قِبل Google وتُستخدَم في العديد من منتجات Google لتشفير البيانات وتوفير بروتوكول أمان طبقة النقل (TLS) (أبرزها Google Chrome)، إلى جانب رمز Conscrypt (كل من رمز Java والرمز الأصلي). لا يتوفّر لدى BoingSSL إصدارات رسمية (يتم إنشاء جميع المستخدمين تلقائيًا) ولا يقدّم أي ضمانات بشأن ثبات واجهة برمجة التطبيقات أو واجهة التطبيق الثنائية (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. من المفترض أن تؤدي هذه الميزة الجديدة إلى تبسيط عمليات التحديث، والسماح لنا بحلّ المشاكل بشكل أسرع، والمساعدة في إطالة عمر الأجهزة.
بدءًا من الإصدار 14 من Android، يتم تخزين شهادات جذر الثقة في ملف APEX ضمن ملف وحدات Conscrypt
وقسم النظام. سيظل بإمكان التطبيقات اختيار شهاداتها وتعديل
سلوك الشهادة باستخدام NetworkSecurityConfig
.
يتضمّن نظام التشغيل Android 14 التغييرات التالية الأخرى في وحدة Conscrypt:
- تمت إضافة تنفيذ معرّف المحتوى AES-CMAC.
- تم إيقاف عمليات تنفيذ MAC لنظام "PBEwithHmacSHA2-*" وإزالتها.
- تمّت إضافة دعم محدود لمفاتيح 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 لتوفير أدوات تشفير أقل شهرة
كجزء من "وقت تشغيل Android" (غير مضمّنة في وحدة Conscrypt).
التنسيق والتبعيات
يتم توزيع وحدة Conscrypt (com.android.conscrypt
) كملف APEX يحتوي على رمز Conscrypt Java ومكتبة Conscrypt الأصلية التي ترتبط ديناميكيًا بمكتبات Android NDK (مثل liblog
). وتشمل المكتبة الأصلية أيضًا نسخة من BoringSSL تم التحقّق منها (الشهادة رقم 3753) من خلال برنامج التحقّق من صحة وحدات التشفير (CMVP) التابع لمعهد NIST.
تعرض وحدة Conscrypt واجهات برمجة التطبيقات التالية:
- واجهات برمجة التطبيقات المتاحة للجميع هي إضافات للفئات والواجهات في
الحِزم ضمن
java.*
وjavax.*
، بالإضافة إلى الفئات ضمنandroid.net.ssl.*
. لا يستدعي رمز التطبيق الخارجي Conscrypt مباشرةً. وتضمن معايير واجهة برمجة التطبيقات للنظام الأساسي بقاء واجهات برمجة التطبيقات هذه متوافقة مع الأنظمة القديمة والمتوافقة مع الإصدارات الأمامية. - واجهات برمجة التطبيقات الأساسية للنظام الأساسي هي واجهات برمجة تطبيقات مخفية يستخدمها إطار العمل
للوصول إلى وظائف غير علنية. هذه التطبيقات محدودة نسبيًا، وأكبر مستخدم
لها هو
NetworkSecurityConfig
، الذي يمدّد مدير ثقة Conscrypt (المكوّن الذي يتحقق من الشهادات) لتنفيذ ميزة إعداد أمان الشبكة. - تقتصر واجهات برمجة التطبيقات داخل النواة على الإنشاءات التي لا تتضمّن أي وسيطات، والتي يُطلق عليها بشكل انعكاسي ماكينات JCA وJSee.