Bỏ qua để đến nội dung

Ánh xạ các mức cơ sở PAdES

PDF Advanced Electronic Signatures (PAdES) là nhóm profile được chuẩn hóa trong ETSI EN 319 142. Nó định nghĩa bốn mức tuân thủ cơ sở — B-B, B-T, B-LT và B-LTA — trong đó mỗi mức cao hơn bổ sung thêm nội dung vào mức bên dưới. Trang này ánh xạ các mức đó sang những gì NextPDF tạo ra. Trang này tách bề mặt Core khỏi các phiên bản Pro và Enterprise. Ánh xạ này mô tả hành vi: nó cho biết engine phát ra những gì, chứ không phải các lớp nội bộ.

Tóm tắt: NextPDF Core tạo ra các cấu trúc chữ ký phù hợp với B-B và B-T. Đường tạo B-LT và B-LTA được cung cấp trong các phiên bản Pro và Enterprise. Việc một chữ ký đã tạo có được chấp nhận là tuân thủ ở một mức nhất định hay không phụ thuộc vào bên xác minh và các neo tin cậy mà bên đó cấu hình. Phía tạo chữ ký không thể khẳng định sự tuân thủ thay cho bên xác minh.

Terminal window
composer require nextpdf/core:^3

Chữ ký số PDF là một cấu trúc SignedData của Cryptographic Message Syntax (CMS) được lưu trong mục Contents của từ điển chữ ký. Mảng ByteRange chỉ ra các khoảng byte mà digest bao phủ — ISO 32000-2 §12.8.1. CMS SignerInfo mang các thuộc tính đã ký, bao gồm thuộc tính content-type và message-digest — RFC 5652 §5.3. Bản digest trên các thuộc tính đó được tính theo quy trình §5.4. PAdES dùng mô hình thuộc tính của CMS Advanced Electronic Signatures (CAdES) bên trong từ điển chữ ký PDF.

Bốn mức cơ sở mang tính cộng dồn:

  • B-B chứa chữ ký nền cùng các thuộc tính đã ký bắt buộc của chữ ký đó.
  • B-T bổ sung một thuộc tính dấu thời gian của chữ ký được tính trên giá trị chữ ký. Thuộc tính dấu thời gian chứng minh chữ ký đã tồn tại tại thời điểm được đóng dấu — ETSI PAdES §5.4.3. Một Time-Stamping Authority theo RFC 3161 tạo ra token — RFC 3161 §2.4.1.
  • B-LT bổ sung tài liệu xác thực dài hạn — chứng chỉ, dữ liệu Online Certificate Status Protocol (OCSP) và certificate revocation list (CRL) — được đặt trong Document Security Store — ETSI PAdES §6.2.2, ISO 32000-2 §12.8.4.3 và cách đặt dữ liệu xác thực được mô tả trong ETSI EN 319 142-2 §6.3.
  • B-LTA bổ sung một dấu thời gian tài liệu lưu trữ để duy trì hiệu lực trong các giai đoạn dài — ETSI PAdES §6.2.2.

Bốn mức này hoàn toàn có tính cộng dồn — mỗi mức cao hơn giữ lại mọi thứ mà mức bên dưới mang theo và bổ sung đúng một lớp nội dung mới. Các nhãn chuyển tiếp cho biết phiên bản tạo (producer edition) cung cấp từng bước.

+ RFC 3161 sig time-stamp

(Core / Enterprise
+ Document Security Store

(Enterprise only)
+ archive doc time-stamp

(Enterprise only)

B-B

CMS signature + signed attributes

B-T

+ signature time-stamp (over the signature value)

B-LT

+ DSS validation material (cert, OCSP, CRL)

B-LTA

+ archive document time-stamp (over the DSS)

;

not

Pro)

Diagram

Dùng enum SignatureLevel để chọn một mức. Enum này định nghĩa các case PAdES_B_B, PAdES_B_T, PAdES_B_LTPAdES_B_LTA. Các phương thức requiresTimestamp(), requiresDss(), requiresDocumentTimestamp()isAvailableInEnvironment() cho biết yêu cầu của từng mức và liệu môi trường chạy hiện tại có đáp ứng được hay không. Trong bản phân phối Core, isAvailableInEnvironment() trả về true cho B-B và B-T, và false cho B-LT và B-LTA. Nó trả về false cho B-LT và B-LTA vì trình tạo tài liệu xác thực dài hạn được phân giải tại thời điểm chạy và không thuộc gói mã nguồn mở. Mã production nên dùng hợp đồng SignerInterface thay vì các kiểu nội bộ này.

MứcNội dung bổ sungCore (nextpdf/core)Pro / Enterprise
B-BChữ ký nền với các thuộc tính đã ký bắt buộcTạo ra cấu trúc phù hợp; được kiểm thử dựa trên các golden baseline tổng hợpCùng bề mặt
B-TDấu thời gian của chữ ký trên giá trị chữ kýTạo ra cấu trúc phù hợp khi có cung cấp một dịch vụ dấu thời gian RFC 3161Cùng bề mặt
B-LTDữ liệu xác thực trong Document Security StoreTrình tạo không có trong Core; chọn B-LT mà không có gói Enterprise sẽ fail closedCó cung cấp trình tạo
B-LTADấu thời gian tài liệu lưu trữTrình tạo không có trong Core; fail closed như trênCó cung cấp trình tạo

