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

โมเดลความปลอดภัยสำหรับลายเซ็นและการเข้ารหัสลับ

หน้านี้กำหนดโมเดลความปลอดภัยสำหรับพื้นผิวการเข้ารหัสลับสองส่วนที่เอนจินหลักเปิดให้ใช้ ได้แก่ การเข้ารหัสลับ เอกสารด้วย Advanced Encryption Standard 256-bit (AES-256) และ การเซ็น เอกสารด้วย Cryptographic Message Syntax (CMS)/PDF Advanced Electronic Signatures (PAdES) เนื้อหาจะอธิบายว่ากลไกแต่ละอย่างปกป้องสิ่งใด ไม่ได้ปกป้องสิ่งใด และขอบเขตความไว้วางใจอยู่ที่ใด

ขอบเขต การรองรับกลไกการเข้ารหัสลับไม่ได้รับประกัน ความปลอดภัยในการนำไปใช้งานของคุณ ความแข็งแรงของเอกสารที่เข้ารหัสลับ ขึ้นอยู่กับรหัสผ่านและการจัดเก็บคีย์ที่คุณเลือก ความหมายของ ลายเซ็นขึ้นอยู่กับใบรับรอง trust anchor ผู้ออก timestamp และ นโยบายของผู้ตรวจสอบ การควบคุมเหล่านั้นอยู่นอกไลบรารีนี้ หน้านี้ อธิบายกลไกดังกล่าว ไม่ได้รับรองผลลัพธ์

Terminal window
composer require nextpdf/core:^3

ext-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) ดังนั้นลายเซ็นจึงครอบคลุมเอกสาร แต่ไม่ครอบคลุมตัวลายเซ็นเอง

หน้านี้ไม่ได้กล่าวซ้ำเอกสารอ้างอิงของลายเซ็น จุดเข้าใช้งานของการเข้ารหัสลับและ 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 ที่ผู้เรียกใช้เลือก

ข้อความกำหนดขอบเขตสามารถเรียบเรียงเป็นกฎที่ผู้ตรวจทานบังคับใช้ได้ดังนี้:

  1. การรักษาความลับเท่านั้น การเข้ารหัสลับ AES-256 ปกป้องเนื้อหาจากฝ่ายที่ไม่มีรหัสผ่าน การเข้ารหัสลับไม่ได้ให้ความครบถ้วนสมบูรณ์ ความเป็นของแท้ หรือการควบคุมการเข้าถึง (iso32000_2_sec7#x1.x65.p29)
  2. สิทธิ์เป็นเชิงแนะนำ แฟล็กสิทธิ์อาศัยความร่วมมือของโปรแกรมอ่านและไม่ได้บังคับใช้เชิงการเข้ารหัสลับ (iso32000_2_sec7#x1.x71.p27) ถ้อยคำของผลิตภัณฑ์ต้องไม่อ้างว่าแฟล็กเหล่านี้ป้องกันการกระทำใดได้
  3. เฉพาะ B-B และ B-T ในหน้านี้ พื้นผิวการเซ็นของ core/Pro ที่บันทึกไว้ในหน้านี้ครอบคลุม B-B และส่วนขยาย timestamp แบบ B-T โดยการกล่าวถึง B-T แต่ละครั้งจะอยู่คู่กับข้อควรระวัง U-1 ข้างต้น ระดับการจัดเก็บถาวรระยะยาวเป็นพื้นผิวของรุ่นที่ต้องชำระเงินซึ่งแยกต่างหาก และจงใจไม่อธิบายไว้ที่นี่ หน้านี้ไม่ได้ยืนยันความสามารถด้าน validation-data, revocation-information หรือ archive-timestamp ใด ๆ
  4. ไม่มีการอ้างความสมบูรณ์ทางกฎหมาย ลายเซ็นที่สร้างขึ้นเป็นวัตถุเชิงการเข้ารหัสลับ ลายเซ็นนั้นจะ สมบูรณ์ทางกฎหมาย หรือไม่ ขึ้นอยู่กับเขตอำนาจศาล นโยบายใบรับรอง และ 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) ไม่ใช่คำกล่าวอ้างของไลบรารี ผู้ตรวจสอบหรือผู้ประเมินอิสระเป็นผู้ตัดสินความสอดคล้องกับมาตรฐานหรือความสมบูรณ์ทางกฎหมายใด ๆ