X.690

X.690

X.690은 몇 가지 ASN.1 인코딩 형식을 지정하는 ITU-T 표준이다.

기본 인코딩 규칙은 추상적인 정보를 구체적인 데이터 스트림에 인코딩하기 위해 ASN.1 표준에 의해 규정된 원래 규칙이었다. ASN.1 용어로 일괄적으로 전송 구문이라고 하는 규칙은 주어진 데이터 항목을 인코딩하는 데 사용되는 정확한 8진수 순서를 명시한다. 구문에서는 기본적인 데이터 유형의 표현, 길이 정보의 구조 및 보다 원시적인 유형을 기반으로 복합적 또는 복합적 유형을 정의하는 수단 등과 같은 요소를 정의한다. BER 구문은 BER의 두 하위 집합(규범 인코딩 규칙 및 구분 인코딩 규칙)과 함께 ASN.1 문서 시리즈의 일부인 ITU-T의 X.690 표준 문서에 의해 정의된다.

BER 인코딩

기본 인코딩 규칙 형식은 ASN.1 데이터 구조를 인코딩하기 위한 자체 설명 및 자체 지연 형식을 지정한다. 각 데이터 요소는 유형 식별자, 길이 설명, 실제 데이터 요소 및 필요한 경우 내용 종료 마커로 인코딩된다. 이러한 유형의 인코딩을 일반적으로 TLV(type-length-value-value) 인코딩이라고 부른다. 이 형식은 수신자가 데이터의 크기, 내용 또는 의미적 의미에 대한 사전 지식 없이도 불완전한 스트림에서 ASN.1 정보를 해독할 수 있도록 한다.[1]

인코딩 구조

데이터 인코딩은 일반적으로 다음과 같은 순서로 나타나는 네 가지 구성요소로 구성된다.

식별자 8진수
유형
길이 8진수
길이
콘텐츠 8진수
가치
내용 종료 8진수

End-of-contents 8진법은 선택사항이며, 무한 길이 형식을 사용하는 경우에만 사용된다. NULL 형식처럼 인코딩할 콘텐츠가 없는 경우에도 콘텐츠 옥텟을 생략할 수 있다.

식별자 8진수

종류들

데이터(특히 시퀀스 및 세트와 선택의 멤버)는 다른 멤버와 데이터를 구별하기 위해 고유한 태그 번호(대괄호 [] 내 ASN.1에 표시)로 태그할 수 있다. 이러한 태그는 암시적(기본 유형을 TLV 태그로 사용하는 대신 값의 TLV 태그로 인코딩되는 경우) 또는 명시적(기본 유형 TLV를 감싸는 구성된 TLV에서 태그를 사용하는 경우)일 수 있다. ASN.1 모듈 레벨에서 암시적으로 설정되지 않는 한 기본 태그 지정 스타일은 명시적이다. 이러한 태그는 컨텍스트별 기본 클래스를 가지지만 태그 앞에 있는 클래스 이름을 사용하여 재정의할 수 있다.

선택 값의 인코딩은 선택한 유형의 값 인코딩과 동일하다. 인코딩은 선택한 유형에 따라 원시 또는 생성될 수 있다. 식별자 8진수에서 사용되는 태그는 선택한 유형의 태그로, 선택한 유형의 ASN.1 정의에 지정되어 있다.

다음 태그는 ASN.1에 기본 제공된다.

유형, 범용 클래스
이름 허용된 시공 태그 번호
십진법 16진법
컨텐츠 종료(EOC) 원시적 0 0
부울 원시적 1 1
정수 원시적 2 2
비트 문자열 둘 다 3 3
옥텟 문자열 둘 다 4 4
NULL 원시적 5 5
객체 식별자 원시적 6 6
개체 설명자 둘 다 7 7
외부의 건설된 8 8
REAL(플로트) 원시적 9 9
열거됨 원시적 10 A
임베디드 PDV 건설된 11 B
UTF8스트링 둘 다 12 C
상대-OID 원시적 13 D
시간 원시적 14 E
예약됨 15 F
시퀀스 및 시퀀스 건설된 16 10
SET 및 SET OF 건설된 17 11
숫자 문자열 둘 다 18 12
인쇄 가능한 문자열 둘 다 19 13
T61스트링 둘 다 20 14
비덱스스트링 둘 다 21 15
IA5String 둘 다 22 16
UTCTime 둘 다 23 17
일반화시간 둘 다 24 18
그래픽스트링 둘 다 25 19
VisibleString 둘 다 26 1A
제너럴 스트링 둘 다 27 1B
유니버설 스트링 둘 다 28 1C
문자 문자열 건설된 29 1D
BMPString 둘 다 30 1E
날짜 원시적 31 1F
TIME OFY 원시적 32 20
날짜-시간 원시적 33 21
지속시간 원시적 34 22
OID-IRI 원시적 35 23
상대-OID-IRI 원시적 36 24

