맨위로가기

SHA-1

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

SHA-1은 매사추세츠 공과대학교의 로날드 리베스트가 설계한 메시지 다이제스트 알고리즘으로, MD2, MD4, MD5의 원리를 기반으로 하지만 160비트의 더 큰 해시 값을 생성한다. 1993년 미국 정부 표준 기관인 NIST에 의해 SHA-0으로 처음 발표되었으나, NSA에 의해 수정되어 SHA-1으로 1995년에 재발표되었다. 2000년대 중반부터 SHA-1에 대한 다양한 공격 방법이 발표되면서 보안 취약성에 대한 우려가 커졌으며, 2010년까지 SHA-2로의 전환이 권고되었다. 2017년에는 실제 SHA-1 충돌을 일으키는 공격이 발표되었고, 주요 IT 기업들은 SHA-1 지원을 중단했다. 현재는 SHA-2와 SHA-3가 SHA-1을 대체하여 사용되고 있으며, SHA-1 사양은 2030년 12월 31일에 폐지될 예정이다. SHA-1은 TLS/SSL, PGP, SSH 등 다양한 보안 애플리케이션에 사용되었으며, Git과 같은 분산 버전 관리 시스템에서도 활용되었다.

더 읽어볼만한 페이지

  • 체크섬 알고리즘 - MD5
    MD5는 로널드 리베스트 교수가 개발한 128비트 해시 값 생성 암호화 해시 함수이나, 보안 취약점으로 인해 현재는 보안이 중요한 분야에서는 사용이 중단되었다.
  • 체크섬 알고리즘 - 범용 상품 부호
    범용 상품 부호(UPC)는 소매점에서 상품을 식별하기 위해 상품 포장에 인쇄되는 널리 사용되는 바코드의 일종으로, 12자리 숫자로 구성된 UPC-A를 포함한 다양한 변형이 존재한다.
  • 암호화 해시 함수 - RIPEMD
    RIPEMD는 MD4를 기반으로 1992년 설계된 암호화 해시 함수로, 보안 취약점 보완을 위해 RIPEMD-128, RIPEMD-160, RIPEMD-256, RIPEMD-320 등의 변형이 개발되었으며, 특히 RIPEMD-160은 160비트 해시 값을 생성하고 다양한 라이브러리에서 지원되지만 보안성 우려가 제기되고 있다.
  • 암호화 해시 함수 - MD5
    MD5는 로널드 리베스트 교수가 개발한 128비트 해시 값 생성 암호화 해시 함수이나, 보안 취약점으로 인해 현재는 보안이 중요한 분야에서는 사용이 중단되었다.
SHA-1
SHA-1
디자이너미국 국가안보국
발표일1993년 (SHA-0), 1995년 (SHA-1)
시리즈(SHA-0), SHA-1, SHA-2, SHA-3
기반해당 없음
파생해당 없음
관련해당 없음
인증FIPS PUB 180-4, CRYPTREC (모니터링)
속성
다이제스트 크기160비트
블록 크기512비트
구조메르클-다미고르 구조
라운드 수80
암호 분석마크 스티븐스의 2011년 공격은 260.3과 265.3 연산 사이의 복잡도의 해시 충돌을 일으킬 수 있음. 최초 공개 충돌은 2017년 2월 23일 게시됨. SHA-1은 길이 확장 공격에 취약함.

2. 역사

SHA-1은 매사추세츠 공과대학교로널드 리베스트MD4MD5와 같은 이전 해시 함수들의 설계를 바탕으로 만들었지만, 더 보수적인 설계를 채택했다.

1993년 NIST는 최초의 SHA-1 규격인 FIPS 180 "Secure Hash Standard"를 발표했으며, 이를 ''SHA-0''이라고도 한다. 그러나 SHA-0은 발표 직후 NSA에 의해 철회되었고, 1995년 FIPS PUB 180-1로 개정된 버전이 발표되었다. 이것이 바로 ''SHA-1''이며, SHA-0과 비교했을 때 압축 함수에서 비트 연산 중 하나인 회전(rotate) 연산이 추가된 것이 특징이다. NSA는 이 변경이 SHA-0의 보안 취약점을 개선했다고 발표했지만, 구체적인 증거나 추가 설명은 제공하지 않았다. 이후 SHA-0과 SHA-1 모두에서 보안 취약점이 지속적으로 보고되었다.

2. 1. 개발 배경

SHA-1은 MIT의 로날드 리베스트가 MD2, MD4, MD5 해시 함수의 원리를 기반으로 설계되었지만, 더 큰 해시 값(160비트)을 생성한다.

SHA-1은 미국 정부의 Capstone 프로젝트의 일환으로 개발되었다.[16] 1993년 미국 정부 표준 기관인 NIST(국립표준기술연구소)는 알고리즘의 원본 사양을 ''보안 해시 표준'', FIPS PUB 180으로 발표했다.[17][18] 이 초기 버전을 ''SHA-0''이라고 부르기도 한다. SHA-0은 발표 직후 NSA에 의해 철회되었고, 1995년 FIPS PUB 180-1로 수정된 버전이 발표되었는데, 이것이 ''SHA-1''이다. SHA-1은 SHA-0의 압축 함수에서 단일 비트 단위 회전을 추가하여 암호화 보안을 강화했다. NSA는 이것이 원래 알고리즘의 결함을 수정한 것이라고 밝혔지만, 자세한 설명은 제공하지 않았다.[19][20]

2. 2. SHA-1 폐지와 전환

