צרפן

מודול Conscrypt מאיץ שיפורי אבטחה ומשפר את אבטחת המכשיר מבלי להסתמך על עדכוני OTA. הוא משתמש בקוד Java וספרייה מקורית כדי לספק את הטמעת TLS של אנדרואיד, כמו גם חלק גדול מהפונקציונליות ההצפנה של אנדרואיד כגון מחוללי מפתחות, צפנים ותמצית הודעות. Conscrypt זמין כספריית קוד פתוח , אם כי יש לה כמה התמחויות כשהיא כלולה בפלטפורמת אנדרואיד.

מודול Conscrypt משתמש ב- BoringSSL , ספרייה מקורית שהיא מזלג של Google של OpenSSL ואשר משמשת במוצרי גוגל רבים להצפנה ו-TLS (בעיקר Google Chrome), בשילוב עם קוד Conscrypt (גם Java וגם קוד מקורי). ל-BoringSSL אין מהדורות רשמיות (כל המשתמשים בונים מהראש) ואינו מבטיח יציבות של API או ABI.

שינויים באנדרואיד 14

אנדרואיד 14 מציגה חנות אמון שורש הניתנת לעדכון בתוך Conscrypt. אישורי CA (או אישורים) מספקים את שורשי האמון עבור מפתחות ציבוריים המשמשים באנדרואיד ובאינטרנט בכלל. אישורים אלו נבדקים באופן שוטף כדי להבטיח חתימה קריפטוגרפית נכונה, ולכן יש לספקם ולאחסן אותם בכל המכשירים המסתמכים עליהם.

לפני Mainline, אנדרואיד אחסן אישורים במחיצת המערכת (ב- system/ca-certificates ) ועדכן אותם בכל מהדורת אנדרואיד. כעת עם Mainline, ניתן לעדכן תעודות בתדירות גבוהה יותר באמצעות עדכוני רכבת 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 ציבורי ספציפי ל-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.