SHA-2
SHA-2시큐어 해시 알고리즘 | |
---|---|
개념 | |
해시 함수 · SHA · DSA | |
주요 규격 | |
SHA-0 · SHA-1 · SHA-2 · SHA-3 | |
일반 | |
---|---|
디자이너 | 국가안전보장국 |
초판 | 전( |
시리즈 | (SHA-0), SHA-1, SHA-2, SHA-3 |
인정. | FIPS PUB 180-4, CRYPTREC, NESSIE |
세부 사항 | |
다이제스트 사이즈 | 224, 256, 384 또는 512비트 |
구조. | 데이비스와 함께 Merkle-Damgörd 건설–마이어 압축 기능 |
라운드 | 64 또는 80 |
최고의 퍼블릭 암호 분석 | |
2011년 공격은 SHA-512 80발 중 57발, SHA-256 [1]64발 중 52발에 대한 초기 이미지 저항을 무너뜨린다. 최대 46발의 SHA-256에 [2]대한 의사 충돌 공격. SHA-256 및 SHA-512는 길이 확장 공격을 받기 쉽습니다.스테이트의 숨겨진 부분을 추측함으로써 SHA-224 및 SHA-384에 대한 길이 확장 공격은 각각 확률2−(256−224) = 2−32 > 2−224 및 2−(512−384) = 2−128 > 2로−384 성공합니다. |
SHA-2(Secure Hash Algorithm 2)는 미국 국가안보국(NSA)이 설계한 암호화 해시 [3][4]함수 세트이며 2001년에 처음 공개되었습니다.단방향 압축 기능 자체에서 Merkle-Damgörd 구조를 사용하여 제작되었으며, Davies를 사용하여 제작되었습니다.- 특수 블록 암호에서 마이어 구조.
SHA-2에는 이전 버전인 SHA-1에서 대폭 변경된 내용이 포함되어 있습니다.SHA-2 패밀리는 다이제스트(해시 값)가 224, 256, 384 [5]또는 512비트인6개의 해시 함수(SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/256, SHA-512)로 구성되어 있습니다.SHA-256 및 SHA-512는 32비트 워드로 계산되는 새로운 해시 함수입니다.서로 다른 이동량과 가법 상수를 사용하지만, 그 외에는 구조가 거의 동일하며 라운드 수만 다릅니다.SHA-224 및 SHA-384는 각각 다른 초기값으로 계산되는 SHA-256 및 SHA-512의 잘린 버전입니다.SHA-512/224 및 SHA-512/256도 SHA-512의 잘린 버전이지만 초기값은 Federal Information Processing Standards(FIPS) PUB 180-4에 기재된 방법을 사용하여 생성됩니다.
SHA-2는 미국 국립표준기술연구소(NIST)가 미국 연방표준(FIPS)으로 처음 발행했다.SHA-2 알고리즘 패밀리는 [6]미국에서 특허를 취득했습니다.미국은 특허권을 로열티 [7]프리 라이선스로 출시했다.
2011년 현재 최고의 공중 공격은 64발 중 52발, 80발 중 57발 SHA-512발 중 57발, 64발 [1][2]중 46발 SHA-256발 중 46발에 대한 내충돌성을 파괴하는 것이다.
해시표준
FIPS PUB 180-2의 발행으로 NIST는 SHA 제품군에 세 가지 해시 함수를 추가했습니다.이 알고리즘은 집합적으로 SHA-2라고 불리며 다이제스트 길이(비트 단위)를 따서 명명됩니다.SHA-256, SHA-384 및 SHA-512.
이 알고리즘은 2001년 FIPS PUB 180-2 초안에 처음 발표되었으며, 당시 공개 검토와 논평이 받아들여졌다.2002년 8월 FIPS PUB 180-2는 1995년 4월에 출시된 FIPS PUB 180-1을 대체하는 새로운 Secure Hash Standard가 되었습니다.업데이트된 표준에는 원래의 SHA-1 알고리즘이 포함되었으며, SHA-2 [4]계열의 내부 작동을 설명하는 것과 일치하는 업데이트된 기술 표기법이 적용되었다.
2004년 2월에 FIPS PUB 180-2에 대한 변경 통지가 발행되었으며, 2키 트리플 [8]DES의 키 길이와 일치하도록 정의된 추가 바리안트 SHA-224가 지정되었습니다.2008년 10월 FIPS PUB 180-3에서 표준이 업데이트되었으며, 변경 공지의 SHA-224가 포함되었지만, 그 외에는 표준의 근본적인 변경은 이루어지지 않았습니다.표준을 갱신한 주된 동기는 해시 알고리즘에 대한 보안 정보 및 그 사용을 위한 권장사항을 Special Publications 800-107 [9][10][11]및 800-57로 재배치하는 것이었습니다.상세한 테스트 데이터와 예제 메시지 요약도 표준에서 삭제되어 별도의 [12]문서로 제공되었습니다.
2011년 1월 NIST는 SP800-131A를 발표했습니다. SP800-131A는 2013년 말까지 연방정부에서 사용할 수 있는 현재 최소 80비트 보안(SHA-1 제공)에서 112비트 보안(SHA-2 제공)으로 전환하여 최소 요건(2014년부터 시작)과 권장 보안 수준(일반인 시작)을 모두 충족했습니다.(2011년)[13]
2012년 3월에 FIPS PUB 180-4에서 표준이 갱신되어 해시함수 SHA-512/224 및 SHA-512/256이 추가되어 SHA-512의 잘린 버전에 대한 초기값을 생성하는 방법이 설명되었습니다.또한 해시 계산 전에 입력 데이터를 패딩하는 제한이 없어져 실시간 비디오나 오디오 피드 등의 콘텐츠 생성과 동시에 해시 데이터를 계산할 수 있게 되었다.해시 출력 전에 최종 데이터 블록을 채워야 합니다.[14]
2012년 7월 NIST는 암호화 키 관리에 대한 지침을 제공하는 SP800-57을 개정했습니다.이 게시물은 2013년 이후 해시 보안 수준이 112비트 미만인 디지털 서명을 생성할 수 없도록 허용했습니다.2007년의 이전 개정에서는 컷오프를 2010년 말로 [11]규정했다.2012년 8월 NIST는 SP800-107을 동일한 [10]방식으로 개정했습니다.
NIST 해시 함수 경합은 [15]2012년에 새로운 해시 함수인 SHA-3를 선택했습니다.SHA-3 알고리즘은 SHA-2에서 파생되지 않았습니다.
적용들
SHA-2 해시 함수는 TLS 및 SSL, PGP, SSH, S/MIME, IPSec 등 널리 사용되는 보안 애플리케이션 및 프로토콜에 구현됩니다.
SHA-256은 Debian 소프트웨어[16] 패키지 인증 및 DKIM 메시지 서명 표준에 사용됩니다.SHA-512는 르완다 대학살 [17]국제형사재판소의 아카이브 비디오를 인증하는 시스템의 일부입니다.SHA-256 및 SHA-512는 DNSSEC에서의 [18]사용을 제안합니다.Unix 및 Linux 벤더는 안전한 패스워드 [19]해시를 위해 256비트 및 512비트 SHA-2를 사용하는 것으로 이행하고 있습니다.
Bitcoin을 비롯한 몇몇 암호 화폐는 거래 확인 및 작업 증명[20] 또는 [21]지분 증명 계산에 SHA-256을 사용합니다.ASIC SHA-2 액셀러레이터 칩의 등장으로 스크립트 기반의 작업 증명 스킴이 사용되고 있습니다.
SHA-1 및 SHA-2는 특정 미국 정부 애플리케이션에서 사용하기 위해 법률이 요구하는 Secure Hash Algorithms입니다.기타 암호화 알고리즘 및 프로토콜 내에서의 사용을 포함하여 기밀 정보가 아닌 중요한 정보의 보호를 위해 필요합니다.FIPS PUB 180-1은 또한 민간 및 상업 조직에 SHA-1의 채택과 사용을 장려했습니다.SHA-1은 대부분의 정부 용도로 폐기되고 있습니다.미국 국립표준기술연구소(National Institute of Standards and Technology)는 "연방기관은 가능한 한 빨리 충돌 내성이 필요한 애플리케이션에 SHA-1 사용을 중지해야 하며 2010년 이후 이러한 애플리케이션에 SHA-2 해시 함수 패밀리를 사용해야 합니다."라고 말합니다(원래 [22]강조).2010년 이후[23] 미국 정부 기관이 SHA-1의 사용을 중단해야 한다는 NIST의 지시는 SHA-1로부터의 이주를 가속화하기를 희망했다.
SHA-2 기능은 SHA-1보다 더 나은 보안에도 불구하고 초기에 채택되지 않았습니다.원인으로는 Windows XP SP2 이전[24] 버전을 실행하는 시스템에서 SHA-2를 지원하지 않으며 SHA-1 충돌이 아직 발견되지 않았기 때문에 긴급성이 인식되지 않는 것이 있습니다.구글 크롬 팀은 2014년 말부터 2015년 [25][26][27]초에 걸쳐 자사의 웹 브라우저가 SHA-1에 의존하는 TLS 인증서의 적용을 점차 중단하도록 할 계획을 발표했다.마찬가지로, Microsoft는[28] Internet Explorer와 Edge가 2017년 2월부터 공용 SHA-1 서명 TLS 인증서 사용을 중지한다고 발표했습니다.모질라는 2016년 1월 초에 SHA-1을 비활성화시켰으나 일부 라우터 모델과 보안 [29]어플라이언스의 웹 기반 사용자 인터페이스에 문제가 발생하자 파이어폭스 업데이트를 통해 일시적으로 다시 활성화해야 했습니다.
암호화 및 검증
L이 메시지 다이제스트의 비트수인 해시 함수의 경우, 특정 메시지 다이제스트에 대응하는 메시지를 검색하려면 항상 2개의 평가에서L 브루트 포스 검색을 사용합니다.이것은 프리이미지 공격이라고 불리며 L 및 특정 컴퓨팅 환경에 따라 실용적일 수도 있고 그렇지 않을 수도 있습니다.두 번째 기준에서는 동일한 메시지 다이제스트를 생성하는2개의 다른 메시지를 검출하기 위해 생일 공격을 사용한 평가는 평균 2개만 필요합니다L/2.
암호 저장소와 같은 암호화 해시를 사용하는 일부 응용 프로그램은 충돌 공격의 영향을 최소화합니다.특정 계정에서 동작하는 패스워드를 작성하려면 프리이미지 공격뿐만 아니라 원래 패스워드(일반적으로shadow
파일)을 참조해 주세요.암호 암호화를 되돌리는 것(예: 다른 사용자의 계정에 대해 시도하기 위한 암호를 얻는 것)은 공격에 의해 가능하지 않습니다.(단, 시큐어 패스워드 해시라도 취약한 패스워드에 대한 브루트포스 공격을 막을 수 없습니다).
문서 서명의 경우 공격자는 단순히 기존 문서에서 서명을 위조할 수 없습니다. 공격자는 문서 쌍(무해한 문서와 손상된 문서)을 생성하고 개인 키 소유자에게 무해한 문서에 서명하도록 해야 합니다.2008년 말까지는 널리 사용되는 웹 [30]브라우저에서 받아들여지는 MD5 충돌을 사용하여 위조 SSL 증명서를 작성할 수 있었습니다.
SHA-3 경쟁 기간 동안 암호화 해시 분석에 대한 관심이 높아짐에 따라 SHA-2 패밀리에 대한 몇 가지 새로운 공격이 발생했으며, 그 중 가장 좋은 공격은 다음 표에 나와 있습니다.실질적으로 복잡한 것은 충돌 공격뿐이며 풀 라운드 해시 함수로 확장되는 공격은 없습니다.
FSE 2012에서 소니 연구진은 바이클릭 의사 프리이미지 [31]공격을 바탕으로 SHA-256에서는 52라운드, SHA-512에서는 57라운드까지 의사 충돌 공격을 확대할 수 있다는 프레젠테이션을 했다.
출판일 | 연도 | 공격 방식 | 공략 | 변종 | 라운드 | 복잡성 |
---|---|---|---|---|---|---|
최대 24단계 SHA-2에 대한 새로운 충돌 공격[32] | 2008 | 결정론 | 충돌 | SHA-256 | 24/64 | 2개28.5 |
SHA-512 | 24/80 | 2개32.5 | ||||
스텝 리덕션 SHA-2의 프리이미지[33] | 2009 | 미트 인 더 미들 | 프리이미지 | SHA-256 | 42/64 | 2개251.7 |
43/64 | 2개254.9 | |||||
SHA-512 | 42/80 | 2개502.3 | ||||
46/80 | 2개511.5 | |||||
미트 인 더 미들 프리이미지 공격[34] | 2010 | 미트 인 더 미들 | 프리이미지 | SHA-256 | 42/64 | 2개248.4 |
SHA-512 | 42/80 | 2개494.6 | ||||
리덕션 SHA-256에서의 고차 차분 공격[2] | 2011 | 차동 | 유사 충돌 | SHA-256 | 46/64 | 2개178 |
33/64 | 2개46 | |||||
프리이미지용 바이클릭:Skin-512 및 SHA-2 패밀리에 대한 공격[1] | 2011 | 바이클리 | 프리이미지 | SHA-256 | 45/64 | 2개255.5 |
SHA-512 | 50/80 | 2개511.5 | ||||
유사 프리이미지 | SHA-256 | 52/64 | 2개255 | |||
SHA-512 | 57/80 | 2개511 | ||||
로컬 충돌 개선:감소된 SHA-256에 대한 새로운 공격[35] | 2013 | 차동 | 충돌 | SHA-256 | 31/64 | 2개65.5 |
유사 충돌 | SHA-256 | 38/64 | 2개37 | |||
SHA-512 어플리케이션을 사용한 차분 충돌 검색에서의 브런치 휴리스틱스[36] | 2014 | 경험적 미분 | 유사 충돌 | SHA-512 | 38/80 | 2개40.5 |
SHA-512/224 및 SHA-512/256 분석[37] | 2016 | 차동 | 충돌 | SHA-256 | 28/64 | 실용적인. |
SHA-512 | 27/80 | 실용적인. | ||||
유사 충돌 | SHA-512 | 39/80 | 실용적인. |
공식 검증
FIPS 승인 보안 기능의 실장은 National Institute of Standards and Technology(NIST; 국립표준기술연구소)와 Communications Security Establishment(CSE; 통신보안 확립)가 공동으로 운영하는 CMVP 프로그램을 통해 공식적으로 검증할 수 있습니다.비공식 검증을 위해 많은 수의 테스트 벡터를 생성하기 위한 패키지가 NIST 사이트에서 다운로드 가능하지만, 그 결과 검증이 특정 애플리케이션에 대해 법으로 요구되는[citation needed] 공식 CMVP 검증을 대체하지는 않는다.
2013년 12월[update] 현재 1300개 이상의 SHA-256과 900개 이상의 SHA-512가 검증되어 있으며, 그 중 5개만이 양쪽 [38]버전을 지원하면서 비트 길이의 메시지를 처리할 수 있습니다.
테스트 벡터
빈 문자열(즉, 길이 0 입력 텍스트)의 해시 값입니다.
SHA224("") 0x d14a028c2a2bc9476bbb288234c415a2b01f828ea62ac5b4e42f SHA256("") 0x e3b0c44298fc1c149f4c8c8c8c8c4c8999fb9ae4b9b244e4b9954954ca4ca4ca4ca4ca4b9b9b9954ca4ca4b9b9b9954a5f2b018d2877eec63b931bd474a81a538327af927da3e SHA512/224(""") 0x6d02806fa89e25de060c19d86cab87d6a0d0d05dd3b834fSHA512/224(256)"
메시지를 조금만 변경해도(매우 높은 확률로) 눈사태의 영향으로 인해 해시가 거의 달라집니다.예를 들어, 다음 문장의 끝에 마침표를 추가하면 해시 내 비트의 거의 절반(224개 중 111개)이 변경됩니다.
SHA224("빠른 갈색 여우는 게으른 개를 뛰어넘는다") 0x730e109bd7a8a32b1cb9d9a09a09a2325d2430587dddbc0c38bad911525 SHA224("빠른 갈색 여우는 게으른 개를 뛰어넘는다") 0x619cba8e8e0265c5c.
유사 코드
다음으로 SHA-256 알고리즘의 의사 코드를 나타냅니다.비트의 혼재량이 크게 증가하고 있는 것에 주의해 주세요.w[16..63]
SHA-1과 비교됩니다.
참고 1:모든 변수이다 32비트 부호 없는 정수 및 추가 계산한다 나머지 232주 2:각 회, 한바퀴 상수 k[나는]고 하나의 항목에서 메시지를 일정 배열 w[나는], 0≤ 나는 ≤ 63참고 3:압축 함수를 사용합니다 8작업 변수, 직행 h참고 4:빅 엔디언. 규칙은 사용될 때를 표명하며 상수들의톤안녕예를 들어 pseudocode 및 메시지블록 데이터를 바이트에서 워드로 해석할 때 패딩 후 입력 메시지 "abc"의 첫 번째 단어는 0x61626380 해시 값 초기화: (첫 번째 8개의 소수점 2의 제곱근 부분 중 첫 번째 32비트)입니다.19): h0 : = 0x6a09e667 h1 : = 0xbbb67ae85 h2 : = 0xa54ff53a h4 : = 0x510e527f h5 : = 0x9b05688c h6 = 0x1f83dab h7 : 0x5cde5cd5cde5cd5c = 0x5cde5x5x5cd5cd0x5x5cd5cd0x5x5cd5x5x5x5x5x5x563] : = 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5g5, 0x3956c25b, 0x59fbc1, 0x923f82a4, 0xab1c5ed5, 0xd807a98, 0x12835be01,01, 0x5503be3be3befc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x142967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x7660abb, 0x92c0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 전처리(패딩): L비트 길이의 원래 메시지에서 시작하여 비트 '01'을 추가합니다.512비트의 배수로는 메시지의 비트가:<>길이 L>의 원본 메시지 1<>Kzeros>, <, 나는 64비트 integer>로, 프로세스 연속512-bit 덩어리에서 메시지를(512의 비트 수이가 될 것이다 배수):메시지512-bit 덩어리로 각 부분을break64-entry 혼란을 만들어 내E총post-processed 길이입니다.나이 스케줄 배열32비트 워드의 w[0..63](w[0..]의 초기값).63] 상관없습니다.많은 구현이 여기에 0으로 되어 있기 때문에 청크를 첫 번째 16단어로 복사합니다.w [ 0 .메시지 스케줄 배열의 15]첫 번째 16 워드를 나머지 48 워드로 확장합니다.w [ 16 .메시지 스케줄 배열의 63]: i의 경우 16 ~63 s0 := (w[i-15] 우회전 7) xor (w[i-15] 우회전 18) xor (w[i-15] 우회전 3) s1 := (w[i-2] 우회전 17) xor (w[i-2] 우회전 19) xor (w[i-2] 우회전 19):= h0 b := h1 c := h2 d := h3 e := h4 f := h5 g := h6 h := h7 압축함수 주루프: i가 0 ~ 63 S1 := (e rightrotate 6) xor (e rightrotate 11) xor (e rightrotate 25) ch = (e 및 for (not) xor (e (e) 및 f : or (not)rightrotate 13) xor (a 및 b) xor (a 및 c) xor (b 및 c) xor (b 및 c) temp2 := S0 + maj h := g := f := e := d + temp1 d := b := a := temp 1 + 2 압축된 전류에 해시 청크 값을 더한다:0:h2 : = h2 + c h3 : = h3 + d h4 : = h4 + e h5 : = h5 : = h5 + f5 : = h5 - h5 최종 해시 값(빅 엔디언): digest : = h0 append h1 append h3 append h4 append h6 append h7 h7 append h7을 생성합니다.
의 계산ch
그리고.maj
값은 SHA-1에서 설명한 것과 같은 방법으로 최적화할 수 있습니다.
SHA-224는 다음 점을 제외하고 SHA-256과 동일합니다.
- 초기 해시 값
h0
통해.h7
다르고 - 출력은 생략함으로써 구성됩니다.
h7
.
SHA-224 초기 해시값(빅엔디안): (9~16번째 소수점 제곱근의 소수 부분 중 두 번째 32비트는 23이다.53) h[0..7] : = 0xc1059ed8, 0x367cd507, 0x3070dd17, 044070e5939, 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4
SHA-512는 SHA-256과 구조가 동일하지만 다음과 같습니다.
- 메시지는 1024비트 청크로 분할됩니다.
- 초기 해시 값과 라운드 상수는 64비트로 확장됩니다.
- 64발 대신 80발이야
- 메시지 스케줄 배열 w에는 64개의 32비트 워드가 아닌 80개의 64비트 워드가 있습니다.
- 메시지 스케줄어레이 w를 확장하려면 루프가 16에서63이 아닌 16에서79로 설정됩니다.
- 라운드 상수는 처음 80개의 소수점 2를 기반으로 합니다.409,
- 계산에 사용되는 단어 크기는 64비트 길이입니다.
- 메시지의 부가 길이(전처리 전)는 128비트 빅엔디안 정수입니다.
- 사용되는 이동량과 회전량이 다릅니다.
SHA-512 초기 해시 값(빅엔디안):h [0 . 7 ] : = 0x6a09e667f3bcc908, 0xbbbb67ae8584caa73b, 0x3c6ef372fe94f82b, 0xa54ff53a5f1f1d36f1, 0x5d862b956c25bf348b538, 0x59fff1b605d019, 0x923f82a4afff9b, 0xab1c5ed5da6d8118, 0xd807a98a3030242, 0x12835b0145706fe, 0x243185bee05c550, 0x5c5c08b4dc5c9c65, 0x2de92c6f592b0275, 0x4a7484a6ea6e483, 0x5cb0a9dcbd41fbd4, 0x76f988da8153b5, 0x983e5e5152dfab, 0xa8c8db8b, 0x8x8b8b8b8c0x53380d440df, 0x650a73548baf63de, 0x766a0abb3c77b2a8, 0x81c2e47edae6, 0x92722c851482353b, 0xa2bfe8a14cf10364, 0xa81a824cp4cf4x001.748774cdf8eeb99, 0x34bcb5e19b48a8, 0x391cb3cb3c5c95a63, 0x4eda8a4ae3418acb, 0x5b9ca4f7763e373, 0x682e6ff3dfc82,fc8282fcfcfcf, 0x7282fcfcfcfc82,fc8a8a82,0fc8a82,0fcfcfc82,02fcfcfc82,08C207, 0xeada7dd6cde0eb1e, 0xf57d4f7fee6ed178, 0x06f067aa72176fba, 0x0a637dc5a2c898a6, 0x113f9804bef90dae, 0x1b710b35131c471b, 0x28db77f523047d84, 0x32caab7b40c72493, 0x3c9ebe0a15c9bebc, 0x431d67c49c100d4c, 0x4cc5d4becb3e42b6, 0x597f299cfc657e2a, 0x5fcb6fab3ad6faec, 0x6c44198c4a475817 SHA-512 Sum&시그마:적 S0:=(대형 트럭을.htro테이트 28) xor (오른쪽 회전 34) xor (오른쪽 회전 39) S1 := (e 오른쪽 회전 14) xor (e 오른쪽 회전 18) xor (e 오른쪽 회전 41) s0 := (w[i-15] 오른쪽 회전 8) xor (w[i-15] 오른쪽 회전 8) xor (w[i-15] 오른쪽 회전 7w)
SHA-384는 다음 점을 제외하고 SHA-512와 동일합니다.
- 초기 해시 값
h0
통해.h7
(9번째부터 16번째 소수점까지) 다르고 - 출력은 생략함으로써 구성됩니다.
h6
그리고.h7
.
SHA-384 초기 해시 값(빅엔디안): h [0 . 7 ] : = 0xcbb9d5dc1059ed8, 0x629a292a367cd507, 0x9159015a3070ddddd17, 0x4 fecd8f70e59, 0x673326fc00b31,858eb8a
SHA-512/t는 다음 점을 제외하고 SHA-512와 동일합니다.
- 초기 해시 값
h0
통해.h7
SHA-512/t IV 생성 함수에 의해 제공됩니다. - 출력은 연결 부분을 잘라냄으로써 구성됩니다.
h0
통해.h7
t비트로 - 384와 동일한 t는 허용되지 않습니다.대신 지정된 대로 SHA-384를 사용해야 합니다.
- t 값 224와 256은 특히 승인된 것으로 언급됩니다.
SHA-512/t IV 생성 함수는 수정된 SHA-512를 ASCII 문자열 "SHA-512/t"로 평가합니다.이 SHA-512는 10진수 표현 t로 대체됩니다.변경된 SHA-512는 초기값을 제외하고 SHA-512와 동일합니다.h0
통해.h7
각각 16진수 상수로 XOR되었다0xa5a5a5a5a5a5a5a5
.
SHA-2 해시 함수 패밀리의 구현 예는 RFC 6234에 기재되어 있습니다.
SHA 기능의 비교
아래 표에서 내부 상태는 데이터 블록의 각 압축 후의 "내부 해시합"을 의미합니다.
알고리즘과 바리안트 | 출력 크기 (비트) | 내부의 상태 크기 (비트) | 블록 크기 (비트) | 라운드 | 운용 | 충돌 공격에 대한 보안 (비트) | 길이 확장 공격에 대한 보안 (비트) | Skylake에서의 퍼포먼스(중간 cpb)[39] | 초판 | ||
---|---|---|---|---|---|---|---|---|---|---|---|
긴 메시지 | 8 바이트 | ||||||||||
MD5(참조용) | 128 | 128 (4 × 32) | 512 | 64 | Xor, Or, Rot, Add (mod32 2) | ≤ 18 (충돌 발견)[40] | 0 | 4.99 | 55.00 | 1992 | |
SHA-0 | 160 | 160 (5 × 32) | 512 | 80 | Xor, Or, Rot, Add (mod32 2) | 34 미만 (충돌 발견) | 0 | § SHA-1 | § SHA-1 | 1993 | |
SHA-1 | 63 미만 (충돌 발견)[41] | 3.47 | 52.00 | 1995 | |||||||
SHA-2 | SHA-224 SHA-256 | 224 256 | 256 (8 × 32) | 512 | 64 | 그리고, Xor, 또는 썩음, 쉬르, 추가(mod32 2) | 112 128 | 32 0 | 7.62 7.63 | 84.50 85.25 | 2004 2001 |
SHA-384 | 384 | 512 (8 × 64) | 1024 | 80 | 그리고, Xor, 또는 썩음, 쉬르, 추가(mod64 2) | 192 | 128 (≤ 384) | 5.12 | 135.75 | 2001 | |
SHA-512 | 512 | 256 | 0[42] | 5.06 | 135.50 | 2001 | |||||
SHA-512/224 SHA-512/256 | 224 256 | 112 128 | 288 256 | § SHA-384 | § SHA-384 | 2012 | |||||
SHA-3 | SHA3-224 SHA3-256 SHA3-384 SHA3-512 | 224 256 384 512 | 1600 (5 × 5 × 64) | 1152 1088 832 576 | 24[43] | 그리고, Xor, Rot, not | 112 128 192 256 | 448 512 768 1024 | 8.12 8.59 11.06 15.88 | 154.25 155.50 164.00 164.00 | 2015 |
흔들림128 흔들림 256 | d(표준) d(표준) | 1344 1088 | 최소(d/2, 128) 최소(d/2, 256) | 256 512 | 7.08 8.59 | 155.25 155.50 |
비트 연산 열에서 "Rot"은 Rotate No Carry를 나타내고 "Shr"은 오른쪽 논리 시프트를 나타냅니다.이러한 알고리즘은 SHA-3을 제외하고 어떤 방식으로든 모듈러 추가를 채택하고 있습니다.
최신 프로세서 아키텍처에 대한 자세한 성능 측정은 다음 표에 나와 있습니다.
CPU 아키텍처 | 빈도수. | 알고리즘. | 워드 크기(비트) | 사이클/바이트 x86 | MiB/s x86 | 사이클/바이트 x86-64 | MiB/s x86-64 |
---|---|---|---|---|---|---|---|
인텔 아이비 브릿지 | 3.5GHz | SHA-256 | 32 | 16.80 | 199 | 13.05 | 256 |
SHA-512 | 64 | 43.66 | 76 | 8.48 | 394 | ||
AMD 스택드라이버 APU | 3.8GHz | SHA-256 | 32 | 22.87 | 158 | 18.47 | 196 |
SHA-512 | 64 | 88.36 | 41 | 12.43 | 292 |
'x86'이라는 라벨이 붙은 퍼포먼스 번호는 64비트 프로세서에서 32비트 코드를 사용하여 실행되었지만 'x86-64' 번호는 네이티브 64비트 코드입니다.SHA-256은 32비트 계산용으로 설계되어 있지만 x86 아키텍처의 64비트 프로세서에 최적화된 코드를 통해 이점을 얻을 수 있습니다.SHA-512의 32비트 구현 속도는 64비트보다 훨씬 느립니다.메시지 확장 및 압축 함수는 동일하고 초기 해시 값과 출력 크기만 다르기 때문에 출력 크기가 다른 두 알고리즘의 배리언트도 동일하게 동작합니다.MD5 및 SHA-1의 최적의 실장은 최신 프로세서에서 바이트당 4.5~6 사이클의 성능을 발휘합니다.
테스트는 일리노이 대학교 시카고에서 인텔 Xeon E3-1275 V2를 3.5GHz로 실행하는hydra8 시스템과 AMD A10-5800K APU를 3.8GHz로 [44]실행하는hydra9 시스템에서 실시했습니다.위의 바이트 속도당 참조 사이클은 SUPERCOP 암호화 [45]벤치마킹소프트웨어를 사용하여 4,096 바이트메시지를 다이제스트하는 알고리즘의 평균 퍼포먼스입니다.MiB/s의 퍼포먼스는 단일 코어의 CPU 클럭 속도로 추정됩니다.실제 성능은 다양한 요인에 따라 달라집니다.
실장
다음은 SHA-2를 지원하는 암호화 라이브러리 목록입니다.
하드웨어 액셀러레이션은 다음 프로세서 확장에 의해 제공됩니다.
- 인텔 SHA 확장 기능:일부 인텔 및 AMD x86 프로세서에서 사용할 수 있습니다.
- VIA PadLock
- ARMv8 암호화 확장 기능
- IBM z/아키텍처:2005년부터 Message-Security-Assist Extensions 1(SHA-256) 및 2(SHA-512)[49]의 일부로 사용 가능
「 」를 참조해 주세요.
- 암호화 해시 함수 비교
- 암호화 라이브러리 비교
- 해시 함수 보안 요약
- 해시캐시
- HMAC
- 국제암호연구협회(ICR)
sha1sum
(sha224sum
,sha256sum
,sha384sum
그리고.sha512sum
) 명령어- 신뢰할 수 있는 타임스탬프
레퍼런스
- ^ a b c Dmitry Khovratovich, Christian Rechberger & Alexandra Savelieva (2011). "Bicliques for Preimages: Attacks on Skein-512 and the SHA-2 family" (PDF). IACR Cryptology ePrint Archive. 2011:286.
- ^ a b c Mario Lamberger & Florian Mendel (2011). "Higher-Order Differential Attack on Reduced SHA-256" (PDF). IACR Cryptology ePrint Archive. 2011:37.
- ^ "On the Secure Hash Algorithm family" (PDF). Archived from the original (PDF) on 2016-03-30.
- ^ a b 연방관보 공지 02-21599 FIPS 간행물 180-2 승인 공고
- ^ "IPR Details: The United States of America as represented by the National Security Agency's general license statement". IETF Datatracker. 858. Retrieved 2008-02-17.
- ^ US 6829355, Lilly, Glenn M., "단방향 암호화 해시의 디바이스와 방법", 2004-12-07 발행, National Security Agency에 할당됨
- ^ "IPR Details: The United States of America as represented by the National Security Agency's general license statement". IETF Datatracker. 858. Retrieved 2008-02-17.
- ^ "FIPS 180-2 with Change Notice 1" (PDF). csrc.nist.gov.
- ^ Federal Register Notice E8-24743, FIPS 간행물 승인 발표 180-3
- ^ a b 승인된 해시 알고리즘을 사용하는 응용 프로그램에 대한 FIPS SP 800-107 권장 사항
- ^ a b 키 관리를 위한 FIPS SP 800-57 권장 사항: 파트 1: 일반
- ^ "NIST.gov – Computer Security Division – Computer Security Resource Center". 29 December 2016.
- ^ FIPS SP 800-131A 암호화 알고리즘 및 키 길이 전환에 관한 권장 사항
- ^ Federal Register Notice 2012-5400, FIPS 간행물 승인 발표 180-4
- ^ "NIST Selects Winner of Secure Hash Algorithm (SHA-3) Competition". 2 October 2012. Retrieved 24 February 2015.
- ^ "Debian codebase in Google Code". Archived from the original on November 7, 2011. Retrieved 2011-11-08.
- ^ John Markoff, 디지털 레코드를 검증하는 툴, 테크놀로지의 이행에도 불구하고, NYT, 2009년 1월 26일
- ^ RFC 5702, RFC-Editor.org
- ^ Ulrich Drepper, SHA-256/512 탑재 Unix 암호화
- ^ Bitcoin, Surplus. "Bitcoin Does Not Waste Energy". Surplus Bitcoin. Retrieved 2020-04-20.
- ^ "What Is SHA-256 And How Is It Related to Bitcoin? - Mycryptopedia". Mycryptopedia. 2017-09-21. Retrieved 2018-09-17.
- ^ National Institute on Standards and Technology Computer Security Resource Center, NIST의 해시 함수에 대한 정책 2009년 3월 29일에 Wayback Machine에 2011-06-09년 아카이브되었습니다.
- ^ "Secure Hashing". NIST. Archived from the original on 2011-06-25. Retrieved 2010-11-25.
- ^ "Overview of Windows XP Service Pack 3" (PDF). Microsoft Corporation. Archived from the original (PDF) on May 30, 2008.
- ^ Chromium 블로그, 2014년 9월 5일, SHA-1 서서히 일몰
- ^ Eric Mill. "SHAAAAAAAAAAAAA". SHAAAAAAAAAAAAA.com.
- ^ Filippo Valsorda, Chrome SHA1 비공식 추천 FAQ
- ^ "An update to our SHA-1 deprecation roadmap – Microsoft Edge Dev BlogMicrosoft Edge Dev Blog". blogs.windows.com. 29 April 2016. Retrieved 2016-11-28.
- ^ 파비안 A.Scherschel, HeiseSecurity:파이어폭스: Mozilla 샬텟 SHA-1 ab... undirkt wider an (독일)
- ^ Alexander Sotirov, Marc Stevens, Jacob Appelbaum, Arjen Lenstra, David Molnar, Dag Arne Osvik, Benne de Weger, MD5는 현재 유해하다고 생각됩니다. 부정 CA 증명서 작성(2009년 3월 29일 액세스).
- ^ Sony China Research Laboratory 및 Sony Corporation, Ji Li, Takanori Isobe 및 Kyoji Shibutani, Middle Pre-image 공격을 의사 충돌 공격으로 전환: SHA-2로의 응용 프로그램
- ^ Somitra Kumar Sanadhya & Palash Sarkar (2008). "New Collision Attacks Against Up To 24-step SHA-2" (PDF). IACR Cryptology ePrint Archive. 2008:270.
- ^ Kazumaro Aoki; Jian Guo; Krystian Matusiewicz; Yu Sasaki & Lei Wang (2009). Preimages for step-reduced SHA-2. Advances in Cryptology – ASIACRYPT 2009. Lecture Notes in Computer Science. Vol. 5912. Springer Berlin Heidelberg. pp. 578–597. doi:10.1007/978-3-642-10366-7_34. ISBN 978-3-642-10366-7. ISSN 0302-9743.
- ^ Jian Guo; San Ling; Christian Rechberger & Huaxiong Wang (2010). Advanced meet-in-the-middle preimage attacks: First results on full Tiger, and improved results on MD4 and SHA-2 (PDF). Advances in Cryptology – ASIACRYPT 2010. Lecture Notes in Computer Science. Vol. 6477. Springer Berlin Heidelberg. pp. 56–75. doi:10.1007/978-3-642-17373-8_4. ISBN 978-3-642-17373-8. ISSN 0302-9743.
- ^ Florian Mendel; Tomislav Nad; Martin Schläffer (2013). Improving Local Collisions: New Attacks on Reduced SHA-256. Advances in Cryptology – EUROCRYPT 2013. Lecture Notes in Computer Science. Vol. 7881. Springer Berlin Heidelberg. pp. 262–278. doi:10.1007/978-3-642-38348-9_16. ISBN 978-3-642-38348-9. ISSN 0302-9743.
- ^ Maria Eichlseder and Florian Mendel and Martin Schläffer (2014). "Branching Heuristics in Differential Collision Search with Applications to SHA-512" (PDF). IACR Cryptology ePrint Archive. 2014:302.
- ^ Christoph Dobraunig; Maria Eichlseder & Florian Mendel (2016). "Analysis of SHA-512/224 and SHA-512/256" (PDF). International Association for Cryptologic Research.
- ^ "SHS Validation List". NIST. 2017-06-16. Archived from the original on 2017-06-17.
- ^ "Measurements table". bench.cr.yp.to.
- ^ Tao, Xie; Liu, Fanbao; Feng, Dengguo (2013). Fast Collision Attack on MD5 (PDF). Cryptology ePrint Archive (Technical report). IACR.
- ^ Stevens, Marc; Bursztein, Elie; Karpman, Pierre; Albertini, Ange; Markov, Yarik. The first collision for full SHA-1 (PDF) (Technical report). Google Research.
- Marc Stevens; Elie Bursztein; Pierre Karpman; Ange Albertini; Yarik Markov; Alex Petit Bianco; Clement Baisse (February 23, 2017). "Announcing the first SHA1 collision". Google Security Blog.
- ^ 잘리지 않으면 충돌 저항에 관계없이 해시 함수의 전체 내부 상태를 알 수 있습니다.출력이 잘린 경우 해시 함수를 재개하기 전에 삭제된 상태의 일부를 검색하여 찾아야 합니다.이것에 의해, 공격이 속행할 수 있습니다.
- ^ "The Keccak sponge function family". Retrieved 2016-01-27.
- ^ SUPERCOP 벤치마크 기계별 해시 함수 측정
- ^ "SUPERCOP". Retrieved 24 February 2015.
- ^ 지원되는 SSL/TLS 암호 스위트
- ^ Mbed TLS Changelog, 2007년 7월 7일
- ^ "ARM Cortex-A53 MPCore Processor Technical Reference Manual Cryptography Extension".
- ^ IBM z/Architecture 작동 원리(발행 번호 SA22-7832).7장의 KIMD 및 KLMD 지침을 참조하십시오.
추가 정보
- Henri Gilbert, Helena Handschuh: SHA-256과 자매의 보안 분석.2003년 암호화 분야 선정: pp175 – 193
- "Proposed Revision of Federal Information Processing Standard (FIPS) 180, Secure Hash Standard". Federal Register. 59 (131): 35317–35318. 1994-07-11. Retrieved 2007-04-26.[영구 데드링크]
외부 링크
- NIST의 SHA-256, SHA-384 및 SHA-512 설명
- SHA-2 Checker – SHA-2에 대한 SSL 호환성을 체크하는 SHAChecker
- Secure Hash Standard(SHS; 시큐어 해시 표준) 사양– 제안된 SHS 초안(SHA-0)
- Secure Hash Standard (SHS; 시큐어 해시 표준)– 제안된 SHS (SHA-0)
- CSRC Cryptographic Toolkit – Secure Hash Standard 공식 NIST 사이트
- FIPS PUB 180-4: SHS(Secure Hash Standard) (PDF, 834KB)– 현재 버전의 Secure Hash Standard (SHA-1, SHA-224, SHA-256, SHA-384 및 SHA-512), 2015년 8월
- NESSIE 프로젝트의 SHA-256/384/512 테스트 벡터
- NIST 사이트의 SHA-1, SHA-2 테스트 벡터
- NIST 암호화 해시 프로젝트– SHA-3 경쟁 제품
- RFC 3874: "224비트 단방향 해시 함수: SHA-224"
- RFC 6234: "US Secure Hash Algorithms (SHA 및 SHA 기반 HMAC 및 HKDF)"에는 구현 예 C가 포함되어 있습니다.
- SHA-256 알고리즘 데모