ข้ามไปยังเนื้อหา
getnextpdf.com

Enterprise รุ่น

Security — HSM, PKCS#11 และโหมด FIPS

NextPDF Enterprise เพิ่มเส้นทางการลงนามด้วย hardware token แบบ PKCS#11 และนโยบายการเข้ารหัสในโหมด FIPS บนพื้นผิวความปลอดภัยของ Core และ Pro หน้านี้ระบุพฤติกรรม ขอบเขต และท่าทีด้านการรับรอง FIPS และการเก็บรักษาคีย์ที่ชัดเจน

ความสามารถนี้มาในNextPDF Enterprise (nextpdf/enterprise) และเปิดใช้งานด้วย license envelope ระดับ Enterprise การปรับใช้ที่ไม่มีสิทธิ์นั้นจะไม่โหลดคลาสของความสามารถนี้ เปรียบเทียบรุ่นและขอรับสิทธิ์การใช้งาน

พื้นผิวความปลอดภัยของ Enterprise มีสามส่วน ได้แก่ ตัวลงนามด้วย hardware token, นโยบายการเข้ารหัสในโหมด FIPS และ power-on self-test guard

ตัวลงนามด้วย hardware token ปรับใช้ token แบบ PKCS#11 — smart card, อุปกรณ์ USB หรือ HSM ที่เชื่อมต่อเครือข่าย ตัวลงนามระบุตำแหน่งใบรับรองและคีย์ส่วนตัวบน token ด้วย label จากนั้นขอให้ token คำนวณลายเซ็น คีย์ส่วนตัวไม่ออกจากขอบเขตของ token การดำเนินการรันอยู่ภายใน token การดำเนินการ sign ของ token, session และการ login ของผู้ใช้ เป็นไปตาม PKCS#11 v3.1 §5 เส้นทาง HSM ต้องใช้ส่วนขยาย PHP ext-pkcs11 ส่วนขยายนั้นไม่ใช่ส่วนหนึ่งของ PHP มาตรฐาน ให้ติดตั้งแยกต่างหาก ใช้การตรวจสอบความพร้อมใช้งานก่อนที่คุณจะสร้างตัวลงนาม

นโยบายการเข้ารหัสในโหมด FIPS จำกัดตัวเลือกทางการเข้ารหัสไว้ที่ชุดที่ผ่านการอนุมัติ มันมีสองค่าสำเร็จ ค่าสำเร็จแบบ strict อนุญาต hash SHA-256, SHA-384 และ SHA-512; signature OID ของ RSA และ ECDSA กับ hash เหล่านั้น; การเข้ารหัส AES-256-CBC; และขนาดคีย์ขั้นต่ำของ RSA 2048 และ EC 256 ค่าสำเร็จแบบ standard เหมือนกันแต่ยังอนุญาต AES-128-CBC สำหรับการทำงานร่วมกับระบบเก่าด้วย runtime guard ห่อหุ้มนโยบาย guard ตรวจสอบแต่ละ hash, signature OID, อัลกอริทึมการเข้ารหัส และความแข็งแรงของคีย์ก่อนที่การดำเนินการจะรัน ตัวเลือกที่ไม่อนุญาตจะยกข้อผิดพลาดละเมิดแบบมีชนิดและหยุดการดำเนินการ เส้นทางนี้เป็นแบบ fail-closed คือนโยบายไม่เคยผ่อนคลายตัวเองและไม่เคยแทนที่ด้วยอัลกอริทึมที่อ่อนกว่า ความยาวคีย์ RSA ขั้นต่ำเป็นไปตาม NIST SP 800-131A Rev.2 §3 การจับคู่ curve และ hash ของ ECDSA เป็นไปตาม FIPS 186-5 §6.1.1

