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, для описания структурированных данных (целых чисел, последовательностей, множеств, выборов и тегированных типов) независимо от какого-либо языка программирования или процессора. Сопутствующий стандарт X.690 задаёт двоичные кодировки: BER (базовая), CER, DER (различающая), тогда как X.691 определяет PER (компактная). Каждый элемент представляет собой триплет тег-длина-значение (TLV), поэтому сертификат X.509 буквально является SEQUENCE из TBSCertificate, signatureAlgorithm и signatureValue.
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 (повреждение памяти из-за «отрицательного нуля» в поле ANY в OpenSSL), 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 — это SEQUENCE из TBSCertificate, signatureAlgorithm и signatureValue, закодированный в DER.
- 02
Сообщения S1AP 3GPP между eNodeB и MME описываются в 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.