2005년에 SHA-1에 대한 공격법이 발견되면서, 미래 사용에 대한 안전성 문제가 제기되었다[71]. 미국 국립표준기술연구소(NIST)는 2010년까지 미국 정부 조직에 SHA-1에서 SHA-2로 전환할 것을 요청했다[72]. SHA-2는 아직 유효한 공격이 보고되지 않았지만, SHA-1과 구조가 유사하다. 2012년에는 Keccak 알고리즘이 SHA-3으로 선정되었다[72].

2013년 11월, 마이크로소프트는 2017년까지 Microsoft Windows의 TLS/SSL에서 SHA-1 인증서를 허용하지 않겠다고 발표했다[73]. 2014년 9월, 구글도 2017년까지 구글 크롬에서 SHA-1 인증서를 허용하지 않겠다고 발표했다[74]. 모질라 역시 2017년까지 SHA-1 인증서 허용 중단을 검토했다[75][76][77].

일본 CRYPTREC는 2003년 초판에서 SHA-1을 권장 목록에 포함했으나, 2013년 개정에서 운용 감시 목록으로 변경했다[78]. 총무성 및 법무성은 정부 인증 기반 및 전자 인증 등기소에서 SHA-1 전자 증명서 검증을 2015년까지(특별한 경우 2019년까지) 종료하기로 했다[79].

이에 따라 SHA-1을 사용하는 웹사이트는 SHA-2로 전환해야 하며, SHA-2를 지원하지 않는 소프트웨어나 기기는 접속이 불가능해진다[80]. 특히 2009년 이전 휴대 전화는 일부를 제외하고 소프트웨어 업데이트가 없어 하드웨어 교체가 필요하다[81][82][83].

NIST는 2030년 12월 31일에 SHA-1 사양을 폐지할 예정이며, 이후 미국 정부는 SHA-1 사용 제품을 구매하지 않을 것이다[70].

3. 응용 분야

SHA-1은 TLS 및 SSL, PGP, SSH, S/MIME, IPsec 등 다양한 보안 애플리케이션 및 프로토콜에서 사용되었다.[21] 이러한 응용 프로그램들은 MD5도 사용할 수 있었으며, MD5와 SHA-1은 모두 MD4에서 파생되었다.

SHA-1과 SHA-2는 기밀 해제된 중요 정보 보호를 위해 다른 암호화 알고리즘 및 프로토콜 내에서 사용을 포함하여 특정 미국 정부 응용 프로그램에서 법적으로 사용이 요구되는 해시 알고리즘이었다. FIPS PUB 180-1은 민간 및 상업 조직에서도 SHA-1의 채택 및 사용을 권장했다. 그러나 SHA-1은 대부분의 정부 사용에서 폐지되고 있으며, 미국 국립표준기술연구소는 "연방 기관은 충돌 저항이 필요한 응용 프로그램에 대해 가능한 한 빨리 SHA-1 사용을 중단해야 하며, 2010년 이후 이러한 응용 프로그램에 대해 SHA-2 제품군의 해시 함수를 사용해야 한다"고 밝혔다.[21]

SHA 해시 함수는 SHACAL 블록 암호의 기반으로 사용되었다.

2005년에는 SHA-1에 대한 공격법이 발견되어 미래 사용에 충분한 안전성을 가지고 있지 않음이 시사되었다.[71] 미국 국립표준기술연구소(NIST)는 미국 정부 조직에 대해 2010년까지 SHA-1에서 SHA-2로 이전할 것을 요청했다.[72] 2013년 11월, 마이크로소프트는 2017년까지 Microsoft Windows의 TLS/SSL에서 SHA-1을 사용한 인증서를 더 이상 허용하지 않겠다고 발표했다.[73] 2014년 9월, 구글도 2017년까지 구글 크롬에서 SHA-1에 의한 인증서를 허용하지 않겠다고 발표했다.[74] 모질라 역시 2017년까지 SHA-1에 의한 인증서를 허용하지 않는 것을 검토하고 있다.[75][76][77]

일본에서도 CRYPTREC가 2003년 초판에서는 권장 목록에 SHA-1을 포함했으나, 2013년 개정에서 호환성 유지를 위한 사용으로 제한한 운용 감시 목록으로 변경했다.[78] 총무성 및 법무성에서는 정부 인증 기반 및 전자 인증 등기소(상업 등기 인증국)에서 SHA-1을 사용한 전자 증명서의 검증을 2015년도까지(특별한 사정이 있는 경우는 2019년도까지) 종료하기로 했다.[79]

SHA-1 해시는 Git, Mercurial, Monotone과 같은 분산 버전 관리 시스템에서도 버전 관리와 데이터의 손상 및 변조 감지에 사용되고 있다. 닌텐도Wii에서는 기동 시 SHA-1에 의한 서명을 검증하지만, 이를 회피하는 수법도 개발되어 있다.[85]

4. 암호 해독 및 유효성 검사

해시 함수에서 주어진 메시지 다이제스트(해시값)에 해당하는 원본 메시지를 찾는 것은 대략 2''L''번의 평가를 통해 무차별 대입 공격으로 가능하다. 이를 원상 공격이라고 부르며, ''L''(메시지 다이제스트의 비트 수)과 컴퓨팅 환경에 따라 현실적으로 가능할 수도, 불가능할 수도 있다.

생일 공격을 이용하면 평균적으로 1.2 x 2''L''/2 번의 평가만으로 동일한 메시지 다이제스트를 생성하는 두 개의 다른 메시지, 즉 ''충돌''을 찾을 수 있다. 따라서 해시 함수의 보안 수준은 일반적으로 메시지 다이제스트 길이의 절반인 대칭 암호와 비교된다. SHA-1은 160비트 메시지 다이제스트를 가지므로, 원래 80비트 강도를 갖는 것으로 여겨졌다.

