Bỏ qua để đến nội dung
getnextpdf.com

Pro phiên bản

Security — Tài liệu tham chiếu chuyên sâu

Đây là tài liệu tham chiếu chuyên sâu cho bề mặt bảo mật NextPDF Pro: che dữ liệu lúc tạo tài liệu, phát hiện PII ở lớp văn bản, phiên ký từ xa và bằng cloud-KMS, ký tuần tự nhiều bên, đường dẫn nạp CAdES và XAdES, cấp baseline PAdES B-B, và hỗ trợ ký PAdES B-T (một chữ ký B-B cộng với một RFC 3161 signature-time-stamp trên giá trị chữ ký). Trang nêu hợp đồng API công khai, hành vi quan sát được từ bên ngoài, và ranh giới B-LT/B-LTA của Enterprise. Đây là tài liệu ở mức hành vi; nó không trích dẫn đường dẫn triển khai nội bộ nào.

Năng lực này được kèm trong NextPDF Pro (nextpdf/pro) và kích hoạt bằng một license envelope cấp Pro. Một triển khai không có quyền đó sẽ không nạp các lớp của năng lực này. So sánh các phiên bản và lấy giấy phép.

Core kèm theo trình ký CMS phần mềm, client dấu thời gian RFC 3161, xác thực đường dẫn RFC 5280, và việc kiểm tra thu hồi OCSP và CRL. Pro bổ sung bề mặt che dữ liệu, phát hiện PII, ký từ xa và bằng cloud-KMS, cùng hỗ trợ ký PAdES B-T (nó kết hợp ngăn xếp RFC 3161 của Core để thêm một signature-time-stamp) được mô tả ở đây. Cờ năng lực cho bề mặt này là pro: một triển khai không có quyền Pro đang hoạt động sẽ không nạp các lớp này, hợp đồng ký của Core vẫn tiếp tục hoạt động không thay đổi, và mã phụ thuộc vào hợp đồng của Core không bị hỏng khi không có quyền này.

Terminal window
composer require nextpdf/pro:^3

Engine che dữ liệu áp dụng một danh sách quy tắc có thứ tự lên văn bản trước khi trang được ghi. Một quy tắc khớp một mẫu PCRE và thay thế phần khớp theo một trong ba chế độ:

  • BlackBox — loại bỏ phần văn bản đã khớp khỏi content stream và dành ra một vùng tô. Chế độ này loại bỏ các đối tượng văn bản nền theo đúng những gì đã được kiểm thử.
  • Asterisks — thay từng ký tự đã khớp bằng một dấu sao, giữ nguyên số ký tự.
  • FixedLabel — thay toàn bộ phần khớp bằng một nhãn có thể cấu hình, mặc định là [REDACTED].

Một quy tắc được dựng từ một literal chính xác thông qua MaskingRule::exactMatch (literal được escape theo regex) hoặc từ một mẫu PCRE tùy biến thông qua MaskingRule::regex. MaskingConfig giữ danh sách quy tắc có thứ tự, một chế độ mặc định, và màu tô. MaskingConfig::fromArray phân tích một bản đồ cấu hình và âm thầm loại bỏ một mục quy tắc không có mẫu chuỗi dùng được, thay vì làm hỏng cả lượt nhập.

Bề mặt PII trích xuất lớp văn bản của PDF, rồi áp dụng các mẫu dựng sẵn cho địa chỉ email, số điện thoại, số An sinh xã hội Hoa Kỳ, và số thẻ tín dụng. Nó trả về một kết quả có cấu trúc: một boolean cho biết có khớp nào hay không, số lần khớp, dạng văn bản đã che, và danh sách các kiểu đã quét. Bên gọi có thể giới hạn việc quét vào một tập con trong bốn kiểu. Bề mặt này không ghi đè các glyph đã render trên trang; một trang đã được quét nhưng không có lớp văn bản sẽ không cho ra kết quả khớp nào. Hãy coi kết quả là việc phát hiện theo mẫu ở lớp văn bản cho các kiểu đã cấu hình, không phải việc loại bỏ dữ liệu cá nhân hoàn toàn và cũng không phải một tuyên bố tuân thủ quy định.