power-on self-test guard รัน known-answer-test battery หนึ่งครั้งที่เริ่มกระบวนการ battery ครอบคลุมฟังก์ชัน hash, MAC, การเข้ารหัส, ลายเซ็น และ random-bit ที่ผ่านการอนุมัติ หากการทดสอบใดล้มเหลว Enterprise FIPS guard จะเข้าสู่สถานะ error และปฏิเสธบริการทางการเข้ารหัสจนกว่าจะรีเซ็ต ผลถูกแคชไว้ตลอดอายุของกระบวนการ มีการรันซ้ำตามความต้องการ หมวด self-test และทริกเกอร์ conditional-test เป็นไปตาม ISO/IEC 19790:2025 §7.10 และ §7.10.3

การตัดสินใจที่เป็นแกนหลักคือการเก็บคีย์ส่วนตัวไว้ภายในขอบเขตของ token และทำให้นโยบายการเข้ารหัสเป็นแบบ fail-closed ตัวลงนามที่สามารถส่งออกคีย์ หรือถอยกลับไปใช้อัลกอริทึมที่อ่อนกว่าอย่างเงียบ ๆ จะทำลายความเชื่อมั่นที่ HSM มีไว้เพื่อมอบให้ ดังนั้นตัวลงนามจึงขอให้ token คำนวณลายเซ็นในที่ และ FIPS-mode guard ปฏิเสธ hash, OID หรือความแข็งแรงของคีย์ใด ๆ ที่อยู่นอกค่าสำเร็จที่ผ่านการอนุมัติก่อนที่การดำเนินการจะรัน power-on self-test ขยายท่าทีเดียวกันไปสู่การเริ่มต้น คือโมดูลที่ยังไม่ผ่านการตรวจสอบจะปฏิเสธบริการแทนที่จะลงนามบนไพรมิทีฟที่ยังไม่ผ่านการทดสอบ ผลลัพธ์คือขอบเขตที่คุณสามารถให้เหตุผลได้ ซึ่งการเก็บรักษาคีย์เป็นของผู้ดำเนินการและ token ไม่ใช่ของซอฟต์แวร์นี้

ที่มาของการออกแบบ: การลงนามที่รองรับด้วย HSM

พื้นผิวสาธารณะชนิดวัตถุประสงค์ความเสถียรตั้งแต่
ตัวลงนามด้วย token แบบ PKCS#11คลาส (นำ HsmSignerInterface ของ Core ไปใช้)ลงนามด้วย token แบบ PKCS#11 คีย์ยังคงอยู่บน tokenstable1.0.0
นโยบายการเข้ารหัส FIPSคลาส (นำ CryptoPolicyInterface ของ Core ไปใช้)ค่าสำเร็จของอัลกอริทึมที่อนุญาตและความแข็งแรงของคีย์stable1.9.0
FIPS-mode guardคลาสยืนยันว่า hash, signature OID, อัลกอริทึมการเข้ารหัส หรือความแข็งแรงของคีย์ ได้รับอนุญาตstable1.9.0
FIPS boot guardคลาสรันและแคช power-on self-test ยืนยันว่าโมดูลทำงานได้stable3.2.0
ตัวลงนามแบบ OpenSSL CLI / engineคลาส (นำ HsmSignerInterface ไปใช้)ลงนามผ่าน OpenSSL engine หรือ OpenSSL CLI สำหรับ token ที่ใช้ enginestable1.0.0

คอนสตรักเตอร์ของตัวลงนาม token รับเส้นทางไลบรารี PKCS#11, หมายเลข slot, PIN ของ token, certificate label และ key label แยกที่ไม่บังคับ พารามิเตอร์ PIN ถูกทำเครื่องหมายว่าอ่อนไหว มันไม่ถูกบันทึกและไม่ถูก serialize ตัวลงนามยังเปิดเผยใบรับรองตัวลงนามและห่วงโซ่ใบรับรองในรูป DER สัญญาพารามิเตอร์และชนิดที่เป็นทางการคือเอกสารอ้างอิง API ที่เผยแพร่ของแพ็กเกจ nextpdf/enterprise ให้ถือเอกสารอ้างอิงนั้น — ไม่ใช่หน้านี้ — เป็นสัญญา

