한국어

개발자 도구 · SHA 해시 계산기

SHA-0에서 SHA-3까지: NIST의 보안 해시 표준이 어떻게 발전했나요?

· 배경

샤-256 암호화 브라우저 API

20년의 진화를 보여주는 SHA-0부터 SHA-1, SHA-2 제품군 및 SHA-3까지의 타임라인
원본 ToolAcre 벡터 일러스트레이션

SHA-1, SHA-2 및 SHA-3는 출처가 다른 3세대입니다. 이 게시물에서는 철회된 SHA-0부터 Keccak 경쟁까지 보안 해시 표준을 추적하고 SHA-2가 여전히 지배적인 이유를 설명합니다.

숫자는 무엇을 의미하나요? — SHA-256은(는) SHA-2이지만 SHA-3(은)는 완전히 다른 이유입니다.

개발자는 SHA-1, SHA-256 및 SHA-3를 보고 선형 진행이라고 가정합니다. 그렇지 않습니다. 숫자는 상황에 따라 다른 의미를 가지며 제품군 내역을 이해하면 SHA-256이 새로운 애플리케이션에 적합한 선택인 이유, SHA-1가 널리 배포되었음에도 불구하고 레거시 전용인 이유, SHA-3가 진화가 아닌 별도의 설계인 이유를 알 수 있습니다.

NIST가 처음 보안 해시 함수를 게시했을 때 SHA라고 불렀고 나중에는 SHA-0라고 불렀습니다. 이 버전은 수명이 너무 짧아 대부분의 개발자가 들어본 적이 없습니다. SHA-0은(는) 공개적으로 공개되지 않은 불특정 결함으로 인해 몇 년 내에 철회되었습니다. 이번 철회는 조용히 이루어졌고, 뒤따른 알고리즘은 명명 혼란을 야기했습니다. SHA-0가 철회된 후 NIST는 20년 동안 표준이 된 SHA-1을 게시했습니다.

이 도구는 SHA-1 및 SHA-2을 다룹니다. 자세한 SHA-0 기록이 저장소 증거 외부에 있습니다.

SHA-1은 40 문자 16진수 출력을 생성하는 160비트 해시 함수입니다. 이는 압축 함수가 입력 블록을 블록별로 처리하여 상태를 전달하는 Merkle–Damgård 구성을 기반으로 합니다. 게시 당시 디자인은 건전했고 수년 동안 실질적인 공격이 없었습니다. 그러나 2005년에는 암호 분석의 획기적인 발전이 이루어졌습니다. Xiaoyun Wang이 이끄는 팀은 SHA-1에 대한 충돌 공격을 발표하여 무차별 접근 방식보다 훨씬 효율적인 기술을 사용하여 동일한 해시를 사용하는 두 개의 서로 다른 메시지를 찾는 것이 가능하다는 것을 보여주었습니다.

몇 년 후, 2017에서 SHAttered라는 팀은 GPU 클러스터를 사용하여 동일한 SHA-1 해시를 가진 두 개의 서로 다른 PDF 파일을 찾는 최초의 실제 충돌을 시연했습니다. 2020의 후속 논문에서는 더 위험한 변형인 선택 접두사 충돌이 합리적인 수준임을 보여주었습니다. SHA-1는 더 이상 단순히 약하지 않았습니다. 그것은 깨졌다. SHA-1 중단에 대한 응답은 SHA-224, SHA-256, SHA-384 및 SHA-512의 네 가지 기능 계열인 SHA-2을 도입하는 것이었습니다.

SHA-2 — 2000년대 초반 제품군(224, 256, 384, 512 및 이후 잘린 512/224 및 512/256) 동일한 구조로 제작됨

이 네 가지는 서로 다른 상태 크기와 서로 다른 블록 크기에서 작동하지만 SHA-1과 동일한 기본 구성을 사용합니다. SHA-2 계열은 SHA-1의 주요 중단이 발생하기 몇 년 전인 2001에 게시되었지만 SHA-1 붕괴가 구체화될 때까지 널리 채택되지 않았습니다. SHA-256는 256비트 해시를 생성하며 이제 새로운 애플리케이션의 표준 선택입니다. SHA-512은 512비트 해시를 생성하며 32비트 단어 대신 64비트 단어에서 작동하기 때문에 64비트 프로세서에서 더 빠른 경우가 많습니다.