Phiên ký gồm hai pha. RemoteSigningSession::create mở một phiên. prepare tính document digest trên hai vùng ByteRange, rồi dựng các thuộc tính đã ký của CMS. complete gọi chiến lược và nhúng kết quả; suspend tuần tự hóa phiên để một worker có thể tiếp tục sau bằng resumecompleteWithRawSignature. Phiên lắp ráp một CMS SignedData và lưu nó dưới dạng mã hóa DER trong mục Contents của từ điển chữ ký — ISO 32000-2 §12.8.1. Khi được cấp một chứng chỉ X.509 phân tích được, phiên phát ra đầy đủ bộ thuộc tính đã ký bắt buộc của PAdES B-B: content-type, message-digest, signing-time, signing-certificate-v2, và một thuộc tính algorithm-protection — RFC 5652 §5.3 và RFC 5652 §5. Bên xác minh tính lại content digest và so sánh nó với thuộc tính message-digest; phép so sánh phải khớp thì chữ ký mới hợp lệ — RFC 5652 §5.4.

Khi cấp PAdES đã cấu hình là B-T (RemoteSigningConfig::default->withLevel(SignatureLevel::PAdES_B_T), hoặc qua SequentialSigner::withTimestamping) và một nhà cung cấp dấu thời gian đã được nối dây, phiên nhúng thêm đúng một RFC 3161 signature-time-stamp dưới dạng một thuộc tính chưa ký (unsigned) của CMS trên SignerInfo đầu tiên. Một signature-time-stamp là một thuộc tính chưa ký mang theo một token dấu thời gian được tính trên giá trị chữ ký số cho một người ký — ETSI EN 319 122-1 §5.3; MessageImprint của nó là bản băm của giá trị trường chữ ký SignerInfo với phần tag và length của ASN.1 bị loại trừ — ETSI EN 319 122-1 §5.3 và RFC 3161 Appendix A (OID id-aa-timeStampToken = 1.2.840.113549.1.9.16.2.14). Vì dấu thời gian là một thuộc tính chưa ký, các thuộc tính đã ký của B-B, message-digest, giá trị chữ ký SignerInfo, và /ByteRange của PDF là byte-identical so với đầu ra B-B; chỉ có CMS lớn thêm bởi thuộc tính chưa ký, và không gian /Contents dành sẵn của B-T được nâng lên để vừa khớp. Token được yêu cầu từ nhà cung cấp dấu thời gian đã cấu hình (client RFC 3161 mặc định của Core, hoặc một nhà cung cấp do bên gọi cấp). Trên đường dẫn nhà cung cấp mặc định, imprint digest là SHA-256; dạng ESSCertID v1 kế thừa gắn với SHA-1 bị từ chối và ESSCertIDv2 là bắt buộc — RFC 5816 §1. Một lỗi TSA, một yêu cầu bị từ chối, một nonce hay echo message-imprint sai, một token bị méo dạng hoặc dùng thuật toán không được hỗ trợ, hoặc một token không qua xác minh mã hóa sẽ nổi lên dưới dạng một exception PadesBt có kiểu, với exception gốc của Core được giữ làm previous throwable. NextPDF Pro hiện thực hỗ trợ ký PAdES B-T theo ETSI EN 319 122-1 §5.3, RFC 3161, RFC 5652, và RFC 5816, và nó được kiểm chứng bằng fixture; nó không khẳng định một chứng nhận ETSI EN 319 142-1 độc lập và không khẳng định hiệu lực pháp lý của tài liệu.

SequentialSigner điều phối việc ký nhiều bên. Mỗi người ký là một revision incremental-update riêng. Người ký đầu tiên có thể là một chữ ký chứng thực (certification signature) với một ràng buộc DocMDP được đặt thông qua certifyFirst. PadesWrapper nạp một chữ ký hiện có: fromCades nhúng trực tiếp một cấu trúc CMS, fromXades phân tích một tài liệu XAdES và tái sử dụng tài liệu chữ ký cốt lõi của nó, còn detect tự chọn theo định dạng. Đường dẫn XAdES tái sử dụng chứng chỉ, chuỗi, giá trị chữ ký, và thuật toán; nó không chuyển các thuộc tính định tính (qualifying properties) của XAdES.

