kkamagi's story

IT, 정보보안, 포렌식, 일상 공유

Cyber Security

Message Digest

까마기 2014. 10. 21. 22:05
728x90
반응형

<Message Digest>
= Hash Function = One Way Function = Hash Algorithm
 =무결성을 확인하기 위한 것 

MD5(Message-Digest algorithm 5)는 128비트 암호화 해시 함수이다. RFC 1321로 지정되어 있으며, 주로 프로그램이나 파일이 원본 그대로인지를 확인하는 무결성 검사 등에 사용된다. 1991년에 로널드 라이베스트가 예전에 쓰이던 MD4를 대체하기 위해 고안했다.

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

※ Hash Algorithm은 임의의 길이를 가지고 있는 메시지를 받아들여 고정된 길이의 출력 값으로 바꾸어주는

함수로서, 이 때 출력 값을 해시 값(hash value) 혹은 메시지 다이제스트(message digest) 라고 부른다.

  Hash Algorithm을 사용하면 같은 해시 값을 갖는 두 개의 다른 입력 메시지를 찾아내기란 불가능하므로

하나의 해시 값을 가지고 원래의 입력된 메시지를 예측할 수가 없게 됩니다.

 따라서 데이터 전송 도중에 송신자 외의 제3자에 의해서 데이터가 변조되었는지를 쉽게 파악할 수 있게

되어 전자서명 등에 유용하게 사용됩니다.  

 이런 성격 때문에 Hash Algorithm을 일방향 (one-way) Hash Algorithm이라고도 부릅니다. 

대표적인 Hash Algorithm으로는 MD5 (128비트), SHA-1(160비트) 등이 있습니다.

 

 

MD2 - 128bit output
MD4 - 128bit output
############################################################################
MD5 - 128bit output, 취약점 있음
SHA - 160bit output, 취약점 있음 (이론적으로만)
SHA1 - 160bit output (SHA-160)
SHA2 - 192, 224, 256, 384, 512bit output
 (SHA-192, SHA-256, SHA-384, SHA-512)
(SHA? Secure Hash Algorithm)
data를 넣으면 항상 고정된 길이의 데이터가 나온다.(Fixed Length Data)
ex) 이 알고리즘에 1bit를넣든 100MB을 넣든 128bit의 고정된 데이터가 나온다.
하지만 이 고정된 데이터를 다시 원래의 데이터로 바꿀 순 없다. one way function. 즉, 암호화는 할 수 있는데 복호화 불가능.
MD5는 가능하지만 조건이 있다. 고정된길이의 결과값보다 작은값이 입력으로 들어왔을 때만 역으로 만들어진다.

CIA
C (Confidentiality) : 기밀성
I (Integrity) : 무결성 - 데이터 변조가 일어나면 안된다. 
(Authentication) : 인증 

 

ex)리눅스 - shadow 파일에 2번째 필드에 hash로 된 패스워드가 있다.

구글검색 md5 reverse lookup ->제일 첫번째 사이트  :  hash 해석 사이트? 


<MD5>

1.사용자를 만든다. 
# useradd user1
2.패스워드를 부여한다. 
 # passwd user1
    1234
3. 패스워드 정보를 본다. 
[root@localhost ~]# grep user1 /etc/shadow
user1:$1$7.60d/BR$3Qy21SELPwlSpaNckNtsq1:15618:0:99999:7:::





4. Linux/Unix에서
 Salt Function
 Salt 란? 패스워드가 같은 사용자의 해쉬 값이 같은 것을 방지하는 효과
개념 : $ID$SALT$MD5_PASSWORD

user1의 패스워드 정보 :ex)$6$1iTwgVhI$PJV.v1ZVJHUv01uALIXlYwj8wkclPRCQlHh4tiM7T49PotW2AX2xnwQc7eKLdtdQyodY/69p2gb4OwRqKO/Nf1:15628:0:99999:7:::
 

ID : 6 = MD5
SALT : 1iTwgVhI
MD5_PWD :PJV.v1ZVJHUv01uALIXlYwj8wkclPRCQlHh4tiM7T49PotW2AX2xnwQc7eKLdtdQyodY/69p2gb4OwRqKO/Nf1 

5. 솔트값으로 확인, grep user1 /etc/shadow 를 쳤을 때 나온 값과 솔트값으로 쳤을때 user1의 정보와 일치 하는지 확인.

# openssl passwd -1 -salt 1234  //엔터

 

===> 일치 하지 않는다.
 

====================================================================

user2와 user3을 추가 한다. passwd는 user1과 같은 1234. 

#more /etc/shadow

user1 : AB
user2 : CX
user3 : TP

똑같은 암호 1234 인데도 hash 값이 다 다르다.







반응형