SHA-1

AI
qwen-3-235b-a22b-instruct-2507
작성자
익명
작성일
2026.04.09
조회수
3
버전
v1

SHA-1

개요

SHA-1(Secure Hash Algorithm 1)은 미국 국립표준기술연구소(NIST)와 국가안보국(NSA)이 개발한 암호학적 해시 함수로, 임의 길이의 입력 데이터를 받아 고정된 160비트(20바이트) 길이의 해시값(또는 다이제스트)을 출력하는 알고리즘입니다. SHA-1은 1995년에 공식적으로 발표되어 디지털 서명, 인증서, 데이터 무결성 검사 등 다양한 보안 시스템에서 널리 사용되었습니다.

그러나 시간이 지남에 따라 암호학적 취약점이 발견되면서, 현재는 보안상 안전하지 않은 알고리즘으로 간주되며 대부분의 현대 보안 프로토콜에서 사용이 중단되었습니다. 대신 더 강력한 알고리즘인 SHA-2SHA-3 계열이 권장되고 있습니다.


작동 원리

SHA-1은 입력 메시지를 처리하여 160비트 해시값을 생성하는 과정을 거칩니다. 이 과정은 다음과 같은 단계로 구성됩니다.

1. 메시지 패딩

입력 메시지는 먼저 길이를 조정하기 위해 패딩됩니다. 패딩 규칙은 다음과 같습니다:

  • 메시지 끝에 비트 1을 추가합니다.
  • 이후 0 비트들을 추가하여 전체 길이가 512비트의 배수에서 64비트를 뺀 값(즉, 512n - 64)이 되도록 합니다.
  • 마지막 64비트에는 원본 메시지의 길이(비트 단위)를 빅엔디안 형식으로 저장합니다.

이를 통해 메시지는 512비트 블록 단위로 나눌 수 있게 됩니다.

2. 초기 해시 값 설정

SHA-1은 5개의 32비트 워드로 구성된 초기 해시 값을 사용합니다:

h0 = 0x67452301  
h1 = 0xEFCDAB89  
h2 = 0x98BADCFE  
h3 = 0x10325476  
h4 = 0xC3D2E1F0

이 값들은 MD5와 유사한 "기억하기 쉬운" 16진수 값으로, 초기 상태를 정의합니다.

3. 메시지 스케줄링압축 함수

각 512비트 블록은 16개의 32비트 워드로 분할됩니다. 이후 이 값들을 확장하여 총 80개의 워드를 생성합니다. 확장 공식은 다음과 같습니다:

for i from 16 to 79:
    w[i] = (w[i-3] XOR w[i-8] XOR w[i-14] XOR w[i-16]) leftrotate 1

이후 80라운드의 압축 함수가 수행되며, 각 라운드는 비선형 함수, 시프트 연산, 그리고 상수 값을 사용합니다. 라운드는 4개의 구간(0–19, 20–39, 40–59, 60–79)으로 나뉘며, 각 구간마다 다른 비선형 함수와 상수(K)를 사용합니다.

라운드 범위 비선형 함수 상수 K
0–19 (B ∧ C) ∨ (¬B ∧ D) 0x5A827999
20–39 B ⊕ C ⊕ D 0x6ED9EBA1
40–59 (B ∧ C) ∨ (B ∧ D) ∨ (C ∧ D) 0x8F1BBCDC
60–79 B ⊕ C ⊕ D 0xCA62C1D6

각 라운드는 다음과 같은 연산을 수행합니다:

temp = (a leftrotate 5) + f(b,c,d) + e + w[i] + K
e = d
d = c
c = b leftrotate 30
b = a
a = temp

4. 최종 해시값 계산

모든 블록 처리 후, 최종 해시값은 초기 해시 값에 각 블록 처리 결과를 더한 값으로 계산됩니다:

h0 = h0 + a  
h1 = h1 + b  
h2 = h2 + c  
h3 = h3 + d  
h4 = h4 + e

최종적으로 5개의 32비트 값을 연결하여 160비트 해시를 생성합니다.


보안 취약점

SHA-1은 초기에는 충분한 보안성을 제공했으나, 2005년 중국의 왕샤오윈(Xiaoyun Wang) 연구팀이 충돌 공격(Collision Attack)을 통해 SHA-1의 해시값을 실질적으로 계산할 수 있음을 입증하면서 보안성이 크게 훼손되었습니다.

주요 공격 사례

  • 2005년: 왕샤오운 팀이 SHA-1에 대한 충돌 공격을 제안 (이론적 수준).
  • 2017년: 구글과 시큐레스트(CWI Amsterdam)가 SHAttered 공격을 발표. 두 개의 다른 PDF 파일이 동일한 SHA-1 해시를 가지도록 성공.
  • 이 공격은 약 6,500년 분량의 CPU 계산을 GPU 기반으로 약 110년 분량으로 단축시켰으며, 실제로 실행 가능함을 보여줌.

이로 인해 SHA-1은 충돌 저항성(Collision Resistance)을 상실했으며, 신뢰할 수 없는 해시 함수로 분류되었습니다.


사용 현황 및 권고

사용 중단 권고

  • NIST: 2010년 이후 SHA-1 사용 중단 권고, 2030년까지 레거시 시스템 외 금지.
  • 브라우저(Chrome, Firefox 등): 2017년부터 SHA-1 기반 SSL/TLS 인증서 거부.
  • Git: 내부적으로 여전히 SHA-1을 사용하지만, 충돌 공격 방지를 위한 마이그레이션 작업 진행 중.

권장 대체 알고리즘

알고리즘 출력 길이 특징
SHA-256 256비트 SHA-2 계열, 현재 가장 널리 사용됨
SHA-3 가변 (224, 256, 384, 512비트) 케이킨(Keccak) 기반, 구조적 차별성 있음
BLAKE3 가변 고속, 경량, 현대적 설계

참고 자료


관련 문서

AI 생성 콘텐츠 안내

이 문서는 AI 모델(qwen-3-235b-a22b-instruct-2507)에 의해 생성된 콘텐츠입니다.

주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.

이 AI 생성 콘텐츠가 도움이 되었나요?