ASN.1
ASN.1 とは何ですか?
ASN.1Abstract Syntax Notation One。ITU-T X.680 シリーズで定義された、言語に依存しない形で暗号や通信で使われるデータ構造を記述する標準。
ASN.1(Abstract Syntax Notation One)は ITU-T X.680-X.681 で定義された形式記述であり、整数、シーケンス、集合、選択、タグ付き型などの構造化データを、任意のプログラミング言語や CPU に依存しない形で記述します。関連標準の X.690 は転送時の符号化を定義します。BER(基本)、CER、DER(識別)であり、一方 X.691 は PER(パック)を定義します。すべての要素は タグ-長さ-値(TLV) の三つ組であり、そのため X.509 証明書は文字どおり TBSCertificate、signatureAlgorithm、signatureValue から成る SEQUENCE です。
ASN.1 は X.509/PKI、CMS/PKCS#7、PKCS#12、LDAP、Kerberos、SNMP、および通信シグナリング(3GPP S1AP/NGAP、GSM MAP)の基盤です。DER はセキュリティ上重要です。一意の正規符号化(確定長、最小限の整数表現、ソート済みの SET OF)を強制するため、ASN.1 構造上で計算される署名やハッシュは再現可能であり、密かに再符号化されることはありません。BER の寛容さ(不定長、冗長なタグ)は、パーサ差異(parser differentials) や署名バイパスの手口の典型的な原因です。
証明書の解析は認証の 前 に行われるため、ASN.1 デコーダは価値の高い攻撃対象領域です。実際の欠陥には、CVE-2016-2108(OpenSSL の ANY フィールドにおける「負のゼロ」によるメモリ破壊)、CVE-2021-3712(NUL 終端されていない ASN1_STRING に対する読み取りバッファのオーバーラン、鍵メモリの漏洩)、CVE-2022-0778(細工された証明書の解析で到達可能な無限ループ)があります。防御策として、メモリ安全またはファジングで強化されたデコーダを使用し、厳格な DER を強制し、ネストの深さと長さに上限を設けます。
flowchart LR
S[ASN.1 schema in X.680] --> M[In-memory structure]
M --> ENC{Encoding rules}
ENC -->|DER canonical| D[Bytes for signing / PKI]
ENC -->|BER permissive| B[Bytes - interop only]
ENC -->|PER compact| P[Bytes for telecom links]
D --> W[Wire / stored certificate]
B --> W
P --> W
W --> DEC[TLV decoder]
DEC --> V{Strict DER & bounds checks?}
V -->|Yes| OK[Validated object]
V -->|No| VULN[Parser differential / overflow / DoS]● 例
- 01
X.509 証明書は TBSCertificate、signatureAlgorithm、signatureValue から成る SEQUENCE で、DER で符号化される。
- 02
eNodeB と MME 間の 3GPP S1AP メッセージは ASN.1 で記述され、PER で符号化される。
● よくある質問
ASN.1 とは何ですか?
Abstract Syntax Notation One。ITU-T X.680 シリーズで定義された、言語に依存しない形で暗号や通信で使われるデータ構造を記述する標準。 サイバーセキュリティの 暗号 カテゴリに属します。
ASN.1 とはどういう意味ですか?
Abstract Syntax Notation One。ITU-T X.680 シリーズで定義された、言語に依存しない形で暗号や通信で使われるデータ構造を記述する標準。
ASN.1 からどのように防御しますか?
ASN.1 に対する防御は通常、上記の定義で述べたとおり、技術的統制と運用上の実践を組み合わせます。
ASN.1 の別名は何ですか?
一般的な別名: Abstract Syntax Notation One, X.680。