اعتبارًا من 27 آذار (مارس) 2025، ننصحك باستخدام android-latest-release
بدلاً من aosp-main
لإنشاء AOSP والمساهمة فيه. لمزيد من المعلومات، يُرجى الاطّلاع على التغييرات في AOSP.
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.
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["# Conscrypt\n\nThe Conscrypt module accelerates security improvements and improves device\nsecurity without relying on OTA updates. It uses Java code and a native\nlibrary to provide the Android TLS implementation as well as a large portion\nof Android cryptographic functionality such as key generators, ciphers, and\nmessage digests. Conscrypt is available as an\n[open source\nlibrary](https://github.com/google/conscrypt), though it has some specializations when included in the Android\nplatform.\n\n\nThe Conscrypt module uses\n[BoringSSL](https://boringssl.googlesource.com/boringssl/),\na native library that is a Google fork of OpenSSL and which is used in many\nGoogle products for cryptography and TLS (most notably Google Chrome), in conjunction with\nConscrypt code (both Java and native code). BoringSSL doesn't have official releases (all users\nbuild from head) and makes no guarantees around API or ABI stability.\n\nChanges in Android 15\n---------------------\n\n\nAndroid 15 restricts the usage of TLS versions 1.0 and 1.1. These versions\nhad previously been deprecated in Android, but are now disallowed for apps targeting Android\n15.\n\nChanges in Android 14\n---------------------\n\n\nAndroid 14 introduces an updatable root trust store within Conscrypt. CA\ncertificates (or certs) provide the roots of trust for public keys used within Android and the\ninternet at large. These certificates are routinely checked to ensure proper cryptographic signing,\nso they must be provided and stored on all devices that rely on them.\n\n\nPrior to Mainline, Android stored certificates in the system partition (in\n`system/ca-certificates`) and updated them with every Android release. Now with Mainline,\nit's possible to update certificates more frequently using Mainline train updates. This new\ncapability should streamline updating processes, allow us to have faster turnaround times for\nissues, and help to extend device lifetimes.\n\n\nStarting in Android 14, root trust certificates are stored in the Conscrypt\nmodule APEX and the system partition. Apps can still choose their own certificates and modify\ncertificate behavior using `NetworkSecurityConfig`.\n\nAndroid 14 includes these other Conscrypt module changes:\n\n- Added AES-CMAC MAC implementation.\n- Deprecated and removed \\`PBEwithHmacSHA2-\\*\\` MAC implementations.\n- Added limited support for X25519 keys, key agreements, and signatures.\n- Updated BoringSSL for X.509 correctness.\n- Dropped support for MD5-signed certificates in the public CertPath APIs. Such certificates haven't been accepted for TLS connections since API level 16.\n\nChanges in Android 10\n---------------------\n\n\nAndroid 9 doesn't include an Android-specific public API for Conscrypt but\ninstead uses a security provider that implements standard classes for Java\nCryptography Architecture (JCA) including Cipher and MessageDigest, and\nJava Secure Socket Extension (JSSE), including SSLSocket and SSLEngine.\nUsers interact with those classes and some nonpublic Conscrypt APIs are used\nby `libcore` or frameworks code.\n\n\nAndroid 10 adds a small number of public API methods\nin `android.net.ssl` to access Conscrypt functionality that isn't\nexposed by the classes under `javax.net.ssl`. Android\n10 also includes a slimmed copy of\n[Bouncy Castle](https://en.wikipedia.org/wiki/Bouncy_Castle_(cryptography)) to provide lower-popularity cryptographic\ntools as part of Android Runtime (not included in the Conscrypt module).\n\nFormat and dependencies\n-----------------------\n\nThe Conscrypt module (`com.android.conscrypt`) is distributed as an [APEX](/docs/core/ota/apex) file that\nincludes the Conscrypt Java code and a Conscrypt native library that dynamically\nlinks to Android NDK libraries (such as `liblog`). The native library\nalso includes a copy of BoringSSL that has has been validated ([Certificate #3753](https://csrc.nist.gov/projects/cryptographic-module-validation-program/certificate/3753)) through NIST's [Cryptographic Module Validation Program (CMVP)](https://csrc.nist.gov/projects/cryptographic-module-validation-program).\n| **Note:** The Conscrypt module includes [/external/conscrypt](https://android.googlesource.com/platform/external/conscrypt/) and [/external/boringssl](https://android.googlesource.com/platform/external/boringssl/), but doesn't include `/external/bouncycastle`.\n\n\nThe Conscrypt module exposes the following APIs:\n\n- **Public APIs** are extensions of classes and interfaces in packages under `java.*` and `javax.*`, plus classes under `android.net.ssl.*`. External app code doesn't call Conscrypt directly. Platform API standards ensure that these APIs remain backward- and forward-compatible.\n- **Core platform APIs** are hidden APIs used by the framework to access nonpublic functionality. These are relatively limited; the largest user is `NetworkSecurityConfig`, which extends the Conscrypt trust manager (the component that verifies certificates) to implement the [network security configuration feature](https://developer.android.com/training/articles/security-config).\n- **Intra-core APIs** are limited to zero-argument constructors called reflectively by the JCA and JSEE machinery."]]