Terminal window
composer require nextpdf/core
composer require nextpdf/enterprise:^3
Construct a FIPS-mode guard and assert a hash is allowed
use NextPDF\Enterprise\Security\Fips\FipsCryptoPolicy;
use NextPDF\Enterprise\Security\Fips\FipsModeGuard;
$guard = new FipsModeGuard(FipsCryptoPolicy::strict());
// Throws a typed FIPS violation if the algorithm is not approved.
$guard->assertHashAllowed('sha256');
$guard->assertKeyStrengthAllowed('rsa', 2048);
Run the power-on self-test at container boot, then gate signing
use NextPDF\Enterprise\Security\Fips\FipsBootGuard;
use NextPDF\Enterprise\Security\Fips\FipsSelfTest;
// At application bootstrap (one self-test cycle per worker process):
$bootGuard = new FipsBootGuard(new FipsSelfTest());
$bootGuard->assertOperational(); // throws on a known-answer-test failure
$container->set(FipsBootGuard::class, $bootGuard);
// The PKCS#11 token signer is only available when ext-pkcs11 is loaded.
// Check availability before you construct the signer. The PIN is a secret;
// supply it from your secret manager, never from source or logs.

รายการอาร์กิวเมนต์ของคอนสตรักเตอร์ทั้งหมด ชนิด exception และการสร้างตัวลงนาม token แบบ PKCS#11 มีบันทึกไว้ใน เอกสารอ้างอิงเชิงลึกด้านความปลอดภัยของ Enterprise

  • คอนสตรักเตอร์ของตัวลงนาม token แบบ PKCS#11 ยก exception การดำเนินการแบบมีชนิดเมื่อ ext-pkcs11 ไม่ได้ถูกโหลด ให้ตรวจสอบความพร้อมใช้งานก่อน
  • ตัวลงนาม token แคชหนึ่งโมดูล PKCS#11 ต่อเส้นทางไลบรารีต่อกระบวนการ สิ่งนี้เป็นไปตามกฎ “initialize once per module” ของ interface token
  • กลไก token ของ ECDSA คืนค่าลายเซ็นดิบ ตัวลงนามแปลงเป็นรูปแบบเข้ารหัส DER เพื่อให้ทำงานร่วมกับ PDF และ OpenSSL ได้
  • FIPS guard ปฏิเสธชนิดคีย์ที่ไม่รู้จักตามค่าเริ่มต้น ชนิดคีย์ที่ไม่รู้จักจะไม่ถูกยอมรับอย่างเงียบ ๆ
  • เส้นทางการลงนามแบบ post-quantum เป็นแบบทดลอง เลือกใช้ และปิดอยู่ตามค่าเริ่มต้น โปรไฟล์การเก็บถาวรระยะยาวแบบ PAdES มาตรฐานยังไม่รับรู้ suite แบบ post-quantum อย่าเปิดใช้งานสำหรับลายเซ็น AdES ในการใช้งานจริง

การตรวจสอบของ FIPS guard เป็นการค้นหา hash-map ในเวลาคงที่ power-on self-test รันหนึ่งครั้งต่อกระบวนการ ต้นทุนของมันถูกเฉลี่ยตลอดอายุของกระบวนการ ไม่ใช่ต่อการเรียกลงนาม การดำเนินการลงนามแบบ PKCS#11 เพิ่มการรับส่งข้อมูลไปกลับหนึ่งรอบไปยัง token HSM ที่เชื่อมต่อเครือข่ายเพิ่มความหน่วงของเครือข่ายของการรับส่งไปกลับนั้น

  • เส้นทางการลงนามเป็นแบบ fail-closed ความล้มเหลวของไพรมิทีฟหรือช่องว่างของนโยบายจะยก exception แบบมีชนิด เส้นทางไม่เคยลดระดับลงเป็นอัลกอริทึมที่อ่อนกว่าอย่างเงียบ ๆ
  • พารามิเตอร์ PIN ของ token ถูกทำเครื่องหมายว่าอ่อนไหว มันไม่ถูกบันทึกและไม่ถูก serialize
  • คีย์ส่วนตัวสำหรับ token แบบ PKCS#11 ยังคงอยู่บน token การดำเนินการลงนามรันอยู่ภายในขอบเขตของ token
  • power-on self-test นำ Enterprise FIPS guard เข้าสู่สถานะ error เมื่อ known-answer-test ไม่ตรงกัน และปฏิเสธบริการทางการเข้ารหัสจนกว่าจะรีเซ็ต
  • การใช้ AES-GCM ต้องใช้ initialization vector ที่ไม่ซ้ำต่อคีย์ ตาม NIST SP 800-38D §5

