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

"SHA"의 두 판 사이의 차이

위키원
이동: 둘러보기, 검색
(SHA-2)
잔글 (SHA-2)
 
(사용자 3명의 중간 판 16개는 보이지 않습니다)
1번째 줄: 1번째 줄:
'''SHA'''(Secure Hash Algorithm)는 서로 관련된 [[암호학적 해시 함수]]들의 모음이다.
+
'''SHA'''(Secure Hash Algorithm)는 서로 관련된 암호학적 [[해시함수]]들의 모음이다.
  
 
==개요==
 
==개요==
[[SHA-0]]은 미국 [[국립표준기술연구소]](NIST)에서 1993년 발표되고 [[FIPS PUB 180]]으로 공표된 [[해시 함수 알고리즘]]을 말한다. 이는 해시 알고리즘 중 하나인 [[MD4]]에 기반을 두고 있으며 [[MD5]]의 취약점을 개선하고 대체하기 위해 개발되었다.<ref>ppp7009, 〈[https://blog.naver.com/ppp7009/220442027617 Hash알고리즘.]〉, 《네이버 블로그》, 2015-08-05</ref>
+
[[SHA-0]]은 [[미국 국립표준기술연구소]](NIST)에서 1993년 발표되고 [[FIPS PUB 180]]으로 공표된 [[해시함수]] [[알고리즘]]을 말한다. 이는 해시 알고리즘 중 하나인 [[MD4]]에 기반을 두고 있으며 [[MD5]]의 취약점을 개선하고 대체하기 위해 개발되었다.<ref>ppp7009, 〈[https://blog.naver.com/ppp7009/220442027617 Hash알고리즘.]〉, 《네이버 블로그》, 2015-08-05</ref>
  
이후 1995년 미국 [[국가안보국은]] [[SHA-1]]([[FIPS PUB 180-1]])을 발표했다. 이는 입력된 메시지를 512 비트 [[블록]] 단위로 처리하며, 160 비트의 출력값을 생성한다. 입력 메시지 길이 상한은 입력 메시지 길이 상한은 2⁶⁴이며 [[해시값]]의 길이는 160 비트이다. SHA-1은 SHA 함수군 중 가장 많이 쓰이며 [[TLS]], [[SSL]], [[PGP]], [[SSH]], [[IPSes]] 등 다양한 보안 [[프로토콜]]과 프로그램에서 사용되고 있다. 특히, SHA-1은 이전에 널리 사용되던 MD5를 대신하여 사용되기도 한다.  
+
이후 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개를 총칭한다.
+
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===
 +
[[파일:SHA 알고리즘 비교.PNG |썸네일|600픽셀|'''SHA''' 알고리즘 비교표]]
 
최초의 해시 함수 알고리즘은 1993년에 미국 국립표준기술연구소(NIST)가 발표한 [[안전한 해시 표준]](Secure Hsah Standard, SHS)으로 표준 FIPS PUB 180으로 공표되었다. 이것이 우리가 흔히 알고 있는 '''SHA-0'''이며 다른 함수들과 구별하기 위해 SHA-0이라 부르기 시작했다. 이는 해시 알고리즘 중 하나인 MD4 알고리즘에 기반을 두고 있으며, MD5의 취약성을 개선 및 대처하기 위해 설계되었다.
 
최초의 해시 함수 알고리즘은 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)을 발표했다. SHA-1는 SHA-0의 압축 함수 비트 회전 연산을 하나 추가한 것인데, 미국 국가안보국에 따르면 SHA-1은 기존의 알고리즘에서 암호학적 보안을 감소시키는 결함들을 수정한 것이라고 설명했지만 실제로 그 결함이 무엇인지는 공개하지 않았다. 일반적으로 SHA-1은 SHA-0과 비교해 암호학적 공격이 힘든 것으로 알려져 있는 것으로 보아 미국 국가안보국의 주장은 어느 정도 설득력이 있다고 볼 수 있다. SHA-1은 입력된 메시지를 512 비트 블록 단위로 처리하며, 160 비트의 해시값을 생성해낸다. 입력 메시지 길이 상한은 2⁶⁴이며 해시값의 길이는 160 비트, 즉 20 바이트이다.  
+
안전한 해시 표준이 발표되고 얼마 지나지 않아 [[미국 국가안보국]](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>
+
[[미국 국립표준기술연구소]]는 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>
 
 
 
 
[[파일:SHA비교 표.PNG |썸네일|800픽셀|가운데|'''SHA''' 함수들의 특성을 요약한 표]]
 
 
 
 
 
표에서 내부 상태는 데이터 블록 하나를 압촉한 뒤의 '내부적인 해시값'의 크기를 나타낸다. 추가적으로 SHA는 내부적으로 메시지 채움을 위해 데이터의 길이와 같은 추가적인 변수를 사용하는데, 길이 한계는 이때 사용되는 변수의 크기를 나타낸다.<ref name="위키"></ref>
 
  
 
{{각주}}
 
{{각주}}
36번째 줄: 31번째 줄:
  
 
== 같이 보기 ==
 
== 같이 보기 ==
 +
* [[해시]]
 +
* [[해시함수]]
 +
* [[알고리즘]]
 +
* [[SHA0]]
 +
* [[SHA1]]
 +
* [[SHA2]]
 
* [[블록체인]]
 
* [[블록체인]]
* [[SHA]]
+
* [[미국 국립표준기술연구소]](NIST)
* [[국립표준기술연구소]](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[편집]

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