암호화 해시를 사용하는 일부 응용 프로그램(예: 비밀번호 저장)은 충돌 공격에 큰 영향을 받지 않는다. 공격자가 특정 계정의 비밀번호를 알아내려면 사전 공격이 필요하며, 이 공격은 원본 비밀번호의 해시값에 접근해야 가능하다. 하지만 안전한 비밀번호 해시라도 약한 비밀번호에 대한 무차별 대입 공격은 막을 수 없다.

문서 서명의 경우, 공격자는 기존 문서의 서명을 위조할 수 없다. 대신 무해한 문서와 유해한 문서 한 쌍을 생성하고, 개인 키 소유자가 무해한 문서에 서명하도록 유도해야 한다. 2008년에는 MD5 충돌을 이용하여 위조된 SSL 인증서를 생성하는 것이 가능했다.[25]

모든 SHA 함수(SHA-3 제외)[26]는 알고리즘의 블록 및 반복 구조와 추가적인 최종 단계가 없기 때문에 길이 연장 공격 및 부분 메시지 충돌 공격에 취약하다.[27]

4. 1. 암호 해독 공격

SHA-1은 길이 확장 공격 및 부분 메시지 충돌 공격에 취약하다.[27] 이러한 공격으로 인해 키를 알지 못하고도 메시지를 확장하고 해시를 다시 계산하여 메시지를 변조할 수 있다.
SHA-0 공격

  • CRYPTO 98에서 프랑스 연구원 플로랑 샤보와 앙투안 주는 SHA-0에 대한 공격을 발표했는데, 충돌을 261의 복잡도로 찾을 수 있었다.[28]
  • 2004년, 비함과 첸은 SHA-0에 대한 근접 충돌을 발견했다.[29]
  • 2004년 8월, Joux, Carribault, Lemuet 및 Jalby에 의해 전체 SHA-0 알고리즘에 대한 충돌이 발표되었다. 충돌을 찾는 복잡성은 251이었다.[30][31]
  • 2005년 2월, 샤오윤 왕, 이윤 리사 인, 그리고 홍보 유에 의한 공격은 SHA-0에서 239 연산으로 충돌을 찾을 수 있었다.[32][33]

SHA-1 공격

  • 2005년 초, 빈센트 레이먼과 엘리자베스 오스왈드는 SHA-1의 축소 버전(53라운드)에 대한 공격을 발표하여 280 미만의 연산으로 충돌을 찾았다.[36]
  • 2005년 2월, 샤오윤 왕, 이퀸 리사 인, 훙보 유의 공격은 SHA-1 전체 버전에서 269 미만의 연산으로 충돌을 찾을 수 있다고 발표했다.[32]
  • 2005년 8월, 샤오윈 왕, 앤드루 야오, 프란시스 야오는 SHA-1에서 충돌을 찾는 데 필요한 복잡성을 263으로 낮춘 공격을 발표했다.[39]
  • 2017년 2월 23일, CWI와 구글은 ''SHAttered'' 공격을 발표했는데, 약 263.1번의 SHA-1 평가를 거쳐 동일한 SHA-1 해시를 가진 두 개의 서로 다른 PDF 파일을 생성했다.[2]
  • 2019년, 가에탕 르렌트와 토마 페린은 선택 접두사 충돌 공격에 대한 개선 사항을 발표하여 약 268번의 SHA-1 평가로 선택 접두사 충돌을 찾을 수 있게 되었다.[55]
  • 2020년 1월, "shambles"라고 불리는 개선된 공격이 발표되었으며, 263.4의 복잡성을 가진 선택 접두사 충돌 공격을 시연했다.[9]

4. 2. 공식 유효성 검사

모든 FIPS 승인 보안 기능의 구현은 국립표준기술연구소(NIST)와 통신보안청(CSE)이 공동으로 운영하는 암호 모듈 유효성 검사 프로그램(CMVP)을 통해 공식적으로 유효성을 검사받을 수 있다.[112] 비공식적인 확인을 위해, NIST 사이트에서 다수의 테스트 벡터를 생성하는 패키지를 다운로드할 수 있지만, 이 결과는 법적으로 요구되는 공식 CMVP 유효성 검사를 대체하지 않는다. 2013년 12월 기준으로, SHA-1의 유효성 검사를 받은 구현은 2000개가 넘으며, 그 중 14개는 비트 단위 메시지 길이가 8의 배수가 아닌 경우에도 처리할 수 있다.

5. 기술적 세부 사항

SHA-1은 로널드 리베스트가 MD2, MD4, MD5 등 메시지 다이제스트 알고리즘을 설계할 때 사용했던 원리와 유사하게 메시지 다이제스트를 생성한다. 다만, SHA-1은 더 큰 해시 값(128비트 대신 160비트)을 생성한다.[3]

SHA-1 알고리즘의 의사 코드는 다음과 같다.

''참고: 모든 변수는 부호 없는 32비트 양이며 계산 시 232를 모듈로로 감싼다. 단, ''ml'' (메시지 길이)은 64비트 양이며, ''hh'' (메시지 다이제스트)는 160비트 양이다.''

''변수 초기화:''

```

h0 = 0x67452301

h1 = 0xEFCDAB89

h2 = 0x98BADCFE

h3 = 0x10325476

h4 = 0xC3D2E1F0

```

''전처리:''

메시지에 비트 '1'을 추가하고, 0 ≤ k < 512 비트 '0'을 추가하여 ''비트'' 단위의 결과 메시지 길이가 합동 −64 ≡ 448 (mod 512)가 되도록 한다. 그리고 64비트 빅 엔디안 정수로 원본 메시지 길이인 ml을 추가한다.

''메시지를 연속적인 512비트 청크로 처리:''

메시지를 512비트 청크로 나누고, 각 청크를 16개의 32비트 빅 엔디안 단어 w[i](0 ≤ i ≤ 15)로 나눈다.