SHA-2의 명명 규칙이 혼란의 원인입니다. 이 함수는 SHA-256, SHA-384 및 SHA-512라고 하며 모두 SHA-2 제품군의 일부입니다. 누군가 SHA-2라고 말하면 단일 알고리즘이 아니라 디자인 철학과 Merkle-Damgård 구성을 의미합니다. 이름의 숫자는 버전 구성표가 아닌 비트 단위의 출력 너비입니다. SHA-256은 SHA-1에 대한 업데이트가 아닙니다. 이는 동일한 프레임워크를 사용하지만 더 나은 보안 속성을 갖춘 현대적인 디자인입니다.

저장소 문서는 출처가 지정되지 않은 이론 기록을 재구성하지 않고 SHA-1 충돌을 시연했습니다.

SHA-1 및 SHA-2이 사용하는 Merkle–Damgård 구성 내에서 압축 함수는 입력을 블록별로 처리합니다. 상태는 한 블록에서 다음 블록으로 전달되고 최종 상태는 다이제스트로 출력됩니다. SHA-256 압축 기능은 32비트 작업과 256비트 상태를 사용하므로 512비트 블록을 처리합니다. SHA-512 압축 기능은 64비트 작업과 512비트 상태를 사용하므로 1024비트 블록을 처리합니다. 이러한 선택은 성능과 대역폭에 영향을 미칩니다. 64비트 산술은 최신 하드웨어에서 기본적으로 사용되므로 SHA-512이 더 빠른 경우가 많습니다.

새 시스템에 대한 SHA-256과 SHA-512 간의 결정은 일반적으로 보안보다는 성능 테스트와 공간 제약을 기반으로 합니다. 둘 다 2020년대 초 현재에도 여전히 안전하기 때문입니다. ToolAcre SHA 해시 계산기는 SHA-256, SHA-384 및 SHA-512를 제공하며, 독자가 다이제스트를 나란히 비교할 때 SHA-256(64 16진수 문자)와 SHA-512(128 16진수 문자) 사이의 4자 차이를 확인합니다.

SHA-3은(는) 지원되는 API 외부에 있습니다. 경쟁 기록은 저장소 증거에서 주장되지 않습니다.

SHA-1을 교체하려는 동기는 2000년대 초반에 명확해졌으므로 NIST는 SHA-3 선택 프로세스를 시작했습니다. NIST는 단독으로 대체품을 설계하는 대신 암호화 연구 커뮤니티에 경쟁의 장을 열었습니다. 목표는 Merkle-Damgård 구성과 근본적으로 다른 해시 함수를 선택하여 다양한 디자인에서 자신감을 얻는 것이었습니다. 여러 팀이 제안서를 제출했고, 수년에 걸쳐 대회에서 Keccak이 우승자로 선정되었습니다. Keccak은 이전에 표준에서 사용되지 않았던 해시 함수를 구축하는 다른 방식인 스펀지 구조였습니다.

SHA-3는 2015에서 완성된 Keccak의 NIST 표준화입니다. 알고리즘 계열인 SHA-2와 달리 SHA-3은(는) 여러 너비를 가지지만 일반적으로 단일 알고리즘이라고 합니다. SHA-3는 아직 널리 배포되지 않았지만 거의 10년 동안 표준으로 사용되었다는 점을 고려하면 놀라운 일입니다. 그 이유는 SHA-2가 손상되지 않았기 때문입니다. SHA-2에서 SHA-3로 업그레이드해야 할 긴급한 보안 이유는 없습니다. 브라우저의 Web Crypto API는 SHA-1 및 SHA-2를 구현하지만 SHA-3은 구현하지 않습니다. 이것이 바로 ToolAcre SHA 해시 계산기가 SHA-3을 제공하지 않는 이유입니다.

SHA-2는 도구 기본값으로 유지됩니다. 이 기사는 지원되지 않는 보편적 안전 주장을 피합니다