โค้ดการลงนามและนโยบาย FIPS รันภายในกระบวนการ ไม่มีเนื้อหาเอกสารออกจาก host สำหรับการตรวจสอบนโยบาย FIPS หรือ power-on self-test token แบบ PKCS#11 รับข้อมูลที่จะลงนาม ไม่ใช่เนื้อหาเอกสารที่ไม่เกี่ยวข้อง HSM ที่เชื่อมต่อเครือข่ายรับข้อมูลนั้นผ่านช่องทางเครือข่ายที่คุณกำหนดค่า วัสดุคีย์ยังคงอยู่ภายในขอบเขตของ token หรือ HSM

การวัดและส่งข้อมูลที่ปลอดภัยและการขัดล้างบันทึก

หัวข้อที่มีชื่อว่า “การวัดและส่งข้อมูลที่ปลอดภัยและการขัดล้างบันทึก”

PIN ของ token เป็นพารามิเตอร์คอนสตรักเตอร์ที่อ่อนไหวและถูกกันออกจากบันทึกและการ serialize อย่าเพิ่ม PIN, token label หรือวัสดุคีย์ลงในบันทึกของแอปพลิเคชันของคุณ ให้ถือข้อมูลรับรองของ token ทั้งหมดเป็นข้อมูลลับในนโยบายการบันทึกและ tracing ของคุณ

นี่คือขอบเขตทางการเข้ารหัส แบบจำลองภัยคุกคามจึงชัดเจน ข้อมูลที่จะลงนามถูกส่งให้ token; token ถือคีย์ ข้อผิดพลาดของ token หรือ HSM จะยก exception แบบมีชนิด ตัวลงนามไม่ผลิตผลลัพธ์ที่ไม่ได้ลงนามหรือลงนามเพียงบางส่วน การปกป้องคีย์ขึ้นอยู่กับ token หรือ HSM ขึ้นอยู่กับการปรับใช้ และขึ้นอยู่กับผู้ดำเนินการ — ไม่ได้ขึ้นอยู่กับซอฟต์แวร์นี้เพียงลำพัง ดู ขอบเขตการปรับใช้

  • แบบจำลอง power-on และ conditional self-test สอดคล้องกับ ISO/IEC 19790:2025 §7.10 และ §7.10.3
  • ความยาวคีย์ลงนาม RSA ขั้นต่ำสอดคล้องกับ NIST SP 800-131A Rev.2 §3
  • การจับคู่ curve และ hash ของ ECDSA ที่ผ่านการอนุมัติสอดคล้องกับ FIPS 186-5 §6.1.1
  • การดำเนินการ sign ของ token แบบ PKCS#11 และการ login ของ session สอดคล้องกับ PKCS#11 v3.1 §5
  • ความรับผิดชอบในการปกป้องคีย์สอดคล้องกับ NIST SP 800-57 Part 1 Rev.5 §5.5.2
  • ความไม่ซ้ำของ initialization vector ของ AES-GCM สอดคล้องกับ NIST SP 800-38D §5