“Tạo ra cấu trúc phù hợp” nghĩa là NextPDF phát ra một chữ ký có cấu trúc tuân theo các điều khoản được trích dẫn. Các artifact tests/Corpus/pades/tests/Golden/baselines/ của dự án kiểm tra cấu trúc đó. Điều đó không có nghĩa là một bộ xác thực bên ngoài chứng nhận đầu ra ở mức đó. Xem mục tuân thủ.

examples/contracts/signing-quickstart.php
<?php
declare(strict_types=1);
require_once __DIR__ . '/../../vendor/autoload.php';
use NextPDF\Contracts\SignerInterface;
/**
* Sign a byte range with any SignerInterface implementation.
*
* @param SignerInterface $signer A Core or Premium signer.
* @param string $byteRange The PDF byte range to sign.
*
* @return string Hex-encoded CMS SignedData for the PDF /Contents field.
*/
function signByteRange(SignerInterface $signer, string $byteRange): string
{
return $signer->sign($byteRange)->toHex();
}

Hàm này phụ thuộc vào hợp đồng SignerInterface, không phụ thuộc vào một lớp cụ thể. Cả bộ ký phần mềm Core (B-B hoặc B-T) lẫn bộ ký hardware security module (HSM) Premium đều thỏa mãn hợp đồng này. Mã của bên gọi không thay đổi khi phiên bản thay đổi.

examples/contracts/signing-level.php
<?php
declare(strict_types=1);
require_once __DIR__ . '/../../vendor/autoload.php';
use NextPDF\Security\Signature\SignatureLevel;
/**
* Resolve the highest baseline level the current runtime can produce.
*
* B-B and B-T are produced by the Core distribution. B-LT and B-LTA
* require the Enterprise long-term-validation package; without it the
* level reports unavailable so callers fail closed rather than emit a
* structure that does not carry the validation material the level names.
*
* @return SignatureLevel The highest level available in this runtime.
*/
function highestAvailableLevel(): SignatureLevel
{
foreach ([
SignatureLevel::PAdES_B_LTA,
SignatureLevel::PAdES_B_LT,
SignatureLevel::PAdES_B_T,
SignatureLevel::PAdES_B_B,
] as $level) {
if ($level->isAvailableInEnvironment()) {
return $level;
}
}
return SignatureLevel::PAdES_B_B;
}

isAvailableInEnvironment() trả về true cho B-B và B-T mà không cần gói bổ sung. Nó chỉ trả về true cho B-LT và B-LTA khi gói tài liệu xác thực dài hạn Enterprise đã được cài đặt. Nếu bạn chọn một mức không khả dụng mà không bật chế độ giảm cấp, NextPDF ném ra một ngoại lệ mức-không-thể-đạt có kiểu, với thông điệp nêu tên gói còn thiếu. Nhờ vậy, một triển khai bị cấu hình sai sẽ fail closed thay vì âm thầm phát ra một mức thấp hơn mức mà bên gọi đã yêu cầu.

  • Một chữ ký B-T về mặt cấu trúc không giống với một chữ ký được xác thực là B-T. Quá trình xác thực chạy ở bên xác minh với các neo tin cậy và độ tươi của thông tin thu hồi do bên xác minh đó sử dụng. Phía tạo chữ ký không thể khẳng định kết quả.
  • PAdES B-LT và B-LTA yêu cầu gói NextPDF Enterprise (nextpdf/enterprise). Nếu gói này chưa được cài đặt, bộ ký fail closed và B-LT/B-LTA không khả dụng. Core cung cấp B-B/B-T thông qua NextPDF\Contracts\SignerInterface công khai; phần xác thực dài hạn vẫn nằm sau LtvManagerInterface. Chọn một mức không khả dụng trong Core sẽ fail closed theo mặc định. Ngoại lệ có kiểu nêu tên gói công khai còn thiếu, không phải một kiểu nội bộ. Việc giảm cấp mượt mà xuống một mức thấp hơn là tùy chọn cần bật, không bao giờ là mặc định.
  • Bản digest theo byte-range phải loại trừ giá trị chữ ký. Nếu bản digest cũng bao phủ các octet Contents thì việc xác minh không bao giờ có thể thành công — ISO 32000-2 §12.8.1.
  • Trong B-T, dấu thời gian của chữ ký nằm trên giá trị chữ ký, không phải trên các byte của tài liệu. Trong B-LTA, dấu thời gian lưu trữ là một dấu thời gian tài liệu riêng. Hai loại này không thể thay thế cho nhau — ETSI PAdES §5.4.3 và §6.2.2.
  • ETSI EN 319 142-1 (phần về các mức cơ sở) không có trong corpus bằng chứng của dự án này. Các tuyên bố về cấu trúc mức ở đây được neo vào ETSI EN 319 142-2, tài liệu profile pades, ISO 32000-2 §12.8 và RFC 5652 / RFC 3161. Tên mức và cấu trúc cộng dồn được nêu là đã triển khai trong v3.x. Trang này không tuyên bố bất kỳ kết quả kiểm thử tuân thủ hay chứng nhận nào của bên thứ ba.

