레이블이 SHA512인 게시물을 표시합니다. 모든 게시물 표시
레이블이 SHA512인 게시물을 표시합니다. 모든 게시물 표시

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도 언제 완벽한 알고리즘과 슈퍼성능의 컴퓨터로 뚫릴지는 모르지만 당분간은 뚫릴 가능성이 없다고 한다.
​
설령 뚫린다고 해도 많은 강도가 높은 알고리즘이 연구되어 있고 표준으로 체택되어 있기 때문에 유기적으로 대처해 나가면 문제가 없을 것으로 판단한다.