본문 바로가기

Information Security/Encoding

Base64

1. Base64 인코딩이란?
PEM(Privacy Enhancement for Internet Electronic Main) 명세서에서 처음 소개되었다.(RFC 1113, RFC 1421)
후에 MIME(Multipurpose Internet Mail Extensions) 명세서에서 다시 소개했다. (RFC 1341)
Wireshark 등 툴에서 자동으로 디코딩한다.

2. 용도
- MIME(SMTP를 확장하여 오디오, 비디오, 이미지, 응용PG, 기타 데이터 파일을 주고받을 수 있도록 기능이 확장된 프로토콜)에 주로 사용된다.

3. 알고리즘
생각보다 간단하다. 우리가 한문자를 표현할때는 8bits(1byte)를 사용한다. 이를 Base64에서는 6bits를 한 글자로 표현하는 것이다.
8과 6의 최소공배수는 24이다. 따라서 base64 는 24bit를 한 묶음으로 하여 인코딩한다.
24가 되기 위해서 8과 6에 곱해져야하는 수는 각각 3과 4이다.
즉, 1바이트로 표현하는 문자 3글자를 base64로 인코딩하면 4글자가 된다.
따라서 1바이트 문자 3글자가 base64인코딩의 한 단위가 된다.
그렇다면 3글자씩 끊어지지 않는 경우는 어떻게 인코딩할까?
바로 패딩을 하면 된다. 즉, 패딩이란 남는 공간에 특정한 문자를 채워넣는 기법을 말한다.
이제 아스키코드표와 Base64 코드표만 있으면 된다.

아스키코드표

사용자 삽입 이미지

Base64 코드표

사용자 삽입 이미지



3글자가 한단위이므로 경우의 수는 총 3가지(3n, 3n+1, 3n+2)가 있다.
각 경우별로 살펴보자.

    가. 3n
CwY

아스키코드로 변환하면  67 119 89 가 된다.
이를 이진수로 변환해보면

01000011    01110111    01011001

이 된다. 1단위(n=1)가 딱 나온다. 딱 24bits네 ^^;
자 이제 6bits씩 잘라보자.

010000 110111 011101 011001  이 된다.
이를 다시 10진수로 변환해보자

16 55 29 25 가 된다. 이것이 Base64 표의 키(Key)가 된다.
Q 3 d Z

즉, CwY를 Base64로 인코딩하면 Q3dZ가 된다.

    나. 3n+1
Hill

아스키코드로 변환하면 72 105 108 108 이 된다.
이를 이진수로 변환해보면

01001000 01101001 01101100 01101100

이 된다. 그런데 1단위는 넘는데 2단위가 안된다.
일단 6bits씩 잘라보자

010010 000110 100101 101100 011011 00 이 된다.

24bits단위가 되어야 하는데, 32bits이다.
따라서 48bits를 만들어야 하는데 16bits가 부족하다. 마지막 16bits에 0을 채워넣는다

010010 000110 100101 101100 011011 000000 000000 000000 이 된다.
이를 다시 10진수로 변환해보자.

18 6 37 44 27 0 0(패딩) 0(패딩) 이 된다. 이것 역시 Base64 표의 키(Key)가 된다.
이때 순수하게 0으로 패딩된 영역은 '='으로 대치된다.

S G l s b A = =

즉, Hill을 Base64로 인코딩하면 SGlsbA==가 된다.

    다. 3n+2
Choiw

아스키코드로 변환하면  67 104 111 105 119가 된다.
이를 이진수로 변환해보면

01000011  01101000  01101111  01101001  01110111

이 된다. 그런데 역시 1단위는 넘는데 2단위가 안된다.
일단 6bits씩 잘라보자

010000 110110 100001 101111 011010 010111 0111 이 된다.

24bits단위가 되어야 하는데, 40bits이다.
따라서 48bits를 만들어야 하는데 8bits가 부족하다. 마지막 8bits에 0을 채워넣는다

010000 110110 100001 101111 011010 010111 011100 000000 이 된다.
이를 다시 10진수로 변환해보자.

16   54  33  47  26  23  28  0(패딩)이 된다. 이것 역시 Base64 표의 키(Key)가 된다.
이때 순수하게 0으로 패딩된 영역은 '='으로 대치된다.

Q 2 h v a X c =

즉, Hill을 Base64로 인코딩하면 Q2hvaXc= 가 된다.

4. 이게 Base64인가?
가. 파일의 크기가 ⅓정도 커진다.
나. 등호(=)가 1개 내지 2개가 보인다.

이렇다면.... 100%입니다. ㅋㅋㅋ

'Information Security > Encoding' 카테고리의 다른 글

UNICODE  (0) 2009.03.24
URL Encoding  (0) 2009.03.17