''메시지 스케줄: 16개의 32비트 단어를 80개의 32비트 단어로 확장:''

'''for''' i '''from''' 16 to 79

w[i] = (w[i-3] '''xor''' w[i-8] '''xor''' w[i-14] '''xor''' w[i-16]) '''왼쪽 회전''' 1

''이 청크에 대한 해시 값 초기화:''

a = h0

b = h1

c = h2

d = h3

e = h4

''메인 루프:''[56]

'''for''' i '''from''' 0 '''to''' 79

'''if''' 0 ≤ i ≤ 19 '''then'''

f = (b '''and''' c) '''or''' (('''not''' b) '''and''' d)

k = 0x5A827999

'''else if''' 20 ≤ i ≤ 39

f = b '''xor''' c '''xor''' d

k = 0x6ED9EBA1

'''else if''' 40 ≤ i ≤ 59

f = (b '''and''' c) '''or''' (b '''and''' d) '''or''' (c '''and''' d)

k = 0x8F1BBCDC

'''else if''' 60 ≤ i ≤ 79

f = b '''xor''' c '''xor''' d

k = 0xCA62C1D6

temp = (a '''leftrotate''' 5) + f + e + k + w[i]

e = d

d = c

c = b '''leftrotate''' 30

b = a

a = temp

''이 청크의 해시를 지금까지의 결과에 추가:''

h0 = h0 + a

h1 = h1 + b

h2 = h2 + c

h3 = h3 + d

h4 = h4 + e

''최종 해시 값을 160비트 숫자로 생성(빅 엔디안):''

hh = (h0 '''leftshift''' 128) '''or''' (h1 '''leftshift''' 96) '''or''' (h2 '''leftshift''' 64) '''or''' (h3 '''leftshift''' 32) '''or''' h4

`hh`는 메시지 다이제스트이며, 16진수로 표현될 수 있다.

알고리즘에 사용된 상수 값은 nothing up my sleeve number로 가정되었다.


  • 네 개의 라운드 상수 `k`는 2, 3, 5 및 10의 제곱근의 230배이다.
  • `h0`부터 `h3`까지의 처음 네 개의 시작 값은 MD5 알고리즘과 동일하며 다섯 번째 값(`h4`의 경우)은 유사하다.


다음은 빈 문자열과 "The quick brown fox jumps over the lazy dog" 문장에 대한 SHA-1 해시 값 예시이다.

입력값16진수 출력Base64 이진법을 ASCII 텍스트 인코딩으로 변환한 출력
""da39a3ee5e6b4b0d3255bfef95601890afd807092jmj7l5rSw0yVb/vlWAYkK/YBwk=
"The quick brown fox jumps over the lazy dog"2fd4e1c67a2d28fced849ee1bb76e7391b93eb12L9ThxnotKPzthJ7hu3bnORuT6xI=


5. 1. SHA-1 압축 함수

SHA-1 압축 함수의 1회 반복

  • A, B, C, D, E: 32비트 상태 워드
  • ''F'': 비선형 함수
  • 왼쪽 시프트
    ''n'': ''n''만큼 왼쪽 회전
  • ''n'': 연산마다 변화
  • Wt: 라운드 t에서의 확장 메시지 워드
  • Kt: 라운드 t에서의 상수
  • alt=⊞: modulo 232 덧셈


SHA-1은 MIT의 로널드 리베스트가 MD2, MD4, MD5 메시지 다이제스트 알고리즘을 설계할 때 사용했던 원리와 유사한 원리를 기반으로 메시지 다이제스트를 생성하지만, 더 큰 해시 값(128비트 대신 160비트)을 생성한다.

SHA-1 압축 함수는 5개의 32비트 워드(A, B, C, D, E)로 구성된 내부 상태를 사용하며, 80라운드에 걸쳐 연산을 수행한다. 각 라운드에서는 비선형 함수 F, 라운드 상수 K, 확장된 메시지 워드 W를 사용하여 내부 상태를 업데이트한다.

5. 2. 의사 코드

SHA-1 알고리즘의 의사 코드는 다음과 같다.

''참고 1: 모든 변수는 부호 없는 32비트 양이며 계산 시 232를 모듈로로 감쌉니다. 단,''

''ml (메시지 길이)은 64비트 양이며,''

''hh (메시지 다이제스트)는 160비트 양입니다.''

''참고 2: 이 의사 코드의 모든 상수는 빅 엔디안입니다.''

''각 단어 내에서 가장 중요한 바이트는 가장 왼쪽 바이트 위치에 저장됩니다.''

''변수 초기화:''

```

h0 = 0x67452301

h1 = 0xEFCDAB89

h2 = 0x98BADCFE

h3 = 0x10325476

h4 = 0xC3D2E1F0

```

ml = 비트 단위의 메시지 길이 (항상 문자 내 비트 수의 배수).

''전처리:''

메시지에 비트 '1'을 추가합니다(예: 메시지 길이가 8비트의 배수인 경우 0x80을 추가).

0 ≤ k < 512 비트 '0'을 추가하여 ''비트'' 단위의 결과 메시지 길이가

합동 −64 ≡ 448 (mod 512)가 되도록 합니다.

64비트 빅 엔디안 정수로 원본 메시지 길이인 ml을 추가합니다.

따라서 총 길이는 512비트의 배수입니다.

''메시지를 연속적인 512비트 청크로 처리합니다:''

메시지를 512비트 청크로 나눕니다.

'''for''' 각 청크

청크를 16개의 32비트 빅 엔디안 단어 w[i], 0 ≤ i ≤ 15로 나눕니다.

''메시지 스케줄: 16개의 32비트 단어를 80개의 32비트 단어로 확장합니다:''