Terminal window
composer require nextpdf/pro:^3
KiểuLoạiVai tròĐộ ổn địnhTừ
RemoteSigningSessionclassPhiên ký từ xa hoặc bất đồng bộ gồm hai phaổn định1.9.0
RemoteSigningConfigclassCấu hình phiên bất biến, bao gồm cấp PAdES và thuật toánổn định1.9.0
SequentialSignerclassKý tuần tự nhiều bên có hỗ trợ DocMDPổn định1.9.0
SequentialSigningResultclassKết quả của một lượt tuần tự: byte PDF, chuỗi, số lượng, tính đầy đủổn định1.9.0
SigningStrategyinterfaceHợp đồng cơ chế ký mà một phiên gọi đếnổn định1.9.0
PadesWrapperclassBao một chữ ký CAdES hoặc XAdES hiện có để nhúng PAdESổn định1.9.0
KmsSignerInterfaceinterface (SPI)Hợp đồng driver HSM và KMS bên thứ ba; mở rộng hợp đồng trình ký HSM của Coreổn định2.1.0
SignatureAlgorithmenumCác OID thuật toán chữ ký và tên digest của Proổn định2.1.0
GenerationTimeMaskerclassChe dữ liệu theo quy tắc, áp dụng trước khi trang được ghiổn định1.9.0
MaskingConfigclassCấu hình che dữ liệu bất biếnổn định1.9.0
MaskingRuleclassMột quy tắc che dữ liệu đơn lẻ (literal hoặc PCRE)ổn định1.9.0
MaskingModeenumBlackBox, Asterisks, FixedLabelổn định1.9.0

Một chiến lược thao tác trên các thuộc tính đã ký được mã hóa DER và trả về các byte chữ ký thô. Chính phiên, chứ không phải chiến lược, lắp ráp CMS SignedData. Một chiến lược phơi bày DER của chứng chỉ người ký, DER của chuỗi sắp xếp từ leaf đến root, OID thuật toán chữ ký, tên thuật toán digest, và một cờ isAsync đánh dấu một chiến lược mà phiên của nó có thể được tuần tự hóa và tiếp tục lại.

