ASN.1、DER、および PKCS 形式の復号テクニカルガイド
セキュリティと暗号化の世界では、データが JSON や XML のような人間が読める形式で保存されることはほとんどありません。代わりに、数十年前に確立された標準に従って、高密度なバイナリ構造にパックされます。.der、.p12、または .csr ファイルに遭遇し、中身がどうなっているのか疑問に思ったことがあるなら、それは ASN.1 ファミリーに出会ったということです。
このガイドでは、これらのバイナリ形式の仕組みとその復号方法について説明します。
1. ASN.1 とは?
ASN.1 (Abstract Syntax Notation One) は、クロスプラットフォームでシリアル化およびデシリアル化できるデータ構造を定義するための標準的なインターフェース記述言語です。これはセキュリティデータの「ソースコード」と言えます。
DER エンコーディング
ASN.1 が「構造」を定義するのに対し、DER (Distinguished Encoding Rules) はその構造をどのようにバイナリに変換するかを定義します。DER はタグ・長さ・値 (TLV) エンコーディングであり、すべてのデータは、そのタイプ(タグ)を識別するバイトで始まり、その長さ、実際のデータと続きます。
2. 一般的なバイナリ形式の復号
CSR (証明書署名要求) デコーダー
CSR には公開鍵と ID 情報が含まれています。通常は Base64 (PEM 形式) でエンコードされていますが、その下にあるのは DER エンコードされた ASN.1 構造です。
- 復号方法:OpenSSL (
openssl req -in request.csr -noout -text) またはオンライン CSR デコーダーを使用して、サブジェクト、組織、および公開鍵を確認できます。
PKCS#7 (P7B) デコーダー
PKCS#7 は、証明書チェーンの配布によく使用されます。通常、証明書と、その検証に必要な中間証明書が含まれています。
- 復号方法:単純な証明書とは異なり、PKCS#7 ファイルには複数のオブジェクトを含めることができます。これを復号すると、中にある証明書の「バッグ」が明らかになります。
PKCS#12 (P12/PFX) デコーダー
PKCS#12 は、秘密鍵とそれに対応する証明書を保存できるパスワード保護されたアーカイブです。
- 復号方法:暗号化されているため、パスワードが必要です。復号すると、秘密鍵と証明書を個別の PEM ファイルとして抽出できます。
3. ASN.1 と DER:「ツリー」ビュー
生の DER ファイル(X.509 証明書など)を復号すると、ツリー状の構造が得られます。
- SEQUENCE:項目のリスト。
- OBJECT IDENTIFIER (OID):特定のフィールド(例:「Common Name」)を表す一連の数字(
2.5.4.3など)。 - BIT STRING / OCTET STRING:生のバイナリデータ。多くの場合、公開鍵や署名が含まれています。
4. PGP および GPG 鍵の表示
PGP (Pretty Good Privacy) は独自のパケットベースの形式 (RFC 4880) を使用しますが、ID を公開鍵に結び付けるという目的は X.509 と同じです。
- PGP 鍵ビューアー:PGP 鍵を検査すると、ユーザー ID、作成日、および署名や暗号化に使用されるサブキーが明らかになります。
デコーダーツールのまとめ
| 形式 | 拡張子 | コンテンツタイプ | 内部を「見る」方法 |
|---|---|---|---|
| X.509 | .der, .crt |
公開証明書 | openssl x509 -inform der -text |
| CSR | .csr |
署名要求 | openssl req -text -noout |
| PKCS#12 | .p12, .pfx |
証明書 + 秘密鍵 | openssl pkcs12 -info |
| PGP | .asc, .gpg |
PGP 鍵/メッセージ | gpg --list-packets |
結論
バイナリセキュリティ形式の復号は、パズルを解くようなものです。現代の PKI のほとんどすべてが ASN.1 と DER の基礎の上に構築されていることを理解すれば、「ランダムな」バイトが意味を持ち始めます。OpenSSL のようなコマンドラインツールを使用する場合でも、Web ベースのデコーダーを使用する場合でも、証明書や要求の生の構造を検査できることは、セキュリティを意識する開発者にとって不可欠なスキルです。
ファイルの整合性を確認する方法をお探しですか?私たちの ハッシュジェネレーター を使用して、セキュリティファイルのチェックサムを計算してください。