跳到內容
getnextpdf.com

Pro 版本

Security — 深入參考

這是 NextPDF Pro 安全範圍的深入參考:產生時遮蔽、文字層 PII 偵測、遠端與雲端 KMS 簽署工作階段、多方循序簽署、CAdES 與 XAdES 匯入路徑、PAdES B-B 基準層級,以及 PAdES B-T 簽署支援(一個 B-B 簽章加上一個位於簽章值上的 RFC 3161 signature-time-stamp)。它陳述公開 API 合約、外部可觀察的行為,以及 Enterprise B-LT/B-LTA 邊界。它屬於行為層級;不引用任何內部實作路徑。

此能力隨附於 NextPDF Pronextpdf/pro),並以一個 Pro 層級授權封套啟用。沒有該權益的部署不會載入此能力的類別。比較各版本並取得授權

Core 隨附軟體 CMS 簽署器、RFC 3161 時間戳記用戶端、RFC 5280 路徑驗證,以及 OCSP 與 CRL 撤銷檢查。Pro 在此之上加入此處所述的遮蔽、PII 偵測、遠端與雲端 KMS 簽署範圍,以及 PAdES B-T 簽署支援(它組合 Core 的 RFC 3161 堆疊以加入一個 signature-time-stamp)。此範圍的能力旗標是 pro:沒有有效 Pro 權益的部署不會載入這些類別,Core 簽署合約會持續原封不動地運作,而依賴 Core 合約的程式碼在權益缺席時也不會中斷。

Terminal window
composer require nextpdf/pro:^3

遮蔽引擎會在頁面寫出之前,對文字套用一個有序的規則清單。每條規則會比對一個 PCRE 樣式,並以三種模式之一取代相符處:

  • BlackBox — 從內容串流中移除相符文字,並保留一個填充區域。如經測試所驗證,此模式會移除底層的文字物件。
  • Asterisks — 將每個相符字元替換為一個星號,並保留字元數。
  • FixedLabel — 將整個相符處替換為一個可設定的標籤,預設為 [REDACTED]

規則可透過 MaskingRule::exactMatch 從一個精確字面建立(該字面會被 regex 轉義),或透過 MaskingRule::regex 從一個自訂 PCRE 樣式建立。MaskingConfig 持有有序規則清單、一個預設模式,以及填充色彩。MaskingConfig::fromArray 會解析一份設定對應表,並會默默丟棄沒有可用字串樣式的規則項目,而不會讓整個匯入失敗。

PII 範圍會擷取 PDF 文字層,再套用針對電子郵件地址、電話號碼、美國社會安全號碼與信用卡號碼的內建樣式。它會回傳一個結構化結果:一個表示是否找到任何相符的布林值、一個相符計數、遮蔽後的文字檢視,以及掃描型別的清單。呼叫端可將掃描限制在這四種型別的一個子集。此範圍不會覆寫已彩現的頁面字符;一個沒有文字層的掃描頁面不會產生任何相符。請將結果視為對所設定型別進行的文字層樣式偵測,而非完整的個人資料移除,也非法規符合性的聲明。

簽署工作階段是兩階段的。RemoteSigningSession::create 會開啟一個工作階段。prepare 會在兩個 ByteRange 區域上計算文件摘要,再建構 CMS 簽署屬性。complete 會呼叫策略並嵌入結果;suspend 會序列化工作階段,讓 worker 之後能以 resumecompleteWithRawSignature 將其續行。工作階段會組裝一個 CMS SignedData,並將它以 DER 編碼存放在簽章字典的 Contents 項目中——ISO 32000-2 §12.8.1。當提供一個可解析的 X.509 憑證時,工作階段會發射完整的 PAdES B-B 必要簽署屬性集:content-type、message-digest、signing-time、signing-certificate-v2,以及一個演算法保護屬性——RFC 5652 §5.3 與 RFC 5652 §5。驗證器會重新計算內容摘要,並與 message-digest 屬性比對;該比對必須相符,簽章才有效——RFC 5652 §5.4。