KmsSignerInterface mở rộng hợp đồng trình ký HSM của Core. Nó bổ sung một providerId ổn định để tra cứu registry, một phương thức signWithVersion với một tham số phiên bản khóa tường minh theo từng lần gọi, và supportsAlgorithm cùng supportedAlgorithms để bên gọi khám phá khả năng tương thích thuật toán trước khi gọi ký. Các định danh nhà cung cấp dựng sẵn được dành riêng là aws-kms, azure-keyvault, gcp-kms, pkcs11, openssl-cli, và openssl-engine. Một driver bên thứ ba phải đặt định danh của mình vào một namespace để tránh va chạm. Ngữ nghĩa phiên bản khóa mặc định thay đổi theo nhà cung cấp: một nhà cung cấp phân giải theo alias sẽ phân giải khóa đang hoạt động từ alias khi phiên bản là null; một nhà cung cấp chọn phiên bản được bật mới nhất sẽ làm vậy qua tầng truyền tải của nó; một nhà cung cấp không có khái niệm phiên bản đang hoạt động phía máy chủ phải dùng một phiên bản được ghim trong cấu hình của nó, và phải làm phát sinh một lỗi quản lý khóa khi cả lời gọi lẫn cấu hình đều không ghim một phiên bản. Một phiên bản không rỗng sẽ ghim phiên bản đó, và nhà cung cấp phải làm phát sinh một lỗi quản lý khóa khi phiên bản đó không xác định, bị vô hiệu, hoặc bị thu hồi.

  • Một chữ ký đã tạo không phải là một chữ ký đã được xác minh. Việc xác thực đường dẫn chạy tại bên xác minh với các trust anchor và các kiểm tra basic-constraint của bên đó — RFC 5280 §6.1. Bên tạo không thể khẳng định kết quả.
  • Phiên có một phương án dự phòng ba-thuộc-tính kế thừa cho các byte chứng chỉ tổng hợp không phải X.509. Các chiến lược production luôn cấp DER X.509 thật, nên bộ thuộc tính B-B đầy đủ là đường dẫn production. Phương án dự phòng chỉ tồn tại cho bề mặt kiểm thử cơ chế DER mang tính lịch sử.
  • Cấu trúc CMS phải vừa với không gian Contents dành sẵn. CMS SignedData B-B với một chuỗi chứng chỉ đầy đủ có một kích thước; phiên làm phát sinh một lỗi tràn khi CMS được lắp ráp vượt quá không gian hex dành sẵn. Hãy định cỡ không gian dành sẵn cho phù hợp. Với B-T, token RFC 3161 được nhúng (chiếm phần lớn bởi chuỗi chứng chỉ của TSA) làm CMS lớn thêm; không gian dành sẵn của B-T được nâng tự động, và một không gian được cấu hình quá nhỏ sẽ fail closed với một lỗi cấu hình có kiểu thay vì cắt bớt.
  • MaskingConfig::fromArray loại bỏ một mục không có mẫu chuỗi dùng được thay vì làm hỏng lượt nhập. Hãy thẩm định nguồn cấu hình nếu việc âm thầm loại bỏ là không chấp nhận được.
  • Chế độ black-box của che dữ liệu phát ra một bản thay thế rỗng cho đoạn đã khớp và loại bỏ phần văn bản nền. Một quy tắc không khớp một giá trị thì không che giá trị đó; engine không khẳng định rằng mọi nội dung nhạy cảm đều được tìm thấy.
  • B-T cần một nhà cung cấp dấu thời gian đã được nối dây. Trên đường dẫn nhà cung cấp RFC 3161 mặc định của Core, imprint digest là SHA-256; một imprint digest không phải SHA-256 trên đường dẫn đó sẽ bị từ chối với một lỗi cấu hình có kiểu thay vì âm thầm hạ cấp, còn một nhà cung cấp tùy biến do bên gọi cấp có thể hợp lệ dùng một digest được phê duyệt khác. Một serialNumber của dấu thời gian là duy nhất cho mỗi token từ một Time-Stamping Authority nhất định, và genTime là thời điểm UTC mà token được tạo ra — RFC 3161 §2.4.1, §2.4.2. Tài liệu xác thực dài hạn B-LT/B-LTA vẫn là vấn đề thuộc ranh giới Enterprise; Pro không tạo DSS, không tạo VRI, và không tạo dấu thời gian tài liệu nào.
  • unknown của OCSP không phải là good, và độ tươi mới của trạng thái bị giới hạn bởi thisUpdatenextUpdate — RFC 6960 §2.2, §4.2.

Pro chọn thuật toán từ thuật toán chữ ký đã cấu hình và từ chiến lược. Khi được cấu hình với một KMS hoặc HSM đã được thẩm định FIPS, thao tác mã hóa chạy trong ranh giới đã thẩm định đó, và tập thuật toán là bất kỳ thuật toán nào mà ranh giới đó cho phép. NextPDF Pro thực hiện việc lắp ráp CMS có cấu trúc và tính digest; nó không phải một module mã hóa đã được thẩm định FIPS và không đưa ra tuyên bố chứng nhận FIPS nào. Một triển khai yêu cầu tư thế FIPS phải cấu hình một KMS hoặc HSM đã được thẩm định FIPS, và hồ sơ chính sách mã hóa FIPS 140-3 là một năng lực Enterprise.

Module này liên quan đến chức năng mã hóa; hãy coi nó là nhạy cảm về bảo mật trong quá trình rà soát của riêng bạn.

NextPDF Pro tạo ra baseline B-B và cấp B-T. Với B-B, phiên lắp ráp một CMS SignedData với bộ thuộc tính đã ký của B-B và không áp dụng dấu thời gian nào. Với B-T, nó thêm đúng một RFC 3161 signature-time-stamp dưới dạng một thuộc tính chưa ký của CMS được tính trên giá trị chữ ký số cho một người ký — ETSI EN 319 122-1 §5.3. NextPDF Pro hiện thực điều này theo ETSI EN 319 122-1 §5.3, RFC 3161, RFC 5652, và RFC 5816, và nó được kiểm chứng bằng fixture; nó không khẳng định một chứng nhận, tính phù hợp, hay sự tuân thủ ETSI EN 319 142-1 độc lập, và không khẳng định hiệu lực pháp lý của tài liệu.

