"SHA"의 두 판 사이의 차이
leejia1222 (토론 | 기여) |
leejia1222 (토론 | 기여) |
||
21번째 줄: | 21번째 줄: | ||
− | [[파일:SHA비교 표.PNG |썸네일|800픽셀|가운데|'''SHA''' 함수들의 특성을 | + | [[파일:SHA비교 표.PNG |썸네일|800픽셀|가운데|'''SHA''' 함수들의 특성을 요약한 표]] |
2019년 4월 9일 (화) 11:18 판
SHA는 서로 관련된 암호학적 해시 함수들의 모음이다.
개요
SHA-0은 미국 국립표준연구소(NIST)에서 1993년 발표되고 FIPS PUB 180으로 공표된 해시 함수 알고리즘을 말한다. 이는 해시 알고리즘 중 하나인 MD-4에 기반을 두고 있으며 MD-5의 취약점을 개선하고 대체하기 위해 개발되었다.[1]
이후 1995년 미국 국가안보국은 SHA-1(FIPS PUB 180-1)을 발표했다. 이는 입력된 메시지를 512 비트 블록 단위로 처리하며, 160 비트의 출력값을 생성한다. 입력 메시지 길이 상한은 입력 메시지 길이 상한은 2⁶⁴이며 해시값의 길이는 160 비트이다. SHA-1은 SHA 함수군 중 가장 많이 쓰이며 TLS, SSL, PGP, SSH, IPSes 등 다양한 보안 프로토콜과 프로그램에서 사용되고 있다. 특히, SHA-1은 이전에 널리 사용되던 MD-5를 대신하여 사용되기도 한다.
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
최초의 해시 함수 알고리즘은 1993년에 미국 국립표준연구소(NIST)가 발표한 안전한 해시 표준(Secure Hsah Standard, SHS)으로 표준 FIPS PUB 180으로 공표되었다. 이것이 우리가 흔히 알고 있는 SHA-0이며 다른 함수들과 구별하기 위해 SHA-0이라 부르기 시작했다. 이는 해시 알고리즘 중 하나인 MD-4 알고리즘에 기반을 두고 있으며, MD-5의 취약성을 개선 및 대처하기 위해 설계되었다.
SHA-1
안전한 해시 표준이 발표되고 얼마 지나지 않아 미국 국가안보국(NSA)이 이 표준을 폐기하고, 1995년 개정된 알고리즘인 SHA-1(FIPS PUB 180-1)을 발표했다. 이를 우리는 SHA-1이라 일컫는다. SHA-1는 SHA-0의 압축 함수 비트 회전 연산을 하나 추가한 것인데, 미국 국가안보국에 따르면 SHA-1은 기존의 알고리즘에서 암호학적 보안을 감소시키는 결함들을 수정한 것이라고 설명했지만 실제로 그 결함이 무엇인지는 공개하지 않았다. 일반적으로 SHA-1은 SHA-0과 비교해 암호학적 공격이 힘든 것으로 알려져 있는 것으로 보아 미국 국가안보국의 주장은 어느 정도 설득력이 있다고 볼 수 있다. SHA-1은 입력된 메시지를 512 비트 블록 단위로 처리하며, 160 비트의 해시값을 생성해낸다. 입력 메시지 길이 상한은 2⁶⁴이며 해시값의 길이는 160 비트, 즉 20 바이트이다.
SHA-1은 로버트 라이베스트(Robert Rivest)가 개발한 MD-5 계열의 해시 함수들과 매우 비슷하다. 이 둘을 비교해 보자면, SHA-1과 MD-5의 사전 패딩 처리는 동일하다. 출력값에 있어서는 SHA-1이 MD-5보다 길기 때문에 안전하나 SHA 버퍼 크기가 MD-5보다 더 크기 때문에 속도 면에서는 MD-5가 25%정도 더 빠르다. 따라서 SHA-1은 MD-5보다는 다소 느리지만 대규모 메시지 요약들이 폭력적 충돌 및 도치 공격을 받을 때 좀 더 안전하게 지켜줄 수 있다.[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]
표에서 내부 상태는 데이터 블록 하나를 압촉한 뒤의 '내부적인 해시값'의 크기를 나타낸다. 추가적으로 SHA는 내부적으로 메시지 채움을 위해 데이터의 길이와 같은 추가적인 변수를 사용하는데, 길이 한계는 이때 사용되는 변수의 크기를 나타낸다.[4]
각주
- ↑ ppp7009, 〈Hash알고리즘.〉, 《네이버 블로그》, 2015-08-05
- ↑ 〈제3장 DBMS_CRYPTO〉, 《데이터전문가지식포털》
- ↑ 잡다구리, 〈SHA-256 – 복호화가 되지 않도록 하는 암호화 기법〉, 《네이버 블로그》, 2015-01-05
- ↑ 4.0 4.1 위키백과 SHA - https://ko.wikipedia.org/wiki/SHA
- ↑ 카이트, 〈SHA?〉, 《네이버 블로그》, 2015-12-29
참고자료
- 위키백과 SHA - https://ko.wikipedia.org/wiki/SHA
- 〈제3장 DBMS_CRYPTO〉, 《데이터전문가지식포털》
- 잡다구리, 〈SHA-256 – 복호화가 되지 않도록 하는 암호화 기법〉, 《네이버 블로그》, 2015-01-05
- 카이트, 〈SHA?〉, 《네이버 블로그》, 2015-12-29
- ppp7009, 〈Hash알고리즘.〉, 《네이버 블로그》, 2015-08-05
같이 보기
|