'''for''' i '''from''' 16 to 79

''참고 3: SHA-0은 이 왼쪽 회전이 없다는 점에서 다릅니다.''

w[i] = (w[i-3] '''xor''' w[i-8] '''xor''' w[i-14] '''xor''' w[i-16]) '''왼쪽 회전''' 1

''이 청크에 대한 해시 값 초기화:''

a = h0

b = h1

c = h2

d = h3

e = h4

''메인 루프:''[3][56]

'''for''' i '''from''' 0 '''to''' 79

'''if''' 0 ≤ i ≤ 19 '''then'''

f = (b '''and''' c) '''or''' (('''not''' b) '''and''' d)

k = 0x5A827999

'''else if''' 20 ≤ i ≤ 39

f = b '''xor''' c '''xor''' d

k = 0x6ED9EBA1

'''else if''' 40 ≤ i ≤ 59

f = (b '''and''' c) '''or''' (b '''and''' d) '''or''' (c '''and''' d)

k = 0x8F1BBCDC

'''else if''' 60 ≤ i ≤ 79

f = b '''xor''' c '''xor''' d

k = 0xCA62C1D6

temp = (a '''leftrotate''' 5) + f + e + k + w[i]

e = d

d = c

c = b '''leftrotate''' 30

b = a

a = temp

''이 청크의 해시를 지금까지의 결과에 추가:''

h0 = h0 + a

h1 = h1 + b

h2 = h2 + c

h3 = h3 + d

h4 = h4 + e

''최종 해시 값을 160비트 숫자로 생성합니다(빅 엔디안):''

hh = (h0 '''leftshift''' 128) '''or''' (h1 '''leftshift''' 96) '''or''' (h2 '''leftshift''' 64) '''or''' (h3 '''leftshift''' 32) '''or''' h4

`hh`라는 숫자는 메시지 다이제스트이며, 16진수(16진법)로 쓸 수 있다.

알고리즘에 사용된 선택된 상수 값은 nothing up my sleeve number로 가정되었다.

  • 네 개의 라운드 상수 `k`는 2, 3, 5 및 10의 제곱근의 230배이다.
  • `h0`부터 `h3`까지의 처음 네 개의 시작 값은 MD5 알고리즘과 동일하며 다섯 번째 값(`h4`의 경우)은 유사하다.


원래 FIPS PUB 180-1의 공식을 사용하는 대신, 메인 루프에서 `f`를 계산하기 위해 다음과 같은 등가 표현식을 사용할 수 있다.

''c''와 ''d'' 사이의 비트 단위 선택, ''b''에 의해 제어됨.

(0 ≤ i ≤ 19): f = d '''xor''' (b '''and''' (c '''xor''' d)) ''(대안 1)''

''비트 단위 다수결 함수.''

(40 ≤ i ≤ 59): f = (b '''and''' c) '''or''' (d '''and''' (b '''or''' c)) ''(대안 1)''

5. 3. 해시 값 예시

빈 문자열의 SHA-1 해시 값은 다음과 같다.

입력값16진수 출력Base64 이진법을 ASCII 텍스트 인코딩으로 변환한 출력
""da39a3ee5e6b4b0d3255bfef95601890afd807092jmj7l5rSw0yVb/vlWAYkK/YBwk=



The quick brown fox jumps over the lazy dog의 SHA-1 해시 값은 다음과 같다.

입력값16진수 출력Base64 이진법을 ASCII 텍스트 인코딩으로 변환한 출력
"The quick brown fox jumps over the lazy dog"2fd4e1c67a2d28fced849ee1bb76e7391b93eb12L9ThxnotKPzthJ7hu3bnORuT6xI=


6. 구현체

암호화 라이브러리
Botan
Bouncy Castle
Cryptlib
Crypto++
Libgcrypt
Mbed TLS
Nettle
LibreSSL
OpenSSL
GnuTLS



하드웨어 가속은 다음의 프로세서 확장에 의해 제공된다.


  • 인텔 SHA 확장: 인텔 및 AMD x86 프로세서에서 이용 가능하다.
  • VIA PadLock

7. SHA 함수 비교

(비트)내부 상태 크기
(비트)블록 크기
(비트)라운드연산충돌 공격에 대한 보안
(비트)길이 확장 공격에 대한 보안
(비트)스카이레이크에서의 성능
(중간값 cpb)[58]최초 공개긴 메시지8바이트MD5 (참조용)12812851264AND, XOR, OR, ROT, Add (mod 232)≤ 18
(충돌 발견)[59]04.9955.001992SHA-016016051280AND, XOR, OR, ROT, Add (mod 232)< 34
(충돌 발견)0≈ SHA-1≈ SHA-11993SHA-1< 63
(충돌 발견)[60]3.4752.001995SHA-2SHA-224
SHA-256224
25625651264AND, XOR, OR, ROT, SHR, Add (mod 232)112
12832
07.62
7.6384.50
85.252004
2001SHA-384384512102480AND, XOR, OR, ROT, SHR, Add (mod 264)1921285.12135.752001SHA-5125122560[61]5.06135.502001SHA-512/224
SHA-512/256224
256112
128288
256≈ SHA-384≈ SHA-3842012SHA-3SHA3-224
SHA3-256
SHA3-384
SHA3-512224
256
384
51216001152
1088
832
57624[62]AND, XOR, ROT, NOT112
128
192
256448
512
768
10248.12
8.59
11.06
15.88154.25
155.50
164.00
164.002015SHAKE128
SHAKE256d (임의)
d (임의)1344
1088min(d/2, 128)
min(d/2, 256)256
5127.08
8.59155.25
155.50