當所設定的 PAdES 層級為 B-TRemoteSigningConfig::default->withLevel(SignatureLevel::PAdES_B_T),或透過 SequentialSigner::withTimestamping)且接上了一個時間戳記提供者時,工作階段會額外在第一個 SignerInfo 上嵌入恰好一個作為 CMS 未簽署 屬性的 RFC 3161 signature-time-stampsignature-time-stamp 是一個未簽署屬性,承載一個在簽署者的數位簽章值上計算出的時間戳記符記——ETSI EN 319 122-1 §5.3;其 MessageImprint 是 SignerInfo 簽章欄位值的雜湊,且排除 ASN.1 標籤與長度——ETSI EN 319 122-1 §5.3 與 RFC 3161 Appendix A(OID id-aa-timeStampToken = 1.2.840.113549.1.9.16.2.14)。由於時間戳記是一個未簽署屬性,B-B 簽署屬性、message-digest、SignerInfo 簽章值,以及 PDF /ByteRange 都與 B-B 輸出位元組逐一相同;只有 CMS 因該未簽署屬性而增長,且 B-T 保留的 /Contents 空間會被提高以容納它。符記是向所設定的時間戳記提供者(預設的 Core RFC 3161 用戶端,或呼叫端提供的提供者)請求而得。在預設提供者路徑上,imprint 摘要為 SHA-256;綁定 SHA-1 的舊版 ESSCertID v1 形式會被拒絕,而必須使用 ESSCertIDv2——RFC 5816 §1。一個 TSA 故障、一個被拒絕的請求、一個錯誤的 nonce 或 message-imprint 回應、一個格式錯誤或演算法不受支援的符記,或一個未通過密碼學驗證的符記,都會浮現為一個具型別的 PadesBt 例外,並將起源的 Core 例外保留為前一個 throwable。NextPDF Pro 依 ETSI EN 319 122-1 §5.3、RFC 3161、RFC 5652 與 RFC 5816 實作 PAdES B-T 簽署支援,並通過 fixture 驗證;它並不主張獨立的 ETSI EN 319 142-1 認證,也不主張文件的法律效力。

SequentialSigner 協調多方簽署。每位簽署者都是一個獨立的增量更新修訂版。第一位簽署者可以是一個透過 certifyFirst 設定 DocMDP 限制的認證簽章。PadesWrapper 會匯入既有的簽章:fromCades 會直接嵌入一個 CMS 結構,fromXades 會解析一份 XAdES 文件並重複使用其核心簽章材料,而 detect 會依格式自動選擇。XAdES 路徑會重複使用憑證、鏈、簽章值與演算法;它不會轉移 XAdES 限定屬性(qualifying properties)。

Terminal window
composer require nextpdf/pro:^3
型別種類角色穩定度
RemoteSigningSessionclass兩階段遠端或非同步簽署工作階段stable1.9.0
RemoteSigningConfigclass不可變的工作階段設定,含 PAdES 層級與演算法stable1.9.0
SequentialSignerclass支援 DocMDP 的多方循序簽署stable1.9.0
SequentialSigningResultclass一次循序執行的結果:PDF bytes、鏈、計數、完整性stable1.9.0
SigningStrategyinterface工作階段所呼叫的簽署機制合約stable1.9.0
PadesWrapperclass包裝既有的 CAdES 或 XAdES 簽章以供 PAdES 嵌入stable1.9.0
KmsSignerInterfaceinterface (SPI)第三方 HSM 與 KMS 驅動程式合約;延伸 Core HSM 簽署器合約stable2.1.0
SignatureAlgorithmenumPro 簽章演算法 OID 與摘要名稱stable2.1.0
GenerationTimeMaskerclass在頁面寫出之前套用、由規則驅動的遮蔽stable1.9.0
MaskingConfigclass不可變的遮蔽設定stable1.9.0
MaskingRuleclass單一遮蔽規則(字面或 PCRE)stable1.9.0
MaskingModeenumBlackBox、Asterisks、FixedLabelstable1.9.0

