Conscrypt

ماژول Conscrypt بهبودهای امنیتی را تسریع می‌کند و امنیت دستگاه را بدون اتکا به به‌روزرسانی‌های OTA بهبود می‌بخشد. این برنامه از کد جاوا و کتابخانه بومی برای ارائه پیاده‌سازی Android TLS و همچنین بخش بزرگی از عملکرد رمزنگاری Android مانند مولدهای کلید، رمزها، و خلاصه پیام استفاده می‌کند. Conscrypt به‌عنوان کتابخانه متن‌باز دردسترس است، اگرچه وقتی در پلاتفرم Android گنجانده می‌شود، برخی تخصص‌ها را دارد.

واحد Conscrypt از BoringSSL، کتابخانه بومی که انشعاب Google از OpenSSL است و در بسیاری از محصولات Google برای رمزنگاری و TLS (به‌ویژه Google Chrome) استفاده می‌شود، همراه با کد Conscrypt (هم کد جاوا و هم کد بومی) استفاده می‌کند. BoringSSL نسخه رسمی ندارد (همه کاربران از head می‌سازند) و هیچ تضمینی درباره پایداری API یا ABI ارائه نمی‌دهد.

تغییرات در Android 15

‫Android 15 استفاده از نسخه‌های ۱.۰ و ۱.۱ «امنیت لایه انتقال» را محدود می‌کند. این نسخه‌ها قبلاً در Android منسوخ شده بودند، اما اکنون برای برنامه‌هایی که Android 15 را هدف‌یابی می‌کنند مجاز نیستند.

تغییرات در Android 14

Android 14 یک مخزن اعتماد ریشه قابل‌به‌روزرسانی در Conscrypt معرفی می‌کند. گواهینامه‌های CA (یا گواهینامه‌ها) ریشه‌های اعتماد را برای کلیدهای عمومی مورداستفاده در Android و اینترنت به‌طور کلی فراهم می‌کنند. این گواهینامه‌ها به‌طور معمول بررسی می‌شوند تا از امضای رمزنگاری صحیح اطمینان حاصل شود، بنابراین باید در همه دستگاه‌هایی که به آن‌ها متکی هستند ارائه و ذخیره شوند.

قبل‌از «اصلی»، Android گواهینامه‌ها را در پارتیشن سیستم (در system/ca-certificates) ذخیره می‌کرد و آن‌ها را با هر نسخه Android به‌روزرسانی می‌کرد. اکنون با Mainline، می‌توان گواهینامه‌ها را بااستفاده از به‌روزرسانی‌های قطار Mainline با فواصل زمانی کمتری به‌روزرسانی کرد. این قابلیت جدید باید فرایندهای به‌روزرسانی را ساده‌تر کند، به ما امکان دهد زمان‌های چرخه سریع‌تری برای مشکلات داشته باشیم، و به افزایش طول عمر دستگاه کمک کند.

از Android 14، گواهینامه‌های اعتماد ریشه در واحد APEX مربوط به Conscrypt و افراز سیستم ذخیره می‌شوند. برنامه‌ها همچنان می‌توانند گواهینامه‌های خودشان را انتخاب کنند و رفتار گواهینامه را بااستفاده از NetworkSecurityConfig اصلاح کنند.

‫Android 14 شامل این تغییرات دیگر در واحد Conscrypt است:

  • پیاده‌سازی AES-CMAC MAC اضافه شد.
  • پیاده‌سازی‌های منسوخ و برداشته‌شده «PBEwithHmacSHA2-*» از MAC.
  • پشتیبانی محدودی برای کلیدهای X25519، توافق‌های کلید، و امضاها اضافه شد.
  • ‫BoringSSL برای صحت X.509 به‌روزرسانی شد.
  • پشتیبانی از گواهینامه‌های امضاشده با MD5 در CertPath API عمومی متوقف شد. چنین گواهی‌هایی از سطح میانای برنامه‌سازی کاربردی ۱۶ برای اتصال‌های TLS پذیرفته نشده‌اند.

تغییرات در Android 10

‫Android 9 شامل میانای برنامه‌سازی کاربردی عمومی مختص Android برای Conscrypt نیست، اما درعوض از ارائه‌دهنده امنیتی استفاده می‌کند که کلاس‌های استاندارد را برای «معماری رمزنگاری جاوا» (JCA) ازجمله Cipher و MessageDigest، و «افزونه سوکت امن جاوا» (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 و کتابخانه بومی Conscrypt است که به‌صورت پویا به کتابخانه‌های Android NDK (مثل liblog) پیوند می‌دهد. کتابخانه بومی همچنین شامل نسخه‌ای از BoringSSL است که ازطریق برنامه اعتبارسنجی واحد رمزنگاری (CMVP) «مؤسسه ملی استاندارد و فناوری» (NIST) اعتبارسنجی شده است (گواهینامه شماره ۳۷۵۳).

واحد Conscrypt میاناهای برنامه‌سازی کاربردی زیر را ارائه می‌دهد:

  • میاناهای برنامه‌سازی کاربردی عمومی افزونه‌های کلاس‌ها و میاناهای بسته‌های تحت java.* و javax.*، به‌علاوه کلاس‌های تحت android.net.ssl.* هستند. کد برنامه خارجی مستقیماً Conscrypt را فراخوانی نمی‌کند. استانداردهای میانای برنامه‌سازی کاربردی پلاتفرم تضمین می‌کند که این میاناهای برنامه‌سازی کاربردی با نسخه‌های قبلی و بعدی سازگار باقی بمانند.
  • میاناهای برنامه‌سازی کاربردی پلاتفرم اصلی میاناهای برنامه‌سازی کاربردی پنهانی هستند که چارچوب برای دسترسی به عملکرد غیرعمومی از آن‌ها استفاده می‌کند. این موارد نسبتاً محدود هستند؛ بزرگ‌ترین کاربر NetworkSecurityConfig است که مدیر اعتماد Conscrypt (مؤلفه‌ای که گواهینامه‌ها را درستی‌سنجی می‌کند) را گسترش می‌دهد تا ویژگی پیکربندی امنیت شبکه را پیاده‌سازی کند.
  • میاناهای برنامه‌سازی کاربردی درون‌هسته‌ای به سازنده‌های بدون آرگومان محدود می‌شوند که به‌صورت بازتابی توسط ماشین‌آلات JCA و JSEE فراخوانی می‌شوند.