驗證簽章
上傳已簽署的 PDF,此工具會擷取每個數位簽章、識別簽署者、檢查憑證有效性,並回報文件在簽署後是否遭到修改。您也可以提供受信任的憑證來驗證簽章鏈。
運作方式
- 上傳已簽署的 PDF 檔案。驗證會自動開始。
- 工具會顯示摘要:找到的簽章數量,以及其中有幾個有效。
- 每個簽章都有一張詳細資訊卡,顯示簽署者名稱、簽發者、日期與狀態。
- 可選擇上傳受信任的憑證(.pem、.crt、.cer、.der),以特定信任錨點驗證簽章。重新驗證會自動執行。
檢查項目
簽章解析
此工具會從 PDF 擷取 PKCS#7 簽章物件、解碼 ASN.1 結構,並取出簽署者的 X.509 憑證以及簽章中內嵌的任何憑證鏈。
憑證有效性
- 到期:憑證目前是否在有效日期範圍內?
- 自簽偵測:憑證是否由其自身簽發?
- 信任鏈:提供受信任憑證時,簽署者的憑證鏈是否能追溯到該憑證?
密碼學驗證
- 此工具會重建簽章
/ByteRange涵蓋的位元組,以簽署者宣告的演算法計算雜湊,並將結果與簽章內的messageDigest屬性比對。 - 接著將已簽署屬性重新序列化為 DER SET,並以簽署者憑證的公鑰驗證簽章。
- 只有在上述所有檢查都通過時,簽章才會被回報為有效。 如果 PDF 位元組在簽署後遭到修改,或內嵌簽章與簽署者的金鑰不符,狀態會顯示「無效:密碼學驗證失敗」並附上具體原因。
支援的簽章演算法
| 演算法 | 驗證方式 |
|---|---|
| RSA (PKCS#1 v1.5) | node-forge publicKey.verify,並以 Web Crypto 作為備援 |
| RSA-PSS (RSASSA-PSS) | Web Crypto verify({name: 'RSA-PSS', saltLength}) |
| ECDSA P-256/P-384/P-521 | 將 DER 簽章轉換為 IEEE P1363 格式後,使用 Web Crypto verify({name: 'ECDSA', hash}) |
如果簽章使用此清單以外的演算法(例如 Ed25519、SM2,或使用罕見摘要 OID 的 RSA),資訊卡會以黃色顯示 「未驗證:不支援的簽章演算法」,並附上具體的 OID 或原因。這是刻意設計的三種狀態區分:
- 有效:簽章已透過簽署者的公鑰完成密碼學驗證。
- 無效:驗證已執行且結果為否定(位元組已變更、金鑰不符)。
- 未驗證:此工具無法針對該演算法執行驗證。憑證中繼資料仍會顯示,但您應將該簽章視為「未知」,並使用 Adobe Acrobat 或
openssl cms -verify進行驗證。
不安全的摘要演算法
- 使用 MD5 或 SHA-1 的簽章會被判定為無效,並標示為「不安全的摘要演算法」狀態。這兩種演算法都已有公開的碰撞攻擊,因此對 SHA-1 或 MD5 雜湊所做的簽章無法保證完整性。
- SHA-224、SHA-256、SHA-384 與 SHA-512 皆可接受。
文件涵蓋範圍
- 完整涵蓋:簽章涵蓋整個 PDF 檔案,表示簽署後沒有新增或變更任何位元組。
- 部分涵蓋:簽章只涵蓋檔案的一部分。這可能表示簽署後有過修改(不一定是惡意的,增量儲存也會產生部分涵蓋)。
簽章詳細資訊
每張簽章資訊卡會顯示:
- 簽署者:簽署者憑證中的一般名稱、組織與電子郵件
- 簽發者:簽發簽署者憑證的憑證授權單位
- 簽署時間:簽章中內嵌的時間戳記
- 有效期起 / 有效期至:憑證的有效期間
- 原因:簽署文件的原因(若有提供)
- 地點:簽署的地點(若有提供)
- 涵蓋狀態:完整或部分
- 信任標章:受信任或不在信任鏈中(僅在提供自訂憑證時顯示)
技術細節
展開技術細節區塊可查看:
- 簽署者憑證的序號
- 摘要演算法(SHA-256、SHA-512 等)
- 簽章演算法(RSA with SHA-256、ECDSA with SHA-256 等)
- 無效簽章的錯誤訊息
使用情境
- 在會簽前驗證已數位簽署的合約
- 稽核已簽署的文件,確認未遭竄改
- 檢查憑證在文件簽署後是否已過期
- 以您組織的根憑證驗證簽章
- 檢視政府或法律文件的簽署詳細資訊
提示
- 自簽憑證並不代表簽章無效,而是表示無法透過受信任的第三方驗證簽署者身分。這在內部文件中很常見。
- 部分涵蓋不一定代表遭到竄改。許多 PDF 工作流程會加入增量更新(例如第二個簽章),因而產生部分涵蓋。
- 將您組織的根憑證或中繼憑證上傳為受信任的憑證,即可進行信任鏈驗證。