Chi phí tăng theo từng mức. B-B là một thao tác ký đơn lẻ và mất số mili-giây một chữ số đối với khóa phần mềm. B-T thêm một vòng truyền mạng tới Time-Stamping Authority. B-LT thêm một lượt lấy thông tin thu hồi cho mỗi chứng chỉ trong chuỗi. B-LTA thêm một dấu thời gian tài liệu nữa. Ngân sách thời gian 1.500 ms bao gồm một chữ ký B-T đơn lẻ với một Time-Stamping Authority (TSA) ở xa trên một kết nối đang ấm. B-LT hoặc B-LTA đối với một endpoint thu hồi chậm sẽ vượt ngân sách đó và nên nằm ngoài đường xử lý yêu cầu. Profile tái lập là structural, không phải bitwise. Dấu thời gian nhúng thời điểm ký, nên hai lần chạy sẽ khác nhau ở các byte dấu thời gian, dù cấu trúc tài liệu vẫn giữ nguyên.

Mức mà một chữ ký tuyên bố và mức mà nó được xác thực là hai việc khác nhau. Trang này chỉ mô tả bề mặt của phía tạo chữ ký. Xác thực dài hạn phụ thuộc vào dữ liệu xác thực được thu thập tại thời điểm ký và vào việc bên xác minh tiếp tục tin cậy các neo đó về sau. Phía tạo chữ ký không thể bảo đảm bất kỳ việc nào trong hai việc đó. Niềm tin đối với dấu thời gian quy về niềm tin đối với Time-Stamping Authority, mà triển khai ghim qua một provider có thể tiêm vào. Trang này được đánh dấu export_control_class: legal-review-required vì liên quan đến các profile chữ ký mật mã. Mọi nguồn quy phạm đều được diễn giải lại, và không nguồn nào được sao chép nguyên văn, theo nguyên tắc vệ sinh trích dẫn.

Tuyên bốTiêu chuẩnĐiều khoảnBằng chứng
Giá trị chữ ký được lưu mã hóa DER dưới dạng CMS SignedData hoặc một TimeStampToken trong mục Contents của từ điển chữ ký.ISO 32000-2§12.8.1
Bản digest được tính trên các khoảng ByteRange và loại trừ giá trị chữ ký.ISO 32000-2§12.8.1
Thuộc tính dấu thời gian của chữ ký được tính trên giá trị chữ ký (B-T).ETSI PAdES (EN 319 142)§5.4.3
Tài liệu xác thực dài hạn được mang trong Document Security Store (B-LT).ETSI PAdES (EN 319 142) / ISO 32000-2§6.2.2 / §12.8.4.3,
Dữ liệu xác thực được đặt trong các từ điển DSS và VRI.ETSI EN 319 142-2§6.3,
Một dấu thời gian tài liệu lưu trữ duy trì hiệu lực qua các giai đoạn dài (B-LTA).ETSI PAdES (EN 319 142)§6.2.2
SignerInfo mang các thuộc tính đã ký content-type và message-digest.RFC 5652§5.3
Bản digest thông điệp được tính trên các thuộc tính đã ký mã hóa DER (quy trình §5.4).RFC 5652§5.4
Dấu thời gian được yêu cầu từ một TSA theo RFC 3161 và trả về một cấu trúc TSTInfo.RFC 3161§2.4.1

Mọi điều khoản đều được diễn giải lại. NextPDF không sao chép nguyên văn văn bản quy phạm. Hãy tham khảo các tiêu chuẩn đã công bố để có cách diễn đạt có thẩm quyền. ETSI EN 319 142-1 không có trong corpus bằng chứng. Các tuyên bố về cấu trúc của các mức cơ sở được neo vào các nguồn ở trên và được nêu là đã triển khai trong v3.x.

Core tạo ra các cấu trúc chữ ký B-B và B-T. Đường tạo B-LT và B-LTA, key custody HSM và PKCS#11, cùng profile chính sách mật mã FIPS 140-3 được cung cấp trong các phiên bản Pro và Enterprise. Core phân giải trình tạo tài liệu xác thực dài hạn tại thời điểm chạy, nên engine mã nguồn mở không mang phụ thuộc thương mại nào. API SignerInterface không thay đổi khi nâng cấp.

  • Security / Signing — bề mặt triển khai CMS, dấu thời gian, xác thực dài hạn (LTV), chuỗi tin cậy và thu hồi.
  • Contracts / Signing — service provider interface (SPI) SignerInterface và các bậc ổn định.
  • Security — bề mặt triển khai mã hóa và chữ ký.
  • Conformance — việc thực thi PDF/A và profile đi kèm với lưu trữ đã ký.
  • PAdES · PAdES B-T · DSS · CAdES — các thuật ngữ trong bảng chú giải.