본문 바로가기

Information Security/Cryptology

MD5

1. MD5란?
128bit hash를 제공하는 암호화 해시 함수이다. RFC1321로 지정되어 있다.
1991년에 로널도 라이베스트가 예전에 쓰던 MD4를 대체하기 위해 고안했다.
1996년에는 MD5의 설계상 결함이 발견되었다. 매우 치명적인 결함은 아니었지만, 암호학자들은 SHA-1 같은 다른 알고리즘을 사용할 것을 권장하기 시작했다.
2004년에는 더욱 심한 암호화 결함이 발견되었고 2006년에는 노트북 컴퓨터 한 대의 계산 능력으로 1분 내에 해시 충돌을 찾을 정도로 빠른 알고리즘이 발표되기도 하였다.
MD5 알고리즘을 보안 관련 용도로 쓰는 것은 권장하지 않으며, 심각한 보안 문제를 야기할 수도 있다. 2008년 12월에는 MD5의 결함을 이용해 SSL 인증서를 변조하는 것이 가능하다는 것이 발표되기도 했다.


2. 용도
프로그램과 파일의 무결성검사에 사용된다.

3. 알고리즘

MD5는 임의의 길이의 메시지(variable-length message)를 입력받아, 128비트 짜리 고정 길이의 출력값을 낸다. 입력 메시지는 512 비트 블록들로 쪼개진다; 메시지를 우선 패딩하어 512로 나누어 떨어질 수 있는 길이가 되게 한다. 패딩은 다음과 같이 한다: 우선 첫 단일 비트, 1을 메시지 끝부분에 추가한다. 512의 배수의 길이보다 64 비트가 적은 곳까지 0으로 채운다. 나머지 64 비트는 최초의(오리지널) 메시지의 길이를 나타내는 64 비트 정수(integer)값으로 채워진다.

메인 MD5 알고리즘은 A,B,C,D라고 이름이 붙은 32 비트 워드 네 개로 이루어진 하나의 128 비트 스테이트(state)에 대해 동작한다. A,B,C,D는 소정의 상수값으로 초기화된다. 메인 MD5 알고리즘은 각각의 512 비트 짜리 입력 메시지 블록에 대해 차례로 동작한다. 각 512 비트 입력 메시지 블록을 처리하고 나면 128 비트 스테이트(state)의 값이 변하게 된다.

하나의 메시지 블록을 처리하는 것은 4 단계로 나뉜다. 한 단계를 "라운드"(round)라고 부른다; 각 라운드는 비선형 함수 F, 모듈라 덧셈, 레프트 로테이션(left rotation)에 기반한 16개의 동일 연산(similar operations)으로 이루어져 있다. 오른쪽 "그림 1"은 한 라운드에서 이루어지는 한 연산(operation)을 묘사하고 있다.

함수 F에는 4가지가 있다; 각 라운드마다 각각 다른 F가 쓰인다:

사용자 삽입 이미지

4. 힐끔보기
MD5로 암호화하면 32개의 문자로 구성되며 0123456789abcdef 문자로만 구성된다.
따라서 다음과 같은 문자열이 보이면 MD5를 의심해보자!

b08e7acd151d17cbc5f205edf151d7e7
28d805e190f11ba1da5283d494ee8492
779bbf24b15bb7cb0f6b51507f0615f4
b72776c5eb0c5a05a7188959a49e1f1b


<출처 - wikipedia http://ko.wikipedia.org/wiki/MD5 + 내 생각>

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

S-DES 알고리즘  (0) 2009.03.17
SEED 알고리즘  (0) 2009.03.17
ECC 알고리즘  (0) 2009.03.17
RSA 알고리즘  (0) 2009.03.17
Xoft 알고리즘  (0) 2009.03.17