[프로그래밍] SHA-1 이란 무엇인가?..🧐

에짱·2021년 9월 10일
3
post-custom-banner

파이어베이스 서비스를 사용해본 분이시라면 sha-1를 등록해야 된다는 문구를 많이 보셨을 텐데요..!!! 맨날 사용만 하다가 오늘은 이놈이 뭣하는 놈인지!! 파헤처 보도록 하겠습니당!!

SHA?

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가 개발되었습니다.

SHA-1

  • SHA-1은 SHA-0을 변형한 SHA 함수들 중 하나이며, 1995년 발표되었고 SHA 함수들 중 가장 많이 쓰이고 있습니다.
  • SHA-1은 임의의 길이의 입력데이터 (최대 2⁶⁴)를 160비트의 출력데이터(해시값)로 바꿉니다.
  • 로널드 라이베스트(Ronald Lorin Rivest)가 MD4 및 MD5 해시 함수에서 사용했던 것과 비슷한 방법을 사용합니다.
  • 위의 그림은 SHA-1 압축 함수가 블록 하나를 처리하는 과정입니다. 그림에서 A, B, C, D, E는 각각 32비트 내부 상태이고, F는 계속 변하는 비선형 함수이며, Kt는 상수입니다. 또한 n은 n비트만큼 왼쪽으로 회전하는 연산이고, 사각형 네개를 붙인 모양은 2³² 모듈로 덧셈을 나타냅니다. (참고한 글에서 가져온 부분인데 이 부분은 이해가 되지 않네요😓)

등장배경

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 용도

현재 발표된 SHA-1 알고리즘은 많은 인터넷 보안 프로토콜과 공개키 인증서에도 적용되고 있는 매우 중요한 암호 알고리즘입니다.

대표적으로 IP 패킷 단위로 데이터 변조 방지 및 은닉 기능을 제공하는 프로토콜인 IPSec, 안전한 전자메일 보안 표준인 SMIME, 단 대단 보안을 제공하는 TLS와 SSL, 전자우편을 암호화하고, 받은 우편의 암호를 해석해주는 프로그램인 PGP, 네트워크 보안 도구 중 하나인 시큐어셸(SSH) 등 인증서 기반의 많은 보안 프로토콜에서 암호 프리미티브로 사용되고 있다고 합니다.

SHA-1 예제

다음은 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

비교

MD5

SHA-1은 MD5보다 빠르고 더 높은 보안성을 가지고 있습니다. 보안성이 강하다고 하는 것은 두 가지를 의미하는데, 메시지 다이제스트(message digest) 된 값을 보고 이것에 해당하는 원본 메시지를 찾는 것이 어렵다는 것과 똑같은 메시지 다이제스트 값을 생성하는 2개의 서로 다른 메시지를 찾는 것이 어려운 것을 말한다고 합니다. 또한 SHA-1은 원본 메시지의 조그만 변화도 매우 급속하게 메시지 다이제스트에 변화를 전파합니다(눈사태 효과).

SHA-0(SHA)

SHA는 1993년에 미국표준기술연구소(NIST)가 제안해 미국의 연방정보처리표준규격(FIPS PUB 180)으로 발표되었습니다. 160비트의 해시값을 생성하며 일방향 해시함수라고 부릅니다. 일방향 해시 함수란 메시지를 해시값으로 변경하는 것은 가능하지만 해시값을 메시지로 변경하는 것이 불가능 한 것을 의미합니다.

SHA-2

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

profile
지금 여기. Here and Now
post-custom-banner

1개의 댓글

comment-user-thumbnail
2024년 4월 2일

좋은 글 감사합니다.

답글 달기