"SHA512"의 두 판 사이의 차이
잔글 (→단점) |
|||
(사용자 4명의 중간 판 18개는 보이지 않습니다) | |||
1번째 줄: | 1번째 줄: | ||
− | '''[[해시]]'''(Hash)는 메세지의 오류나 변조를 쉽고 빠르게 탐지할 수 있다. 또한 [[데이터]]의 무결성을 제공하기 위해 사용된다. [[해시 함수]]는 크게 4가지의 특징을 가진다. 어떤 값을 입력하여도 항상 고정된 길이의 해시 값이 | + | '''[[해시]]'''<!--sha512, sha-512, 샤512, 샤-512, Secure Hash Algorithm 512, SecureHashAlgorithm512-->(Hash)는 메세지의 오류나 변조를 쉽고 빠르게 탐지할 수 있다. 또한 [[데이터]]의 무결성을 제공하기 위해 사용된다. [[해시 함수]]는 크게 4가지의 특징을 가진다. 어떤 값을 입력하여도 항상 고정된 길이의 해시 값이 출력된다. 그리고 작은 변경만으로도 완전히 다른 결과 값이 출력된다. 또한 출력된 결과 값을 토대로 입력 값의 유추가 불가능하다. 마지막으로 입력 값은 항상 동일한 해시 값이 출력된다. 이러한 해시의 종류에는 '''[[MD]]''' 알고리즘과 '''[[SHA]]''' [[알고리즘]]이 있다. SHA(Secure Hash Algorithm)알고리즘은 미국 [[NAS]]에 의해 만들어졌다.<ref>어미새와 아기새가 꿈꾸는 블록체인, 〈[https://withbabybird.tistory.com/6 해시함수의 특징 및 정의]〉, 《티스토리》, 2018-04-06</ref> |
== 개요 == | == 개요 == | ||
8번째 줄: | 8번째 줄: | ||
== 특징 == | == 특징 == | ||
+ | [[SHA-512]]는 국가안보국(NSA)이 설계한 [[암호 해시함수]]이다. [[SHA-512]]는 512비트(64바이트) [[해시 값]]을 생성하는데, 일반적으로 길이가 128자리인 16진수로 [[렌더링]]된다. 또한 PRNG의 출력이나 랜덤 [[패딩]]에 대해 가능한 많이 출력이 필요한 경우에 대해 강점을 갖고있다. 또한 [[SHA-512]]는 전체적인 진행과정 중 가장 처음으로 발생하는 것이 [[패딩]](Padding)과정이며, [[해시 함수]]의 연산을 진행하기 전에 [[파싱]](Parsing)이라는 과정을 거치고 진행된다.<ref name="SHA-2 특징">MOBILEFISH, "[https://www.mobilefish.com/services/hash_generator/hash_generator.php MD5, SHA1, SHA224, SHA256, SHA384, SHA512 and RIPEMD160 hash generator]", ''MOBILEFISH''</ref> | ||
+ | |||
=== 패딩 === | === 패딩 === | ||
SHA-512의 전체적인 진행과정 중 가장 처음으로 발생하는 것이 '''패딩'''(Padding)과정이다. 패딩은 100개의 공간에 문자 1개가 들어오면 나머지 99개의 공간을 숫자 0 등으로 메우는 작업이다. SHA-512는 1024 비트(bit)를 1개의 패딩 메시지로 형성한다.<ref name="티핀"></ref> 1개의 패딩 메시지는 입력으로 준 메시지와, 메시지의 끝, 0으로 된 패딩 값, 메시지의 길이와 같은 다양한 정보가 포함된다. | SHA-512의 전체적인 진행과정 중 가장 처음으로 발생하는 것이 '''패딩'''(Padding)과정이다. 패딩은 100개의 공간에 문자 1개가 들어오면 나머지 99개의 공간을 숫자 0 등으로 메우는 작업이다. SHA-512는 1024 비트(bit)를 1개의 패딩 메시지로 형성한다.<ref name="티핀"></ref> 1개의 패딩 메시지는 입력으로 준 메시지와, 메시지의 끝, 0으로 된 패딩 값, 메시지의 길이와 같은 다양한 정보가 포함된다. | ||
13번째 줄: | 15번째 줄: | ||
=== 파싱 === | === 파싱 === | ||
해시 함수의 연산을 진행하기 전에 '''파싱'''(Parsing)이라는 과정이 선행된다. 파싱은 컴퓨터에서 컴파일러 또는 번역기가 원시 부호를 기계어로 번역하는 과정의 한 단계로, 각 문장의 문법적인 구성 또는 구문을 분석하는 과정이다.<ref>한국정보통신기술협회 , 〈[https://terms.naver.com/entry.nhn?docId=2454969&cid=42346&categoryId=42346 파싱]〉, 《네이버 지식백과》</ref> SHA-512에서 패딩된 메시지의 파싱은 N개의 1024 비트(bit) 덩어리의 패딩 메시지가 존재한다.<ref name="티핀"></ref> | 해시 함수의 연산을 진행하기 전에 '''파싱'''(Parsing)이라는 과정이 선행된다. 파싱은 컴퓨터에서 컴파일러 또는 번역기가 원시 부호를 기계어로 번역하는 과정의 한 단계로, 각 문장의 문법적인 구성 또는 구문을 분석하는 과정이다.<ref>한국정보통신기술협회 , 〈[https://terms.naver.com/entry.nhn?docId=2454969&cid=42346&categoryId=42346 파싱]〉, 《네이버 지식백과》</ref> SHA-512에서 패딩된 메시지의 파싱은 N개의 1024 비트(bit) 덩어리의 패딩 메시지가 존재한다.<ref name="티핀"></ref> | ||
+ | |||
+ | === 특성 === | ||
+ | * '''해시값 크기''' : 512 | ||
+ | * '''내부 상태 크기''' : 512 | ||
+ | * '''블록 크기''' : 1024 | ||
+ | * '''길이 한계''' : 128 | ||
+ | * '''워드 크기''' : 64 | ||
+ | * '''과정 수''' : 80 | ||
+ | * '''사용되는 연산''' : +,and,or,xor,shr,rotr | ||
+ | * '''충돌 여부''' : 발견 안됨 | ||
+ | |||
+ | === SHA-256과의 차이점 === | ||
+ | * 블록의 크기는 1024비트로 변경 | ||
+ | * 초기 해시 값 및 라운드 상수는 64비트로 확장 | ||
+ | * 라운드(과정)는 62라운드가 아닌 80라운드로 변경 | ||
+ | * 메시지 스케줄 배열은 64개의 32비트 문자 대신 80개의 64비트의 문자를 갖게 된다 | ||
+ | * 메시지 스케줄 배열을 확장하기 위해 루프는 16개에서 63개로 확장시키는 것이 아니라 16개에서 79개로 확장 시킨다. | ||
+ | * 원형 상수는 처음 80개의 소수에 기초한다 2.409, | ||
+ | * 계산에 사용되는 단어 크기는 64비트이다. | ||
+ | * 메시지의 추가 길이 (전처리 전)는 비트 단위로 128비트 빅 엔디안 정수를 갖는다. | ||
+ | * 사용된 이동 및 회전 양이 다르다.<ref name="SHA-2 위키피디아">"[https://en.wikipedia.org/wiki/SHA-2 SHA-2]", ''Wikipedia''</ref> | ||
+ | |||
+ | === 단점 === | ||
+ | [[SHA-512]]로 서명 된 인증서는 Windows TLS 1.2에서는 작동하지 않는 점이 발견되었고,<ref>st.he.ag, "[https://social.technet.microsoft.com/Forums/office/en-US/857c6804-8ce1-4f09-b657-00554055da16/tls-12-and-sha512?forum=winserversecurity TLS 1.2 and SHA-512]", ''TechNet Microsoft'', 2014-04-16</ref> 길이 확장 공격에 대해 취약하며, SHA-256이 SHA-512보다 훨씬 빠르게 64개의 [[해시]]를 만들어낸다. 즉, 아직까지 [[SHA-512]]를 사용할 만큼의 문제점도 발견되지 않았다. 또한 현재에는 짧은 문자열(36 ~ 49 문자)이 사용되고 있고 긴 문자열(72 ~ 85 문자)에서도 큰 속도의 차이는 없기 때문에 상대적으로 속도적으로 느리며, 상대적으로 기술 비용이 많이 들어가는 [[SHA-512]]를 채택할 필요는 없다는 것이다. 하지만 64비트 [[CPU]]에서는 처리성능(속도)이 좋아지고, 현재는 64비트 [[CPU]]가 많이 사용되고 있고 성능도 좋아졌기 때문에 속도적인 측면에서의 단점은 어느 정도 해결이 되었지만, [[SHA-512]]의 특성상 결과 값이 512비트로만 나와서 용량(공간)을 너무 많이 차지한다는 단점이 있다.<ref name="SHA-384"> David Schwartz, "[https://stackoverflow.com/questions/10061532/why-chose-sha512-over-sha384 Why chose SHA512 over SHA384?]" , ''stackoverflow'', 2012-04-08</ref><ref name="SHA-2 속도">Lyudmil Latinov, "[https://automationrhapsody.com/md5-sha-1-sha-256-sha-512-speed-performance/ MD5, SHA-1, SHA-256 and SHA-512 speed performance]", ''Automation Rhapsody'', 2018-05-03</ref> | ||
{{각주}} | {{각주}} | ||
20번째 줄: | 46번째 줄: | ||
* 강일용 기자, 〈[http://news.donga.com/3/all/20170224/83053551/1 잇따른 구글의 보안 경고, 이번엔 https 기술 내부도 문제]〉, 《동아닷컴》, 2017-02-24 | * 강일용 기자, 〈[http://news.donga.com/3/all/20170224/83053551/1 잇따른 구글의 보안 경고, 이번엔 https 기술 내부도 문제]〉, 《동아닷컴》, 2017-02-24 | ||
* 티핀, 〈[https://blog.naver.com/tpinlab/10121774937 SHA-2(Secure Hash Algorithm 2) 알고리즘 분석하기 (이론 1편)]〉, 《네이버 블로그》, 2011-10-19 | * 티핀, 〈[https://blog.naver.com/tpinlab/10121774937 SHA-2(Secure Hash Algorithm 2) 알고리즘 분석하기 (이론 1편)]〉, 《네이버 블로그》, 2011-10-19 | ||
+ | *"[https://en.wikipedia.org/wiki/SHA-2 SHA-2]", ''Wikipedia'' | ||
+ | *MOBILEFISH, "[https://www.mobilefish.com/services/hash_generator/hash_generator.php MD5, SHA1, SHA224, SHA256, SHA384, SHA512 and RIPEMD160 hash generator]", ''MOBILEFISH'' | ||
+ | *st.he.ag, "[https://social.technet.microsoft.com/Forums/office/en-US/857c6804-8ce1-4f09-b657-00554055da16/tls-12-and-sha512?forum=winserversecurity TLS 1.2 and SHA-512]", ''TechNet Microsoft'', 2014-04-16 | ||
+ | *David Schwartz, "[https://stackoverflow.com/questions/10061532/why-chose-sha512-over-sha384 Why chose SHA512 over SHA384?]", ''stackoverflow'', 2012-04-08 | ||
+ | *Lyudmil Latinov, "[https://automationrhapsody.com/md5-sha-1-sha-256-sha-512-speed-performance/ MD5, SHA-1, SHA-256 and SHA-512 speed performance]", ''Automation Rhapsody'', 2018-05-03 | ||
== 같이 보기 == | == 같이 보기 == | ||
26번째 줄: | 57번째 줄: | ||
* [[국립표준기술연구소]](NIST) | * [[국립표준기술연구소]](NIST) | ||
− | {{알고리즘| | + | {{암호 알고리즘|검토 필요}} |
2023년 4월 21일 (금) 16:02 기준 최신판
해시(Hash)는 메세지의 오류나 변조를 쉽고 빠르게 탐지할 수 있다. 또한 데이터의 무결성을 제공하기 위해 사용된다. 해시 함수는 크게 4가지의 특징을 가진다. 어떤 값을 입력하여도 항상 고정된 길이의 해시 값이 출력된다. 그리고 작은 변경만으로도 완전히 다른 결과 값이 출력된다. 또한 출력된 결과 값을 토대로 입력 값의 유추가 불가능하다. 마지막으로 입력 값은 항상 동일한 해시 값이 출력된다. 이러한 해시의 종류에는 MD 알고리즘과 SHA 알고리즘이 있다. SHA(Secure Hash Algorithm)알고리즘은 미국 NAS에 의해 만들어졌다.[1]
개요[편집]
2001년에 미국 국가안보국은 SHA-2를 개발했으며 2002년에 표준으로 제정되었다. 해시 함수가 출력하는 압축된 문장을 다이제스트(Digest)라고 하는데, SHA-512는 SHA-2가 생성하는 다이제스트 출력 길이의 종류 중 하나이다. SHA-512는 46~80 라운드를 통과해야 공격으로부터 안전하다고 판단하며, 1024 비트(bit)를 1개의 패딩 메시지로 만든다.[2]
등장 배경[편집]
미국 국가안보국(NSA)은 1993년 서버와 클라이언트가 데이터를 주고 받을 때 혹시 모를 해킹을 방지하고자 통신 데이터를 암호화하는 기술인 SHA를 최초로 설계했다. 이후 인터넷 보안 표준으로 채택되어 널리 이용되었다.[3] 1995년 SHA-1이 발표되었지만 이론상으로 보안 취약점이 발견되어 이것을 대체하기 위한 계발이 이루어졌다. 이때 공개된것이 SHA-256, SHA-384, SHA-512이다.
특징[편집]
SHA-512는 국가안보국(NSA)이 설계한 암호 해시함수이다. SHA-512는 512비트(64바이트) 해시 값을 생성하는데, 일반적으로 길이가 128자리인 16진수로 렌더링된다. 또한 PRNG의 출력이나 랜덤 패딩에 대해 가능한 많이 출력이 필요한 경우에 대해 강점을 갖고있다. 또한 SHA-512는 전체적인 진행과정 중 가장 처음으로 발생하는 것이 패딩(Padding)과정이며, 해시 함수의 연산을 진행하기 전에 파싱(Parsing)이라는 과정을 거치고 진행된다.[4]
패딩[편집]
SHA-512의 전체적인 진행과정 중 가장 처음으로 발생하는 것이 패딩(Padding)과정이다. 패딩은 100개의 공간에 문자 1개가 들어오면 나머지 99개의 공간을 숫자 0 등으로 메우는 작업이다. SHA-512는 1024 비트(bit)를 1개의 패딩 메시지로 형성한다.[2] 1개의 패딩 메시지는 입력으로 준 메시지와, 메시지의 끝, 0으로 된 패딩 값, 메시지의 길이와 같은 다양한 정보가 포함된다.
파싱[편집]
해시 함수의 연산을 진행하기 전에 파싱(Parsing)이라는 과정이 선행된다. 파싱은 컴퓨터에서 컴파일러 또는 번역기가 원시 부호를 기계어로 번역하는 과정의 한 단계로, 각 문장의 문법적인 구성 또는 구문을 분석하는 과정이다.[5] SHA-512에서 패딩된 메시지의 파싱은 N개의 1024 비트(bit) 덩어리의 패딩 메시지가 존재한다.[2]
특성[편집]
- 해시값 크기 : 512
- 내부 상태 크기 : 512
- 블록 크기 : 1024
- 길이 한계 : 128
- 워드 크기 : 64
- 과정 수 : 80
- 사용되는 연산 : +,and,or,xor,shr,rotr
- 충돌 여부 : 발견 안됨
SHA-256과의 차이점[편집]
- 블록의 크기는 1024비트로 변경
- 초기 해시 값 및 라운드 상수는 64비트로 확장
- 라운드(과정)는 62라운드가 아닌 80라운드로 변경
- 메시지 스케줄 배열은 64개의 32비트 문자 대신 80개의 64비트의 문자를 갖게 된다
- 메시지 스케줄 배열을 확장하기 위해 루프는 16개에서 63개로 확장시키는 것이 아니라 16개에서 79개로 확장 시킨다.
- 원형 상수는 처음 80개의 소수에 기초한다 2.409,
- 계산에 사용되는 단어 크기는 64비트이다.
- 메시지의 추가 길이 (전처리 전)는 비트 단위로 128비트 빅 엔디안 정수를 갖는다.
- 사용된 이동 및 회전 양이 다르다.[6]
단점[편집]
SHA-512로 서명 된 인증서는 Windows TLS 1.2에서는 작동하지 않는 점이 발견되었고,[7] 길이 확장 공격에 대해 취약하며, SHA-256이 SHA-512보다 훨씬 빠르게 64개의 해시를 만들어낸다. 즉, 아직까지 SHA-512를 사용할 만큼의 문제점도 발견되지 않았다. 또한 현재에는 짧은 문자열(36 ~ 49 문자)이 사용되고 있고 긴 문자열(72 ~ 85 문자)에서도 큰 속도의 차이는 없기 때문에 상대적으로 속도적으로 느리며, 상대적으로 기술 비용이 많이 들어가는 SHA-512를 채택할 필요는 없다는 것이다. 하지만 64비트 CPU에서는 처리성능(속도)이 좋아지고, 현재는 64비트 CPU가 많이 사용되고 있고 성능도 좋아졌기 때문에 속도적인 측면에서의 단점은 어느 정도 해결이 되었지만, SHA-512의 특성상 결과 값이 512비트로만 나와서 용량(공간)을 너무 많이 차지한다는 단점이 있다.[8][9]
각주[편집]
- ↑ 어미새와 아기새가 꿈꾸는 블록체인, 〈해시함수의 특징 및 정의〉, 《티스토리》, 2018-04-06
- ↑ 2.0 2.1 2.2 티핀, 〈SHA-2(Secure Hash Algorithm 2) 알고리즘 분석하기 (이론 1편)〉, 《네이버 블로그》, 2011-10-19
- ↑ 강일용 기자, 〈잇따른 구글의 보안 경고, 이번엔 https 기술 내부도 문제〉, 《동아닷컴》, 2017-02-24
- ↑ MOBILEFISH, "MD5, SHA1, SHA224, SHA256, SHA384, SHA512 and RIPEMD160 hash generator", MOBILEFISH
- ↑ 한국정보통신기술협회 , 〈파싱〉, 《네이버 지식백과》
- ↑ "SHA-2", Wikipedia
- ↑ st.he.ag, "TLS 1.2 and SHA-512", TechNet Microsoft, 2014-04-16
- ↑ David Schwartz, "Why chose SHA512 over SHA384?" , stackoverflow, 2012-04-08
- ↑ Lyudmil Latinov, "MD5, SHA-1, SHA-256 and SHA-512 speed performance", Automation Rhapsody, 2018-05-03
참고자료[편집]
- 어미새와 아기새가 꿈꾸는 블록체인, 〈해시함수의 특징 및 정의〉, 《티스토리》, 2018-04-06
- 강일용 기자, 〈잇따른 구글의 보안 경고, 이번엔 https 기술 내부도 문제〉, 《동아닷컴》, 2017-02-24
- 티핀, 〈SHA-2(Secure Hash Algorithm 2) 알고리즘 분석하기 (이론 1편)〉, 《네이버 블로그》, 2011-10-19
- "SHA-2", Wikipedia
- MOBILEFISH, "MD5, SHA1, SHA224, SHA256, SHA384, SHA512 and RIPEMD160 hash generator", MOBILEFISH
- st.he.ag, "TLS 1.2 and SHA-512", TechNet Microsoft, 2014-04-16
- David Schwartz, "Why chose SHA512 over SHA384?", stackoverflow, 2012-04-08
- Lyudmil Latinov, "MD5, SHA-1, SHA-256 and SHA-512 speed performance", Automation Rhapsody, 2018-05-03
같이 보기[편집]