- ASN.1: Abstract Syntax Notation One
-
-
데이터 구조를 기술하기 위한 언어(표기법)
-
데이터 타입이 primitive, constructed 로 나뉨
-
ASN 데이터를 인코딩하기 위해 TLVTag-Length-Value 구조 사용
-
즉, 모든 데이터 객체는 tag, length, value(data)를 가짐
-
-
플랫폼에 종속되지 않고 적용 가능
-
ITU-T를 통해 표준화됨
-
정보보호 분야에서 사용됨
-
ASN.1은 표준을 작성하는 언어로, ASN.1이 표준이 아니라 ASN.1로 작성된 것이 표준
-
ASN.1은 프로그래밍 언어(예: C)와 비슷한 반면, BER는 해당 언어의 컴파일러와 비슷합니다. 컴파일러는 플랫폼마다 다르지만 대부분의 고수준 프로그래밍 언어는 플랫폼에 독립적입니다. C는 프로그램 작성 규칙과 언어를 정의합니다. 프로그램은 C가 아니며 C로 작성된 것입니다. 프로그램은 특정 플랫폼(예: Intel x86)에서 컴파일될 때까지는 유용하지 않습니다. ASN.1과 BER의 관계도 이와 비슷합니다. ASN.1은 표준을 작성하는 언어입니다. 표준은 ASN.1이 아니며 ASN.1로 작성된 것입니다. 표준으로 컴파일되는 프로그램에서 생성된 데이터는 넓은 의미에서 "ASN.1 데이터"라고 할 수 있습니다. ASN.1 데이터는 대상에서 쉽게 해독할 수 있는 옥텟의 스트림으로 인코딩될 때까지 유용하지 않습니다. 즉, LAN을 통해 전송할 수 없습니다. 다음은 이러한 개념을 설명하기 위해 ITU-T 권고안 X.209, 부록 I에서 가져온 예제입니다. 이 예제는 직원 데이터 레코드에 대한 비공식적 설명입니다.
- BER: Basic Encoding Rules
-
-
'버르’로 발음
-
ITU0T X.690에 정의됨
-
ASN.1 데이터를 인코딩하는 하나의 규칙 집합.
-
옥텟의 스프림으로 구성
-
- Octet
-
8 bit. 8 bit를 표현하기 위한 용어. 현대에 1 byte는 8 bit지만, 예전에는 4, 6 bit를 1 byte로 사용하는 컴퓨터도 있었음.
- Binary
-
2진수
- Octal
-
8진수
- Decimal
-
10진수
- Hexadecimal
-
16진수. hex라고도 함
- Hexagon
-
6각형
- 인코딩
-
인코딩(encoding)은 정보의 형태나 형식을 표준화, 보안, 처리 속도 향상, 저장 공간 절약 등을 위해서 다른 형태나 형식으로 변환하는 처리 혹은 그 처리 방식을 말한다.
들어가기 앞서
-
bit는 2진수 1자리를 말하며 0, 1을 나타냄
-
byte는 8 bit를 말하며 2진수 8개 이므로 28로 256개를 나타냄
-
16개를 나타내려면 24 = 4 bit
Decimal |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Hex |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
A |
B |
C |
D |
E |
F |
Binary |
0 |
1 |
10 |
11 |
100 |
101 |
110 |
111 |
1000 |
1001 |
1010 |
1011 |
1100 |
1101 |
1110 |
1111 |
Bit |
0000 |
0001 |
0010 |
0011 |
0100 |
0101 |
0110 |
0111 |
1000 |
1001 |
1010 |
1011 |
1100 |
1101 |
1110 |
1111 |
TLV: Tag-Length-Value
-
ITU-T에서 정의함
-
e2e간에 통신 및 데이터 전달에 효과적인 자료 구조를 지원하기 위한 수단
-
BER, CER, DER 방식이 있음(SIMPLE? COMPACT)
-
데이터 통신에 사용되는 프로토콜
Tag
-
보통 알파벳과 숫자를 부호화한 이진 코드
Octet 1 | Octec 2 | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
Tag class |
P/C |
Tag number(0-30) |
N/A |
||||||||||||
31 |
More |
Tag number |
-
b8-7은 타입의 클래스를 나타냄
Class Value Description Universal
0
The type is native to ASN.1
Application
1
The type is only valid for one specific application
Context-specific
2
Meaning of this type depends on the context (such as within a sequence, set or choice)
Private
3
Defined in private specifications
-
b6은 Primitive 타입인지, Constrcuted 타입인지 구분
-
Primitive
0
: value의 값을 직접 인코딩됨 ('Constructed data object') -
Constructed
1
: value('Primitive data object')
-
Length
-
value 부분이 차지하는 크기. 보통 바이트 단위, 통상 1~4 바이트
-
1개 byte: 0~127 길이에 사용,
0xxx xxxx
-
2개 byte: 128~255 길이에 사용,
1000 0001 xxxxxxxx
** -
3개 byte
Value
-
가변 길이의 바이트열