"SHA"의 두 판 사이의 차이
leejia1222 (토론 | 기여) |
잔글 (→SHA-2) |
||
(사용자 3명의 중간 판 19개는 보이지 않습니다) | |||
1번째 줄: | 1번째 줄: | ||
− | '''SHA'''(Secure Hash Algorithm)는 서로 관련된 [[ | + | '''SHA'''(Secure Hash Algorithm)는 서로 관련된 암호학적 [[해시함수]]들의 모음이다. |
==개요== | ==개요== | ||
− | [[SHA-0]]은 | + | [[SHA-0]]은 [[미국 국립표준기술연구소]](NIST)에서 1993년 발표되고 [[FIPS PUB 180]]으로 공표된 [[해시함수]] [[알고리즘]]을 말한다. 이는 해시 알고리즘 중 하나인 [[MD4]]에 기반을 두고 있으며 [[MD5]]의 취약점을 개선하고 대체하기 위해 개발되었다.<ref>ppp7009, 〈[https://blog.naver.com/ppp7009/220442027617 Hash알고리즘.]〉, 《네이버 블로그》, 2015-08-05</ref> |
− | 이후 1995년 | + | 이후 1995년 [[미국 국가안보국]](NSA)은 [[SHA-1]]([[FIPS PUB 180-1]])을 발표했다. 이는 입력된 메시지를 512 비트 [[블록]] 단위로 처리하며, 160 비트의 출력값을 생성한다. 입력 메시지 길이 상한은 입력 메시지 길이 상한은 2⁶⁴이며 [[해시값]]의 길이는 160 비트이다. SHA-1은 SHA 함수군 중 가장 많이 쓰이며 [[TLS]], [[SSL]], [[PGP]], [[SSH]], [[IPSes]] 등 다양한 보안 [[프로토콜]]과 프로그램에서 사용되고 있다. 특히, SHA-1은 이전에 널리 사용되던 MD5를 대신하여 사용되기도 한다. |
− | 2002년 | + | 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-0=== | ||
− | 최초의 해시 함수 알고리즘은 1993년에 미국 국립표준기술연구소(NIST)가 발표한 [[안전한 해시 표준]](Secure Hsah Standard, SHS)으로 표준 FIPS PUB 180으로 공표되었다. 이것이 우리가 흔히 알고 있는 SHA- | + | [[파일:SHA 알고리즘 비교.PNG |썸네일|600픽셀|'''SHA''' 알고리즘 비교표]] |
+ | 최초의 해시 함수 알고리즘은 1993년에 미국 국립표준기술연구소(NIST)가 발표한 [[안전한 해시 표준]](Secure Hsah Standard, SHS)으로 표준 FIPS PUB 180으로 공표되었다. 이것이 우리가 흔히 알고 있는 '''SHA-0'''이며 다른 함수들과 구별하기 위해 SHA-0이라 부르기 시작했다. 이는 해시 알고리즘 중 하나인 MD4 알고리즘에 기반을 두고 있으며, MD5의 취약성을 개선 및 대처하기 위해 설계되었다. | ||
===SHA-1=== | ===SHA-1=== | ||
− | 안전한 해시 표준이 발표되고 얼마 지나지 않아 미국 국가안보국(NSA)이 이 표준을 폐기하고, 1995년 개정된 알고리즘인 SHA-1(FIPS PUB 180-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보다는 다소 느리지만 대규모 메시지 요약들이 폭력적 충돌 및 도치 공격을 받을 때 좀 더 안전하게 지켜줄 수 있다.<ref>〈[http://www.dbguide.net/db.db?boardUid=145958&boardConfigUid=9&boardIdx=107 제3장 DBMS_CRYPTO]〉, 《데이터전문가지식포털》</ref> | + | SHA-1은 [[로널드 리베스트]](Ronald Rivest)가 개발한 [[MD5]] 계열의 해시 함수들과 매우 비슷하다. 이 둘을 비교해 보자면, SHA-1과 MD5의 사전 [[패딩]] 처리는 동일하다. 출력값에 있어서는 SHA-1이 MD5보다 길기 때문에 안전하나 SHA 버퍼 크기가 MD5보다 더 크기 때문에 속도 면에서는 MD5가 25% 정도 더 빠르다. 따라서 SHA-1은 MD5보다는 다소 느리지만 대규모 메시지 요약들이 폭력적 충돌 및 도치 공격을 받을 때 좀 더 안전하게 지켜줄 수 있다.<ref>〈[http://www.dbguide.net/db.db?boardUid=145958&boardConfigUid=9&boardIdx=107 제3장 DBMS_CRYPTO]〉, 《데이터전문가지식포털》</ref> |
===SHA-2=== | ===SHA-2=== | ||
− | 미국 | + | [[미국 국립표준기술연구소]]는 2000년대에 들어 해시값의 길이가 더 긴 네 개의 변형 해시 알고리즘을 발표했다. 이를 통칭하여 '''[[SHA-2]]'''라 부른다.<ref>잡다구리, 〈[https://blog.naver.com/intel199/220230567604 SHA-256 – 복호화가 되지 않도록 하는 암호화 기법]〉, 《네이버 블로그》, 2015-01-05</ref> '''SHA-256''', '''SHA-384''', '''SHA-512'''는 2001년에 초안으로 처음 발표되었으며, 2004년 2월에 보안 수준을 3DES에 맞게 수정한 '''SHA-224'''와 함께 정식 표준(FIPS PUB 180-2)으로 공표되었다. SHA-256과 SHA-512는 각각 32바이트 및 64바이트 워드를 사용하는 해시 함수이며, 몇몇 상수들이 다르기는 하지만 그 구조는 라운드의 수를 제외하고는 완전하게 일치한다.<ref name="위키">위키백과 SHA - https://ko.wikipedia.org/wiki/SHA</ref> SHA-224와 SHA-384는 서로 다른 초깃값을 가지고 계산한 SHA-256과 SHA-512의 해싯값을 최종 해시값 길이에 맞춰 잘라낸 것이다.<ref>카이트, 〈[https://blog.naver.com/kites_/220582266882 SHA?]〉, 《네이버 블로그》, 2015-12-29</ref> |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
{{각주}} | {{각주}} | ||
36번째 줄: | 31번째 줄: | ||
== 같이 보기 == | == 같이 보기 == | ||
+ | * [[해시]] | ||
+ | * [[해시함수]] | ||
+ | * [[알고리즘]] | ||
+ | * [[SHA0]] | ||
+ | * [[SHA1]] | ||
+ | * [[SHA2]] | ||
* [[블록체인]] | * [[블록체인]] | ||
− | * [[ | + | * [[미국 국립표준기술연구소]](NIST) |
− | * [[ | + | * [[미국 국가안보국]](NSA) |
− | {{알고리즘| | + | {{암호 알고리즘|검토 필요}} |
2022년 12월 13일 (화) 00:51 기준 최신판
SHA(Secure Hash Algorithm)는 서로 관련된 암호학적 해시함수들의 모음이다.
개요[편집]
SHA-0은 미국 국립표준기술연구소(NIST)에서 1993년 발표되고 FIPS PUB 180으로 공표된 해시함수 알고리즘을 말한다. 이는 해시 알고리즘 중 하나인 MD4에 기반을 두고 있으며 MD5의 취약점을 개선하고 대체하기 위해 개발되었다.[1]
이후 1995년 미국 국가안보국(NSA)은 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[편집]
최초의 해시 함수 알고리즘은 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]
각주[편집]
- ↑ ppp7009, 〈Hash알고리즘.〉, 《네이버 블로그》, 2015-08-05
- ↑ 〈제3장 DBMS_CRYPTO〉, 《데이터전문가지식포털》
- ↑ 잡다구리, 〈SHA-256 – 복호화가 되지 않도록 하는 암호화 기법〉, 《네이버 블로그》, 2015-01-05
- ↑ 위키백과 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
같이 보기[편집]