유니버설 클래스 태그 할당 목록은 Rec에서 찾을 수 있다. ITU-T X.680, 조항 8, 표 1.[2]

인코딩

식별자 옥텟은 요소 유형을 ASN.1 태그로 인코딩하며, 클래스와 숫자로 구성되며, 내용 옥텟이 구성된 값인지 원시 값인지를 나타낸다. 일부 유형은 원시 또는 구성된 인코딩으로 값을 가질 수 있다는 점에 유의하십시오. 1개 이상의 옥텟으로 암호화되어 있다.

옥텟 1 옥텟 2 이후
8 7 6 5 4 3 2 1 8 7 6 5 4 3 2 1
태그 클래스 P/C 태그 번호(0-30) 해당 없음
31 태그 번호

초기 옥텟에서 비트 6은 유형이 원시인지 또는 구성되었는지 여부를 암호화하고, 비트 7-8은 유형의 클래스를 암호화하고, 비트 1-5는 태그 번호를 인코딩한다. 가능한 값은 다음과 같다.

클래스 가치 설명
유니버설 0 유형이 ASN.1로 기본 설정됨
적용 1 형식은 하나의 특정 응용 프로그램에 대해서만 유효함
컨텍스트별 2 이 유형의 의미는 컨텍스트(예: 시퀀스, 세트 또는 선택)에 따라 달라짐
사설 3 개인 사양으로 정의됨
P/C 가치 설명
원시(P) 0 내용 8진수는 요소 값을 직접 인코딩한다.
생성됨(C) 1 내용 8진수에는 0, 1 이상의 요소 인코딩이 포함되어 있다.

롱 폼

태그 번호가 5비트 태그 필드에 비해 너무 크면 추가 8진수로 인코딩해야 한다.

초기 옥텟은 클래스와 이전과 같이 원시/구성을 암호화하고 비트 1-5는 1이다. 태그 번호는 다음 8진수로 인코딩되며, 여기서 각 비트 8은 8진수가 많을 경우 1이고, 비트 1-7은 태그 번호를 인코딩한다. 태그 번호 비트가 결합된 빅 엔디안, 태그 번호를 인코딩한다. 다음 8진수 중 최소 개수는 인코딩되어야 한다. 즉, 비트 1-7은 다음 8진수에서 모두 0이 되어서는 안 된다.

길이 8진수

길이 8진법에는 두 가지 형태가 있다. 확정형과 무기형.

첫 번째 길이 옥텟
형태 비트
8 7 6 5 4 3 2 1
확실하고 짧음 0 길이(0–127)
무기한 1 0
확실하고 긴 1 다음 8진수(1–126)
예약됨 1 127

확정형식

이것은 콘텐츠 옥텟의 수를 인코딩하며, 유형이 원시적이거나 구성되고 데이터를 즉시 사용할 수 있는 경우 항상 사용된다. 짧은 형태와 긴 형태가 있는데, 이것은 다양한 길이의 인코딩을 할 수 있다. 숫자 데이터는 항상 먼저(오른쪽) 최소 중요 비트를 가진 부호화되지 않은 정수로 인코딩된다.

짧은 형태는 비트 8이 0인 단일 옥텟으로 구성되며 비트 1-7은 길이(0일 수도 있음)를 8진수로서 인코딩한다.

긴 형태는 1개의 초기 옥텟과 그 이상의 후속 옥텟으로 구성되며, 길이를 포함한다. 초기 옥텟에서 비트 8은 1이고 비트 1-7(값 0과 127 제외)은 뒤에 오는 옥텟의 수를 부호화한다.[1] 다음의 옥텟은 빅 엔디안으로서 길이(0일 수도 있음)를 옥텟의 숫자로 부호화한다.

긴 형식 예제, 길이 435
옥텟 1 옥텟 2 옥텟 3
1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 1 1
롱 폼 길이 8진수 2개 435 내용 옥텟

무기한 서식