一個策略會在 DER 編碼的簽署屬性上操作,並回傳原始簽章位元組。組裝 CMS SignedData 的是工作階段,而非策略。一個策略會公開簽署者憑證 DER、依葉到根排序的鏈 DER、簽章演算法 OID、摘要演算法名稱,以及一個 isAsync 旗標,用來標記其工作階段可被序列化並續行的策略。

KmsSignerInterface 延伸 Core HSM 簽署器合約。它新增一個用於登錄查找的穩定 providerId、一個帶有明確每次呼叫金鑰版本參數的 signWithVersion 方法,以及 supportsAlgorithmsupportedAlgorithms,讓呼叫端能在簽署呼叫前探查演算法相容性。保留的內建提供者識別碼為 aws-kmsazure-keyvaultgcp-kmspkcs11openssl-cliopenssl-engine。第三方驅動程式必須為其識別碼加上命名空間,以避免衝突。預設的金鑰版本語意因提供者而異:一個解析別名的提供者會在版本為 null 時,從別名解析出有效金鑰;一個選擇最新已啟用版本的提供者會透過其傳輸層完成此事;一個沒有伺服器端有效版本概念的提供者,必須使用其設定中釘選的版本,並在呼叫與設定皆未釘選版本時引發金鑰管理錯誤。一個非空的版本會釘選該版本,而當該版本未知、已停用或已撤銷時,提供者必須引發金鑰管理錯誤。

  • 已產生的簽章不等於已驗證的簽章。路徑驗證會在驗證器端,以該驗證器的信任錨點與基本約束檢查執行——RFC 5280 §6.1。產生者無法主張結果。
  • 工作階段對非 X.509 的合成憑證位元組保有一個舊版的三屬性回退。正式環境策略總是提供真實的 X.509 DER,因此完整的 B-B 屬性集是正式環境路徑。該回退僅為歷史性的 DER 機制測試範圍而存在。
  • CMS 結構必須容納於保留的 Contents 空間內。帶有完整憑證鏈的 B-B SignedData 有其大小;當組裝出的 CMS 超過保留的十六進位空間時,工作階段會引發溢位錯誤。請據此調整保留空間的大小。對於 B-T,嵌入的 RFC 3161 符記(主要由 TSA 憑證鏈主導)會放大 CMS;B-T 保留空間會自動提高,而設定過小的空間會以一個具型別的設定錯誤 fail closed,而非進行截斷。
  • MaskingConfig::fromArray 會丟棄沒有可用字串樣式的項目,而不讓匯入失敗。若無法接受默默丟棄,請驗證你的設定來源。
  • 遮蔽的 black-box 模式會為相符段落發射一個空的替換內容,並移除底層文字。不符合某個值的規則不會遮蔽它;引擎並不主張所有敏感內容都已被找到。
  • B-T 需要一個已接上的時間戳記提供者。在預設的 Core RFC 3161 提供者路徑上,imprint 摘要為 SHA-256;在該路徑上的非 SHA-256 imprint 摘要會以一個具型別的設定錯誤被拒絕,而非默默降級,而呼叫端提供的自訂提供者可合法地使用另一個經核可的摘要。一個時間戳記 serialNumber 對來自特定時間戳記機關(Time-Stamping Authority)的符記是唯一的,而 genTime 即為符記建立時的 UTC 瞬時——RFC 3161 §2.4.1、§2.4.2。B-LT/B-LTA 長期驗證材料仍屬於 Enterprise 邊界的範疇;Pro 不產生任何 DSS、任何 VRI,也不產生任何文件時間戳記。
  • OCSP unknown 不等於 good,而其狀態新鮮度受 thisUpdatenextUpdate 界定——RFC 6960 §2.2、§4.2。

