โมเดลความปลอดภัยสำหรับลายเซ็นและการเข้ารหัสลับ
โดยสรุป
หัวข้อที่มีชื่อว่า “โดยสรุป”หน้านี้กำหนดโมเดลความปลอดภัยสำหรับพื้นผิวการเข้ารหัสลับสองส่วนที่เอนจินหลักเปิดให้ใช้ ได้แก่ การเข้ารหัสลับ เอกสารด้วย Advanced Encryption Standard 256-bit (AES-256) และ การเซ็น เอกสารด้วย Cryptographic Message Syntax (CMS)/PDF Advanced Electronic Signatures (PAdES) เนื้อหาจะอธิบายว่ากลไกแต่ละอย่างปกป้องสิ่งใด ไม่ได้ปกป้องสิ่งใด และขอบเขตความไว้วางใจอยู่ที่ใด
ขอบเขต การรองรับกลไกการเข้ารหัสลับไม่ได้รับประกัน ความปลอดภัยในการนำไปใช้งานของคุณ ความแข็งแรงของเอกสารที่เข้ารหัสลับ ขึ้นอยู่กับรหัสผ่านและการจัดเก็บคีย์ที่คุณเลือก ความหมายของ ลายเซ็นขึ้นอยู่กับใบรับรอง trust anchor ผู้ออก timestamp และ นโยบายของผู้ตรวจสอบ การควบคุมเหล่านั้นอยู่นอกไลบรารีนี้ หน้านี้ อธิบายกลไกดังกล่าว ไม่ได้รับรองผลลัพธ์
การติดตั้ง
หัวข้อที่มีชื่อว่า “การติดตั้ง”composer require nextpdf/core:^3ext-openssl จำเป็นสำหรับเส้นทางการเซ็นและ CMS
ภาพรวมเชิงแนวคิด
หัวข้อที่มีชื่อว่า “ภาพรวมเชิงแนวคิด”ในเอนจินหลัก การเข้ารหัสลับ ใช้ security handler แบบ AES-256 (AESV3, Revision 6) ตาม ISO 32000-2 §7.6 (iso32000_2_sec7#x1.x65.p29) การเข้ารหัสลับให้ การรักษาความลับ กล่าวคือฝ่ายที่ไม่มีรหัสผ่านไม่สามารถอ่านเนื้อหาแบบสตริงและสตรีมได้ การเข้ารหัสลับ ไม่ได้ ให้ความครบถ้วนสมบูรณ์หรือความเป็นของแท้ ciphertext ยังคงอาจถูกตัดให้สั้นลงหรือถูกแทนที่ได้ ลายเซ็นหรือ message authentication code (MAC) ของเอกสารต้องเป็นส่วนที่ตรวจพบสภาวะดังกล่าว ส่วน encryption handler ตรวจไม่พบ
สิทธิ์ (พิมพ์ คัดลอก แก้ไข) เป็นคนละส่วนกันและมักถูกตีความผิด แฟล็กสิทธิ์ตาม ISO 32000-2 เป็นแบบ อาศัยความร่วมมือของโปรแกรมอ่าน (iso32000_2_sec7#x1.x71.p27) โปรแกรมอ่านที่สอดคล้องกับมาตรฐานจะปฏิบัติตามแฟล็กเหล่านี้ แต่แฟล็กเหล่านี้เป็นเมทาดาทาเชิงแนะนำ ไม่ใช่การควบคุมการเข้าถึงเชิงการเข้ารหัสลับ เครื่องมือที่ไม่ให้ความร่วมมือสามารถเพิกเฉยต่อแฟล็กเหล่านี้ได้ เอนจินสร้างแฟล็กเหล่านี้อย่างตรงตามข้อกำหนด แต่บังคับใช้ไม่ได้
สำหรับ การเซ็น เอนจินจะฝังโครงสร้าง CMS SignedData ตามที่อธิบายไว้ใน ISO 32000-2 §12.8 byte range ที่เซ็นเป็น direct object และ digest จงใจตัดค่า Contents ของลายเซ็นออก (iso32000_2_sec12#x1.x121.p45) ดังนั้นลายเซ็นจึงครอบคลุมเอกสาร แต่ไม่ครอบคลุมตัวลายเซ็นเอง
พื้นผิว API
หัวข้อที่มีชื่อว่า “พื้นผิว API”หน้านี้ไม่ได้กล่าวซ้ำเอกสารอ้างอิงของลายเซ็น จุดเข้าใช้งานของการเข้ารหัสลับและ orchestrator ของการเซ็นอธิบายไว้ใน /modules/core/security/ และ /modules/core/security/signing/ โมเดลนี้กล่าวถึงความหมายและขอบเขต ไม่ใช่รูปแบบของเมท็อด
ตัวอย่างโค้ด — เริ่มต้นอย่างรวดเร็ว
หัวข้อที่มีชื่อว่า “ตัวอย่างโค้ด — เริ่มต้นอย่างรวดเร็ว”การเข้ารหัสลับปกป้องการรักษาความลับจากฝ่ายที่ไม่มีรหัสผ่านเท่านั้น ไม่ได้มากไปกว่านั้น:
<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Core\Document;
$doc = new Document();// AES-256 (AESV3 R6). The owner/user passwords gate read access only.// Permission flags below are advisory: a conforming reader honors them.$doc->encrypt( userPassword: 'open-secret', ownerPassword: 'owner-secret',);$doc->save('confidential.pdf');ตัวอย่างโค้ด — สำหรับใช้งานจริง
หัวข้อที่มีชื่อว่า “ตัวอย่างโค้ด — สำหรับใช้งานจริง”ขั้นตอนการเซ็นสำหรับใช้งานจริงจะลงลายเซ็นพื้นฐาน (baseline) แบบ CMS/PAdES ด้วยคีย์ที่เก็บไว้ในซอฟต์แวร์ รุ่น Core สร้างผลลัพธ์ระดับ PAdES B-B เมื่อคุณกำหนดค่าผู้ออก timestamp รุ่น Core จะสร้างผลลัพธ์ PAdES B-T ซึ่งคือ B-B ที่เพิ่ม unsigned attribute แบบ RFC 3161 signature-time-stamp หนึ่งรายการ:
<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Core\Document;use NextPDF\Security\Signature\CertificateInfo;use NextPDF\Security\Signature\SignatureLevel;
$cert = CertificateInfo::fromPkcs12('signer.p12', 'pin');
$doc = new Document();// B-B is the default. B-T adds a trusted timestamp over the signature value.$doc->setSignature($cert, SignatureLevel::PAdES_B_B);$doc->save('signed.pdf');PAdES B-T คือ B-B ที่เพิ่ม unsigned attribute แบบ RFC 3161 signature-time-stamp หนึ่งรายการพอดี ซึ่งบรรจุอยู่ใน CMS SignerInfo (rfc5652#p603) timestamp ผูกค่าลายเซ็นเข้ากับเวลาที่เชื่อถือได้จากผู้ออก timestamp (rfc3161#p208) timestamp ดังกล่าวไม่ได้เพิ่ม validation-data dictionary โครงสร้าง revocation-information หรือ archive-timestamp loop สิ่งเหล่านั้นเป็นระดับระยะยาวที่แยกต่างหากและมีขอบเขตเฉพาะของตนเอง ซึ่ง ไม่ เป็นส่วนหนึ่งของพื้นผิว B-B/B-T และอยู่นอกขอบเขตของหน้านี้
U-1 NextPDF ไม่ได้ยืนยันการรับรองอิสระตาม ETSI EN 319 142-1 สำหรับ PAdES B-T EN 319 142-1 ไม่อยู่ในคลังข้อมูลการ ตรวจสอบที่ใช้ที่นี่ ข้อกำหนด B-T signature-time-stamp ได้รับการตรวจสอบ เทียบกับ ETSI EN 319 122-1 §5.3 — พื้นฐาน CMS Advanced Electronic Signatures (CAdES) ที่กลุ่ม EN 319 142 ตระกูล PAdES นำเข้าโดยการอ้างอิง (
etsi_en_319_122_1#6.x40.p96) — พร้อมด้วย RFC 3161, RFC 5652 และ ISO 32000-2 §12.8 การรองรับโปรไฟล์ B-T ไม่ใช่การรับรอง ความสอดคล้องหรือการรับรองความสมบูรณ์ทางกฎหมาย ผู้ตรวจสอบอิสระเป็นผู้ทำการ ตัดสินดังกล่าว
กรณีขอบและข้อควรระวัง
หัวข้อที่มีชื่อว่า “กรณีขอบและข้อควรระวัง”- การเข้ารหัสลับ ≠ ความครบถ้วนสมบูรณ์ โปรแกรมอ่านที่เปิดเอกสารได้ยังอาจได้รับสำเนาที่ถูกดัดแปลง มีเพียงลายเซ็น (หรือ MAC ของเอกสาร) เท่านั้นที่ตรวจพบสิ่งนี้ได้ “Tamper-proof” ไม่ใช่คุณสมบัติที่ encryption handler มอบให้ และคำนี้ไม่ได้ใช้เป็นคำกล่าวอ้างของผลิตภัณฑ์
- การมีอยู่ของลายเซ็นไม่ใช่ความถูกต้องสมบูรณ์ของลายเซ็น การที่เอกสารมี signature dictionary ไม่ได้บ่งบอกว่าใบรับรองเชื่อถือได้ ยังไม่หมดอายุ หรือไม่ถูกเพิกถอน การพิสูจน์ความถูกต้องสมบูรณ์เป็นการดำเนินการฝั่งผู้ตรวจสอบภายใต้นโยบายของ relying party ไม่ใช่ของผู้เซ็น
- ความไว้วางใจ timestamp เป็นเรื่องภายนอก timestamp แบบ B-T มีความหมายเท่ากับความไว้วางใจที่ผู้ตรวจสอบมอบให้แก่ผู้ออก timestamp (TSA) ที่ออก timestamp นั้นเท่านั้น ไลบรารีจะขอรับและฝัง token ดังกล่าว แต่ไม่ได้รับรอง TSA
- สถานะ FIPS ขึ้นอยู่กับสภาพแวดล้อม การทำงานบนโมดูลการเข้ารหัสลับที่ผ่านการตรวจรับรอง FIPS เป็นคุณสมบัติของสภาพแวดล้อมการทำงานและของโมดูล (
fips_140_3#x12) ไม่ใช่สิ่งที่ไลบรารี PHP จะยืนยันแทนผู้เรียกใช้ได้
ประสิทธิภาพ
หัวข้อที่มีชื่อว่า “ประสิทธิภาพ”เส้นทางการเซ็นคำนวณ byte-range digest หนึ่งรายการและโครงสร้าง CMS หนึ่งรายการ ส่วนขยาย B-T เพิ่ม round-trip แบบ synchronous ไปยังผู้ออก timestamp หนึ่งครั้ง การเข้ารหัสลับเป็นการดำเนินการแบบ symmetric ในระดับ per-string/per-stream ทั้งสองอย่างไม่ใช่ต้นทุนหลักในการเรนเดอร์ทั่วไป network round-trip สำหรับ B-T เป็นต้นทุนที่แปรผัน และขึ้นอยู่กับ TSA ที่ผู้เรียกใช้เลือก
หมายเหตุด้านความปลอดภัย
หัวข้อที่มีชื่อว่า “หมายเหตุด้านความปลอดภัย”ข้อความกำหนดขอบเขตสามารถเรียบเรียงเป็นกฎที่ผู้ตรวจทานบังคับใช้ได้ดังนี้:
- การรักษาความลับเท่านั้น การเข้ารหัสลับ AES-256 ปกป้องเนื้อหาจากฝ่ายที่ไม่มีรหัสผ่าน การเข้ารหัสลับไม่ได้ให้ความครบถ้วนสมบูรณ์ ความเป็นของแท้ หรือการควบคุมการเข้าถึง (
iso32000_2_sec7#x1.x65.p29) - สิทธิ์เป็นเชิงแนะนำ แฟล็กสิทธิ์อาศัยความร่วมมือของโปรแกรมอ่านและไม่ได้บังคับใช้เชิงการเข้ารหัสลับ (
iso32000_2_sec7#x1.x71.p27) ถ้อยคำของผลิตภัณฑ์ต้องไม่อ้างว่าแฟล็กเหล่านี้ป้องกันการกระทำใดได้ - เฉพาะ B-B และ B-T ในหน้านี้ พื้นผิวการเซ็นของ core/Pro ที่บันทึกไว้ในหน้านี้ครอบคลุม B-B และส่วนขยาย timestamp แบบ B-T โดยการกล่าวถึง B-T แต่ละครั้งจะอยู่คู่กับข้อควรระวัง U-1 ข้างต้น ระดับการจัดเก็บถาวรระยะยาวเป็นพื้นผิวของรุ่นที่ต้องชำระเงินซึ่งแยกต่างหาก และจงใจไม่อธิบายไว้ที่นี่ หน้านี้ไม่ได้ยืนยันความสามารถด้าน validation-data, revocation-information หรือ archive-timestamp ใด ๆ
- ไม่มีการอ้างความสมบูรณ์ทางกฎหมาย ลายเซ็นที่สร้างขึ้นเป็นวัตถุเชิงการเข้ารหัสลับ ลายเซ็นนั้นจะ สมบูรณ์ทางกฎหมาย หรือไม่ ขึ้นอยู่กับเขตอำนาจศาล นโยบายใบรับรอง และ relying party ไม่ได้ขึ้นอยู่กับไลบรารีนี้
ความสอดคล้องกับมาตรฐาน
หัวข้อที่มีชื่อว่า “ความสอดคล้องกับมาตรฐาน”การรองรับไม่เท่ากับความสอดคล้องกับมาตรฐาน เอนจินสร้างผลลัพธ์ที่ใช้โครงสร้างตาม ISO 32000-2, RFC 3161, RFC 5652 และ ETSI EN 319 122-1 ที่อ้างถึง เอนจินไม่ได้ยืนยันความสอดคล้องกับ PAdES, CAdES หรือ eIDAS การตรวจรับรอง FIPS 140-3 เป็นคุณสมบัติของ module/environment (fips_140_3#x12) ไม่ใช่คำกล่าวอ้างของไลบรารี ผู้ตรวจสอบหรือผู้ประเมินอิสระเป็นผู้ตัดสินความสอดคล้องกับมาตรฐานหรือความสมบูรณ์ทางกฎหมายใด ๆ