이것은 길이를 인코딩하는 것이 아니라 내용 8진수가 마커 8진수에서 끝난다는 것이다. 이는 구성된 형식에 적용되며 일반적으로 인코딩 시 콘텐츠를 즉시 사용할 수 없는 경우에 사용된다.

그것은 비트 8이 1이고 비트 1-7이 0인 단일 옥텟으로 구성된다. 그런 다음, 내용 종료 8진수 2개는 내용 8진수를 종료해야 한다.

콘텐츠 8진수

내용 8진수는 요소 데이터 값을 인코딩한다.[1]

ASN.1 객체의 존재 또는 그 공허함만을 주목한다면, 컨텐츠 옥텟(헨스, 원소의 길이는 0이다)은 없을 수 있다는 점에 유의한다. 예를 들어, ASN.1 NULL 값의 경우가 이에 해당한다.

CER 인코딩

CER(Canonical Encoding Rules)는 ASN.1에서 설명한 데이터 구조에 대한 명확한 전송 구문을 생성하기 위한 BER의 제한된 변형이다. BER은 데이터 값이 인코딩될 수 있는 방법에 대한 선택권을 제공하는 반면, CER은 기본 인코딩 규칙에서 허용되는 인코딩 중에서 하나만 선택하여 나머지 옵션을 제거한다. CER은 보안 교환과 같이 인코딩이 보존되어야 할 때 유용하다.

DER 인코딩

DER(Distenguished Encoding Rule)는 ASN.1에서 설명한 데이터 구조에 대한 명확한 전송 구문을 생성하기 위해 BER의 제한된 변형이다. CER과 마찬가지로 DER 인코딩은 유효한 BER 인코딩이다. DER은 한 발신자의 옵션을 제외한 모든 선택사항이 제거된 BER과 동일한 것이다.

DER은 ASN.1 값을 인코딩하는 정확히 하나의 방법을 제공하는 BER의 하위 집합이다. DER은 암호학처럼 고유한 인코딩이 필요한 상황을 대상으로 하며, 디지털 서명이 필요한 데이터 구조가 고유한 직렬화된 표현을 생성하도록 보장한다. DER은 BER의 정식 형태로 간주될 수 있다. 예를 들어, BER에서 true의 부울 값은 255바이트가 아닌 바이트 값 중 하나로 인코딩될 수 있는 반면, DER에서는 true의 부울 값을 인코딩하는 한 가지 방법이 있다.

가장 중요한 DER 인코딩 제약조건은 다음과 같다.

  1. 길이 인코딩은 한정된 형식을 사용해야 함
    • 또한 가능한 최단 길이의 인코딩을 사용해야 한다.
  2. 비트 문자열, 8진수 문자열 및 제한된 문자 문자열은 원시 인코딩을 사용해야 함
  3. 집합의 요소는 태그 값에 따라 정렬된 순서로 인코딩됨

DER은 X.509와 같은 디지털 인증서에 널리 사용된다.

BER, CER 및 DER 비교

BER 형식과 CER 또는 DER 형식 간의 주요 차이점은 기본 인코딩 규칙에서 제공하는 유연성이다. BER은, 위에서 설명한 바와 같이, ASN.1 데이터 구조의 전송을 위해 ITU-T X.690에 의해 주어진 인코딩 규칙의 기본 집합이다. 전송하려는 데이터 구조를 인코딩하는 명확한 규칙을 전송자에게 제공하지만 일부 인코딩 선택사항도 남긴다. X.690 표준에 명시된 바와 같이, "대체 인코딩은 송신자의 옵션으로서 기본 인코딩 규칙에 의해 허용된다. 기본 인코딩 규칙 준수를 주장하는 수신자는 모든 대안을 지원해야 한다."[1]

수신자는 BER 준수를 합법적으로 주장하기 위해 모든 법적 인코딩을 수락할 준비가 되어 있어야 한다. 대조적으로 CER과 DER 모두 사용 가능한 길이 규격을 단일 옵션으로 제한한다. 이와 같이 CER과 DER은 BER의 제한된 형식이며 BER 표준을 모호하게 하는 역할을 한다.

CER과 DER은 송신자에게 부과하는 제한사항의 집합이 다르다. CER과 DER의 기본적인 차이점은 DER은 확정적인 길이의 형태를 사용하며 CER은 일부 정밀하게 정의된 사례에서 무한 길이의 형태를 사용한다는 것이다. 즉, CER은 인코딩된 데이터의 길이를 제공하는 대신 End-of-Contents 옥텟을 사용하는 반면, DER는 항상 선도적인 길이 정보를 가지고 있다. 이 때문에 CER은 인코딩된 큰 값의 메타데이터를 덜 요구하는 반면 DER은 작은 값의 메타데이터를 요구한다.

