2016년 5월 6일 금요일

비밀번호 해시(MD5, SHA1 )알고리즘

비밀번호 해시(MD5, SHA1 )알고리즘

흔히 웹사이트 주민등록번호나 비밀번호를 관리할 때 MD5나 SHA1 해시알고리즘으로 암호화하여 저장한다.

MD5와 SHA1 단방향 해시 알고리즘에 대해 알아보고 대안에 대해 알아보자



1. MD5 원리

MD5는 암호화가 아닌 단방향 해시 알고리즘이다.
MD5 코드는 32비트로 총 32자의 16진수로 이루어져 있다.
그렇다면 나올 수 있는 총 가짓 수는 16^32(16의 32승)이 된다.

그런데 문제는. 이세상의 모든 어구(입력값)는 16^32보다 많다는 것이다.

MD5코드는 제한적으로 정해져 있는 반면에, 다른 어구는 무한히 많을 수 있고, 모든 어구는 MD5코드로 변환이 가능 하니, 결국에는 겹칠 수 밖에 없는 것이다.

이와 같은 현상을 "비둘기 집의 원리" 라고 한다.

즉, n개의 비둘기집에 (n+1)마리 이상의 비둘기가 들어갔다면, 두 마리 이상의 비둘기가 들어간 비둘기집이 적어도 하나 있다.

이런 이유로 인해 복호화가 불가능하다고 알려져 있고 암호화가 아니라 해시알고리즘이라 한다.


2. MD5,SHA1 크래킹

2005년 중국의 한 학자에 의해 MD5와 SHA1 해시 알고리즘이 격파되었다.

하지만 “비둘기 집의 원리”에 의해 입력값보다 출력값이 적으므로 동일한 출력값에 의해 충돌은 일어날 수 밖에 없기 때문에 완벽하게 격파되었다고 보기는 힘들다.

그리고 현재 바투 회원DB에 있는 회원들의 MD5값을 복호화해보니 결과가 나오지 않는 경우도 많았다.(어떤 패턴에 의한 문자열만 복호화가 가능한 것으로 추측됩니다.)

이미 수 많은 웹 사이트들이 여전히 MD5 해싱알고리즘을 이용하여 비밀번호를 저장한다.

사용자의 패스워드를 쿠키로 심는다던지, 로그인 하는 과정에서 브라우저에서 비밀번호를 MD5로 변환하여 서버로 보낸다면 스니핑 공격을 통해 사용자의 비밀번호가 노출될 것이다.

웹 사이트에서는 비밀번호를 쿠키로 저장하지도 않고 서버에서 MD5로 변환하여 DB와 체크하기 때문에 해커들에 의해 노출될 염려는 없어 보인다.

하지만 웹 사이트 관리자가 사용자의 비밀번호를 크래킹할 수 있으므로 분명히 개선되어야 한다.


3. 대안

MD5와 SHA1이 격파된 다음, 세계 암호연구영역에서는 그보다 더 안전한 SHA-256, SHA-512연산법으로 전환할 것을 주장했으며, 이런 내용은 미국국가표준연구원에서 발표한 성명서에 적혀있다.

또한 SHA256, SHA384, SHA512 같은 해쉬함수는 이미 표준이 되어 있고 JDK1.5.0에서는 실제로 제공하고 있기도 한다.

MD5는 32자리, SHA-1 은 40자리, SHA256은 64자리의 16진수 문자열이 출력된다.

아래 메소드는 SHA256해시알고리즘으로 암호화하는  모듈이다.

/// <summary>  ///
  /// </summary>
  /// <param name="plainText"></param>
  /// <returns></returns>
  public static string GetSHA256HashCode(string plainText)
  {
   byte[] clearBytes =
     System.Text.Encoding.UTF8.GetBytes(plainText);
   byte[] result;
   SHA256 shaM = new SHA256Managed();
   result = shaM.ComputeHash(clearBytes);
   return Convert.ToBase64String(result);
  }


4. 결론
앞서 말한 이유대로 해커에게 사용자의 비밀번호를 노출시키는 부분이 없기 때문에 사용자의 패스워드를 해킹당할 가능성은 드물어 보인다.

하지만 한국정보보호진흥원 및 국제사회에서 MD5,SHA1 해시 알고리즘이 깨졌다고 보고 있고 대안으로
SHA256, SHA512 알고리즘으로 변경하도록 권고하고 있다고 한다.

SHA256도 언제 완벽한 알고리즘과 슈퍼성능의 컴퓨터로 뚫릴지는 모르지만 당분간은 뚫릴 가능성이 없다고 한다.

설령 뚫린다고 해도 많은 강도가 높은 알고리즘이 연구되어 있고 표준으로 체택되어 있기 때문에 유기적으로 대처해 나가면 문제가 없을 것으로 판단한다.

댓글 없음:

댓글 쓰기