ตั้งแต่วันที่ 27 มีนาคม 2025 เป็นต้นไป เราขอแนะนำให้ใช้ android-latest-release
แทน aosp-main
เพื่อสร้างและมีส่วนร่วมใน AOSP โปรดดูข้อมูลเพิ่มเติมที่หัวข้อการเปลี่ยนแปลงใน AOSP
Conscrypt
จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน
บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ
โมดูล Conscrypt ช่วยเร่งการปรับปรุงความปลอดภัยและปรับปรุงความปลอดภัยของอุปกรณ์โดยไม่ต้องอาศัยการอัปเดต OTA โดยจะใช้โค้ด Java และไลบรารีแบบเนทีฟเพื่อให้บริการการใช้งาน TLS ของ Android รวมถึงฟังก์ชันการเข้ารหัสลับส่วนใหญ่ของ Android เช่น ตัวสร้างคีย์ การเข้ารหัส และข้อมูลสรุปข้อความ Conscrypt มีให้บริการเป็นไลบรารีโอเพนซอร์ส แต่มีความเชี่ยวชาญบางอย่างเมื่อรวมอยู่ในแพลตฟอร์ม Android
โมดูล Conscrypt ใช้ BoringSSL ซึ่งเป็นไลบรารีแบบเนทีฟที่ Google แยกมาจาก OpenSSL และใช้ในผลิตภัณฑ์ต่างๆ ของ Google สำหรับการเข้ารหัสและ TLS (โดยเฉพาะอย่างยิ่ง Google Chrome) ร่วมกับโค้ด Conscrypt (ทั้งโค้ด Java และโค้ดเนทีฟ) BoringSSL ไม่มีรุ่นอย่างเป็นทางการ (ผู้ใช้ทุกคนจะสร้างจาก HEAD) และไม่รับประกันความเสถียรของ API หรือ ABI
การเปลี่ยนแปลงใน Android 15
Android 15 จำกัดการใช้งาน TLS เวอร์ชัน 1.0 และ 1.1 ก่อนหน้านี้ Android ได้เลิกใช้งานเวอร์ชันเหล่านี้แล้ว แต่ตอนนี้ไม่อนุญาตให้แอปที่กําหนดเป้าหมายเป็น Android 15 ใช้เวอร์ชันดังกล่าว
การเปลี่ยนแปลงใน Android 14
Android 14 เปิดตัวที่เก็บความน่าเชื่อถือรูทที่อัปเดตได้ภายใน Conscrypt ใบรับรอง CA (หรือใบรับรอง) เป็นแหล่งที่มาของความน่าเชื่อถือสำหรับคีย์สาธารณะที่ใช้ภายใน Android และอินเทอร์เน็ตโดยรวม ใบรับรองเหล่านี้จะได้รับการตรวจสอบเป็นประจำเพื่อให้แน่ใจว่ามีการเข้ารหัสอย่างถูกต้อง ดังนั้นจึงต้องจัดเตรียมและจัดเก็บไว้ในอุปกรณ์ทั้งหมดที่ใช้ใบรับรอง
ก่อน Mainline ทาง Android ได้จัดเก็บใบรับรองไว้ในพาร์ติชันระบบ (ใน system/ca-certificates
) และอัปเดตใบรับรองพร้อมกับ Android ทุกรุ่น เมื่อใช้ Mainline คุณจะอัปเดตใบรับรองได้บ่อยขึ้นโดยใช้การอัปเดตรถไฟ Mainline ความสามารถใหม่นี้จะช่วยปรับปรุงกระบวนการอัปเดต ช่วยให้เราสามารถแก้ปัญหาได้เร็วขึ้น และช่วยยืดอายุการใช้งานของอุปกรณ์
ตั้งแต่ Android 14 เป็นต้นไป ระบบจะจัดเก็บใบรับรองรูทที่เชื่อถือได้ใน APEX ของโมดูล Conscrypt และพาร์ติชันระบบ แอปจะยังคงเลือกใบรับรองของตนเองและแก้ไขลักษณะการทำงานของใบรับรองได้โดยใช้ NetworkSecurityConfig
Android 14 ยังมีการเปลี่ยนแปลงอื่นๆ ในโมดูล Conscrypt ดังนี้
- เพิ่มการใช้งาน MAC ของ AES-CMAC
- เลิกใช้งานและนําการใช้งาน MAC ของ `PBEwithHmacSHA2-*` ออก
- เพิ่มการรองรับแบบจํากัดสําหรับคีย์ ข้อตกลงเกี่ยวกับคีย์ และลายเซ็น X25519
- อัปเดต BoringSSL เพื่อเพิ่มความถูกต้องของ X.509
- ยกเลิกการรองรับใบรับรองที่ลงนามด้วย MD5 ใน CertPath API สาธารณะ ระบบไม่ยอมรับใบรับรองดังกล่าวสำหรับการเชื่อมต่อ TLS ตั้งแต่ API ระดับ 16
การเปลี่ยนแปลงใน Android 10
Android 9 ไม่มี API สาธารณะสำหรับ Conscrypt โดยเฉพาะสำหรับ Android แต่จะใช้ผู้ให้บริการด้านความปลอดภัยที่ใช้คลาสมาตรฐานสำหรับ Java Cryptography Architecture (JCA) ซึ่งรวมถึง Cipher และ MessageDigest และ Java Secure Socket Extension (JSSE) ซึ่งรวมถึง SSLSocket และ SSLEngine
ผู้ใช้โต้ตอบกับคลาสเหล่านั้นและ libcore
หรือโค้ดเฟรมเวิร์กใช้ Conscrypt API บางรายการที่ไม่ใช่แบบสาธารณะ
Android 10 เพิ่มเมธอด API สาธารณะจำนวนเล็กน้อยใน android.net.ssl
เพื่อเข้าถึงฟังก์ชันการทำงานของ Conscrypt ที่คลาสใน javax.net.ssl
ไม่ได้แสดง Android 10 ยังมีสำเนาที่ตัดขนาดของ Bouncy Castle เพื่อให้บริการเครื่องมือการเข้ารหัสที่ได้รับความนิยมน้อยกว่าเป็นส่วนหนึ่งของรันไทม์ Android (ไม่รวมอยู่ในโมดูล Conscrypt)
โมดูล Conscrypt (com.android.conscrypt
) จะเผยแพร่เป็นไฟล์ APEX ที่มีโค้ด Java ของ Conscrypt และไลบรารีเนทีฟของ Conscrypt ที่ลิงก์กับไลบรารี NDK ของ Android แบบไดนามิก (เช่น liblog
) นอกจากนี้ ไลบรารีเนทีฟยังมีสำเนาของ BoringSSL ที่ผ่านการตรวจสอบแล้ว (ใบรับรอง #3753) ผ่านโปรแกรมการตรวจสอบโมดูลการเข้ารหัสลับ (Cryptographic Module Validation Program หรือ CMVP) ของ NIST ด้วย
โมดูล Conscrypt จะแสดง API ต่อไปนี้
- API สาธารณะคือส่วนขยายของคลาสและอินเทอร์เฟซในแพ็กเกจภายใต้
java.*
และ javax.*
รวมถึงคลาสภายใต้ android.net.ssl.*
โค้ดแอปภายนอกไม่ได้เรียกใช้ Conscrypt โดยตรง มาตรฐาน Platform API ช่วยให้มั่นใจได้ว่า API เหล่านี้จะยังคงเข้ากันได้แบบย้อนหลังและแบบไปข้างหน้า
- API หลักของแพลตฟอร์มคือ API ที่ซ่อนอยู่ซึ่งเฟรมเวิร์กใช้เพื่อเข้าถึงฟังก์ชันการทำงานที่ไม่ใช่แบบสาธารณะ ผู้ใช้มีจำนวนค่อนข้างจำกัด โดยผู้ใช้รายใหญ่ที่สุดคือ
NetworkSecurityConfig
ซึ่งขยายเครื่องมือจัดการความน่าเชื่อถือของ Conscrypt (คอมโพเนนต์ที่ตรวจสอบใบรับรอง) เพื่อใช้ฟีเจอร์การกำหนดค่าความปลอดภัยของเครือข่าย
- API ภายในแกนหลักจำกัดไว้ที่ตัวสร้างที่มีอาร์กิวเมนต์เป็น 0 ซึ่งเรียกใช้โดยเครื่อง JCA และ JSEE
ตัวอย่างเนื้อหาและโค้ดในหน้าเว็บนี้ขึ้นอยู่กับใบอนุญาตที่อธิบายไว้ในใบอนุญาตการใช้เนื้อหา Java และ OpenJDK เป็นเครื่องหมายการค้าหรือเครื่องหมายการค้าจดทะเบียนของ Oracle และ/หรือบริษัทในเครือ
อัปเดตล่าสุด 2025-07-27 UTC
[[["เข้าใจง่าย","easyToUnderstand","thumb-up"],["แก้ปัญหาของฉันได้","solvedMyProblem","thumb-up"],["อื่นๆ","otherUp","thumb-up"]],[["ไม่มีข้อมูลที่ฉันต้องการ","missingTheInformationINeed","thumb-down"],["ซับซ้อนเกินไป/มีหลายขั้นตอนมากเกินไป","tooComplicatedTooManySteps","thumb-down"],["ล้าสมัย","outOfDate","thumb-down"],["ปัญหาเกี่ยวกับการแปล","translationIssue","thumb-down"],["ตัวอย่าง/ปัญหาเกี่ยวกับโค้ด","samplesCodeIssue","thumb-down"],["อื่นๆ","otherDown","thumb-down"]],["อัปเดตล่าสุด 2025-07-27 UTC"],[],[],null,["# Conscrypt\n\nThe Conscrypt module accelerates security improvements and improves device\nsecurity without relying on OTA updates. It uses Java code and a native\nlibrary to provide the Android TLS implementation as well as a large portion\nof Android cryptographic functionality such as key generators, ciphers, and\nmessage digests. Conscrypt is available as an\n[open source\nlibrary](https://github.com/google/conscrypt), though it has some specializations when included in the Android\nplatform.\n\n\nThe Conscrypt module uses\n[BoringSSL](https://boringssl.googlesource.com/boringssl/),\na native library that is a Google fork of OpenSSL and which is used in many\nGoogle products for cryptography and TLS (most notably Google Chrome), in conjunction with\nConscrypt code (both Java and native code). BoringSSL doesn't have official releases (all users\nbuild from head) and makes no guarantees around API or ABI stability.\n\nChanges in Android 15\n---------------------\n\n\nAndroid 15 restricts the usage of TLS versions 1.0 and 1.1. These versions\nhad previously been deprecated in Android, but are now disallowed for apps targeting Android\n15.\n\nChanges in Android 14\n---------------------\n\n\nAndroid 14 introduces an updatable root trust store within Conscrypt. CA\ncertificates (or certs) provide the roots of trust for public keys used within Android and the\ninternet at large. These certificates are routinely checked to ensure proper cryptographic signing,\nso they must be provided and stored on all devices that rely on them.\n\n\nPrior to Mainline, Android stored certificates in the system partition (in\n`system/ca-certificates`) and updated them with every Android release. Now with Mainline,\nit's possible to update certificates more frequently using Mainline train updates. This new\ncapability should streamline updating processes, allow us to have faster turnaround times for\nissues, and help to extend device lifetimes.\n\n\nStarting in Android 14, root trust certificates are stored in the Conscrypt\nmodule APEX and the system partition. Apps can still choose their own certificates and modify\ncertificate behavior using `NetworkSecurityConfig`.\n\nAndroid 14 includes these other Conscrypt module changes:\n\n- Added AES-CMAC MAC implementation.\n- Deprecated and removed \\`PBEwithHmacSHA2-\\*\\` MAC implementations.\n- Added limited support for X25519 keys, key agreements, and signatures.\n- Updated BoringSSL for X.509 correctness.\n- Dropped support for MD5-signed certificates in the public CertPath APIs. Such certificates haven't been accepted for TLS connections since API level 16.\n\nChanges in Android 10\n---------------------\n\n\nAndroid 9 doesn't include an Android-specific public API for Conscrypt but\ninstead uses a security provider that implements standard classes for Java\nCryptography Architecture (JCA) including Cipher and MessageDigest, and\nJava Secure Socket Extension (JSSE), including SSLSocket and SSLEngine.\nUsers interact with those classes and some nonpublic Conscrypt APIs are used\nby `libcore` or frameworks code.\n\n\nAndroid 10 adds a small number of public API methods\nin `android.net.ssl` to access Conscrypt functionality that isn't\nexposed by the classes under `javax.net.ssl`. Android\n10 also includes a slimmed copy of\n[Bouncy Castle](https://en.wikipedia.org/wiki/Bouncy_Castle_(cryptography)) to provide lower-popularity cryptographic\ntools as part of Android Runtime (not included in the Conscrypt module).\n\nFormat and dependencies\n-----------------------\n\nThe Conscrypt module (`com.android.conscrypt`) is distributed as an [APEX](/docs/core/ota/apex) file that\nincludes the Conscrypt Java code and a Conscrypt native library that dynamically\nlinks to Android NDK libraries (such as `liblog`). The native library\nalso includes a copy of BoringSSL that has has been validated ([Certificate #3753](https://csrc.nist.gov/projects/cryptographic-module-validation-program/certificate/3753)) through NIST's [Cryptographic Module Validation Program (CMVP)](https://csrc.nist.gov/projects/cryptographic-module-validation-program).\n| **Note:** The Conscrypt module includes [/external/conscrypt](https://android.googlesource.com/platform/external/conscrypt/) and [/external/boringssl](https://android.googlesource.com/platform/external/boringssl/), but doesn't include `/external/bouncycastle`.\n\n\nThe Conscrypt module exposes the following APIs:\n\n- **Public APIs** are extensions of classes and interfaces in packages under `java.*` and `javax.*`, plus classes under `android.net.ssl.*`. External app code doesn't call Conscrypt directly. Platform API standards ensure that these APIs remain backward- and forward-compatible.\n- **Core platform APIs** are hidden APIs used by the framework to access nonpublic functionality. These are relatively limited; the largest user is `NetworkSecurityConfig`, which extends the Conscrypt trust manager (the component that verifies certificates) to implement the [network security configuration feature](https://developer.android.com/training/articles/security-config).\n- **Intra-core APIs** are limited to zero-argument constructors called reflectively by the JCA and JSEE machinery."]]