검수요청.png검수요청.png

SHA

해시넷
이동: 둘러보기, 검색

SHA(Secure Hash Algorithm)는 서로 관련된 암호학적 해시 함수들의 모음이다.

개요[편집]

SHA-0은 미국 국립표준기술연구소(NIST)에서 1993년 발표되고 FIPS PUB 180으로 공표된 해시 함수 알고리즘을 말한다. 이는 해시 알고리즘 중 하나인 MD4에 기반을 두고 있으며 MD5의 취약점을 개선하고 대체하기 위해 개발되었다.[1]

이후 1995년 미국 국가안보국SHA-1(FIPS PUB 180-1)을 발표했다. 이는 입력된 메시지를 512 비트 블록 단위로 처리하며, 160 비트의 출력값을 생성한다. 입력 메시지 길이 상한은 입력 메시지 길이 상한은 2⁶⁴이며 해시값의 길이는 160 비트이다. SHA-1은 SHA 함수군 중 가장 많이 쓰이며 TLS, SSL, PGP, SSH, IPSes 등 다양한 보안 프로토콜과 프로그램에서 사용되고 있다. 특히, SHA-1은 이전에 널리 사용되던 MD5를 대신하여 사용되기도 한다.

2002년, 미국 국가안보국은 SHA-1 및 그 변형인 SHA-256, SHA-384, SHA-512에 추가하여 보안 수준을 3DES에 맞게 수정한 SHA-224를 함께 SHA-2(FIPS PUB 180-2)로 공표하였다. 그냥 SHA-2라 하면 SHA-224, SHA-256, SHA-384, SHA-512, 4개를 총칭한다.

종류[편집]

SHA-0[편집]

SHA 알고리즘 비교표

최초의 해시 함수 알고리즘은 1993년에 미국 국립표준기술연구소(NIST)가 발표한 안전한 해시 표준(Secure Hsah Standard, SHS)으로 표준 FIPS PUB 180으로 공표되었다. 이것이 우리가 흔히 알고 있는 SHA-0이며 다른 함수들과 구별하기 위해 SHA-0이라 부르기 시작했다. 이는 해시 알고리즘 중 하나인 MD4 알고리즘에 기반을 두고 있으며, MD5의 취약성을 개선 및 대처하기 위해 설계되었다.

SHA-1[편집]

안전한 해시 표준이 발표되고 얼마 지나지 않아 미국 국가안보국(NSA)이 이 표준을 폐기하고, 1995년 개정된 알고리즘인 SHA-1(FIPS PUB 180-1)을 발표했다. SHA-1는 SHA-0의 압축 함수 비트 회전 연산을 하나 추가한 것인데, 미국 국가안보국에 따르면 SHA-1은 기존의 알고리즘에서 암호학적 보안을 감소시키는 결함들을 수정한 것이라고 설명했지만 실제로 그 결함이 무엇인지는 공개하지 않았다. 일반적으로 SHA-1은 SHA-0과 비교해 암호학적 공격이 힘든 것으로 알려져 있는 것으로 보아 미국 국가안보국의 주장은 어느 정도 설득력이 있다고 볼 수 있다. SHA-1은 입력된 메시지를 512 비트 블록 단위로 처리하며, 160 비트의 해시값을 생성해낸다. 입력 메시지 길이 상한은 2⁶⁴이며 해시값의 길이는 160 비트, 즉 20 바이트이다.

SHA-1은 로널드 리베스트(Ronald Rivest)가 개발한 MD5 계열의 해시 함수들과 매우 비슷하다. 이 둘을 비교해 보자면, SHA-1과 MD5의 사전 패딩 처리는 동일하다. 출력값에 있어서는 SHA-1이 MD5보다 길기 때문에 안전하나 SHA 버퍼 크기가 MD5보다 더 크기 때문에 속도 면에서는 MD5가 25%정도 더 빠르다. 따라서 SHA-1은 MD5보다는 다소 느리지만 대규모 메시지 요약들이 폭력적 충돌 및 도치 공격을 받을 때 좀 더 안전하게 지켜줄 수 있다.[2]

SHA-2[편집]

미국 국립표준연구소는 2000년대에 들어 해시값의 길이가 더 긴 네 개의 변형 해시 알고리즘을 발표했다. 이를 통칭하여 SHA-2라 부른다.[3] SHA-256, SHA-384, SHA-512는 2001년에 초안으로 처음 발표되었으며, 2004년 2월에 보안 수준을 3DES에 맞게 수정한 SHA-224와 함께 정식 표준(FIPS PUB 180-2)으로 공표되었다. SHA-256과 SHA-512는 각각 32바이트 및 64바이트 워드를 사용하는 해시 함수이며, 몇몇 상수들이 다르기는 하지만 그 구조는 라운드의 수를 제외하고는 완전하게 일치한다.[4] SHA-224와 SHA-384는 서로 다른 초깃값을 가지고 계산한 SHA-256과 SHA-512의 해싯값을 최종 해시값 길이에 맞춰 잘라낸 것이다.[5]

각주[편집]

  1. ppp7009, 〈Hash알고리즘.〉, 《네이버 블로그》, 2015-08-05
  2. 제3장 DBMS_CRYPTO〉, 《데이터전문가지식포털》
  3. 잡다구리, 〈SHA-256 – 복호화가 되지 않도록 하는 암호화 기법〉, 《네이버 블로그》, 2015-01-05
  4. 위키백과 SHA - https://ko.wikipedia.org/wiki/SHA
  5. 카이트, 〈SHA?〉, 《네이버 블로그》, 2015-12-29

참고자료[편집]

같이 보기[편집]


  검수요청.png검수요청.png 이 SHA 문서는 암호 알고리즘에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.