암호학적 해시 함수 비교
알고리즘과 변형출력 길이
(비트)
내부 상태 길이
(비트)
블록 길이
(비트)
최대 메시지 길이
(비트)
라운드 수비트 연산보안 강도
(비트)
성능 예[115](MiB/s)
MD5128128512264 − 164And, Xor, Rot, Add (mod 232), Or<64(강력한 충돌)335
SHA-0160160512264 − 180And, Xor, Rot, Add (mod 232), Or<80(강력한 충돌)-
SHA-1160160512264 − 180<63
(충돌 발견[116])
192
SHA-2SHA-224
SHA-256
224
256
256512264 − 164And, Xor, Rot, Add (mod 232), Or, Shr112
128
139
SHA-384
SHA-512
SHA-512/224
SHA-512/256
384
512
224
256
51210242128 − 180And, Xor, Rot, Add (mod 264), Or, Shr192
256
112
128
154
SHA-3SHA3-224
SHA3-256
SHA3-384
SHA3-512
224
256
384
512
16001152
1088
832
576
제한 없음[117]24[118]And, Xor, Rot, Not112
128
192
256
-
SHAKE128
SHAKE256
d (가변 길이)
d (가변 길이)
1344
1088
d/2와 128 중 작은 값
d/2와 256 중 작은 값
-


참조