ทุกแหล่งเชิงบรรทัดฐานเป็นการถอดความ ไม่มีการทำซ้ำข้อความเชิงบรรทัดฐานบนหน้านี้ หน้านี้เกี่ยวข้องกับการลงนามทางการเข้ารหัส

นโยบายในโหมด FIPS จำกัดตัวเลือกทางการเข้ารหัสไว้ที่ชุดที่ผ่านการอนุมัติที่อธิบายไว้ข้างต้น เมื่อกำหนดค่าเทียบกับ OpenSSL provider ที่ผ่านการตรวจรับรอง FIPS ไพรมิทีฟพื้นฐานจะรันอยู่ในขอบเขตที่ผ่านการตรวจรับรองนั้น NextPDF Enterprise เองดำเนินการประกอบเชิงโครงสร้าง การคำนวณ digest และการบังคับใช้นโยบาย

NextPDF Enterprise ไม่ใช่โมดูลการเข้ารหัสที่ผ่านการตรวจรับรอง FIPS และไม่ได้อ้างการรับรอง FIPS NextPDF Enterprise ทำงานในโหมดที่เข้ากันได้กับ FIPS เฉพาะเมื่อกำหนดค่าด้วย crypto provider ที่ผ่านการตรวจรับรอง FIPS — เช่น OpenSSL provider ที่ผ่านการตรวจรับรอง FIPS — หรือ HSM ที่ผ่านการตรวจรับรอง FIPS นโยบายในโหมด FIPS ช่วยในการปฏิบัติตามข้อกำหนด ไม่ใช่การรับรอง

NextPDF Core มาพร้อมตัวลงนามแบบซอฟต์แวร์ การใช้การประทับเวลา RFC 3161 การตรวจสอบเส้นทาง RFC 5280 และการตรวจสอบการเพิกถอน OCSP และ CRL Core สร้างระดับ PAdES B-B และ B-T NextPDF Pro เพิ่มการปิดบัง การตรวจจับ PII ในเลเยอร์ข้อความ การลงนามตามลำดับแบบหลายฝ่าย และกลยุทธ์การลงนามแบบ remote และ cloud-KMS (AWS KMS, GCP Cloud KMS, Azure Key Vault) NextPDF Pro ไม่ได้ มอบเส้นทาง hardware token แบบ PKCS#11 และ ไม่ได้ มอบโปรไฟล์นโยบายการเข้ารหัสในโหมด FIPS ตัวลงนามด้วย hardware token แบบ PKCS#11, โปรไฟล์นโยบายการเข้ารหัสในโหมด FIPS, power-on self-test guard และตัวสร้าง PAdES B-LT และ B-LTA มาในแพ็กเกจ nextpdf/enterprise เท่านั้น การปรับใช้ที่ไม่มีสิทธิ์ Enterprise จะไม่โหลดคลาสของ Enterprise

ในการปรับใช้แบบ Pro เท่านั้น เส้นทางการลงนามแบบ hardware-backed และ cloud-backed ที่รองรับคือกลยุทธ์ cloud-KMS ของ Pro คือ cloud KMS หรือ KMS ที่มี HSM รองรับถือคีย์ และ Pro ส่ง digest ของแอตทริบิวต์ที่ลงนามแล้ว ไม่ใช่เอกสาร ไปยังผู้ให้บริการ Pro มอบ การผสานรวม KMS ไม่ใช่โรงงาน token แบบ PKCS#11 ของ Enterprise หรือโปรไฟล์ในโหมด FIPS การกำหนดค่าที่ร้องขอ B-LT, B-LTA, token แบบ PKCS#11 หรือโปรไฟล์ในโหมด FIPS ในการปรับใช้แบบ Pro เท่านั้นจะ fail closed พร้อมข้อความที่ระบุชื่อคอมโพเนนต์ Enterprise ที่ขาดหายไป ดู Security — NextPDF Pro สำหรับพื้นผิวการลงนามของ Pro

