암호화 해시 함수
Cryptographic hash function시큐어 해시 알고리즘 | |
---|---|
개념 | |
해시 함수 · SHA · DSA | |
주요 규격 | |
SHA-0 · SHA-1 · SHA-2 · SHA-3 | |
암호화 해시 함수(CHF)는 임의의 크기(종종 메시지)의 데이터를 고정 크기(해시 값, 해시 또는 메시지 다이제스트)의 비트 배열에 매핑하는 수학적 알고리즘입니다.이는 단방향 함수,[1] 즉 계산을 반전 또는 반전시키는 것이 실질적으로 불가능한 함수입니다.이상적으로는 특정 해시를 생성하는 메시지를 찾는 유일한 방법은 가능한 입력의 브루트 포스 검색을 시도하여 일치 여부를 확인하거나 일치하는 해시의 무지개 테이블을 사용하는 것입니다.암호 해시 함수는 현대 암호학의 기본 도구입니다.
암호화 해시 함수는 결정론적이어야 합니다. 즉, 동일한 메시지가 항상 동일한 해시를 발생시킵니다.이상적으로는 다음 속성도 있어야 합니다.
- 특정 메시지에 대한 해시 값을 빠르게 계산할 수 있습니다.
- 지정된 해시 값을 생성하는 메시지를 생성하는 것은 불가능합니다(즉, 지정된 해시 값을 생성한 프로세스를 되돌리는 것).
- 동일한 해시 값을 가진 두 개의 다른 메시지를 찾는 것은 불가능합니다.
- 메시지에 대한 작은 변경은 새로운 해시 값이 이전 해시 값과 관련이 없는 것처럼 보일 정도로 광범위하게 해시 값을 변경해야 합니다(예:[2] 해시 효과).
암호화 해시 함수에는 디지털 서명, 메시지 인증 코드(MAC) 및 기타 형식의 인증 등 많은 정보 보안 애플리케이션이 있습니다.또한 일반적인 해시 함수, 해시 테이블의 데이터 인덱스, 지문 채취, 중복 데이터 감지 또는 파일 고유 식별, 우발적인 데이터 손상을 감지하는 체크섬으로 사용할 수 있습니다.실제로 정보보안 컨텍스트에서 암호화 해시 값은 (디지털) 핑거프린트, 체크섬 또는 단순한 해시 값이라고 불리기도 합니다.단, 이들 용어는 모두 속성과 목적이 [3]다소 다른 보다 일반적인 함수를 의미합니다.
특성.
대부분의 암호화 해시 함수는 임의의 길이의 문자열을 입력으로 사용하여 고정 길이의 해시 값을 생성하도록 설계되어 있습니다.
암호화 해시 함수는 알려진 모든 유형의 암호화 공격에 견딜 수 있어야 합니다.이론적인 암호학에서는 암호화 해시 함수의 보안 수준이 다음 속성을 사용하여 정의되어 있습니다.
- 사전 이미지 저항
- 해시 값 h를 지정하면 h = hash(m)인 메시지 m을 찾기 어려울 것입니다.이 개념은 단방향 함수의 개념과 관련이 있습니다.이 속성이 없는 함수는 프리이미지 공격에 취약합니다.
- 두 번째 사전 이미지 저항
- 입력1 m이 주어지면 hash(m1) = hash(m2)인 다른 입력2 m을 찾는 것은 어려울 것이다.이 성질을 약한 충돌 저항이라고 부르기도 합니다.이 속성이 없는 함수는 두 번째 프리이미지 공격에 취약합니다.
- 내충돌성
- hash(m1) = hash(m2)인 두 개의 다른 메시지1 m과 m을2 찾는 것은 어려울 것입니다.이러한 쌍을 암호 해시 충돌이라고 합니다.이 성질을 강한 충돌 저항이라고 부르기도 합니다.사전 이미지 저항의 2배 이상의 해시 값이 필요합니다.그렇지 않으면 생일 [4]공격에 의해 충돌이 발생할 수 있습니다.
충돌 저항은 두 번째 사전 이미지 저항을 의미하지만 사전 이미지 [5]저항을 의미하지는 않습니다.이론적인 암호화에서는 항상 약한 가정이 선호되지만 실제로는 두 번째 사전 이미지에 대한 내성이 있는 해시 함수는 안전하지 않은 것으로 간주되므로 실제 애플리케이션에는 권장되지 않습니다.
비공식적으로 이러한 속성은 악의적인 상대방이 다이제스트를 변경하지 않고 입력 데이터를 대체하거나 수정할 수 없음을 의미합니다.따라서 두 문자열의 다이제스트가 동일하면 동일하다고 확신할 수 있습니다.두 번째 사전 이미지 저항은 공격자가 제어할 수 없는 문서와 동일한 해시를 사용하여 문서를 조작하는 것을 방지합니다.충돌 내성을 통해 공격자는 동일한 해시를 사용하여 두 개의 개별 문서를 작성할 수 없습니다.
이러한 기준을 충족하는 함수는 여전히 바람직하지 않은 속성을 가질 수 있습니다.현재 일반적인 암호화 해시 함수는 길이 확장 공격에 취약합니다.지정된 해시(m) 및 len(m)은 m이 아닙니다.적절한 m'을 선택하면 공격자는 해시(m µm)를 계산할 수 있습니다.여기서 "는 [6]연결을 나타냅니다.이 속성을 사용하여 해시 함수를 기반으로 한 단순한 인증 체계를 해제할 수 있습니다.HMAC 구성은 이러한 문제를 해결합니다.
실제로 충돌 저항은 많은 실제 용도에 적합하지 않습니다.내충돌성과 더불어 상대방이 실질적으로 유사한 다이제스트를 가진 두 메시지를 찾거나 다이제스트만 주어진 데이터에 대한 유용한 정보를 추론하는 것은 불가능해야 합니다.특히 해시함수는 결정론적이고 효율적으로 계산할 수 있는 상태에서 랜덤함수(보안증명에서는 랜덤오라클)처럼 최대한 동작해야 합니다.이는 SWIFFT 함수와 같은 함수를 배제합니다.SWIFFT 함수는 이상적인 격자의 특정 문제가 계산상 어렵다고 가정할 때 충돌 방지 기능을 엄격하게 증명할 수 있지만 선형 함수로서는 이러한 추가 [7]속성을 충족하지 못합니다.
CRC32과 다른 순환 중복 검사 등 검사 합에 알고리즘들이 많은 약한 요건을 충족하고 일반적으로 암호화 해시 함수로 합당치 않도록 설계되고 있다.예를 들어, CRC메시지 무결성의 WEP암호화 기준지만 공격 쉽게 발견되는 것은 체크 섬의 직선성을 착취했다 사용되었다.
난이도
암호화 실제로," 어려운"일반적으로"거의 확실히 어떤 상대의 아는 만큼 오랫동안 체제를 깨는 것 것을 막아야 할 수는 시스템의 보안 중요한 것으로 간주한다"을 의미한다.용어의 의미 따라서 응용 프로그램에 노력은 보통 그들의 예상 이득에 비례한 악성 요원은 그 일에 설치할 수 있기 때문에 의존하고 있다.이후 필요한 노력은 보통 다이제스트 길이에 곱해그러나, 처리 파워 심지어 세포의 장점은 후자의 십여개의 비트를 추가함으로써 중화될 수 있다.
메시지를 메시지의 암호 또는 다른 짧은 메시지에 대한 제한,에서 선택한 예로, 그것은 세트에 있을 수 있는 모든 메시지를 전환하려는 의지가 해시 전도되는 실현 가능할 수 있다.왜냐하면 암호화 해시 기능 일반적으로 빠르게 계산하도록 설계되어 있다고 더욱 큰 컴퓨팅 자원을 필요로 하며 특별한 키 파생 기능 같은brute-force의 공격을 더 어렵고 개발되었다.
일부 이론적인 분석에서" 어려운""점근 다항 시간에 풀 수 있는지 않" 같은 특정 수학적 의미를 가진다.어려움 그러한 해석을 입증할 수 있게. 보안 암호화 해시 함수의 연구에서 하지만 주로 실용적인 안보에 강한 연결되어 있지 않는 것이 중요하고 있다.예를 들어,exponential-time 알고리즘 가끔 아직 충분히 실현 가능한 공격을 만들기 위해 빠를 수 있다.반대로, 다차 함수 시간 알고리즘(는n-digit 열쇠를n20 대책이 필요한 법 예를 들어,)은 너무 실용적인 용도로 느릴 수 있다.
일러스트
암호화 해시의 잠재적인 사용의 예증.는은 다음과 같다.앨리스는 밥 하는 것 같았고 그 해결이 있다고 주장한다 힘든 수학 문제를 제기한다.밥은 스스로 해 보지만 아직 앨리스가 엄포를 놓지 않은지 확인하고 싶다.따라서, 앨리스는 그녀의 해결책의 해시를 계산하고, 밥은 해시 값(반면 해결책은 비밀로)에게 쓴다.때 밥은 해결책 자신이 몇일 후를 내놓자, 앨리스는 그녀가 너무 일찍 밥과 그것이. 해시 값 그에게 전에 제공해 그것 해결하는 것 그것을 드러냄으로써 단순한 약속 계획(이것은, 예를 들면 해결책을 가지고 있었다;실제적 관행에 앨리스와 밥 가끔 전달된 컴퓨터 프로그램과 secr 증명할 수 있다.et는 주장된 퍼즐 솔루션보다 쉽게 조작되지 않을 것입니다.)
적용들
메시지 및 파일의 무결성 확인
시큐어 해시의 중요한 적용은 메시지 무결성 검증입니다.전송 전후로 계산된 메시지 다이제스트(메시지상의 해시 다이제스트)를 비교하면 메시지 또는 파일에 변경이 가해져 있는지 여부를 판단할 수 있습니다.
MD5, SHA-1 또는 SHA-2 해시 다이제스트가 웹 사이트 [8]또는 포럼에 게시되어 미러링 등의 파일 공유를 사용하여 검색된 파일을 포함하여 다운로드된 파일의 무결성을 확인할 수 있습니다.이 방법은 HTTPS에 의해 인증된 신뢰할 수 있는 사이트(일반적으로 원본 사이트)에 해시가 게시되는 한 신뢰 체인을 구축합니다.암호화 해시 및 신뢰 체인을 사용하면 파일에 대한 악의적인 변경을 탐지할 수 있습니다.의도적인 스푸핑은 충돌 코드 값을 가지도록 쉽게 조작할 수 있기 때문에 주기적인 용장성 검사와 같은 비암호화 오류 검출 코드는 파일의 악의 없는 변경만을 방지합니다.
시그니처 생성 및 검증
거의 모든 디지털 서명 방식에서는 메시지를 통해 암호화 해시를 계산해야 합니다.이것에 의해, 비교적 작은 정적 크기의 해시 다이제스트에 대해서 시그니처 계산을 실행할 수 있습니다.시그니처 검증에 성공했을 경우 시그니처와 메시지에 대한 해시 다이제스트를 재계산했을 경우 메시지는 인증된 것으로 간주됩니다.따라서 암호화 해시의 메시지 무결성 속성은 안전하고 효율적인 디지털 서명 방식을 작성하기 위해 사용됩니다.
비밀번호 확인
비밀번호 확인은 일반적으로 암호화 해시에 의존합니다.모든 사용자 비밀번호를 클리어 텍스트로 저장하면 비밀번호 파일이 손상되었을 때 보안에 중대한 위반이 발생할 수 있습니다.이 위험을 줄이는 한 가지 방법은 각 비밀번호의 해시 다이제스트만 저장하는 것입니다.사용자를 인증하기 위해 사용자가 제시한 패스워드가 해시되어 저장된 해시와의 비교가 이루어집니다.패스워드 해시를 실행할 때는 패스워드 리셋 방법이 필요합니다.저장된 해시 값에서는 원래 패스워드를 재계산할 수 없습니다.
표준 암호 해시 함수는 빠르게 계산되도록 설계되어 추측된 암호를 고속으로 시도할 수 있습니다.일반적인 그래픽 처리 장치에서는 초당 수십억 개의 가능한 암호를 시도할 수 있습니다.PBKDF2, 스크립트, Argon2 등 키 스트레칭을 실행하는 패스워드 해시 함수는 일반적으로 암호화 해시의 반복 호출을 사용하여 저장된 패스워드 해시 다이제스트에 대해 브루트 포스 공격을 실행하는 데 필요한 시간(및 경우에 따라서는 컴퓨터 메모리)을 늘립니다.패스워드 해시를 사용하려면 패스워드 해시와 함께 저장할 수 있는 큰 랜덤 비시크릿솔트 값을 사용해야 합니다.salt는 패스워드 해시의 출력을 랜덤화하므로 상대방이 패스워드 해시 다이제스트를 비교할 수 있는 패스워드 테이블과 미리 계산된 해시 값을 저장할 수 없습니다.
패스워드 해시함수의 출력은 암호키로도 사용할 수 있습니다.따라서 패스워드 해시는 Password-Based Key Derivation Function(PBKDF; 패스워드 기반 키 파생 함수)이라고도 합니다.
작업 증명서
작업 증명 시스템(또는 프로토콜 또는 기능)은 서비스 요청자에게 작업(일반적으로 컴퓨터에 의한 처리 시간)을 요구함으로써 네트워크상의 서비스 거부 공격 및 스팸과 같은 기타 서비스 남용을 방지하기 위한 경제적 수단입니다.이들 스킴의 주요 특징은 비대칭성입니다.요청자측에서는 작업이 적당히 어렵지만(그러나 실현 가능해야 하지만) 서비스 프로바이더를 확인하기 쉬워야 합니다.Bitcoin 마이닝과 Hashcash에서 사용되는 한 인기 있는 시스템은 작업이 완료되었음을 증명하기 위해 부분 해시 역전을 사용하고, Bitcoin에서 마이닝 보상을 잠금 해제하고, Hashcash에서 이메일을 보내기 위한 선의의 토큰으로 사용합니다.송신자는 해시 값이 0비트 수로 시작하는 메시지를 찾아야 합니다.유효한 메시지를 찾기 위해 송신자가 수행해야 하는 평균 작업은 해시 값에 필요한 0비트 수로 지수화되지만 수신자는 단일 해시 함수를 실행하여 메시지의 유효성을 확인할 수 있습니다.예를 들어 해시캐시에서는 160비트 SHA-1 해시값이 처음 20비트를 0으로 하는 헤더를 생성하도록 송신자에게 요구됩니다.송신자는, 유효한 헤더를 찾기 위해서, 평균 2 회 시도해야19 합니다.
파일 또는 데이터 식별자
메시지 다이제스트는 파일을 확실하게 식별하는 수단으로서도 기능할 수 있다.Git, Mercurial 및 Monotone을 포함한 여러 소스 코드 관리 시스템은 그것들을 고유하게 식별하기 위해 다양한 유형의 콘텐츠(파일 콘텐츠, 디렉토리 트리, 조상 정보 등)의 sha1sum을 사용한다.해시는 피어 투 피어 파일 공유 네트워크에서 파일을 식별하는 데 사용됩니다.예를 들어 ed2k 링크에서는 MD4 변수 해시가 파일사이즈와 조합되어 파일소스 검색, 파일 다운로드 및 내용 검증에 충분한 정보를 제공합니다.자석 링크도 다른 예입니다.이러한 파일 해시는 종종 해시 목록 또는 해시 트리의 상위 해시이므로 추가적인 이점이 있습니다.
해시 함수의 주요 응용 프로그램 중 하나는 해시 테이블 내의 데이터를 빠르게 검색할 수 있도록 하는 것입니다.특정 종류의 해시함수이기 때문에 암호화 해시함수는 이 어플리케이션에도 적합합니다.
그러나 표준 해시 함수에 비해 암호화 해시 함수는 계산 비용이 훨씬 더 많이 드는 경향이 있습니다.이 때문에, 유저가 악의 있는 참가자에 의한 위조(예상 데이터와 같은 다이제스트의 데이터의 작성)의 가능성으로부터 자신을 보호할 필요가 있는 상황에서 사용되는 경향이 있습니다.
블록 암호를 기반으로 한 해시 함수
블록 암호를 사용하여 암호화 해시 함수, 특히 단방향 압축 함수를 구축하는 방법은 여러 가지가 있습니다.
방식은 보통 암호화에 사용되는 블록 암호 모드와 유사합니다.MD4, MD5, SHA-1 및 SHA-2를 포함한 많은 유명한 해시 함수는 그 목적에 맞게 설계된 블록 암호와 같은 컴포넌트로 구축되며, 결과적으로 함수가 반전되지 않도록 하기 위한 피드백이 제공됩니다.SHA-3 최종 후보에는 블록 암호와 유사한 구성요소(예: Skin, BLAKE)가 포함된 기능이 포함되었지만, 최종적으로 선택된 기능인 Keccak은 암호화 스폰지 위에 구축되었습니다.
이러한 커스텀 블록 암호 대신 AES 등의 표준 블록 암호를 사용할 수 있습니다.이는 임베디드 시스템이 최소한의 코드 크기 또는 하드웨어 영역으로 암호화와 해시를 모두 구현해야 하는 경우에 유용합니다.그러나 이러한 접근 방식에는 효율성과 보안에 비용이 소요될 수 있습니다.해시함수의 암호는 해시를 위해 구축되어 있습니다.이 암호는 큰 키와 블록을 사용하며 블록마다 키를 효율적으로 변경할 수 있으며 관련 키 공격에 대한 내성을 위해 설계 및 검증되었습니다.범용 암호는 설계 목표가 다른 경향이 있습니다.특히 AES에는 긴 해시 값을 생성하기 위한 중요한 키와 블록 크기가 있습니다.AES 암호화는 키가 각 블록을 변경하면 효율이 떨어집니다.또한 관련 키 공격에 의해 해시 함수로 사용할 경우 암호화보다 안전성이 저하될 수 있습니다.
해시함수 설계
메르클 담고드 건설
해시 함수는 임의의 길이의 메시지를 고정 길이의 출력으로 처리할 수 있어야 합니다.이는 입력을 동일한 크기의 일련의 블록으로 분할하고 단방향 압축 기능을 사용하여 순차적으로 작동함으로써 달성할 수 있습니다.압축 기능은 해시를 위해 특별히 설계되거나 블록 암호로 구축될 수 있습니다.Merkle-Damgörd 구조로 구축된 해시 함수는 압축 함수만큼 충돌에 대한 내성이 있습니다. 풀 해시 함수에 대한 충돌은 압축 함수의 충돌로 추적할 수 있습니다.
마지막으로 처리된 블록도 명확하게 길이 패딩해야 합니다.이것은 이 구성의 보안에 매우 중요합니다.이 건축물은 메르클-담고드 건축이라고 불립니다.SHA-1 및 MD5를 포함한 대부분의 일반적인 해시 함수는 이 형식을 취합니다.
광파이프 대 협파이프
해시 출력의 크기가 내부 상태 크기(각 압축 단계 사이)와 동일한 Merkle-Damgörd 구조를 쉽게 적용하면 좁은 파이프 해시 설계가 됩니다.이 설계에서는 길이 확장, 다중 충돌, [9]긴 메시지 공격,[10] 생성 및 붙여넣기 [citation needed]공격 등 많은 고유한 결함이 발생하며 병렬화할 수 없습니다.그 결과, 현대 해시 함수는 Merkle-Damgörd 건설의[9] 조정에서 스폰지 건설 및 HAIFA [11]건설과 같은 새로운 건설에 이르기까지 내부 상태 크기가 더 큰 와이드 파이프 구조 위에 구축됩니다.NIST 해시 함수 경쟁에 참가한 참가자들 중 고전적인 Merkle-Damgörd [12]구조를 사용하는 참가자는 없다.
한편, SHA-512/256 에서 사용되고 있는 등, 긴 해시의 출력을 잘라내도,[13] 이러한 공격의 대부분은 무효가 됩니다.
다른 암호화 프리미티브 구축에 사용
해시 함수를 사용하여 다른 암호화 프리미티브를 구축할 수 있습니다.이러한 다른 프리미티브가 암호화로 안전해지려면 올바르게 빌드하도록 주의를 기울여야 합니다.
Message Authentication Code(MAC; 메시지 인증 코드)(키 해시 함수라고도 불립니다)는, 많은 경우, 해시 함수로부터 구축됩니다.HMAC는 그런 MAC입니다.
블록 암호를 사용하여 해시 함수를 구축할 수 있듯이, 해시 함수를 사용하여 블록 암호를 구축할 수 있습니다.기본 해시 함수가 안전한 경우 해시 함수를 사용하는 Luby-Rackoff 구조는 입증할 수 있는 안전성이 있습니다.또한 많은 해시 함수(SHA-1 및 SHA-2 포함)는 Davies의 특수 목적 블록 암호를 사용하여 구축됩니다.- 마이어 또는 기타 공사.이 암호는 SHACAL, BEAR, LION 등 동일한 보안 보장 없이 기존 운영 모드에서도 사용할 수 있습니다.
Pseudorandom Number Generator(PRNG; 유사랜덤 번호 생성기)는 해시 함수를 사용하여 구축할 수 있습니다.이것은 (비밀) 랜덤 시드를 카운터와 결합하여 해시를 통해 이루어집니다.
Skin, Kecak, RadioGatun 등의 해시 함수는 임의로 긴 스트림을 출력하여 스트림 암호로 사용할 수 있으며 스트림 암호는 고정 길이의 다이제스트 해시 함수에서 구축할 수도 있습니다.대부분의 경우 이는 암호화로 보호된 의사난수 생성기를 먼저 구축한 후 랜덤바이트 스트림을 키스트림으로 사용하여 이루어집니다.SEAL은 내부 테이블을 생성하기 위해 SHA-1을 사용하는 스트림 암호입니다.이 테이블은 해시 알고리즘과 거의 무관한 키스트림 생성기에서 사용됩니다.SEAL은 SHA-1만큼 강하거나 약한 것은 보증하지 않습니다.마찬가지로 HC-128 및 HC-256 스트림 암호의 키 확장에서는 SHA-256 해시 함수가 많이 사용됩니다.
연결
복수의 해시함수로부터의 출력을 연결함으로써 연결결과에 [citation needed]포함되는 알고리즘 중 가장 강력한 만큼 충돌저항을 얻을 수 있다.예를 들어 이전 버전의 Transport Layer Security(TLS) 및 Secure Sockets Layer(SSL)에서는 MD5와 SHA-1의 [14][15]합계가 사용되었습니다.이렇게 하면 해시 함수 중 하나에서 충돌을 찾는 메서드가 두 해시 [citation needed]함수에 의해 보호되는 데이터를 손상시키지 않습니다.
Merkle-Damgörd 건설 해시 함수의 경우, 연결된 함수는 가장 강력한 성분만큼 충돌에 대한 내성이 있지만 충돌에 [citation needed]대한 내성은 더 높지 않습니다.Antoine Joux는 2-충돌은 n-충돌로 이어진다고 관찰했습니다. 공격자가 동일한 MD5 해시를 가진 두 개의 메시지를 찾을 수 있다면 원하는 만큼 많은 메시지를 [16]쉽게 찾을 수 있습니다.MD5 해시가 같은n개의 메시지 중 SHA-1에서 충돌이 발생할 가능성이 있습니다.SHA-1 충돌을 찾기 위해 필요한 추가 작업(지수 생일 검색 이후)은 다항식 [17][18]시간만 필요로 한다.
암호화 해시 알고리즘
많은 암호화 해시 알고리즘이 있습니다.이 섹션에서는 비교적 자주 참조되는 알고리즘을 몇 가지 나열합니다.암호화 해시 함수의 비교가 포함된 페이지에서 보다 광범위한 목록을 찾을 수 있습니다.
MD5
MD5는 Ronald Rivest에 의해 1991년에 설계되어 이전의 해시함수인 MD4를 대체하고 1992년에 RFC 1321로 지정되었습니다.MD5와의 충돌은 몇 초 안에 계산할 수 있으므로 암호화 해시가 필요한 대부분의 사용 사례에 적합하지 않습니다.MD5는 128비트(16바이트)의 다이제스트를 생성합니다.
SHA-1
SHA-1은 미국 정부의 캡스톤 프로젝트의 일환으로 개발되었다.현재 일반적으로 SHA-0이라고 불리는 알고리즘의 원래 사양은 1993년 미국 정부 표준 기관 NIST(National Institute of Standards and Technology)에 의해 Secure Hash Standard, FIPS PUB 180이라는 제목으로 발표되었습니다.NSA에 의해 발행 직후 철회되어 1995년 FIPS PUB 180-1에서 발행된 개정판 및 일반적으로 SHA-1로 명명된 개정판으로 대체되었다. 완전한 SHA-1 알고리즘에 대한 충돌은 산산조각난 공격을 사용하여 생성할 수 있으며 해시 함수는 손상된 것으로 간주해야 한다.SHA-1은 160비트(20바이트)의 해시 다이제스트를 생성합니다.
SHA-0, SHA-2, SHA-3 등의 다른 Secure Hash Algorithm과 경합하는 경우도 있습니다만, 문서에서는 SHA-1을 단순한 「SHA」라고 부르고 있는 경우가 있습니다.
RIPEMD-160
RIPMD(RACE Integrity Primitives Evaluation Message Digest)는 벨기에 루벤에서 Katholieke University Leuven의 COSIC 연구 그룹에서 Hans Dobbertin, Antoon Bosselaers 및 Bart Prenel에 의해 개발된 암호화 해시 함수 패밀리이며 1996년에 처음 공개되었습니다.RIPEMD는 MD4에서 사용되는 설계 원리에 기반하여 성능이 더 일반적인 SHA-1과 유사하지만 RIPEMD-160은 고장나지 않았습니다.이름에서 알 수 있듯이 RIPEMD-160은 160비트(20바이트)의 해시 다이제스트를 생성합니다.
소용돌이
Wolpool은 2000년에 처음 기술한 Vincent Rijmen과 Paulo S. L. M. Barreto에 의해 설계된 암호화 해시 함수입니다.월풀은 AES(Advanced Encryption Standard)의 대폭 수정된 버전을 기반으로 합니다.월풀은 512비트(64바이트)의 해시 다이제스트를 생성합니다.
SHA-2
SHA-2(Secure Hash Algorithm 2)는 미국 국가안보국(NSA)에 의해 설계된 암호화 해시 함수 세트이며 2001년에 처음 공개되었습니다.단방향 압축 기능 자체에서 Merkle-Damgörd 구조를 사용하여 구축되며, Davies를 사용하여 구축됩니다.– (분류된) 특수 블록 암호에서 마이어 구조.
SHA-2는 기본적으로 SHA-256과 SHA-512의 2개의 해시 알고리즘으로 구성됩니다.SHA-224는 다른 시작값과 잘린 출력을 가진 SHA-256의 변형입니다.SHA-384 및 SHA-512/224 및 SHA-512/256은 모두 SHA-512의 바리안트입니다.SHA-512는 SHA-256보다 안전하고 일반적으로 AMD64 등의 64비트 시스템에서 SHA-256보다 빠릅니다.
비트 단위의 출력 사이즈는, 「SHA」명의 확장자에 의해서 지정되기 때문에, SHA-224 의 출력 사이즈는 224 비트(28 바이트), SHA-256, 32 바이트, SHA-384, 48 바이트, 및 SHA-512, 64 바이트입니다.
SHA-3
SHA-3(Secure Hash Algorithm 3)는 2015년 8월 5일 NIST에 의해 출시되었습니다.SHA-3는 광범위한 암호화 프리미티브 패밀리 Keccak의 서브셋입니다.Keccak 알고리즘은 Guido Bertoni, Joan Daemens, Michael Peeters 및 Gilles Van Assche의 작품이다.Keckak은 스트림 암호와 같은 다른 암호 원형을 구축하는 데에도 사용할 수 있는 스펀지 구조를 기반으로 합니다.SHA-3은 SHA-2와 동일한 출력 크기(224비트, 256비트, 384비트 및 512비트)를 제공합니다.
설정 가능한 출력 사이즈는 SHACKE-128 및 SHACKE-256 함수를 사용하여 얻을 수도 있습니다.여기서 이름에 대한 -128 및 -256 확장자는 비트 단위의 출력 크기가 아니라 함수의 보안 강도를 나타냅니다.
블레이크2
BlAKE의 개량 버전인 BLAKE2는 2012년 12월 21일에 발표되었습니다.그것은 장 필립 오마송, 사무엘 네베스, 주코 윌콕스 오'에 의해 만들어졌다.Hearn과 Christian Winnerlein은 널리 사용되고 있지만 고장난 MD5 및 SHA-1 알고리즘을 대체하는 것을 목표로 하고 있습니다.64비트 x64 및 ARM 아키텍처에서 실행되는 경우, BLAKE2b는 SHA-3, SHA-2, SHA-1 및 MD5보다 빠릅니다. BLAKE 및 BLAKE2는 SHA-3처럼 표준화되지 않았지만 최신 CPU에서 제공하는 높은 효율성을 위해 Argon2 암호 해시를 비롯한 많은 프로토콜에서 사용되고 있습니다.BLAKE는 SHA-3 후보였기 때문에 BLAKE와 BLAKE2는 모두 SHA-3와 동일한 출력 크기(설정 가능한 출력 크기 포함)를 제공합니다.
블레이크 3
블레이크2의 개량판인 블레이크3는 2020년 1월 9일에 발표되었습니다.그것은 Jack O'Connor, Jean-Philippe Aumasson, Samuel Neves, 그리고 Zooko Wilcox-O'에 의해 만들어졌다.BLAKE3는 단일 알고리즘으로 여러 변종을 가진 알고리즘 패밀리인 BLAKE 및 BLAKE2와는 대조적입니다.BLAKE3 압축 기능은 BLAKE2s 압축 기능을 기반으로 하며, 가장 큰 차이점은 라운드 수가 10개에서 7개로 줄어든다는 것입니다.내부적으로 BLAKE3는 Merkle 트리로 BLAKE2보다 높은 수준의 병렬 처리를 지원합니다.
암호화 해시 알고리즘에 대한 공격
암호화 해시 함수의 목록은 길지만 많은 함수는 취약한 것으로 확인되었으며 사용해서는 안 됩니다.예를 들어, NIST는 51개의[19] 해시 함수를 SHA-3 해시 경쟁의 1라운드 후보로 선정했는데, 이 중 10개는 파손된 것으로 간주되고 16개는 중대한 약점을 보여 다음 라운드에 진출하지 못했다. NIST 해시 함수 경쟁에 대한 자세한 내용은 주요 기사를 참조하십시오.
해시함수가 깨진 적이 없더라도 약화된 변형에 대한 공격이 성공하면 전문가의 신뢰가 떨어질 수 있다.예를 들어 2004년 8월에는 MD5를 [20]포함한 당시 인기 있던 해시함수에서 충돌이 발견되었습니다.이러한 약점 때문에 특히 SHA-1(SHA-0의 강화 버전), RIPEMD-128 및 RIPEMD-160(모두 RIPEMD의 [21]강화 버전)의 취약한 해시 함수에서 파생된 강력한 알고리즘의 보안성에 의문이 제기되었습니다.
2004년 8월 12일 Joux, Carribault, Lemuel 및 Jalby는 완전한 SHA-0 [16]알고리즘에 대한 충돌을 발표했습니다.Joux 등은 Chabaud와 Joux 공격의 일반화를 사용하여 이를 달성했습니다.그들은 충돌에 복잡도51 2가 있으며 256개의 Itanium 2 프로세서를 탑재한 슈퍼컴퓨터에서 약 80,000시간의 CPU 시간이 소요된다는 것을 알아냈습니다.이는 슈퍼컴퓨터를 [citation needed]13일간 풀타임으로 사용하는 것과 맞먹습니다.
2005년 2월에는 160비트 해시함수로 예상되는2개의80 해시 조작이 아닌 약2개의69 해시 조작으로 콜리젼을 검출하는 SHA-1에 대한 공격이 보고되었습니다.2005년 8월, SHA-1에 대한 또 다른 공격이 보고되었으며, 이 공격은 두 번의 작업에서 충돌을63 발견하게 됩니다.SHA-1의 다른 이론적인 약점은 [22][23]알려져 있다: 그리고 2017년 2월에 구글은 SHA-1의 [24]충돌을 발표했다.보안 연구자들은 새로운 애플리케이션이 SHA-2와 같은 SHA 패밀리의 최신 멤버를 사용하거나 충돌 내성을 필요로 하지 않는 랜덤화 해싱[1] 등의 기술을 사용함으로써 이러한 문제를 방지할 수 있다고 합니다.
2008년 [25]트랜스포트 레이어 보안 증명서 내에서 사용되고 있는 MD5를 파괴하는 데 성공했습니다.
많은 암호화 해시는 Merkle-Damgörd 구조를 기반으로 합니다.Merkle-Damgörd 구성의 전체 출력을 직접 사용하는 모든 암호화 해시는 길이 확장 공격에 취약합니다.이로 인해 MD5, SHA-1, RIPMD-160, Wolpool 및 SHA-256/SHA-512 해시 알고리즘은 모두 이 특정 공격에 취약해집니다.SHA-3, BLAKE2, BLAKE3 및 잘린 SHA-2 바리안트는 이러한 유형의 [citation needed]공격에 취약하지 않습니다.
해시된 패스워드에 대한 공격
해시의 일반적인 용도는 비밀번호 인증 데이터를 저장하는 것입니다.사용자 비밀번호의 일반 텍스트를 저장하는 대신, 제어된 접근시스템은 각 사용자의 비밀번호 해시를 파일 또는 데이터베이스에 저장합니다.누군가가 액세스를 요청하면 제출한 암호가 해시되어 저장된 값과 비교됩니다.데이터베이스를 도난당한 경우(너무 자주[26] 발생) 도둑은 해시 값만 가지고 비밀번호는 가지고 있지 않습니다.
그러나 대부분의 사람들은 예측 가능한 방법으로 비밀번호를 선택한다.일반적인 패스워드의 리스트는 널리 퍼지고 있으며, 많은 패스워드는 패스트해시를 [27]사용하는 경우 가능한 모든 조합을 테스트할 수 있을 정도로 짧습니다.암호화 솔트를 사용하면 사전 계산 해시 값의 파일(예: 무지개 테이블)을 구축하는 등의 일부 공격을 방지할 수 있습니다.그러나 고급 그래픽 프로세서를 사용하면 초당 1000억 번의 테스트가 가능하기 때문에 [28]소금으로도 직접 공격이 가능하다.[29] 미국 국립표준기술연구소(United Standards and Technology)는 브루트 포스 [30]: 5.1.1.2 검색을 느리게 하기 위해 만들어진 키 파생 함수(KDF)라고 불리는 특수 해시를 사용하여 암호를 저장할 것을 권장합니다.저속 해시에는 pbkdf2, bcrypt, 스크립트, Argon2, Balloon 및 일부 최신 Unix 암호 모드가 포함됩니다.실행을 늦추기 위해 여러 해시를 수행하는 KSF의 경우, NIST는 10,000회 이상의 [30]: 5.1.1.2 반복 횟수를 권장합니다.
「 」를 참조해 주세요.
레퍼런스
인용문
- ^ a b Shai Halevi 및 Hugo Krawczyk, 랜덤화된 해싱 및 디지털 서명
- ^ Al-Kuwari, Saif; Davenport, James H.; Bradford, Russell J. (2011). "Cryptographic Hash Functions: Recent Design Trends and Security Notions". Cryptology ePrint Archive. Report 2011/565.
- ^ Schneier, Bruce. "Cryptanalysis of MD5 and SHA: Time for a New Standard". Computerworld. Archived from the original on 2016-03-16. Retrieved 2016-04-20.
Much more than encryption algorithms, one-way hash functions are the workhorses of modern cryptography.
- ^ Katz & Lindell 2014, 페이지 155-157, 190, 232.
- ^ Rogaway & Shrimpton 2004, 5장시사점
- ^ Duong, Thai; Rizzo, Juliano. "Flickr's API Signature Forgery Vulnerability".
- ^ Lyubashevsky et al., 2008, 페이지 54-72.
- ^ Perrin, Chad (December 5, 2007). "Use MD5 hashes to verify software downloads". TechRepublic. Retrieved March 2, 2013.
- ^ a b Lucks, Stefan (2004). "Design Principles for Iterated Hash Functions". Cryptology ePrint Archive. Report 2004/253.
- ^ Kelsey & Schneier 2005, 페이지 474-490.
- ^ Biham, Eli; Dunkelman, Orr (24 August 2006). A Framework for Iterative Hash Functions – HAIFA. Second NIST Cryptographic Hash Workshop. Cryptology ePrint Archive. Report 2007/278.
- ^ Nandi & Paul 2010.
- ^ Dobraunig, Christoph; Eichlseder, Maria; Mendel, Florian (February 2015). Security Evaluation of SHA-224, SHA-512/224, and SHA-512/256 (PDF) (Report).
- ^ Mendel 등, 페이지 145: 연결 중...는, 실장자가 해시 함수에 대해서 「베팅」을 실시하기 위해서 자주 사용됩니다.MD5 형식의 결합기
- ^ Harnik et al. 2005, 페이지 99: TLS에서 제안된 해시함수의 연결은 안전하게 유지되는 후보만큼 안전함을 보장한다.
- ^ a b Joux 2004.
- ^ Finney, Hal (August 20, 2004). "More Problems with Hash Functions". The Cryptography Mailing List. Archived from the original on April 9, 2016. Retrieved May 25, 2016.
- ^ Hoch & Shamir 2008, 페이지 616 – 630.
- ^ Andrew Regenscheid, Ray Perlner, Shu-Jen Chang, John Kelsey, Mridul Nandi, Souradyuti Paul, SHA-3 암호화 해시 알고리즘 경기 1라운드 현황 보고서
- ^ XiaoyunWang, Denguo Feng, Xuejia Lai, Hongbo Yu, 해시 함수 MD4, MD5, HAL-128 및 RIPMD 충돌
- ^ Alshaikhli, Imad Fakhri; AlAhmad, Mohammad Abdulateef (2015), "Cryptographic Hash Function", Handbook of Research on Threat Detection and Countermeasures in Network Security, IGI Global, pp. 80–94, doi:10.4018/978-1-4666-6583-5.ch006, ISBN 978-1-4666-6583-5
- ^ 왕샤오윤, 이쿤리사인, 홍보유, SHA-1에서 충돌 발견
- ^ Bruce Schneier, SHA-1 암호화 분석(Wang 등 결과와 그 영향 요약)
- ^ Fox-Brewster, Thomas. "Google Just 'Shattered' An Old Crypto Algorithm – Here's Why That's Big For Web Security". Forbes. Retrieved 2017-02-24.
- ^ Alexander Sotirov, Marc Stevens, Jacob Appelbaum, Arjen Lenstra, David Molnar, Dag Arne Osvik, Benne de Weger, MD5는 현재 유해하다고 생각됩니다. 부정 CA 증명서 작성(2009년 3월 29일 액세스).
- ^ Swinhoe, Dan (April 17, 2020). "The 15 biggest data breaches of the 21st century". CSO Magazine.
- ^ Goodin, Dan (2012-12-10). "25-GPU cluster cracks every standard Windows password in <6 hours". Ars Technica. Retrieved 2020-11-23.
- ^ Claburn, Thomas (February 14, 2019). "Use an 8-char Windows NTLM password? Don't. Every single one can be cracked in under 2.5hrs". www.theregister.co.uk. Retrieved 2020-11-26.
- ^ "Mind-blowing GPU performance". Improsec. January 3, 2020.