ภาษา Go Programming Language ได้รับการรับรอง FIPS 140-3 ทำให้การปฏิบัติตามข้อกำหนดของรัฐบาลง่ายขึ้นอย่างมาก

ทีมชุมชน BigGo
ภาษา Go Programming Language ได้รับการรับรอง FIPS 140-3 ทำให้การปฏิบัติตามข้อกำหนดของรัฐบาลง่ายขึ้นอย่างมาก

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 ที่กว้างขึ้น มันขจัดอุปสรรคสำคัญในการนำไปใช้ในอุตสาหกรรมที่มีการควบคุมในขณะที่รักษาหลักการหลักของภาษาในเรื่องความเรียบง่ายและความน่าเชื่อถือ

อ้างอิง: The FIPS 140-3 Go Cryptographic Module