DER 二進位檔案 (.der)
ITU-T 標準可辨別編碼規則(DER)是 ASN.1 資料結構的嚴格正規二進位編碼標準,能為安全性憑證與密碼學金鑰提供明確且位元層級精確的表示。
將 DER 轉換為 PEM
免費的瀏覽器端 DER 轉 PEM 轉換器。在您的裝置上即時轉換檔案。
檢查與中繼資料
作業系統與檔案分析工具透過檢查開頭的二進位位元組序列來識別 DER 檔案:
位元組層級標頭簽章(檔案簽章)
作業系統與檔案分析工具透過檢查開頭的二進位位元組序列來識別 DER 檔案:
十六進位簽章(偏移量 0):
無通用簽章(ASN.1 DER 編碼)ASCII 表示法: 無固定 ASCII 簽章
標準化: ITU-T 建議書 X.690
技術規格
| 容器架構 | 使用標籤-長度-值(TLV)三元組、對 ASN.1 結構進行的嚴格正規二進位編碼 |
| 壓縮 | 未壓縮的二進位資料 |
| 位元組序 | 大端序 ASN.1 編碼 |
| 色彩空間 | 不適用(密碼學二進位串流) |
| 色版與結構 | 密碼學金鑰、X.509 憑證、CRL 與 PKCS 結構 |
| 最大尺寸 | 無限制的 ASN.1 長度 |
| 透明度 | 二進位 ASN.1 資料結構 |
| 串流與漸進式 | 具決定性的單次掃描正規解碼 |
技術比較矩陣:DER 對比競爭格式
| 技術屬性 | DER (目前) | PEM | CRT | P12 |
|---|---|---|---|---|
| 資料表示法 | 嚴格二進位 ASN.1 編碼 | Base64 ASCII 裝甲文字 | Base64 PEM 或二進位 DER | 加密的二進位 PKCS #12 封存檔 |
| 具決定性雜湊 | 100% 正規位元串流 | 取決於空白字元/標頭 | 取決於格式化 | 以鹽值/IV 加密 |
| 檔案大小 | 最小(比 PEM 小約 33%) | 因 Base64 而較大(+33%) | 因 Base64 而較大(+33%) | 因加密包裝而較大 |
| Java 與硬體支援 | 原生標準 | 需要在 Java 中進行轉換 | 需要在 Java 中進行轉換 | 作為金鑰儲存庫支援 |
常見損壞模式與十六進位修復指南
OpenSSL 錯誤:「asn1 encoding routines:ASN1_get_object:header too long」(標頭過長)。
根本原因: ASN.1 序列標頭中的 Tag-Length-Value (TLV) 位元組損毀。
修復: 使用 File2File.app 憑證工具進行轉檔,以重建有效的 DER 正規位元組。
安全性分析與解析器攻擊向量
DER 解碼器會解析長度描述元,其中的整數下溢或上溢可能會在原生密碼學函式庫中觸發緩衝區溢位。
已知攻擊向量
- 解析格式錯誤或巢狀結構過深的 ASN.1 長度編碼時發生整數上溢。
- 解析格式錯誤的位元字串時發生越界讀取。
- 透過巢狀 ASN.1 遞迴炸彈發動阻斷服務攻擊。
防禦最佳實務: 使用記憶體安全的 ASN.1 解析器,並強制執行最大遞迴深度限制。
歷史起源與里程碑
2021ITU-T X.690 修訂版讓 ASN.1 DER 規格在現代硬體權杖之間趨於穩定。
1997被 Java 密碼學架構(JCA)採用於二進位金鑰編碼(X509EncodedKeySpec)。
1988在 CCITT / ITU-T 建議書 X.690 下標準化,作為基本編碼規則(BER)的嚴格子集。
主要優勢與優點
- 正規且具決定性:保證相同的資料總是產生完全相同的二進位雜湊,這對數位簽章至關重要。
- 比 PEM 更精簡:透過省略 Base64 編碼與 ASCII 標頭,節省約 33% 的額外負荷。
- 硬體安全模組(HSM)、智慧卡與 Java 金鑰庫的原生格式。
技術限制與缺點
- 二進位格式無法在文字編輯器中檢視、編輯或複製貼上。
- 在網頁主機環境中較不常見,因為這類環境絕大多數偏好以文字為基礎的 PEM/CRT 檔案。
- 嚴格的編碼規則意味著任何微小的填補差異都會導致解析被拒絕。
有趣的技術冷知識
- DER 是 BER(基本編碼規則)的嚴格子集;雖然 BER 允許多種有效方式來編碼數值,但 DER 僅允許剛好一種正規方式。
- 如果您將 DER 檔案進行 Base64 編碼並包裝在「-----BEGIN CERTIFICATE-----」中,您就會得到一個標準的 PEM 檔案。
- Java 的 KeyFactory 要求必須以原始 DER 格式提供 RSA 公開與私密金鑰。
常見技術問題
DER 與 PEM 有什麼不同?
DER 是憑證或金鑰的原始二進位格式。PEM 只是將相同的 DER 檔案轉換為具有 '-----BEGIN...-----' 標頭的可讀 Base64 文字。
如何將 DER 轉換為 PEM?
將您的 .der 檔案載入 File2File.app,即可直接在瀏覽器中花一秒鐘將其轉換為標準的 .pem 文字憑證。
為什麼 Java 會使用 DER 金鑰?
Java 密碼學架構(JCA)使用經 DER 編碼的 PKCS#8 和 X.509 位元組陣列作為其原生金鑰規格。