인코딩 규칙 간의 선택을 용이하게 하기 위해 X.690 표준 문서는 다음과 같은 지침을 제공한다.

구분된 인코딩 규칙은 인코딩된 값이 사용 가능한 메모리에 맞도록 작으며 일부 중첩된 값을 빠르게 건너뛸 필요가 있는 경우 표준 인코딩 규칙보다 더 적합하다. 표준 인코딩 규칙은 사용 가능한 메모리에 쉽게 들어갈 수 없을 정도로 큰 값을 인코딩할 필요가 있거나 전체 값을 사용할 수 있기 전에 값의 일부를 인코딩하고 전송할 필요가 있는 경우 구별된 인코딩 규칙보다 더 적합하다. 기본 인코딩 규칙은 인코딩에 설정된 값이나 값 집합이 포함되어 있고 표준 및 고유 인코딩 규칙이 부과하는 제한이 필요하지 않은 경우 표준 인코딩 규칙보다 더 적합하다.

BER 인코딩 비판

대체 인코딩 규칙에 비해 BER이 '효율적이지 않다'는 인식이 일반적이다. 일부 사람들은 이러한 인식은 주로 부실한 구현에 기인하며, 반드시 인코딩 규칙의 본질적인 결함 때문은 아니라고 주장해왔다.[3] 이러한 구현은 BER이 구현하기 쉬운 인코딩 로직을 사용하기 위해 제공하는 유연성에 의존하지만, 필요 이상으로 인코딩된 데이터 스트림이 커지게 된다. 이러한 비효율성이 현실이든 인식이든, BER 성능 및 크기 개선을 시도하는 포장 인코딩 규칙과 같은 수많은 대체 인코딩 체계로 이어졌다.

BER의 유연성을 제공하지만 대체 인코딩 방식을 사용하는 다른 대체 포맷 규칙도 개발되고 있다. 이들 중 가장 인기 있는 것은 XML 인코딩 규칙과 ASN.1 SOAP와 같은 XML 기반 대안이다.[4] 또한 XML 스키마를 ASN.1 스키마로 변환하기 위한 표준 매핑이 있으며, 이 매핑은 BER을 사용하여 인코딩할 수 있다.[5]

사용법

인식된 문제에도 불구하고, BER은 데이터를 전송하기 위해 널리 사용되는 형식이며, 특히 다른 네이티브 데이터 인코딩을 가진 시스템에서는 더욱 그러하다.

  • SNMPLDAP 프로토콜은 필요한 인코딩 방식으로 BER을(를) 사용하여 ASN.1을 지정한다.
  • 신용카드와 직불카드의 EMV 표준은 BER을 사용하여 카드에 데이터를 인코딩한다.
  • 디지털 서명 표준 PKCS #7은 또한 암호화된 메시지와 그 디지털 서명 또는 디지털 엔벨롭을 인코딩하기 위해 BER과 함께 ASN.1을 규정한다.
  • ISDN, 무료 통화 라우팅, 그리고 대부분의 휴대 전화 서비스와 같은 많은 통신 시스템은 네트워크를 통해 제어 메시지를 전송하기 위해 어느 정도 BER과 함께 ASN.1을 사용한다.
  • GSM TAP(Transferred Account Procedures), NRTRDE(Near Real Time Roaming Data Exchange) 파일은 BER을 사용하여 인코딩된다. [1]

이에 비해 더 확실한 DER 인코딩은 X.509와 같은 디지털 인증서를 전송하는 데 널리 사용된다.

참고 항목

참조

  1. ^ a b c d 정보 기술 – ASN.1 인코딩 규칙: 기본 인코딩 규칙(BER), 표준 인코딩 규칙(CER) DER(Decific Encoding Rule), ITU-T X6.90, 07/2002 규격
  2. ^ "ITU-T Recommendation database".
  3. ^ 린, 화이안. "ASN.1/BER 전송 구문의 최적 성능 추정" ACM 컴퓨터 통신 검토. 93년 7월 45일 - 58일
  4. ^ ITU-T rec. X.892, ISO/IEC 24824-2
  5. ^ ITU-T X.694, ISO/IEC ISO/IEC 8825-5

외부 링크