Pro 會從所設定的簽章演算法與策略選擇演算法。當設定為對接一個通過 FIPS 驗證的 KMS 或 HSM 時,密碼學運算會在該已驗證邊界內執行,且演算法集即為該邊界所允許者。NextPDF Pro 執行結構性 CMS 組裝與摘要計算;它本身不是通過 FIPS 驗證的密碼學模組,也不做任何 FIPS 認證聲明。需要 FIPS 態勢的部署必須設定一個通過 FIPS 驗證的 KMS 或 HSM,而 FIPS 140-3 加密政策設定檔是一項 Enterprise 功能。

本模組涉及密碼學功能;請在你自己的審查中將它視為安全敏感。

NextPDF Pro 產生 B-B 基準與 B-T 層級。對 B-B,工作階段會組裝一個帶有 B-B 簽署屬性集的 CMS SignedData,並不套用任何時間戳記。對 B-T,它會加入恰好一個在簽署者數位簽章值上計算出、作為 CMS 未簽署屬性的 RFC 3161 signature-time-stamp——ETSI EN 319 122-1 §5.3。NextPDF Pro 依 ETSI EN 319 122-1 §5.3、RFC 3161、RFC 5652 與 RFC 5816 實作此項,並通過 fixture 驗證;它並不主張獨立的 ETSI EN 319 142-1 認證、一致性或符合性,也不主張文件的法律效力。

B-LTB-LTA 層級是 Enterprise 功能,且由 Pro 產生。B-LT 與 B-LTA 會為長期封存驗證加入一個文件安全儲存區與文件時間戳記——ETSI EN 319 142-2 §5.5。產生那些層級的簽章處理器會支援 DSS 項目與文件時間戳記——ETSI EN 319 142-2 §6.3.3.3。Pro 的 RemoteSigningConfig 可以承載一個高於 B-T 的層級(B-LT 或 B-LTA),用以請求一個文件安全儲存區,但 Pro 並未隨附該產生器,也不會對它採取行動;這樣的層級是一個前向宣告的值。Core 簽署流程會在執行階段透過 Core 合約解析長期保存產生器,而該產生器隨附於 nextpdf/enterprise 套件中。在僅有 Pro 的部署中,請求 B-LT 或 B-LTA 會 fail closed,並附上一則指名缺少之 Enterprise 元件的訊息。Pro 不產生任何 DSS、任何 VRI 字典、任何文件時間戳記,也沒有任何存檔迴圈,並不做任何長期驗證(LTV)聲明。透過 PKCS#11 進行的硬體金鑰保管,以及 FIPS 140-3 加密政策設定檔,同樣是 Enterprise 功能。本頁不記錄 Enterprise 長期驗證的實作;它只陳述邊界與公開套件名稱。

