מודול Conscrypt מאיץ שיפורי אבטחה ומשפר את אבטחת המכשיר מבלי להסתמך על עדכוני OTA. הוא משתמש בקוד Java וספרייה מקורית כדי לספק את הטמעת TLS של אנדרואיד, כמו גם חלק גדול מהפונקציונליות ההצפנה של אנדרואיד כגון מחוללי מפתחות, צפנים ותמצית הודעות. Conscrypt זמין כספריית קוד פתוח , אם כי יש לה כמה התמחויות כשהיא כלולה בפלטפורמת אנדרואיד.
מודול Conscrypt משתמש ב- BoringSSL , ספרייה מקורית שהיא מזלג של Google של OpenSSL ואשר משמשת במוצרי גוגל רבים להצפנה ו-TLS (בעיקר Google Chrome), בשילוב עם קוד Conscrypt (גם Java וגם קוד מקורי). ל-BoringSSL אין מהדורות רשמיות (כל המשתמשים בונים מהראש) ואינו מבטיח יציבות של API או ABI.
שינויים באנדרואיד 10
אנדרואיד 9 אינו כולל API ציבורי ספציפי ל-Android עבור Conscrypt, אלא משתמש בספק אבטחה שמיישם מחלקות סטנדרטיות עבור Java Cryptography Architecture (JCA) כולל Chipher ו-MessageDigest, ו-Java Secure Socket Extension (JSSE), כולל SSLSocket ו-SSLEngine. משתמשים מקיימים אינטראקציה עם מחלקות אלה וכמה ממשקי API של Conscrypt שאינם ציבוריים משמשים קוד libcore
או מסגרות.
אנדרואיד 10 מוסיף מספר קטן של שיטות API ציבוריות ב- android.net.ssl
כדי לגשת לפונקציונליות Conscrypt שלא נחשפת על ידי המחלקות תחת javax.net.ssl
. אנדרואיד 10 כולל גם עותק דק של Bouncy Castle כדי לספק כלים קריפטוגרפיים בעלי פופולריות נמוכה יותר כחלק מ- Android Runtime (לא כלול במודול Conscrypt).
פורמט ותלות
מודול Conscrypt (`com.android.conscrypt`) מופץ כקובץ APEX הכולל את קוד Conscrypt Java וספרייה מקורית של Conscrypt המקשרת באופן דינמי לספריות Android NDK (כגון liblog
). הספרייה המקורית כוללת גם עותק של BoringSSL שעבר אימות ( תעודה מס' 3753 ) באמצעות תוכנית אימות המודול הקריפטוגרפי (CMVP) של NIST.
מודול Conscrypt חושף את ממשקי ה-API הבאים:
- ממשקי API ציבוריים הם הרחבות של מחלקות וממשקים בחבילות תחת
java.*
ו-javax.*
, בתוספת מחלקות תחתandroid.net.ssl.*
. קוד אפליקציה חיצוני לא קורא ל-Conscrypt ישירות. תקני API של פלטפורמה מבטיחים שממשקי API אלה יישארו תואמים אחורה וקדימה. - ממשקי API של פלטפורמת ליבה הם ממשקי API נסתרים המשמשים את המסגרת לגישה לפונקציונליות שאינה ציבורית. אלה מוגבלים יחסית; המשתמש הגדול ביותר הוא
NetworkSecurityConfig
, אשר מרחיב את מנהל האמון של Conscrypt (הרכיב המאמת אישורים) ליישום תכונת תצורת אבטחת הרשת . - ממשקי API תוך הליבה מוגבלים לבנאי אפס ארגומנט הנקראים באופן רפלקטיבי על ידי מכונות JCA ו-JSEE.