Go ได้บรรลุเป้าหมายสำคัญสำหรับนักพัฒนาที่ทำงานกับสัญญาของรัฐบาลและสภาพแวดล้อมที่มีการควบคุม ภาษาโปรแกรมมิ่งนี้ขณะนี้รวมการรับรอง FIPS 140-3 แบบเนทีฟผ่านโมดูลเข้ารหัสลับที่มีอยู่แล้ว ซึ่งช่วยขจัดวิธีแก้ปัญหาที่ซับซ้อนหลายปีที่เคยสร้างปัญหาให้กับนักพัฒนาในสาขานี้
FIPS 140 เป็นมาตรฐานของรัฐบาลสหรัฐอเมริกาที่กำหนดว่าการนำเข้ารหัสลับแบบใดที่สามารถใช้ในระบบของรัฐบาลกลางได้ แม้ว่าจะไม่จำเป็นต้องปรับปรุงความปลอดภัย แต่การปฏิบัติตามข้อกำหนดเป็นสิ่งจำเป็นสำหรับสัญญาของรัฐบาลหลายรายการและอุตสาหกรรมที่มีการควบคุม จนถึงตอนนี้ นักพัฒนา Go ต้องพึ่งพาโซลูชันที่ไม่ได้รับการสนับสนุนซึ่งสร้างปัญหาเรื่องความปลอดภัย การทำงาน และปัญหาการปฏิบัติตามข้อกำหนด
ข้อมูลจำเพาะของ FIPS 140-3 Go Cryptographic Module:
- เวอร์ชัน: v1.0.0 รวมอยู่ใน Go 1.24
- สถานะการตรวจสอบ: ใบรับรอง CAVP A6650 ได้เข้าสู่รายชื่อ NIST Modules In Process List ในเดือนพฤษภาคม
- พาร์ทเนอร์การตรวจสอบ: Geomys Inc.
- ระดับความปลอดภัย: มุ่งเป้าหลักที่ Security Level 1
- การเปิดใช้งาน: ตั้งค่าตัวแปรสภาพแวดล้อม
GOFIPS140=v1.0.0
หรือใช้ตัวเลือกfips140-on
GODEBUG
การรวมแบบเนทีฟช่วยขจัดจุดเจ็บปวดเดิม
FIPS 140-3 Go Cryptographic Module ใหม่รวมเข้ากับแอปพลิเคชัน Go มาตรฐานได้อย่างราบรื่น โปรแกรม Go ทุกตัวที่สร้างด้วยเวอร์ชัน 1.24 ใช้โมดูลที่ได้รับการรับรองสำหรับอัลกอริทึมที่ได้รับอนุมัติแล้ว นักพัฒนาสามารถเปิดใช้งานโหมด FIPS ได้ง่ายๆ โดยการตั้งค่าตัวแปรสภาพแวดล้อมหรือผ่านไฟล์ go.mod ของพวกเขา - ไม่ต้องการการกำหนดค่าที่ซับซ้อน
สิ่งนี้แสดงถึงการปรับปรุงที่ยิ่งใหญ่เมื่อเทียบกับโซลูชันก่อนหน้า ชุมชนได้ต่อสู้กับ Go+BoringCrypto มาอย่างยาวนาน ซึ่งเป็นแนวทางทดลองที่ต้องการ CGO (C bindings) และสร้างปัญหาใหญ่ในการคอมไพล์ข้ามแพลตฟอร์ม โซลูชันเนทีฟใหม่ช่วยขจัดปัญหาเหล่านี้ทั้งหมด ทำให้นักพัฒนาสามารถรักษาความง่ายในการพัฒนาข้ามแพลตฟอร์มที่เป็นเอกลักษณ์ของ Go ได้
CGO: อินเทอร์เฟซฟังก์ชันต่างประเทศของ Go ที่อนุญาตให้โปรแกรม Go เรียกใช้โค้ด C ซึ่งมักสร้างความซับซ้อนในการสร้างและการปรับใช้
ความครอบคลุมของแพลตฟอร์มและอัลกอริทึมที่ครอบคลุม
การรับรองครอบคลุมสภาพแวดล้อมการทำงานที่น่าประทับใจ ตั้งแต่ลินุกซ์หลายรุ่นไปจนถึง macOS, Windows และ FreeBSD ในสถาปัตยกรรมโปรเซสเซอร์หลายแบบรวมถึง x86-64, ARM, MIPS และอื่นๆ ความครอบคลุมที่กว้างนี้หมายความว่าสถานการณ์การปรับใช้ส่วนใหญ่ได้รับการสนับสนุนทันที
โมดูลรับรองอัลกอริทึมที่ได้รับอนุมัติ FIPS 140-3 ทั้งหมดในไลบรารีมาตรฐานของ Go รวมถึง ML-KEM key exchange หลังควอนตัมที่เพิ่งเปิดตัว แนวทางที่ครอบคลุมนี้หมายความว่านักพัฒนาสามารถสร้างแอปพลิเคชันที่ปฏิบัติตามข้อกำหนดอย่างเต็มที่โดยใช้เฉพาะส่วนประกอบไลบรารีมาตรฐาน
สภาพแวดล้อมการใช้งานที่รองรับ:
- Linux: 3.10+ บน x86-64 และ ARMv7/8/9 ( Alpine , Amazon Linux , Red Hat , SUSE , Oracle )
- macOS: 11-15 บนโปรเซสเซอร์ Apple M
- Windows: 10, 11, Server 2016-2025 บน x86-64 และ ARMv8/9
- FreeBSD: 12-14 บน x86-64
- สถาปัตยกรรม: x86-64 ( AMD / Intel ), ARMv7/8/9, MIPS, z/Architecture, POWER
- สภาพแวดล้อมที่ทดสอบทั้งหมด: 23 การผสมผสานที่แตกต่างกัน
ความปลอดภัยโดยไม่ประนีประนอม
หนึ่งในแง่มุมที่โดดเด่นที่สุดของการนำไปใช้ของ Go คือการปฏิเสธที่จะประนีประนอมความปลอดภัยเพื่อการปฏิบัติตามข้อกำหนด ทีมรักษาแนวปฏิบัติด้านความปลอดภัยที่มีอยู่ของ Go เช่น hedged signatures ใน ECDSA แม้ว่าแนวทางที่ง่ายกว่าจะตอบสนองความต้องการ FIPS ได้ พวกเขายังปรับปรุงการสร้างตัวเลขสุ่มโดยการรวม kernel entropy เข้ากับ NIST DRBG ที่ต้องการ สร้างระบบที่แข็งแกร่งกว่าแนวทางใดแนวทางหนึ่งเพียงอย่างเดียว
การนำไปใช้ได้รับการตรวจสอบความปลอดภัยโดย Trail of Bits โดยโมดูลเข้ารหัสลับได้รับผลลัพธ์ที่สะอาด เมื่อรวมกับการรับประกันความปลอดภัยของหน่วยความจำของ Go สิ่งนี้สร้างสิ่งที่หลายคนถือว่าเป็นหนึ่งในการนำ FIPS 140 ไปใช้ที่ปลอดภัยที่สุดที่มีอยู่
ความครอบคลุมของอัลกอริทึมหลัก:
- ลายเซ็นดิจิทัล: ECDSA พร้อม hedged signatures, RSA, Ed25519
- การแลกเปลี่ยนคีย์: X25519, post-quantum ML-KEM (FIPS 203)
- การเข้ารหัสแบบสมมาตร: AES-GCM, AES-CBC
- การแฮช: กลุม SHA-2, SHA-3
- การสร้างคีย์: HKDF (ได้รับการตรวจสอบภายใต้การกำหนด NIST 4 รูปแบบที่แตกต่างกัน)
- การสร้างแบบสุ่ม: NIST DRBG ที่ใช้ AES-256-CTR พร้อมการฉีด kernel entropy
- TLS: การจำกัดอัตโนมัติให้ใช้เฉพาะเวอร์ชันและชุด cipher ที่ได้รับการอนุมัติจาก FIPS
ผลกระทบต่อการพัฒนาซอฟต์แวร์ของรัฐบาล
การพัฒนานี้เปลี่ยนแปลงภูมิทัศน์สำหรับการพัฒนาซอฟต์แวร์ของรัฐบาลอย่างมีนัยสำคัญ ก่อนหน้านี้ ภาษาที่สามารถเชื่อมโยงแบบไดนามิกกับไลบรารีเข้ารหัสลับของระบบมีข้อได้เปรียบในสภาพแวดล้อมที่มีการควบคุม ตอนนี้ Go เสนอทางเลือกที่น่าสนใจด้วยการเข้ารหัสลับที่เชื่อมโยงแบบสแตติกและได้รับการรับรองที่ทำงานข้ามแพลตฟอร์มโดยไม่ต้องพึ่งพาภายนอก
สิ่งนี้เปลี่ยนเข็มทิศสำหรับ Go แต่คุณยังคงต้องตัดเวอร์ชัน FIPS ของซอฟต์แวร์ของคุณเนื่องจากการเข้ารหัสลับนี้ยังคงเชื่อมโยงแบบสแตติก
การเปลี่ยนแปลงทำให้ Go น่าสนใจอย่างยิ่งสำหรับแอปพลิเคชันรัฐบาลแบบคลาวด์เนทีฟ ซึ่งความสามารถในการสร้างไบนารีที่ปฏิบัติตามข้อกำหนดและครบถ้วนในตัวเองให้ข้อได้เปรียบในการดำเนินงาน นักพัฒนาไม่จำเป็นต้องกังวลเกี่ยวกับการรับประกันว่าสภาพแวดล้อมการปรับใช้ของพวกเขามีไลบรารีเข้ารหัสลับที่ได้รับการรับรองที่ถูกต้องติดตั้งอยู่
ความสำเร็จของทีม Go แสดงถึงการทำงานอย่างระมัดระวังหลายปีเพื่อสร้างสมดุลระหว่างข้อกำหนดการปฏิบัติตามข้อกำหนดกับการใช้งานจริง สำหรับชุมชน Go ที่กว้างขึ้น มันขจัดอุปสรรคสำคัญในการนำไปใช้ในอุตสาหกรรมที่มีการควบคุมในขณะที่รักษาหลักการหลักของภาษาในเรื่องความเรียบง่ายและความน่าเชื่อถือ