ในการปรับใช้แบบ Core เท่านั้น ตัวลงนามแบบซอฟต์แวร์สร้าง PAdES B-B และ B-T ด้วยคีย์ในเครื่องหรือคีย์ที่จัดหาผ่านสัญญากลยุทธ์การลงนามของ Core Core ไม่มีเส้นทาง hardware token และไม่มีโปรไฟล์ในโหมด FIPS ดู Security — NextPDF Core

การผสานรวม token แบบ PKCS#11, การแมปกลไกของมัน และการจัดการ session ของมัน ได้รับการอธิบายในระดับพฤติกรรมเท่านั้น ตารางการแมปกลไกภายใน ตรรกะการกู้คืน session ภายใน และวัสดุการย้ายระบบ post-quantum อยู่นอกขอบเขตของพื้นผิวสาธารณะและไม่ได้ทำซ้ำในที่นี้

NextPDF Enterprise ผสานรวมกับ token แบบ PKCS#11, HSM หรือ KMS มันไม่ได้จัดเก็บ สร้าง หรือรับประกันความปลอดภัยของคีย์ลงนามเอง ความปลอดภัยของคีย์ขึ้นอยู่กับ token, HSM หรือ KMS ขึ้นอยู่กับการปรับใช้ และขึ้นอยู่กับผู้ดำเนินการ — ไม่ได้ขึ้นอยู่กับ NextPDF Enterprise เพียงลำพัง ผู้ดำเนินการมีหน้าที่รับผิดชอบการจัดเตรียม token, การจัดการ PIN, การกำหนดค่า slot, การป้องกันเครือข่ายของ HSM ที่เชื่อมต่อเครือข่าย และการกำหนดค่าความเชื่อถือ ความรับผิดชอบในการปกป้องคีย์เป็นไปตาม NIST SP 800-57 Part 1 Rev.5 §5.5.2 NextPDF Enterprise ไม่เปิดเผยการจัดการ PIN ของ token, รายละเอียดภายในของการกำหนดค่า slot หรือวัสดุข้อมูลรับรองของผู้ขายในเอกสารนี้

หน้านี้เกี่ยวข้องกับการลงนามทางการเข้ารหัสและการผสานรวม hardware security module นโยบายในโหมด FIPS เป็นฟีเจอร์ช่วยในการปฏิบัติตามข้อกำหนด มันไม่ใช่คำให้ความเห็นทางกฎหมายและไม่ใช่การรับรอง โปรดปรึกษาที่ปรึกษาด้านการปฏิบัติตามข้อกำหนดและด้านกฎหมายของคุณเองเกี่ยวกับภาระผูกพันด้านกฎระเบียบของคุณ

หน้านี้บันทึกเฉพาะพฤติกรรมที่สังเกตได้จากภายนอกและพื้นผิว API สาธารณะที่รองรับเท่านั้น เส้นทาง namespace ภายใน คลาสตัวช่วย ตารางกลไก ชื่อไฟล์ runbook และคำนำหน้า ticket อยู่นอกขอบเขต

  • FIPS guard ยืนยันแต่ละ hash, signature OID, อัลกอริทึมการเข้ารหัส และความแข็งแรงของคีย์เทียบกับค่าสำเร็จที่ใช้งานอยู่ และยกข้อผิดพลาดละเมิดแบบมีชนิดเมื่อมีตัวเลือกที่ไม่อนุญาต
  • power-on self-test รันหนึ่งครั้งต่อกระบวนการและปฏิเสธบริการทางการเข้ารหัสเมื่อ known-answer-test ล้มเหลวจนกว่าจะรีเซ็ต
  • ตัวลงนาม token แบบ PKCS#11 ต้องใช้ ext-pkcs11 มันยก exception การดำเนินการแบบมีชนิดเมื่อไม่มีส่วนขยาย
  • เส้นทางการลงนามเป็นแบบ fail-closed และไม่เคยแทนที่ด้วยอัลกอริทึมที่อ่อนกว่า