파이어베이스 서비스를 사용해본 분이시라면 sha-1를 등록해야 된다는 문구를 많이 보셨을 텐데요..!!! 맨날 사용만 하다가 오늘은 이놈이 뭣하는 놈인지!! 파헤처 보도록 하겠습니당!!
SHA (Secure Hash Algorithm, 안전한 해시 알고리즘) 함수들은 암호학적 해시 함수들의 모음입니다. 이는 미국 국가안보국(NSA)이 1993년에 처음으로 설계했으며 미국 국가 표준으로 지정되었습니다.
SHA 함수군에 속하는 최초의 함수는 공식적으로 SHA라고 불리지만, 나중에 설계된 함수들과 구별하기 위하여 SHA-0이라고도 불립니다. 2년 후(1995) SHA-0를 변형한, 개정된 알고리즘인 SHA-1이 발표되었으며, 그 후에 4종류의 변형, SHA-224, SHA-256, SHA-384, SHA-512가 더 발표되었습니다. 이들을 통칭해서 SHA-2라고 하기도 합니다. 후에 나머지 SHA 함수들과 내부적으로 다른 SHA-3가 개발되었습니다.
1993년에 미국표준기술연구소(NIST)는 안전한 해시 표준인 SHA-0을 발표했습니다. 1995년, 미국의 국가안보국 NSA(National Security Agency)는 SHA-0을 폐기하고, FIPS PUB 180-1로 공표된 개정된 알고리즘인 SHA-1을 새로 출판했습니다. 미국표준기술연구소에 따르면 SHA-1은 SHA-0의 압축함수에 비트 회전 연산을 하나 추가한 것으로, 이는 원래 알고리즘에서 암호학적 보안을 감소시키는 문제점을 보완한 것이라고 합니다. 하지만 실제로 어떤 문제점이 있었는지는 공개하지 않았습니다. 일반적으로 SHA-1은 SHA-0보다 암호학적 공격이 힘든 것으로 알려져 있다고 합니다.
현재 발표된 SHA-1 알고리즘은 많은 인터넷 보안 프로토콜과 공개키 인증서에도 적용되고 있는 매우 중요한 암호 알고리즘입니다.
대표적으로 IP 패킷 단위로 데이터 변조 방지 및 은닉 기능을 제공하는 프로토콜인 IPSec, 안전한 전자메일 보안 표준인 SMIME, 단 대단 보안을 제공하는 TLS와 SSL, 전자우편을 암호화하고, 받은 우편의 암호를 해석해주는 프로그램인 PGP, 네트워크 보안 도구 중 하나인 시큐어셸(SSH) 등 인증서 기반의 많은 보안 프로토콜에서 암호 프리미티브로 사용되고 있다고 합니다.
다음은 SHA-1 해시값의 예제입니다.
SHA1("The quick brown fox jumps over the lazy dog")
= 2fd4e1c67a2d28fced849ee1bb76e7391b93eb12
해시값은 눈사태 효과 때문에 메시지가 조금만 바뀌어도 완전히 바뀔 수 있다고 합니다. 다음 예시는 위의 예제 끝에 마침표(.)를 찍은 것입니다.
SHA1("The quick brown fox jumps over the lazy dog.")
= 408d94384216f890ff7a0c3528e8bed1e0b01621
빈 문자열의 해시는 다음과 같습니다.
SHA1("") = da39a3ee5e6b4b0d3255bfef95601890afd80709
SHA-1은 MD5보다 빠르고 더 높은 보안성을 가지고 있습니다. 보안성이 강하다고 하는 것은 두 가지를 의미하는데, 메시지 다이제스트(message digest) 된 값을 보고 이것에 해당하는 원본 메시지를 찾는 것이 어렵다는 것과 똑같은 메시지 다이제스트 값을 생성하는 2개의 서로 다른 메시지를 찾는 것이 어려운 것을 말한다고 합니다. 또한 SHA-1은 원본 메시지의 조그만 변화도 매우 급속하게 메시지 다이제스트에 변화를 전파합니다(눈사태 효과).
SHA는 1993년에 미국표준기술연구소(NIST)가 제안해 미국의 연방정보처리표준규격(FIPS PUB 180)으로 발표되었습니다. 160비트의 해시값을 생성하며 일방향 해시함수라고 부릅니다. 일방향 해시 함수란 메시지를 해시값으로 변경하는 것은 가능하지만 해시값을 메시지로 변경하는 것이 불가능 한 것을 의미합니다.
SHA-1과 SHA-2는 원본 데이터로부터 해시가 생성되는 방법과 서명의 비트 길이가 다릅니다. SHA-1은 160비트 해시이지만 SHA-2는 다양한 길이로 제공됩니다.
현재는 모든 OS, 브라우저에서 SHA-1 알고리즘을 지원 중단하고 SHA-2 계열을 지원한다고 합니다. 채택된지 10년 만에, 처음으로 취약점이 제기된 것인데요. 따라서 2011년 1월 (NIST 문서 SP800-131A) SHA-2가 새로운 권장 해시 표준이 되었습니다. SHA-1의 취약점은 이론적인 이야기일 뿐이었지만 2016년에 암호화를 사용하는 세계의 주요 업체인 구글, 마이크로소프트 등에서 2018년 1월 1일까지 SHA-2로 전환을 의무화했습니다. 그 이유는 SHA-1은 160비트의 메세지 다이제스트를 생성하는데 무차별 대입 공격으로 동일한 해시를 만들 수 있는 취약점이 CWI암스테르담(CWI Amsterdam)과 구글의 공동 연구 끝에 제기되면서 SHA-1은 더 안전한 알고리즘이 아니며, 더는 사용되면 안된다고 판단했기 때문입니다. 2017년 중순에 구글에서 SHA-1 충돌 공격 성공을 발표함으로써 전 세계 대부분의 기업이 SHA-2로 전환을 완료했다고 합니다.
출처
https://ko.wikipedia.org/wiki/SHA
http://wiki.hash.kr/index.php/SHA1#cite_note-6
좋은 글 감사합니다.