كونكربت

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

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

التغييرات في أندرويد 14

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

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

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

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

  • تمت إضافة تطبيق AES-CMAC MAC.
  • تم إهمال وإزالة تطبيقات MAC `PBEwithHmacSHA2-*`.
  • تمت إضافة دعم محدود لمفاتيح X25519 والاتفاقيات الرئيسية والتوقيعات.
  • تم تحديث BoringSSL لصحة X.509.
  • تم إسقاط الدعم للشهادات الموقعة بواسطة MD5 في واجهات برمجة تطبيقات CertPath العامة. لم يتم قبول مثل هذه الشهادات لاتصالات TLS منذ مستوى API 16.

التغييرات في أندرويد 10

لا يتضمن Android 9 واجهة برمجة تطبيقات عامة خاصة بـ Android لـ Conscrypt، ولكنه يستخدم بدلاً من ذلك موفر أمان ينفذ فئات قياسية لـ Java Cryptography Architecture (JCA) بما في ذلك Cipher وMessageDigest وJava Secure Switch 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.