ماژول Conscrypt بهبودهای امنیتی را سرعت می بخشد و امنیت دستگاه را بدون تکیه بر به روز رسانی OTA بهبود می بخشد. این برنامه از کد جاوا و یک کتابخانه بومی برای ارائه اجرای Android TLS و همچنین بخش بزرگی از عملکرد رمزنگاری اندروید مانند ژنراتورهای کلیدی، رمزنگاریها و خلاصه پیام استفاده میکند. Conscrypt به عنوان یک کتابخانه منبع باز در دسترس است، اگرچه در پلتفرم اندروید دارای برخی تخصص ها است.
ماژول Conscrypt از BoringSSL استفاده میکند، یک کتابخانه بومی که یک فورک Google از OpenSSL است و در بسیاری از محصولات Google برای رمزنگاری و TLS (بهویژه گوگل کروم)، در ارتباط با کد Conscrypt (هم جاوا و هم کد بومی) استفاده میشود. BoringSSL نسخه های رسمی ندارد (همه کاربران از سر خود می سازند) و هیچ تضمینی در مورد ثبات API یا ABI نمی دهد.
تغییرات اندروید 15
اندروید 15 استفاده از TLS نسخه 1.0 و 1.1 را محدود می کند. این نسخهها قبلاً در اندروید منسوخ شده بودند، اما اکنون برای برنامههایی که اندروید 15 را هدف قرار میدهند غیرمجاز هستند.
تغییرات اندروید 14
اندروید 14 یک فروشگاه اعتماد ریشه قابل به روز رسانی در Conscrypt معرفی می کند. گواهینامه های CA (یا گواهی ها) ریشه های اعتماد را برای کلیدهای عمومی مورد استفاده در Android و اینترنت به طور کلی فراهم می کند. این گواهی ها به طور معمول برای اطمینان از امضای رمزنگاری مناسب بررسی می شوند، بنابراین باید در همه دستگاه هایی که به آنها متکی هستند ارائه و ذخیره شوند.
قبل از Mainline، Android گواهیها را در پارتیشن سیستم (در system/ca-certificates
) ذخیره میکرد و با هر نسخه اندروید بهروزرسانی میکرد. اکنون با Mainline، امکان بهروزرسانی گواهیها با استفاده از بهروزرسانیهای قطار اصلی وجود دارد. این قابلیت جدید باید فرآیندهای بهروزرسانی را سادهتر کند، به ما امکان دهد زمانهای بازگشت سریعتری برای مشکلات داشته باشیم و به افزایش طول عمر دستگاه کمک کند.
با شروع اندروید 14، گواهیهای اعتماد ریشه در ماژول Conscrypt APEX و پارتیشن سیستم ذخیره میشوند. برنامهها همچنان میتوانند گواهیهای خود را انتخاب کنند و رفتار گواهی را با استفاده از NetworkSecurityConfig
تغییر دهند.
اندروید 14 شامل سایر تغییرات ماژول Conscrypt است:
- پیاده سازی AES-CMAC MAC اضافه شد.
- اجرای MAC «PBEwithHmacSHA2-*» منسوخ و حذف شد.
- پشتیبانی محدود برای کلیدهای X25519، قراردادهای کلیدی و امضاها اضافه شد.
- BoringSSL برای صحت X.509 به روز شد.
- پشتیبانی از گواهینامه های امضا شده با MD5 در API های عمومی CertPath قطع شد. چنین گواهیهایی برای اتصالات TLS از سطح API 16 پذیرفته نشدهاند.
تغییرات اندروید 10
اندروید 9 شامل یک API عمومی مخصوص اندروید برای Conscrypt نمیشود، اما در عوض از یک ارائهدهنده امنیتی استفاده میکند که کلاسهای استانداردی را برای معماری رمزنگاری جاوا (JCA) شامل Cipher و MessageDigest، و Java Secure Socket Extension (JSSE)، از جمله SSLSocket و SSLEngine، پیادهسازی میکند. کاربران با آن کلاسها تعامل دارند و برخی از APIهای Conscrypt غیرعمومی توسط کدهای libcore
یا Framework استفاده میشوند.
Android 10 تعداد کمی از روشهای API عمومی را در android.net.ssl
اضافه میکند تا به عملکرد Conscrypt دسترسی پیدا کند که توسط کلاسهای زیر javax.net.ssl
در معرض نمایش نیست. اندروید 10 همچنین شامل یک نسخه باریک از Bouncy Castle برای ارائه ابزارهای رمزنگاری با محبوبیت کمتر به عنوان بخشی از Android Runtime است (که در ماژول Conscrypt گنجانده نشده است).
قالب و وابستگی ها
ماژول Conscrypt ( com.android.conscrypt
) به عنوان یک فایل APEX که شامل کد جاوا Conscrypt و یک کتابخانه بومی Conscrypt است که به صورت پویا به کتابخانههای Android NDK (مانند liblog
) پیوند میدهد، توزیع میشود. کتابخانه بومی همچنین شامل یک نسخه از BoringSSL است که از طریق برنامه اعتبارسنجی ماژول رمزنگاری (CMVP) NIST تأیید شده است ( گواهی شماره 3753 ).
ماژول Conscrypt API های زیر را در معرض دید قرار می دهد:
- APIهای عمومی افزونههای کلاسها و رابطها در بستههای تحت
java.*
وjavax.*
، به علاوه کلاسهای تحتandroid.net.ssl.*
هستند. کد برنامه خارجی به طور مستقیم با Conscrypt تماس نمی گیرد. استانداردهای پلتفرم API تضمین می کنند که این APIها سازگار با عقب و جلو باقی می مانند. - APIهای پلتفرم اصلی ، APIهای پنهانی هستند که توسط چارچوب برای دسترسی به عملکرد غیرعمومی استفاده می شوند. اینها نسبتاً محدود هستند. بزرگترین کاربر
NetworkSecurityConfig
است که مدیریت اعتماد Conscrypt (جزئی که گواهینامه ها را تأیید می کند) را برای پیاده سازی ویژگی پیکربندی امنیت شبکه گسترش می دهد. - APIهای درون هستهای محدود به سازندههای آرگومان صفر هستند که توسط ماشینهای JCA و JSEE به صورت بازتابی نامیده میشوند.