Các cấp B-LTB-LTA là năng lực Enterprise và không được Pro tạo ra. B-LT và B-LTA bổ sung một Document Security Store và dấu thời gian tài liệu cho việc xác thực lưu trữ dài hạn — ETSI EN 319 142-2 §5.5. Một trình xử lý chữ ký tạo ra các cấp đó sẽ hỗ trợ các mục DSS và dấu thời gian tài liệu — ETSI EN 319 142-2 §6.3.3.3. RemoteSigningConfig của Pro có thể mang một cấp cao hơn B-T (B-LT hoặc B-LTA) yêu cầu một Document Security Store, nhưng Pro không kèm theo trình tạo đó và không thực hiện nó; một cấp như vậy là một giá trị được khai báo trước (forward-declared). Luồng ký của Core phân giải trình tạo dài hạn lúc chạy thông qua hợp đồng của Core, và trình tạo đó được kèm trong gói nextpdf/enterprise. Trong một triển khai chỉ có Pro, một yêu cầu B-LT hoặc B-LTA sẽ fail closed với một thông báo nêu tên thành phần Enterprise còn thiếu. Pro không tạo DSS, không tạo từ điển VRI, không tạo dấu thời gian tài liệu, và không tạo vòng lặp lưu trữ, và không đưa ra tuyên bố xác thực dài hạn (LTV) nào. Việc lưu giữ khóa bằng phần cứng qua PKCS#11, và hồ sơ chính sách mã hóa FIPS 140-3, cũng là năng lực Enterprise. Trang này không ghi tài liệu cách hiện thực xác thực dài hạn của Enterprise; nó chỉ nêu ranh giới và tên gói công khai.

Cấp PAdESBổ sungPhiên bản trình tạo
B-BChữ ký CMS với các thuộc tính đã kýCore, Pro
B-TMột thuộc tính chưa ký RFC 3161 signature-time-stamp trên giá trị chữ kýCore, Pro
B-LTDocument Security Store với tài liệu xác thựcEnterprise (nextpdf/enterprise)
B-LTADấu thời gian tài liệu cho tính hợp lệ lưu trữEnterprise (nextpdf/enterprise)

Trang này chỉ ghi tài liệu về hành vi quan sát được từ bên ngoài và bề mặt API công khai được hỗ trợ. Các đường dẫn namespace nội bộ, lớp trợ giúp, bảng cơ chế, tên tệp runbook, và tiền tố ticket đều nằm ngoài phạm vi.

Một triển khai không có quyền Pro vẫn giữ hợp đồng ký của Core. Mã phụ thuộc vào hợp đồng SignerInterface của Core vẫn tiếp tục ký bằng trình ký CMS phần mềm ở baseline B-B. Các chiến lược che dữ liệu, phát hiện PII, và ký từ xa và bằng cloud-KMS không hiện diện nếu thiếu gói Pro, và một lời gọi vào các kiểu đó là một lỗi phụ thuộc cứng, không phải một no-op âm thầm.

Lưu trú dữ liệu & biện pháp giảm thiểu PII

Phần tiêu đề “Lưu trú dữ liệu & biện pháp giảm thiểu PII”

Các bề mặt che dữ liệu và PII chạy in-process. Không có nội dung tài liệu nào rời khỏi host cho việc che dữ liệu hay phát hiện PII. Một chiến lược cloud-KMS gửi digest của các thuộc tính đã ký, không phải tài liệu, tới nhà cung cấp cho thao tác ký. Việc phát hiện PII được khớp theo mẫu trên các kiểu đã cấu hình và loại bỏ các đối tượng văn bản nền cho chế độ black-box theo đúng những gì đã được kiểm thử. Nó không phải một bảo đảm loại bỏ dữ liệu cá nhân hoàn toàn và không phải một tuyên bố tuân thủ quy định.