[1] 학위논문 Attacks on Hash Functions and Applications https://marc-stevens[...] 2012-06-19
[2] 학술대회 The First Collision for Full SHA-1 https://shattered.io[...] Springer Publishing 2017-02-23
[3] 웹사이트 Secure Hash Standard (SHS) https://nvlpubs.nist[...] National Institute of Standards and Technology 2019-09-23
[4] 웹사이트 Schneier on Security: Cryptanalysis of SHA-1 https://www.schneier[...] 2005-02-18
[5] 웹사이트 NIST.gov – Computer Security Division – Computer Security Resource Center http://csrc.nist.gov[...] 2019-01-05
[6] 웹사이트 SHA-1 Freestart Collision https://www.schneier[...] 2015-10-08
[7] 보도자료 NIST Retires SHA-1 Cryptographic Algorithm https://www.nist.gov[...] NIST 2022-12-15
[8] 웹사이트 Critical flaw demonstrated in common digital security algorithm https://www.ntu.edu.[...] 2020-01-24
[9] 웹사이트 SHA-1 is a Shambles First Chosen-Prefix Collision on SHA-1 and Application to the PGP Web of Trust https://eprint.iacr.[...] 2020-01-05
[10] 웹사이트 Microsoft to retire support for SHA1 certificates in the next 4 months https://arstechnica.[...] 2019-05-29
[11] 웹사이트 Google will drop SHA-1 encryption from Chrome by January 1, 2017 https://venturebeat.[...] 2019-05-29
[12] 웹사이트 The end of SHA-1 on the Public Web https://blog.mozilla[...] 2019-05-29
[13] 뉴스 CWI, Google announce first collision for Industry Security Standard SHA-1 https://phys.org/new[...] 2017-02-23
[14] 기술보고서 Recommendation for Key Management: Part 1 – General, Table 3. NIST 2020-05
[15] 웹사이트 SHA-1 Windows content to be retired August 3, 2020 https://techcommunit[...] 2024-02-28
[16] 웹사이트 RSA FAQ on Capstone http://x5.net/faqs/c[...]
[17] 서적 Proceedings of International Conference on Advances in Computing https://books.google[...] Springer Science & Business Media 2012
[18] 간행물 Secure Hash Standard, Federal Information Processing Standards Publication FIPS PUB 180 1993-05-11
[19] 웹사이트 Proposed Revision of Federal Information Processing Standard (FIPS) 180, Secure Hash Standard https://www.federalr[...] 1994-07-11
[20] 웹사이트 Where can I find a description of the SHA-0 hash algorithm? https://crypto.stack[...]
[21] 웹사이트 NIST Policy on Hash Functions – Hash Functions https://csrc.nist.go[...] 2023-08-27
[22] Youtube Tech Talk: Linus Torvalds on git https://www.youtube.[...] 2013-11-13
[23] 웹사이트 Re: Starting to think about sha-256? https://marc.info/?l[...] 2016-05-30
[24] 웹사이트 openpgp: Pass the hash algo's security reqs to Policy::signature https://gitlab.com/s[...] 2020
[25] 웹사이트 MD5 considered harmful today: Creating a rogue CA certificate http://www.win.tue.n[...] 2008-12-30
[26] 웹사이트 Strengths of Keccak – Design and security http://keccak.noekeo[...] Keccak team 2015-09-20
[27] 웹사이트 Schneier on Security: Cryptography Engineering https://www.schneier[...] 2023-08-27
[28] 서적 Advances in Cryptology – CRYPTO '98 Springer 1998-10-03
[29] 웹사이트 Near-Collisions of SHA-0 https://www.iacr.org[...]
[30] 웹사이트 Report from Crypto 2004 http://www.freedom-t[...] 2004-08-23
[31] 뉴스그룹 Re: Any advance news from the crypto rump session? 2004-08-18
[32] 웹사이트 SHA-1 Broken – Schneier on Security https://www.schneier[...]
[33] 웹사이트 Efficient Collision Search Attacks on SHA-0 http://www.infosec.s[...] 2005-09-10
[34] 학술대회 Collisions on SHA-0 in One Hour https://link.springe[...] 2008-02-11
[35] 웹사이트 NIST Brief Comments on Recent Cryptanalytic Attacks on Secure Hashing Functions and the Continued Security Provided by SHA-1 https://csrc.nist.go[...] 2022-03-16
[36] 논문 Update on SHA-1 http://eprint.iacr.o[...]
[37] 웹사이트 Collision Search Attacks on SHA1 http://theory.csail.[...] 2005-02-19
[38] 웹사이트 Fixing a hole in security https://www.zdnet.co[...]
[39] 웹사이트 New Cryptanalytic Results Against SHA-1 – Schneier on Security https://www.schneier[...]
[40] 논문 Notes on the Wang et al. 263 SHA-1 Differential Path http://eprint.iacr.o[...]
[41] 서적 Advances in Cryptology – ASIACRYPT 2006 2006-11-15
[42] 웹사이트 IAIK Krypto Group — Description of SHA-1 Collision Search Project https://web.archive.[...] 2009-06-30
[43] 웹사이트 Collisions for 72-step and 73-step SHA-1: Improvements in the Method of Characteristics http://eprint.iacr.o[...] 2010-07-24
[44] 웹사이트 SHA-1 Collision Search Graz https://web.archive.[...] 2009-06-30
[45] 웹사이트 heise online – IT-News, Nachrichten und Hintergründe http://www.heise-onl[...] 2023-08-27
[46] 웹사이트 Crypto 2006 Rump Schedule https://www.iacr.org[...]
[47] 웹사이트 Classification and Generation of Disturbance Vectors for Collision Attacks against SHA-1 http://eprint.iacr.o[...] 2011-05-19
[48] 논문 Classification and Generation of Disturbance Vectors for Collision Attacks against SHA-1
[49] 웹사이트 SHA-1 collisions now 2^52 http://eurocrypt2009[...]
[50] 논문 Differential Path for SHA-1 with complexity O(252) http://eprint.iacr.o[...]
[51] 웹사이트 Cryptanalysis of MD5 & SHA-1 http://2012.sharcs.o[...]
[52] 웹사이트 When Will We See Collisions for SHA-1? – Schneier on Security https://www.schneier[...]
[53] 웹사이트 Google Code Archive – Long-term storage for Google Code Project Hosting. https://code.google.[...]
[54] 웹사이트 The SHAppening: freestart collisions for SHA-1 https://sites.google[...] 2015-10-09
[55] 간행물 Advances in Cryptology – EUROCRYPT 2019 https://eprint.iacr.[...] Springer 2019
[56] 웹사이트 RFC 3174 - US Secure Hash Algorithm 1 (SHA1) (RFC3174) http://www.faqs.org/[...]
[57] 간행물 Improving the Performance of the Secure Hash Algorithm (SHA-1) https://www.intel.co[...] 2010-03-31
[58] 웹사이트 Measurements table http://bench.cr.yp.t[...]
[59] 간행물 Fast Collision Attack on MD5 https://eprint.iacr.[...] IACR
[60] 간행물 The first collision for full SHA-1 https://shattered.io[...] Google Research
[61] 문서
[62] 웹사이트 The Keccak sponge function family http://keccak.noekeo[...] 2016-01-27
[63] 문서
[64] 웹사이트 cr-marcstevens/sha1collisiondetection: Library and command line tool to detect SHA-1 collision in a file https://github.com/c[...] 2017
[65] 웹사이트 Git 2.13 has been released https://github.blog/[...] 2017-05-10
[66] 논문 hashclash - Framework for MD5 & SHA-1 Differential Path Construction and Chosen-Prefix Collisions for MD5 https://code.google.[...]
[67] 웹사이트 ShAttered https://shattered.io
[68] 웹사이트 シャーワン http://www.nttpc.co.[...] NTTPCコミュニケーションズ 2017-09-30
[69] 웹사이트 SHA-1とは https://e-words.jp/w[...] IT用語辞典 e-words 2022-06-29
[70] 웹사이트 NIST Retires SHA-1 Cryptographic Algorithm https://www.nist.gov[...]
[71] 웹사이트 Schneier on Security: Cryptanalysis of SHA-1 http://www.schneier.[...] 2005-02-18
[72] 웹사이트 Secure Hashing http://csrc.nist.gov[...] NIST 2014-01-01
[73] 웹사이트 SHA1 Deprecation Policy http://blogs.technet[...] Microsoft 2013-11-12
[74] 웹사이트 Intent to Deprecate: SHA-1 certificates https://groups.googl[...] Google 2014-09-03
[75] 웹사이트 Bug 942515 - stop accepting SHA-1-based SSL certificates with notBefore >= 2014-03-01 and notAfter >= 2017-01-01, or any SHA-1-based SSL certificates after 2017-01-01 https://bugzilla.moz[...] Mozilla 2014-09-04
[76] 웹사이트 CA:Problematic Practices - MozillaWiki https://wiki.mozilla[...] Mozilla 2014-09-09
[77] 웹사이트 Phasing Out Certificates with SHA-1 based Signature Algorithms https://blog.mozilla[...] Mozilla 2014-09-23
[78] 웹사이트 電子政府における調達のために参照すべき暗号のリスト(CRYPTREC暗号リスト) http://www.cryptrec.[...] 総務省及び経済産業省 2014-09-04
[79] 웹사이트 政府機関の情報システムにおいて使用されている暗号アルゴリズムSHA-1及びRSA1024に係る移行指針 http://www.nisc.go.j[...] 情報セキュリティ対策推進会議 2014-09-04
[80] 웹사이트 えきねっとの例 https://www.eki-net.[...]
[81] 웹사이트 サーバ証明書の切り替えによるドコモ ケータイへの影響について https://www.nttdocom[...] 2015-07-15
[82] 웹사이트 auケータイをご利用のお客さまへ、サーバ証明書切り替えによる影響について https://www.kddi.com[...]
[83] 웹사이트 SoftBank 3G(携帯電話)をご利用のお客さまへ サーバ証明書切り替えによる影響のご案内 http://www.softbank.[...] 2015-07-15
[84] 웹사이트 NIST's March 2006 Policy on Hash Functions http://csrc.nist.gov[...] NIST 2006-03-15
[85] 웹사이트 Debugmo.de "For verifying the hash (which is the only thing they verify in the signature), they have chosen to use a function (strncmp) which stops on the first nullbyte – with a positive result. Out of the 160 bits of the SHA1-hash, up to 152 bits are thrown away." http://debugmo.de/?p[...]
[86] 서적 Niels Ferguson, Bruce Schneier, and Tadayoshi Kohno, Cryptography Engineering John Wiley & Sons 2010
[87] 간행물 Cryptology ePrint Archive http://eprint.iacr.o[...]
[88] 웹사이트 Schneier on Security: New Cryptanalytic Results Against SHA-1 http://www.schneier.[...]
[89] 간행물 Notes on the Wang et al. $2^{63}$ SHA-1 Differential Path http://eprint.iacr.o[...]
[90] 논문 Finding SHA-1 Characteristics: General Results and Applications http://www.springerl[...] 2006-11-15
[91] 웹사이트 IAIK Krypto Group – Description of SHA-1 Collision Search Project http://www.iaik.tugr[...] 2009-06-30
[92] 웹사이트 Collisions for 72-step and 73-step SHA-1: Improvements in the Method of Characteristics http://eprint.iacr.o[...] 2010-07-24
[93] 웹사이트 SHA-1 Collision Search Graz http://boinc.iaik.tu[...] 2014-01-02
[94] 웹사이트 SHA-1 hash function under pressure – heise Security http://www.heise-onl[...]
[95] 웹사이트 Crypto 2006 Rump Schedule http://www.iacr.org/[...]
[96] 논문 Classification and Generation of Disturbance Vectors for Collision Attacks against SHA-1 http://eprint.iacr.o[...] 2011-05-19
[97] 논문 Classification and Generation of Disturbance Vectors for Collision Attacks against SHA-1 http://www.springerl[...] 2012-10-04
[98] 웹사이트 SHA-1 collisions now 2^52 http://eurocrypt2009[...]
[99] 간행물 International Association for Cryptologic Research http://eprint.iacr.o[...]
[100] 웹사이트 Cryptanalysis of MD5 & SHA-1 http://2012.sharcs.o[...]
[101] 웹사이트 When Will We See Collisions for SHA-1? http://www.schneier.[...]
[102] 웹사이트 HashClash - Framework for MD5 & SHA-1 Differential Path Construction and Chosen-Prefix Collisions for MD5 https://code.google.[...]
[103] 웹사이트 The SHAppening: freestart collisions for SHA-1 https://sites.google[...]
[104] 웹사이트 https://shattered.io/ https://shattered.io[...] 2017-02-26
[105] 뉴스 Announcing the first SHA1 collision Google Security Blog 2017-02-23
[106] 블로그 The end of SHA-1 on the Public Web https://blog.mozilla[...] Mozilla Security Blog 2017-02-23
[107] 문서 Differential Collisions in SHA-0 http://fchabaud.free[...]
[108] 블로그 Report from Crypto 2004 http://www.freedom-t[...]
[109] 블로그 SHA-1 Broken http://www.schneier.[...] Schneier on Security
[110] 문서 http://www.infosec.s[...] Shandong University
[111] 문서 http://csrc.nist.gov[...] National Institute of Standards and Technology
[112] 문서 SHS Validation List http://csrc.nist.gov[...]
[113] 문서 https://www.rfc-edit[...]
[114] 간행물 Improving the Performance of the Secure Hash Algorithm (SHA-1) http://software.inte[...] Intel 2014-01-01
[115] 웹사이트 Crypto++ 5.6.0 Benchmarks http://www.cryptopp.[...] 2014-01-01
[116] 웹사이트 Announcing the first SHA1 collision https://security.goo[...] 2017-02-23
[117] 웹사이트 The Sponge Functions Corner http://sponge.noekeo[...] 2016-01-28
[118] 웹사이트 The Keccak sponge function family http://keccak.noekeo[...] 2016-01-28
[119] 논문 Attacks on Hash Functions and Applications https://marc-stevens[...] 레이던 대학교 2012-06-19
[120] 콘퍼런스 The First Collision for Full SHA-1 https://shattered.io[...] Springer Publishing|Springer 2017-02-23
[121] 문서 https://nvlpubs.nist[...]
[122] 웹인용 Schneier on Security: Cryptanalysis of SHA-1 https://www.schneier[...] 2005-02-18
[123] 웹인용 NIST.gov – Computer Security Division – Computer Security Resource Center http://csrc.nist.gov[...] 2019-01-05
[124] 웹인용 The SHAppening: freestart collisions for SHA-1 https://sites.google[...] 2015-10-09
[125] 웹인용 SHA-1 Freestart Collision https://www.schneier[...] 2015-10-08
[126] 웹인용 Critical flaw demonstrated in common digital security algorithm https://www.ntu.edu.[...] 2020-01-24
[127] 저널 SHA-1 is a Shambles First Chosen-Prefix Collision on SHA-1 and Application to the PGP Web of Trust https://eprint.iacr.[...] 2020-01-05
[128] 웹인용 Microsoft to retire support for SHA1 certificates in the next 4 months https://arstechnica.[...] 2019-05-29
[129] 웹인용 Google will drop SHA-1 encryption from Chrome by January 1, 2017 https://venturebeat.[...] 2019-05-29
[130] 웹인용 The end of SHA-1 on the Public Web https://blog.mozilla[...] 2019-05-29
[131] 뉴스 CWI, Google announce first collision for Industry Security Standard SHA-1 https://phys.org/new[...] 2017-02-23
[132] 저널 Recommendation for Key Management: Part 1 – General, Table 3. 2020-05



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com