Giải mã

Mô-đun Conscrypt giúp đẩy nhanh quá trình cải thiện bảo mật và cải thiện bảo mật thiết bị mà không cần dựa vào bản cập nhật OTA. Thư viện này sử dụng mã Java và thư viện gốc để cung cấp tính năng triển khai TLS của Android cũng như phần lớn chức năng mã hoá của Android, chẳng hạn như trình tạo khoá, thuật toán mã hoá và thông báo tóm tắt. Conscrypt có sẵn dưới dạng thư viện nguồn mở, mặc dù có một số chuyên môn khi được đưa vào nền tảng Android.

Mô-đun Conscrypt sử dụng BoringSSL, một thư viện gốc là một nhánh Google của OpenSSL và được dùng trong nhiều sản phẩm của Google để mã hoá và TLS (đáng chú ý nhất là Google Chrome), kết hợp với mã Conscrypt (cả mã Java và mã gốc). BoringSSL không có bản phát hành chính thức (tất cả người dùng tạo bản dựng từ đầu) và không đảm bảo về độ ổn định của API hoặc ABI.

Các thay đổi trong Android 15

Android 15 hạn chế việc sử dụng TLS phiên bản 1.0 và 1.1. Các phiên bản này trước đây đã ngừng hoạt động trong Android, nhưng hiện không được phép sử dụng cho các ứng dụng nhắm đến Android 15.

Các thay đổi trong Android 14

Android 14 giới thiệu một kho lưu trữ gốc có thể cập nhật trong Conscrypt. Chứng chỉ CA (hoặc chứng chỉ) cung cấp cơ sở tin cậy cho các khoá công khai được sử dụng trong Android và Internet nói chung. Các chứng chỉ này thường xuyên được kiểm tra để đảm bảo việc ký mã hoá đúng cách, vì vậy, bạn phải cung cấp và lưu trữ các chứng chỉ này trên tất cả thiết bị dựa vào chúng.

Trước Mainline, Android lưu trữ các chứng chỉ trong phân vùng hệ thống (trong system/ca-certificates) và cập nhật các chứng chỉ đó theo từng bản phát hành Android. Giờ đây, với Mainline, bạn có thể cập nhật chứng chỉ thường xuyên hơn bằng cách sử dụng bản cập nhật tàu Mainline. Khả năng mới này sẽ giúp đơn giản hoá quy trình cập nhật, cho phép chúng tôi rút ngắn thời gian xử lý vấn đề và giúp kéo dài thời gian sử dụng thiết bị.

Kể từ Android 14, chứng chỉ tin cậy gốc sẽ được lưu trữ trong mô-đun Conscrypt APEX và phân vùng hệ thống. Các ứng dụng vẫn có thể chọn chứng chỉ của riêng mình và sửa đổi hành vi của chứng chỉ bằng NetworkSecurityConfig.

Android 14 bao gồm các thay đổi khác về mô-đun Conscrypt sau đây:

  • Thêm tuỳ chọn triển khai MAC AES-CMAC.
  • Ngừng sử dụng và xoá các phương thức triển khai MAC `PBEwithHmacSHA2-*`.
  • Thêm tính năng hỗ trợ có giới hạn cho khoá X25519, thoả thuận khoá và chữ ký.
  • Đã cập nhật BoringSSL cho độ chính xác X.509.
  • Ngừng hỗ trợ chứng chỉ được ký bằng MD5 trong các API CertPath công khai. Các chứng chỉ như vậy không được chấp nhận cho các kết nối TLS kể từ API cấp 16.

Các thay đổi trong Android 10

Android 9 không bao gồm API công khai dành riêng cho Android cho Conscrypt, mà thay vào đó sử dụng một trình cung cấp dịch vụ bảo mật triển khai các lớp chuẩn cho Kiến trúc mã hoá Java (JCA) bao gồm Cipher và MessageDigest, cũng như Tiện ích ổ cắm bảo mật Java (JSSE), bao gồm SSLSocket và SSLEngine. Người dùng tương tác với các lớp đó và một số API Conscrypt không công khai được libcore hoặc mã khung sử dụng.

Android 10 thêm một số ít phương thức API công khai trong android.net.ssl để truy cập vào chức năng Conscrypt mà các lớp trong javax.net.ssl không hiển thị. Android 10 cũng bao gồm một bản sao rút gọn của Bouncy Castle để cung cấp các công cụ mã hoá phổ biến hơn trong Android Runtime (không có trong mô-đun Conscrypt).

Định dạng và phần phụ thuộc

Mô-đun Conscrypt (com.android.conscrypt) được phân phối dưới dạng tệp APEX, bao gồm mã Java Conscrypt và thư viện gốc Conscrypt liên kết động đến thư viện Android NDK (chẳng hạn như liblog). Thư viện gốc cũng bao gồm một bản sao BoringSSL đã được xác thực (Chứng chỉ #3753) thông qua Chương trình xác thực mô-đun mã hoá (CMVP) của NIST.

Mô-đun Conscrypt hiển thị các API sau:

  • API công khai là phần mở rộng của các lớp và giao diện trong các gói thuộc java.*javax.*, cùng với các lớp thuộc android.net.ssl.*. Mã ứng dụng bên ngoài không gọi trực tiếp Conscrypt. Các tiêu chuẩn API nền tảng đảm bảo rằng các API này vẫn tương thích ngược và tương thích với các API mới.
  • API nền tảng cốt lõi là các API ẩn mà khung dùng để truy cập vào chức năng không công khai. Việc này tương đối hạn chế; người dùng lớn nhất là NetworkSecurityConfig, mở rộng trình quản lý tin cậy Conscrypt (thành phần xác minh các chứng chỉ) để triển khai tính năng cấu hình bảo mật mạng.
  • Các API nội bộ bị giới hạn ở các hàm khởi tạo không có đối số được bộ máy JCA và JSEE gọi chung phản ánh.