199 字
1 分鐘
[範例] asn1js 偽造 PKCS7 中的卡號 | 自然人憑證開發筆記

PKCS7 中的卡號、時間資訊,都只是當作簽章的欄位,無法當作唯一識別,本篇說明如何偽造 PKCS7 中的卡號欄位,而且可以通過驗證。
Demo
程式碼
流程如下:
- 將 TBS 進行 Hash
- 將 Hash 值、卡號、Nonce、時間,打包成 Signed Attributes
- 將 Signed Attributes 做 PKCS1 簽章(以下簡稱 Signature),並取得憑證
- 提取憑證中的 Serial Number、Issuer
- 將憑證中的 Serial Number、Issuer、Signed Attributes、Signature、Hash 驗算法的 OID ,打包成 Singer Info
- 將 Singer Info、憑證、TBS、Hash 驗算法的 OID,打包成 Signed Data
- 將 Signed Data 打包成 Content Info,並匯出成 Base64,即為 PKCS7
將輸出的 PKCS7 丟到官方範例進行驗證,會看到通過驗證。

範例程式碼看 CodePen