ตัวจิ๊กเองไม่ ตรวจสอบ FIPS 140-2 แล้ว แต่ก็รองรับ FIPS หลายรายการ อัลกอริทึมที่ได้รับอนุมัติ 140-2 ตัวและการใช้งานพื้นฐานสามารถใช้ประโยชน์จาก โมดูลการเข้ารหัสลับที่มีการตรวจสอบ เช่น BoringSSLs BoringCrypto ทิงก์มีองค์ประกอบ WORKSPACE สำหรับการสร้าง BoringSSL ในโหมด FIPS
โปรดทราบว่าพื้นที่ทำงานไม่ได้ให้การรับประกันในตัวว่าการใช้ BoringSSL ของคุณ เป็นไปตามข้อกำหนดของ FIPS เราขอแนะนำให้คุณอ่าน นโยบายความปลอดภัยสำหรับ BoringCrypto แล้ว
อัลกอริทึมที่รองรับ
อัลกอริทึมต่อไปนี้ใน Tink ได้รับอนุมัติตาม FIPS 140-2 (ดูข้อมูลเพิ่มเติมที่ FIPS 140-2 ภาคผนวก A):
- การเข้ารหัสที่ได้รับการตรวจสอบสิทธิ์
- AES-GCM
- AES-CTR-HMAC-SHA256
- MAC
- HMAC-SHA256
- AES-CMAC
- ลายเซ็นดิจิทัล
- ECDSA
- RSA-SSA-PKCS1 (RSA-SSA-PKCS1)
- RSA-SSA-PSS
โหมด FIPS เท่านั้นใน C++
หากคุณต้องการใช้อัลกอริทึมที่ได้รับอนุมัติจาก FIPS 140-2 และผ่านการตรวจสอบแล้ว คุณสามารถสร้าง Tink ในโหมด FIPS เท่านั้น การดำเนินการนี้จะจำกัด ไปยังอัลกอริทึมที่อนุมัติ และตรวจสอบว่า Tink ใช้รายการที่ตรวจสอบแล้วหรือไม่ โมดูลการเข้ารหัสลับ
การดำเนินการนี้จะเปลี่ยนลักษณะการทำงานของ Tink ในลักษณะต่อไปนี้
- ฟังก์ชัน
Register()
ลงทะเบียนเฉพาะอัลกอริทึมที่มี FIPS การใช้งานที่ผ่านการตรวจสอบความถูกต้องแล้ว ซึ่งหมายความว่าคุณใช้งานได้เท่านั้น ชุดคีย์เซ็ตสำหรับอัลกอริทึมที่ใช้โมดูลการเข้ารหัสที่ตรวจสอบแล้ว - Tink จะตรวจสอบว่า BoringSSL สร้างขึ้นด้วยโมดูล BoringCrypto หรือไม่
การเรียกไปยังค่าดั้งเดิมแสดงผลข้อผิดพลาด
INTERNAL
เมื่อโมดูลไม่ได้ พร้อมใช้งาน - การใช้ค่าดั้งเดิมใน
subtle/
จำกัดอยู่เพียงอัลกอริทึมที่ใช้เท่านั้น โมดูลการเข้ารหัสลับที่ได้รับการตรวจสอบแล้ว
BoringCrypto
Tink ใช้ BoringCrypto ใน C++ เพื่อให้สิทธิ์เข้าถึงโมดูลวิทยาการเข้ารหัสที่ตรวจสอบความถูกต้องแล้ว บัตรปัจจุบัน สถานะการตรวจสอบจะทำให้มีข้อจำกัดเพิ่มเติมต่อไปนี้ เมื่ออยู่ในโหมด FIPS เท่านั้น
- ยังไม่มีการตรวจสอบ AES-CMAC และไม่พร้อมใช้งาน
- RSA-SSA-PKCS1 ถูกจำกัดไว้ที่โมดูลัส 3072 บิต
- RSA-SSA-PSS จำกัดอยู่ที่โมดูลัส 3072 บิต
หากต้องการใช้โมดูล BoringCrypto กับ Bazel คุณสามารถยกเลิกการใส่ความคิดเห็น
คำจำกัดความของ local_repository
ของ boringssl
ใน C++
Workspace
เปิดใช้ในเวลาคอมไพล์
หากต้องการสร้าง Tink ในโหมด FIPS เท่านั้น ให้ตั้งค่าแฟล็กในเวลาคอมไพล์ดังนี้
bazel build ... --//third_party/tink/cc/config:use_only_fips=True
หากต้องการตรวจสอบขณะรันไทม์ว่า Tink สร้างขึ้นในโหมด FIPS เท่านั้นหรือไม่
คุณสามารถเพิ่มส่วนหัว internal/fips_utils.h
ซึ่งจะมีค่าคงตัว
kUseOnlyFips
หากคุณไม่ได้สร้าง Tink ในโหมด FIPS เท่านั้น โหมดนี้ยังใช้งานได้ การใช้งานที่ผ่านการตรวจสอบแล้วสำหรับอัลกอริทึมบางรายการ แต่ไม่จำกัดการใช้งาน อัลกอริทึมอื่นๆ
เปิดใช้เมื่อรันไทม์
นอกจากการสร้าง Tink ในโหมด FIPS เท่านั้นแล้ว คุณสามารถเรียกใช้
crypto::tink::RestrictToFips()
จาก config/tink_fips.h
ที่ตั้งค่าแฟล็ก
ขณะรันไทม์เพื่อเปิดใช้การจำกัดสำหรับ FIPS Primitives
คำเตือน: หากคุณใช้ตัวเลือกรันไทม์ crypto::tink::RestrictToFips()
ต้องถูกเรียกใช้ก่อนที่จะจัดการกับเนื้อหาคีย์ใดๆ ลงทะเบียนเครื่องมือจัดการคีย์ หรือ
ฟังก์ชันอื่นๆ ของ Tink นอกจากนี้ คุณต้องตรวจสอบว่า BoringSSL มี
สร้างขึ้นด้วยโมดูล BoringCrypto มิฉะนั้น Tink จะไม่อนุญาตให้คุณ
ประมวลผลข้อมูลใดก็ได้