Thư viện làm phát sinh các exception có kiểu với thông báo mang tính cấu trúc. Nó không ghi nội dung tài liệu hay các giá trị PII đã phát hiện vào thông báo exception hay nhật ký. Một triển khai có ghi nhật ký quanh đường dẫn ký nên ghi các trường cấu trúc, không phải các byte tài liệu.

Tuyên bốTiêu chuẩnĐiều khoản
Chữ ký CMS được lưu dưới dạng mã hóa DER trong mục Contents của từ điển chữ ký.ISO 32000-2§12.8.1
Quy trình tính message digest; các thuộc tính đã ký mang content-type và message-digest.RFC 5652§5.4
Bên xác minh không được tin vào các digest do bên khởi tạo tính; nó tự tính lại và so sánh một cách độc lập (quy trình xác minh chữ ký).RFC 5652§5.6
SignerInfo mang định danh thuật toán digest và khối thuộc tính đã ký.RFC 5652§5
Một yêu cầu dấu thời gian trả về một cấu trúc TSTInfo.RFC 3161§2.4.1
Một serialNumber của dấu thời gian là duy nhất cho mỗi token từ một TSA nhất định.RFC 3161§2.4.2
genTime của dấu thời gian là thời điểm UTC mà token được tạo ra.RFC 3161§2.4.2
Một signature-time-stamp của PAdES B-T là một thuộc tính chưa ký mang một token dấu thời gian được tính trên giá trị chữ ký số cho một người ký (Pro tạo ra B-T).ETSI EN 319 122-1§5.3
Imprint của signature-time-stamp là bản băm của giá trị trường chữ ký SignerInfo với phần tag và length của ASN.1 bị loại trừ.ETSI EN 319 122-1§5.3
Token signature-time-stamp dùng OID id-aa-timeStampToken; MessageImprint của nó là một bản băm của giá trị trường chữ ký SignerInfo.RFC 3161Appendix A
Ở phía xác minh, NextPDF ràng buộc MessageImprint của một signature-time-stamp với giá trị chữ ký SignerInfo và fail closed khi có sai khớp, token thiếu/trùng lặp, hoặc imprint SHA-1 (xác minh nghiêm ngặt, không phải một chứng nhận).RFC 3161Appendix A
ESSCertIDv2 thay thế cho ESSCertID kế thừa gắn với SHA-1; đường dẫn B-T nghiêm ngặt đòi hỏi ESSCertIDv2.RFC 5816§1
Việc xác thực đường dẫn chứng thực kiểm tra các basic constraint và các đầu vào đường dẫn tới một trust anchor.RFC 5280§6.1
OCSP báo cáo certStatus là good, revoked, hoặc unknown.RFC 6960§2.2
Độ tươi mới của trạng thái OCSP bị giới hạn bởi thisUpdate và nextUpdate.RFC 6960§4.2
B-LT và B-LTA bổ sung một Document Security Store và dấu thời gian tài liệu cho xác thực dài hạn (ranh giới Enterprise).ETSI EN 319 142-2§5.5
Một trình xử lý chữ ký tạo ra các cấp dài hạn sẽ hỗ trợ các mục DSS và dấu thời gian tài liệu (ranh giới Enterprise).ETSI EN 319 142-2§6.3.3.3

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 đã xuất bản để có câu chữ chính thức. NextPDF Pro hiện thực hỗ trợ ký PAdES B-T theo ETSI EN 319 122-1 §5.3 (signature-time-stamp), RFC 3161, RFC 5652, và RFC 5816, và nó được kiểm chứng bằng fixture. ETSI EN 319 142-1 (phần các cấp baseline của PAdES) nằm ngoài bộ bằng chứng được trích dẫn; do đó NextPDF Pro không khẳng định một chứng nhận, tính phù hợp, hay sự tuân thủ ETSI EN 319 142-1 độc lập, và không khẳng định hiệu lực pháp lý của tài liệu. Trang này nêu cấu trúc được tạo ra, các tiêu chuẩn mà hỗ trợ B-T hiện thực, và ranh giới B-LT/B-LTA của Enterprise, không phải một cấp tính phù hợp đã được chứng nhận.