Mã hóa

Mô-đun Conscrypt tăng tốc cải tiế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 các bản cập nhật OTA. Nó sử dụng mã Java và thư viện gốc để cung cấp triển khai TLS của Android cũng như một phần lớn chức năng mã hóa của Android như trình tạo khóa, mật mã và tóm tắt thông báo. Conscrypt có sẵn dưới dạng thư viện nguồn mở , mặc dù nó 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 của OpenSSL của Google và được sử dụng trong nhiều sản phẩm của Google về mật mã và TLS (đáng chú ý nhất là Google Chrome), kết hợp với mã Conscrypt (cả 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 đều xây dựng từ đầu) và không đảm bảo về độ ổn định của API hoặc ABI.

Những thay đổi trong Android 14

Android 14 giới thiệu kho lưu trữ ủy thác gốc có thể cập nhật trong Conscrypt. Chứng chỉ CA (hoặc chứng chỉ) cung cấp nguồn gốc của sự tin cậy cho các khóa công khai được sử dụng trong Android và Internet nói chung. Các chứng chỉ này được kiểm tra thường xuyên để đảm bảo việc ký mật mã thích hợp, vì vậy chúng phải được cung cấp và lưu trữ trên tất cả cá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 chúng với mọi 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 các bản cập nhật tàu Mainline. Khả năng mới này sẽ hợp lý hóa các quy trình cập nhật, cho phép chúng tôi xử lý sự cố nhanh hơn và giúp kéo dài tuổi thọ của thiết bị.

Bắt đầu từ Android 14, chứng chỉ tin cậy gốc đượ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 triển khai MAC AES-CMAC.
  • Không được dùng nữa và đã xóa hoạt động triển khai MAC `PBEwithHmacSHA2-*`.
  • Đã thêm hỗ trợ có giới hạn cho khóa X25519, thỏa thuận chính và chữ ký.
  • Đã cập nhật BoringSSL để đảm bảo độ chính xác của X.509.
  • Đã bỏ hỗ trợ cho chứng chỉ có chữ ký MD5 trong API CertPath công khai. Những chứng chỉ như vậy chưa được chấp nhận cho các kết nối TLS kể từ API cấp 16.

Những 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 nhà cung cấp bảo mật triển khai các lớp tiêu chuẩn cho Kiến trúc mã hóa Java (JCA) bao gồm Cipher và MessageDigest cũng như Tiện ích mở rộng ổ 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 sử dụng bởi mã libcore hoặc framework.

Android 10 bổ sung một số ít phương thức API công khai trong android.net.ssl ​​để truy cập 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ã hóa có mức độ phổ biến thấp hơn như một phần của Android Runtime (không có trong mô-đun Conscrypt).

Định dạng và 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 với các thư viện NDK của Android (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ật mã (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 trong java.*javax.* , cộng với các lớp trong android.net.ssl.* . Mã ứng dụng bên ngoài không gọi trực tiếp đến 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à xuôi.
  • API nền tảng cốt lõi là các API ẩn được khung sử dụng để truy cập chức năng không công khai. Những điều 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 chứng chỉ) để triển khai tính năng cấu hình bảo mật mạng .
  • API nội lõi được giới hạn ở các hàm tạo không đối số được gọi một cách phản ánh bởi bộ máy JCA và JSEE.