199 字
1 分鐘
[範例] asn1js 偽造 PKCS7 中的卡號 | 自然人憑證開發筆記
2024-01-31
無標籤

首頁 > 系列文 > 自然人憑證開發筆記

PKCS7 中的卡號、時間資訊,都只是當作簽章的欄位,無法當作唯一識別,本篇說明如何偽造 PKCS7 中的卡號欄位,而且可以通過驗證。


Demo#


程式碼#

流程如下:

  1. 將 TBS 進行 Hash
  2. 將 Hash 值、卡號、Nonce、時間,打包成 Signed Attributes
  3. 將 Signed Attributes 做 PKCS1 簽章(以下簡稱 Signature),並取得憑證
  4. 提取憑證中的 Serial Number、Issuer
  5. 將憑證中的 Serial Number、Issuer、Signed Attributes、Signature、Hash 驗算法的 OID ,打包成 Singer Info
  6. 將 Singer Info、憑證、TBS、Hash 驗算法的 OID,打包成 Signed Data
  7. 將 Signed Data 打包成 Content Info,並匯出成 Base64,即為 PKCS7

將輸出的 PKCS7 丟到官方範例進行驗證,會看到通過驗證。

範例程式碼看 CodePen