카테고리 없음2017. 8. 20. 13:02

{{1+1}}




Posted by

댓글을 달아 주세요

Study/Crypto2014. 12. 29. 17:55

컴퓨터 분야에서 쓰이는 Base 64 (베이스 육십사)란 8비트 바이너리 데이터(예를 들어 실행파일이나, ZIP파일 등)를 문자 코드에 영향을 받지 않는 공통 ASCII 영역의 문자들로만 이루어진 일련의 스트링으로 바꾸는 인코딩 방식을 가리키는 개념이다.


원래 Base 64를 글자 그대로 번역하여 보면 64진법이란 뜻이다. 특별히 64진법이 컴퓨터에서 흥미로운 것은, 64가 2의 제곱수(64 = 26)이며, 2의 제곱수들에 기반한 진법들 중에서 화면에 표시가 되는 ASCII 문자들을 써서 표현할 수 있는 가장 큰 진법이기 때문이다. 즉 다음 제곱수인 128진법에는 128개의 기호가 필요한데 화면에 표시되는 ASCII 문자들은 128개가 되지 않는다.


그런 이유 때문에 이 인코딩은 이메일을 통한 바이너리 데이터 전송 등에 많이 쓰이고 있다. Base 64에는 어떤 문자와 기호를 쓰느냐에 따라 여러 변종이 있지만, 잘 알려진 것은 모두 처음 62개는 알파벳 A-Z, a-z와 0-9를 사용하고 있으며 마지막 두 개를 어떤 기호를 쓰느냐의 차이만 있다. (출처 : Wiki)


위키만 보면 무슨 소린지 잘 이해가 되지 않는다. BASE64는 특정한 규칙을 사용하여 64개의 문자로 변환하는 것이다.

여기서 64개의 문자는 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"이다.

그리고 "="이 쓰이는데 이것은 패딩문자라고 불린다. 언제 사용하는지는 아래에서 설명하겠다.


Base64 암호화 과정은 다음과 같다.

1) 문자열을 3byte씩 자른다.

2) 자른 3byte(24bit)마다 6bit씩 나눠서 4조각을 만든다.

3) 나뉜 6bit조각의 값을 읽어들인다.

4) 64개의 문자 테이블에서 읽어들인 값번째 문자를 출력한다.


예시 1. 

3byte씩 나누어 떨어지는 경우.


예시 2.

떨어지지 않는 경우.

떨어지지 않을때는 부족한 Byte만큼을 패딩으로 집어넣는다.




이렇게 패딩문자를 사용하는 특성 때문에 "=" 혹은 "=="으로 끝나면 base64로 암호화 됬다는걸 유추할 수 있다.

때로는 table을 "A-Za-z0-9+/"을 사용하지 않고 직접 만든 table을 사용하는 경우가 있기 때문에 base64처럼 보여도 디코드가 안되는 경우가 있다.

문자열 인코딩 결과가 약 4/3배 커지는 단점이 있지만, 그래도 자주 이용되는 암호화방식이다.


'Study > Crypto' 카테고리의 다른 글

Base64  (0) 2014.12.29
Posted by

댓글을 달아 주세요

Study/Exploit2014. 12. 5. 17:05

언어고자라서 쓰는게 힘들어요.... 이해안되시면 페메...ㄲㄲ


ROP를 사용할 때 가젯이 한정적이라 제대로 레지스터를 못 만질 때 사용하는 기법입니다.

ROP의 응용임 결국ㅋ


SROP.pdf


'Study > Exploit' 카테고리의 다른 글

Sigreturn Oriented Programming  (0) 2014.12.05
Posted by

댓글을 달아 주세요