SHA-2이 여전히 어디에나 존재하는 이유는 해시 알고리즘 선택의 핵심 질문입니다. SHA-2에는 알려진 실제 충돌이 없습니다. 하드웨어 구현이 성숙되었습니다. 모든 프로그래밍 언어와 플랫폼이 이를 지원합니다. 시스템의 해시 알고리즘을 변경하는 것은 파괴적입니다. 확인을 위해 저장된 모든 해시를 마이그레이션하거나 유지해야 하며, 모든 통합 지점을 업데이트해야 하며, 새 알고리즘이 모든 다운스트림 시스템에서 작동하는지 확인하기 위해 테스트를 수행해야 합니다.

SHA-2이 여전히 안전한 시스템의 경우 이러한 중단은 정당화되지 않습니다. 새로운 시스템과 새로운 프로토콜의 경우 SHA-2이 합리적인 기본값입니다. ToolAcre SHA 해시 계산기는 SHA-256 및 SHA-512을 눈에 띄는 위치에 표시합니다. 이는 새 응용 프로그램에서 사용해야 하는 것이기 때문입니다. SHA-1은 레거시 전용으로 나열됩니다. SHA-384는 완전성과 특별히 필요한 사용 사례를 위해 표시됩니다.

여기서 다루지 않는 내용 — 자체 게시물을 올릴 가치가 있는 Keccak의 내부

해시 표준의 미래는 현재로서는 불분명합니다. SHA-3은 안전하고 성숙하며 SHA-2이 손상된 경우 대안을 제공합니다. 양자 컴퓨팅은 현재의 모든 해시 함수에 장기적인 위협을 가하지만 양자 저항 해시 함수 설계는 공개 연구 영역입니다. NIST에서는 양자 공격에 저항하기 위한 알고리즘을 선택하는 포스트 양자 암호화 대회가 진행 중이지만 공개 키 시스템에 비해 해시 함수는 해당 대회에서 우선 순위가 아닙니다.

2020년대 실제 애플리케이션의 경우 SHA-256는 "어떤 해시를 사용해야 합니까?"라는 질문에 대한 답변입니다. 무결성 검증, 콘텐츠 주소 지정 및 지문 채취의 경우 SHA-256이 표준입니다. 더 넓은 다이제스트가 필요한 시스템의 경우 일반적으로 64비트 하드웨어에서 SHA-512가 더 빠릅니다. SHA-384는 TLS 암호화 제품군 사양에서 가장 일반적입니다. SHA-1은 레거시 확인에만 사용됩니다. ToolAcre SHA 해시 계산기는 개발자가 결과를 볼 수 있도록 4가지 웹 암호화 알고리즘을 모두 제공합니다.

요점: 3세대, 하나의 성 — ToolAcre SHA 해시 계산기는 브라우저가 제공하는 SHA-1 및 SHA-2 알고리즘을 다룹니다.

SHA의 역사를 이해하면 숫자와 이름이 SHA가 수행하는 작업을 의미하는 이유와 1990년대와 2000년대의 선택이 오늘날에도 여전히 새로운 애플리케이션의 수행을 지시하는 이유가 명확해집니다. SHA-0은 조용히 철회되었고, SHA-1은 실제 공격으로 인해 손상되었으며, SHA-2은 여전히 ​​안전하며, SHA-3은 향후 견고성을 위해 선택된 대체 설계입니다. 새 코드는 범용 해싱을 위해 SHA-256를 사용해야 합니다. 레거시 시스템은 여전히 ​​SHA-1를 사용하며 이러한 시스템과의 상호 운용성을 위해서는 SHA-1 해시를 계산하는 기능이 필요합니다.

ToolAcre SHA 해시 계산기는 이러한 관점을 구현합니다. 기본값으로 SHA-256, 더 넓은 옵션으로 SHA-512, 특정 요구 사항에 대해 SHA-384, 레거시로 표시된 SHA-1을 제공합니다. 이는 개발자에게 정확한 도구와 정확한 라벨링을 제공합니다. 브라우저의 Web Crypto 구현은 이러한 알고리즘을 제공하며 ToolAcre는 사용자 정의 코드를 제공하는 대신 해당 구현을 직접 사용합니다. 이러한 선택은 수십 년간의 암호화 발전과 현재 실행 상태를 반영합니다.