[ASN.1] 그간 공부 내용 정리1 / ASN.1 개요
요새 삼실에서 홀로 공부하고 있는 내용이 있어,
빠른 망각주기를 갖고 있는 나에게 있어 정리가 필요하여, 개인 블로그에 옮긴다.
ASN.1이 탄생한 배경
- 각기 다른 시스템마다 데이터를 표기하는 방법이 다를 수 있기 때문에 다른 시스템과의 통신과정에서의 생길 수 있는 데이터의 오류를 생기지 않도록 하기 위해 탄생된 프로토콜(규약)이다.
- 각 시스템마다 메모리에 저장하는 방식과 값이 다르다는 것을 먼저 알고 있어야 함
EX) 10진수 100을 100(Dec/10진수) 에서는 100으로 표현이 되지만, 16진수(Hex)에서는 0x64로 표기한다.
이 녀석을 빅 엔디언으로 표현하는 프로세서를 만날 경우 (Big Endian - 큰 비트부터 먼저 표기하는 방식)
16진수 0x64를 32비트를 처리하는 빅 엔디언(Big Endian) 프로세서에서는 (0x64 0x00 0x00 0x00)로 표기 되지만,
16진수 0x64를 32비트로 처리하는 리틀 엔디언(Little Endian) 프로세서에서는 (0x00 0x00 0x00 0x064)로 표기된다.
리틀 엔디언(Little Endian)은 주로 x86 시스템(Windows)쪽에서 처리하는 방식이고,
빅 엔디언(Big Endian)은 주로 Risc 시스템(상용 Unix)쪽에서 처리하는 방식이다.
둘이 안만나면 얼마나 좋을까... 하지만 시스템간의 통신은 당연한 일이고,
데이터 처리를 다르게 하는 이 두 녀석간에도 통신은 필요하다.
그리고, 시간이 갈 수록 시스템의 종류가 다양화 되었기에, 데이터 표현방법을 동일하게 표현할 수 있는 방법을 찾아야했다.
그래서 만들어진 것이 ASN.1(Abstract Syntax Notation.1)이다.
만들어진 이유는
- 다른 기종간의 추상화된 메시지를 교환하기 위해 만들어짐
- 데이터 구성을 표현하는 문법을 제공하기 위해 만들어졌다.
ASN.1이 주로 쓰이는 곳은 인터넷 뱅킹등에서 쓰는 인증서이다.
일단 여까지 개념 정리! 및 개요