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

Mô hình bảo mật cho ký và mã hóa

Trang này định nghĩa mô hình bảo mật cho hai bề mặt mật mã mà core engine cung cấp: mã hóa tài liệu bằng Advanced Encryption Standard 256-bit (AES-256) và tài liệu bằng Cryptographic Message Syntax (CMS)/PDF Advanced Electronic Signatures (PAdES). Trang giải thích từng cơ chế bảo vệ điều gì, không bảo vệ điều gì, và ranh giới tin cậy nằm ở đâu.

Ranh giới. Việc hỗ trợ một cơ chế mật mã không bảo đảm cơ chế đó an toàn trong môi trường triển khai của bạn. Độ mạnh của tài liệu đã mã hóa phụ thuộc vào mật khẩu và cách lưu giữ khóa mà bạn chọn. Ý nghĩa của chữ ký phụ thuộc vào chứng chỉ, neo tin cậy, cơ quan cấp dấu thời gian, và chính sách của bên xác minh. Các biện pháp kiểm soát đó nằm ngoài thư viện này. Trang này mô tả cơ chế; trang không chứng nhận kết quả.

Terminal window
composer require nextpdf/core:^3

ext-openssl là bắt buộc cho các đường ký và CMS.

Trong core engine, Mã hóa sử dụng trình xử lý bảo mật AES-256 (AESV3, Revision 6) theo ISO 32000-2 §7.6 (iso32000_2_sec7#x1.x65.p29). Nó cung cấp tính bảo mật: bên không có mật khẩu thì không thể đọc nội dung chuỗi và luồng. Nó không cung cấp tính toàn vẹn hay tính xác thực. Bản mã vẫn có thể bị cắt cụt hoặc thay thế. Chữ ký hoặc mã xác thực thông điệp tài liệu (MAC) phải là cơ chế phát hiện tình huống đó; trình xử lý mã hóa thì không.

Quyền (in, sao chép, sửa đổi) là phần riêng và dễ bị hiểu nhầm. Các cờ quyền của ISO 32000-2 mang tính phối hợp với trình đọc (iso32000_2_sec7#x1.x71.p27). Trình đọc tuân thủ sẽ tôn trọng chúng, nhưng đó là siêu dữ liệu mang tính khuyến nghị, không phải biện pháp kiểm soát truy cập bằng mật mã. Công cụ không phối hợp có thể bỏ qua chúng. Engine phát ra các cờ này đúng như cấu hình; nó không thể cưỡng chế chúng.

Với , engine nhúng cấu trúc CMS SignedData như mô tả trong ISO 32000-2 §12.8. Dải byte đã ký là một đối tượng trực tiếp, và digest cố ý loại trừ giá trị Contents của chữ ký (iso32000_2_sec12#x1.x121.p45), nên chữ ký bao phủ tài liệu nhưng không bao phủ chính nó.

Trang này không lặp lại tài liệu tham chiếu về chữ ký. Các điểm vào cho mã hóa và bộ điều phối ký được mô tả trong /modules/core/security//modules/core/security/signing/. Mô hình này nói về ý nghĩa và ranh giới, không nói về hình dạng của các phương thức.

Mã hóa bảo vệ tính bảo mật trước những bên không có mật khẩu, chỉ vậy:

<?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');

Luồng ký trong môi trường sản xuất áp dụng chữ ký baseline CMS/PAdES với khóa do phần mềm giữ. Phiên bản Core tạo ra mức PAdES B-B. Khi bạn cấu hình cơ quan cấp dấu thời gian, phiên bản Core tạo ra PAdES B-T, tức là B-B cộng thêm một thuộc tính không ký RFC 3161 signature-time-stamp duy nhất:

<?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 đúng bằng B-B cộng thêm một thuộc tính không ký RFC 3161 signature-time-stamp được mang trong CMS SignerInfo (rfc5652#p603). Dấu thời gian gắn giá trị chữ ký với thời gian tin cậy từ một cơ quan cấp dấu thời gian (rfc3161#p208). Nó không thêm từ điển dữ liệu xác thực, cấu trúc thông tin thu hồi, hay vòng lặp dấu thời gian lưu trữ. Đó là các mức dài hạn riêng, có phạm vi riêng, không thuộc bề mặt B-B/B-T và nằm ngoài phạm vi của trang này.

U-1. NextPDF không khẳng định chứng nhận ETSI EN 319 142-1 độc lập cho PAdES B-T. EN 319 142-1 không nằm trong corpus xác minh được dùng ở đây. Yêu cầu B-T signature-time-stamp được kiểm chứng dựa trên ETSI EN 319 122-1 §5.3 — nền tảng CMS Advanced Electronic Signatures (CAdES) mà EN 319 142 họ PAdES nhập theo tham chiếu (etsi_en_319_122_1#6.x40.p96) — cùng với RFC 3161, RFC 5652, và ISO 32000-2 §12.8. Việc hỗ trợ hồ sơ B-T không phải là chứng nhận tuân thủ hay chứng nhận giá trị pháp lý. Chỉ bên xác thực độc lập mới đưa ra quyết định đó.

Trường hợp ngoại lệ & điểm cần lưu ý

Phần tiêu đề “Trường hợp ngoại lệ & điểm cần lưu ý”
  • Mã hóa ≠ toàn vẹn. Trình đọc mở được tài liệu vẫn có thể nhận một bản đã bị giả mạo. Chỉ chữ ký (hoặc MAC tài liệu) mới phát hiện được điều đó. “Chống giả mạo” không phải là đặc tính mà trình xử lý mã hóa cung cấp, và thuật ngữ này không được dùng như một tuyên bố về sản phẩm.
  • Sự hiện diện của một chữ ký không phải là tính hợp lệ của nó. Việc tài liệu có từ điển chữ ký không nói lên điều gì về việc chứng chỉ có được tin cậy, còn hạn, hay chưa bị thu hồi hay không. Việc xác lập tính hợp lệ là thao tác ở phía bên xác minh, chịu sự điều chỉnh của chính sách bên tin cậy, chứ không phải của người ký.
  • Tin cậy dấu thời gian là yếu tố bên ngoài. Dấu thời gian B-T chỉ có ý nghĩa tương ứng với mức tin cậy mà bên xác minh đặt vào cơ quan cấp dấu thời gian (TSA) đã cấp nó. Thư viện lấy và nhúng token. Nó không bảo chứng cho TSA.
  • Trạng thái FIPS là yếu tố môi trường. Việc chạy trên mô-đun mật mã đã được kiểm định FIPS là đặc tính của môi trường vận hành và của mô-đun (fips_140_3#x12), không phải điều mà thư viện PHP có thể khẳng định thay cho bên gọi.

Đường ký tính toán một digest cho dải byte và một cấu trúc CMS. Phần mở rộng B-T thêm một lượt gọi đồng bộ đến cơ quan cấp dấu thời gian. Mã hóa là thao tác đối xứng per-string/per-stream. Cả hai đều không chiếm phần lớn chi phí của một lần kết xuất thông thường. Lượt gọi mạng cho B-T là chi phí biến thiên và phụ thuộc vào lựa chọn TSA của bên gọi.

Các tuyên bố về ranh giới được nêu lại thành các quy tắc mà người rà soát có thể áp dụng:

  1. Chỉ tính bảo mật. Mã hóa AES-256 bảo vệ nội dung trước những bên không có mật khẩu. Nó không cung cấp tính toàn vẹn, tính xác thực, hay kiểm soát truy cập (iso32000_2_sec7#x1.x65.p29).
  2. Quyền chỉ mang tính khuyến nghị. Các cờ quyền mang tính phối hợp với trình đọc và không được cưỡng chế bằng mật mã (iso32000_2_sec7#x1.x71.p27). Nội dung mô tả sản phẩm không được tuyên bố rằng các cờ này ngăn chặn một hành động.
  3. Trang này chỉ đề cập B-B và B-T. Bề mặt ký core/Pro được mô tả ở đây bao gồm B-B và phần mở rộng dấu thời gian B-T của nó; mỗi lần nhắc đến B-T đều đi kèm lưu ý U-1 ở trên. Các mức lưu trữ dài hạn là bề mặt riêng, thuộc phiên bản trả phí, và được cố ý không mô tả ở đây. Trang này không khẳng định bất kỳ khả năng dữ liệu xác thực, thông tin thu hồi, hay dấu thời gian lưu trữ nào.
  4. Không có tuyên bố về giá trị pháp lý. Chữ ký được tạo ra là một sản phẩm mật mã. Việc nó có hợp lệ về mặt pháp lý hay không phụ thuộc vào thẩm quyền tài phán, chính sách chứng chỉ, và bên tin cậy, chứ không phụ thuộc vào thư viện này.

Hỗ trợ không đồng nghĩa với tuân thủ. Engine tạo ra đầu ra sử dụng các cấu trúc ISO 32000-2, RFC 3161, RFC 5652, và ETSI EN 319 122-1 được trích dẫn. Engine không khẳng định tuân thủ PAdES, CAdES, hay eIDAS. Việc kiểm định FIPS 140-3 là đặc tính của module/environment (fips_140_3#x12), không phải tuyên bố của thư viện. Chỉ bên xác thực hoặc đánh giá độc lập mới đưa ra mọi quyết định về tuân thủ hay giá trị pháp lý.