كونكربت

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

تستخدم وحدة Conscrypt BoringSSL ، وهي مكتبة أصلية هي عبارة عن مفترق Google لـ OpenSSL وتستخدم في العديد من منتجات Google للتشفير و TLS (أبرزها Google Chrome) ، جنبًا إلى جنب مع كود Conscrypt (كل من Java والرمز الأصلي). ليس لدى BoringSSL إصدارات رسمية (جميع المستخدمين يبنون من الرأس) ولا تقدم أي ضمانات حول استقرار API أو ABI.

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

لا يشتمل Android 9 على واجهة برمجة تطبيقات عامة خاصة بنظام Android لـ Conscrypt ولكنه يستخدم بدلاً من ذلك موفر أمان ينفذ فئات قياسية لهندسة تشفير Java (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 Runtime (غير مدرج في وحدة 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.