Forensic/Forensic 이론

데이터 인코딩(Data Encoding)

Ron Weasley 2022. 1. 18. 23:07

저번 시간에는 문자 인코딩에 대해서 배워 보았습니다.

간략하게 정리하면 문자 인코딩은 "사용자가 입력한 문자나 기호들을 컴퓨터가 이용할 수 있는 2진 신호로 변환" 하는 것을 말했습니다.

 

이번 시간에는 데이터 인코딩에 대해서 배워 보겠습니다.

데이터 인코딩
  데이터 인코딩은 숫자, 문자, 시간 등 데이터는 원본 그대로 형태의 모습으로 저장될 수도 있는 반면, 다양한 인코딩 알고리즘(Base58, Base64)에 따라 특수한 형태의 데이터로 변환 됩니다.

1. Base 64

  Base64는 8비트 바이너리 데이터를 문자 코드에 영향을 받지 않는 공통 아스키(ASCII) 영역의 문자로만 이루어진 일련의 문자열로 변환하는 인코딩 방식입니다. 쉽게 말해 임의의 8비트 바이너리 데이터를 64개의 아스키 문자의 조합으로 표현하고, 인코딩된 문자열은 알파뱃 대문자 (A~Z), 소문자 (a~z), 숫자 (0~9)를 사용하고 있으며, 특수 문자로 " + ", " / "를 표현하고 " = " 로 끝을 알리는 코드로 쓰인다. 표현되는 문자는 다음과 같습니다.

 

Base64 Encoding Character

 

Base64는 주로 전자우편에 관한 규격인 MIME(Multipurpose Internet Mail Extensions)에서 정하고 있는 부호화 방식으로, 4개의 7비트 아스키 문자로 표현되도록 데이터를 3바이트씩 4개의 6비트 단위로 나누어 표현한다. Base64 인코딩을 거친 결과는 원본보다 대략 ¾ 정도 크기가 늘어나게 되며, 아무런 의미를 가지지 않는 문자열이 나열된 형태가 됩니다.

 

다음은 Base64 색인표 입니다.

 

base64 색인표

 

이제 임의의 문자를 Base64로 변환하는 과정을 살펴보겠습니다.

 

Base64 변환표

 

변환 방법은 다음과 같습니다.

1. Text Content의 Sin을 ASCII값으로 변환 시켜줍니다.

2. 변환시킨 ASCII값을 Binary값으로 나열 시켜줍니다.

3. 나열된 Binary값을 6비트씩 나눠줍니다..

4. 6비트씩 나눈 후 이진 계산을 하여 값을 구합니다.

5. 값을 구한 후 Base64 색인표에 맞춰 적어줍니다.

 

파이썬 코드를 짠 후 표와 같은 값이 나오는지 봅시다.

동일한 값이 나오는 것을 확인할 수 있습니다.

 

2. Base 58

  Base58은 Base64와 같이 바이너리 데이터를 텍스트로 변경해주는 인코딩 기술입니다.

Base58은 Base64와 아주 유사하지만 내부 알고리즘은 완전 다릅니다. Base64의 경우는 ASCII로 변환 후 6비트씩 잘라 table값이랑 대응하는 값을 치환 한다면, Base58은 입력된 값을 big number로 변경하여 58로 나누고 나머지를 지정된 table에 대응하는 character로 치환 합니다. Base58은 사용자가 직접 타이핑을 하거나 Copy & Paste를 용이하게 하기 위해서 사용되며, 비트코인 주소 생성 시 Base58 인코딩을 사용하기도 합니다.

 

* Base58이 나온 이유

  자주 사용하던 Base64의 경우 두 가지의 단점이 있습니다.

1. 사람에게 혼동되는 유사한 문자들이 존재합니다.

숫자 ( 0 ), 대문자 ( O ), 대문자 ( I ), 소문자 ( l )

2. 전체 선택을 위해 마우스로 더블 클릭했을 때, 선택을 방해하는 문자가 존재합니다.

( + ), ( / )

 

즉, 위 단점을 보완하기 위해서 Base58은 Base64에서 사용된 위 6개의 문자를 제거하고 표현이 되기 때문에 58이라는 숫자가 뒤에 붙었고, Base64의 경우 공식적인 table이 존재하기 때문에 어떤 애플리케이션이든 동일한 결과를 출력하지만, Base  58의 경우 공식적인 table이 없어 애플리케이션마다 다른 결과를 출력할 수 있다는 점을 알아두어야 합니다.

 

Base58에 대한 자세한 사항은 http://wiki.hash.kr/index.php/%EB%B2%A0%EC%9D%B4%EC%8A%A458에 참고하세요!!

 

다음엔 해시함수에 대해서 포스팅 하겠습니다.

'Forensic > Forensic 이론' 카테고리의 다른 글

파일 카빙(Carving)  (0) 2022.01.27
해쉬 함수 (Hash Function)  (0) 2022.01.20
문자(Characters) 인코딩  (0) 2021.12.24
디지털 데이터의 수 체계  (0) 2021.07.24
디지털 데이터의 구성 단위  (0) 2021.07.04