PAdES 層級加入產生器版本
B-B帶有已簽署屬性的 CMS 簽章Core、Pro
B-T一個位於簽章值上的 RFC 3161 signature-time-stamp 未簽署屬性Core、Pro
B-LT帶有驗證材料的文件安全儲存區Enterprise(nextpdf/enterprise
B-LTA用於存檔有效性的文件時間戳記Enterprise(nextpdf/enterprise

本頁僅記錄外部可觀察的行為與所支援的公開 API 介面。內部命名空間路徑、輔助類別、機制表、runbook 檔名,以及工單前綴均不在範圍內。

沒有 Pro 權益的部署會保有 Core 簽署合約。依賴 Core SignerInterface 合約的程式碼會持續以軟體 CMS 簽署器在 B-B 基準進行簽署。遮蔽、PII 偵測,以及遠端與雲端 KMS 策略在沒有 Pro 套件時並不存在,而對那些型別的呼叫是一個硬性相依錯誤,而非默默的 no-op。

遮蔽與 PII 範圍在行程內執行。不會有任何文件內容為了遮蔽或 PII 偵測而離開主機。一個雲端 KMS 策略只會為簽署運算把簽署屬性摘要(而非文件)送往提供者。如經測試所驗證,PII 偵測會對所設定型別進行樣式比對,並針對 black-box 模式移除底層文字物件。它不是完整個人資料移除的保證,也不是法規符合性的聲明。

函式庫會引發帶有結構性訊息的具型別例外。它不會把文件內容或偵測到的 PII 值寫入例外訊息或日誌。在簽署路徑周邊進行日誌記錄的部署,應記錄結構性欄位,而非文件位元組。

聲明標準條款
CMS 簽章以 DER 編碼存放於簽章字典的 Contents 項目中。ISO 32000-2§12.8.1
訊息摘要計算程序;簽署屬性承載 content-type 與 message-digest。RFC 5652§5.4
驗證器不得依賴由發起方計算的摘要;它會獨立重新計算並比對(簽章驗證程序)。RFC 5652§5.6
SignerInfo 承載摘要演算法識別碼與簽署屬性區塊。RFC 5652§5
一個時間戳記請求會回傳一個 TSTInfo 結構。RFC 3161§2.4.1
一個時間戳記 serialNumber 對來自特定 TSA 的符記是唯一的。RFC 3161§2.4.2
時間戳記 genTime 即為符記建立時的 UTC 瞬時。RFC 3161§2.4.2
一個 PAdES B-T signature-time-stamp 是一個未簽署屬性,承載一個在簽署者數位簽章值上計算出的時間戳記符記(Pro 產生 B-T)。ETSI EN 319 122-1§5.3
signature-time-stamp 的 imprint 是 SignerInfo 簽章欄位值的雜湊,且排除 ASN.1 標籤與長度。ETSI EN 319 122-1§5.3
signature-time-stamp 符記使用 id-aa-timeStampToken OID;其 MessageImprint 是 SignerInfo 簽章欄位值的雜湊。RFC 3161Appendix A
在驗證端,NextPDF 會將 signature-time-stamp 的 MessageImprint 綁定至 SignerInfo 簽章值,並在發生不相符、符記缺失/重複或 SHA-1 imprint 時 fail closed(嚴格驗證,而非認證)。RFC 3161Appendix A
ESSCertIDv2 取代綁定 SHA-1 的舊版 ESSCertID;嚴格的 B-T 路徑需要 ESSCertIDv2。RFC 5816§1
認證路徑驗證會檢查基本約束與通往信任錨點的路徑輸入。RFC 5280§6.1
OCSP 將 certStatus 回報為 good、revoked 或 unknown。RFC 6960§2.2
OCSP 狀態新鮮度受 thisUpdate 與 nextUpdate 界定。RFC 6960§4.2
B-LT 與 B-LTA 為長期驗證加入一個文件安全儲存區與文件時間戳記(Enterprise 邊界)。ETSI EN 319 142-2§5.5
產生長期層級的簽章處理器會支援 DSS 項目與文件時間戳記(Enterprise 邊界)。ETSI EN 319 142-2§6.3.3.3

所有條款皆為改寫。NextPDF 不重製規範性文字。請查閱已發布的標準以取得權威用語。NextPDF Pro 依 ETSI EN 319 122-1 §5.3(signature-time-stamp)、RFC 3161、RFC 5652 與 RFC 5816 實作 PAdES B-T 簽署支援,並通過 fixture 驗證。ETSI EN 319 142-1(PAdES 基準層級部分)不在所引用的證據集合之內;因此 NextPDF Pro 並不主張獨立的 ETSI EN 319 142-1 認證、一致性或符合性,也不主張文件的法律效力。本頁陳述所產生的結構、B-T 支援所實作的標準,以及 Enterprise B-LT/B-LTA 邊界,而非一個經認證的一致性層級。