1. BoringSSL คืออะไร
BoringSSL คือไลบรารีการเข้ารหัสแบบโอเพนซอร์สของ Google ที่พัฒนาต่อยอดมาจาก OpenSSL ซึ่งออกแบบมาโดยเฉพาะสำหรับโปรเจกต์ Chromium และ Android ส่วนประกอบหลักได้แก่:
- การใช้งานโปรโตคอล: TLS 1.2/1.3, DTLS 1.2
- ส่วนประกอบพื้นฐานของการเข้ารหัส: AES-GCM, ChaCha20-Poly1305, RSA-PSS, ECDSA
- การยืนยันใบรับรอง: การตรวจสอบความถูกต้องของเชน X.509
- การขนส่งที่ปลอดภัย: เลเยอร์นามธรรม BIO
แตกต่างจาก OpenSSL ตรงที่ BoringSSL:
- ลบการสนับสนุนอัลกอริทึมที่ล้าสมัยออก (SSLv3, RC4)
- ยกเลิกข้อกำหนดการตรวจสอบ FIPS 140-2
- ใช้การลิงก์แบบคงที่เป็นค่าเริ่มต้น
- ใช้งานนโยบายใบรับรองที่เข้มงวด
2. สถาปัตยกรรม BoringSSL เทียบกับ OpenSSL
คุณสมบัติ | BoringSSL | OpenSSL |
---|---|---|
ฐานโค้ด | ~240Kloc (แบบง่าย) | ~500Kloc |
ความปลอดภัยของเธรด | การดำเนินการแบบอะตอมมิก | ล็อกส่วนกลาง |
หน่วยความจำ | ตัวจัดสรรแบบกำหนดเอง | malloc/free มาตรฐาน |
API | เฉพาะ Chromium | วัตถุประสงค์ทั่วไป |
การอัปเดต | เผยแพร่รายสัปดาห์ | ออกรุ่นรายไตรมาส |
ความเข้ากันได้ | ตั้งใจที่จะทำลาย ABI | รักษาความเสถียรของ ABI |
ความแตกต่างทางสถาปัตยกรรมที่สำคัญ:
- BoringSSL ใช้โมดูล BoringCrypto FIPS
- ไม่รองรับ ENGINE API
- ลบตัวเลือกการกำหนดค่าออก 80%
- ระบบการจัดการข้อผิดพลาดที่เรียบง่ายขึ้น
3. โมดูลหลักของ BoringSSL
- สแต็ก TLS
- การกลับมาทำงานของเซสชันโดยไม่ขึ้นกับสถานะเซิร์ฟเวอร์
- การปรับแต่ง False Start
- ตัวส่งออกข้อมูลคีย์
- การเข้ารหัส
- การใช้งานแบบเวลาคงที่
- การเร่งความเร็วด้วยฮาร์ดแวร์ (AES-NI, PCLMULQDQ)
- การทดลองคริปโตหลังยุคควอนตัม
- X.509
- ความโปร่งใสของใบรับรอง
- OCSP stapling
- ข้อจำกัดด้านชื่อ
- การจัดการหน่วยความจำ
- มาโคร ScopedOPENSSL
- ไม่มี malloc/free ในเส้นทางสำคัญ
- การรับประกันการทำให้เป็นศูนย์
- การทดสอบ
- ครอบคลุมโค้ด 92%
- การฟัซซิงด้วย libFuzzer
- CI ข้ามแพลตฟอร์ม
4. BoringSSL ในแอปพลิเคชันสมัยใหม่
บทบาทสำคัญในสแต็กความปลอดภัย:
- การรวมกับ Chromium
- ขับเคลื่อน QUIC และ HTTP/3 ใน Chrome
- การยืนยันใบรับรองสำหรับอุปกรณ์กว่า 1 พันล้านเครื่อง
- การใช้งาน WebRTC DTLS
- การปรับปรุงประสิทธิภาพ
- การแฮนด์เชค TLS 1.3 เร็วกว่า OpenSSL 2 เท่า
- ขนาดไบนารีเล็กลง 40%
- ส่วนขยายการเข้ารหัส ARMv8
- การปรับปรุงความปลอดภัย
- การจับคู่ชื่อใบรับรองที่เข้มงวด
- การเลือกเส้นโค้ง EC อัตโนมัติ
- ความโปร่งใสของใบรับรองที่เปิดใช้งานตลอดเวลา
- ประสบการณ์นักพัฒนา
- ส่วนต่อประสาน API ที่เรียบง่ายขึ้น
- นโยบายการเลิกใช้งานที่ชัดเจน
- เอกสารประกอบต่อฟังก์ชัน
คุณอาจชอบ