SHA-2

SHA-2
시큐어 해시 알고리즘
개념
해시 함수 · SHA · DSA
주요 규격
SHA-0 · SHA-1 · SHA-2 · SHA-3
SHA-2
일반
디자이너국가안전보장국
초판2001년; 21년 전(2001년)
시리즈(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발에 대한 내충돌성파괴하는 것이다.

해시표준

SHA-2 패밀리 압축 함수의 1회 반복.파란색 구성 요소는 다음 작업을 수행합니다.




비트 회전에서는 SHA-512에 대해 다른 상수가 사용됩니다.지정된 번호는 SHA-256용입니다.
빨간색 SHA-256의 경우 추가 모듈32 2 또는64 SHA-512의 경우 2입니다.

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월 현재 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&gt의 원본 메시지 1<>Kzeros>, <, 나는 64비트 integer&gt로, 프로세스 연속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통해.h7SHA-512/t IV 생성 함수에 의해 제공됩니다.
  • 출력은 연결 부분을 잘라냄으로써 구성됩니다.h0통해.h7t비트로
  • 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 기능의 비교

아래 표에서 내부 상태는 데이터 블록의 각 압축 후의 "내부 해시합"을 의미합니다.

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]의 일부로 사용 가능

「 」를 참조해 주세요.

레퍼런스

  1. ^ 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.
  2. ^ a b c Mario Lamberger & Florian Mendel (2011). "Higher-Order Differential Attack on Reduced SHA-256" (PDF). IACR Cryptology ePrint Archive. 2011:37.
  3. ^ "On the Secure Hash Algorithm family" (PDF). Archived from the original (PDF) on 2016-03-30.
  4. ^ a b 연방관보 공지 02-21599 FIPS 간행물 180-2 승인 공고
  5. ^ "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.
  6. ^ US 6829355, Lilly, Glenn M., "단방향 암호화 해시의 디바이스와 방법", 2004-12-07 발행, National Security Agency에 할당됨
  7. ^ "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.
  8. ^ "FIPS 180-2 with Change Notice 1" (PDF). csrc.nist.gov.
  9. ^ Federal Register Notice E8-24743, FIPS 간행물 승인 발표 180-3
  10. ^ a b 승인된 해시 알고리즘을 사용하는 응용 프로그램에 대한 FIPS SP 800-107 권장 사항
  11. ^ a b 관리를 위한 FIPS SP 800-57 권장 사항: 파트 1: 일반
  12. ^ "NIST.gov – Computer Security Division – Computer Security Resource Center". 29 December 2016.
  13. ^ FIPS SP 800-131A 암호화 알고리즘 및 키 길이 전환에 관한 권장 사항
  14. ^ Federal Register Notice 2012-5400, FIPS 간행물 승인 발표 180-4
  15. ^ "NIST Selects Winner of Secure Hash Algorithm (SHA-3) Competition". 2 October 2012. Retrieved 24 February 2015.
  16. ^ "Debian codebase in Google Code". Archived from the original on November 7, 2011. Retrieved 2011-11-08.
  17. ^ John Markoff, 디지털 레코드를 검증하는 툴, 테크놀로지의 이행에도 불구하고, NYT, 2009년 1월 26일
  18. ^ RFC 5702, RFC-Editor.org
  19. ^ Ulrich Drepper, SHA-256/512 탑재 Unix 암호화
  20. ^ Bitcoin, Surplus. "Bitcoin Does Not Waste Energy". Surplus Bitcoin. Retrieved 2020-04-20.
  21. ^ "What Is SHA-256 And How Is It Related to Bitcoin? - Mycryptopedia". Mycryptopedia. 2017-09-21. Retrieved 2018-09-17.
  22. ^ National Institute on Standards and Technology Computer Security Resource Center, NIST의 해시 함수대한 정책 2009년 3월 29일에 Wayback Machine에 2011-06-09년 아카이브되었습니다.
  23. ^ "Secure Hashing". NIST. Archived from the original on 2011-06-25. Retrieved 2010-11-25.
  24. ^ "Overview of Windows XP Service Pack 3" (PDF). Microsoft Corporation. Archived from the original (PDF) on May 30, 2008.
  25. ^ Chromium 블로그, 2014년 9월 5일, SHA-1 서서히 일몰
  26. ^ Eric Mill. "SHAAAAAAAAAAAAA". SHAAAAAAAAAAAAA.com.
  27. ^ Filippo Valsorda, Chrome SHA1 비공식 추천 FAQ
  28. ^ "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.
  29. ^ 파비안 A.Scherschel, HeiseSecurity:파이어폭스: Mozilla 샬텟 SHA-1 ab... undirkt wider an (독일)
  30. ^ Alexander Sotirov, Marc Stevens, Jacob Appelbaum, Arjen Lenstra, David Molnar, Dag Arne Osvik, Benne de Weger, MD5는 현재 유해하다고 생각됩니다. 부정 CA 증명서 작성(2009년 3월 29일 액세스).
  31. ^ Sony China Research Laboratory 및 Sony Corporation, Ji Li, Takanori Isobe 및 Kyoji Shibutani, Middle Pre-image 공격을 의사 충돌 공격으로 전환: SHA-2로의 응용 프로그램
  32. ^ Somitra Kumar Sanadhya & Palash Sarkar (2008). "New Collision Attacks Against Up To 24-step SHA-2" (PDF). IACR Cryptology ePrint Archive. 2008:270.
  33. ^ 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.
  34. ^ 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.
  35. ^ 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.
  36. ^ 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.
  37. ^ Christoph Dobraunig; Maria Eichlseder & Florian Mendel (2016). "Analysis of SHA-512/224 and SHA-512/256" (PDF). International Association for Cryptologic Research.
  38. ^ "SHS Validation List". NIST. 2017-06-16. Archived from the original on 2017-06-17.
  39. ^ "Measurements table". bench.cr.yp.to.
  40. ^ Tao, Xie; Liu, Fanbao; Feng, Dengguo (2013). Fast Collision Attack on MD5 (PDF). Cryptology ePrint Archive (Technical report). IACR.
  41. ^ 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.
  42. ^ 잘리지 않으면 충돌 저항에 관계없이 해시 함수의 전체 내부 상태를 알 수 있습니다.출력이 잘린 경우 해시 함수를 재개하기 전에 삭제된 상태의 일부를 검색하여 찾아야 합니다.이것에 의해, 공격이 속행할 수 있습니다.
  43. ^ "The Keccak sponge function family". Retrieved 2016-01-27.
  44. ^ SUPERCOP 벤치마크 기계별 해시 함수 측정
  45. ^ "SUPERCOP". Retrieved 24 February 2015.
  46. ^ 지원되는 SSL/TLS 암호 스위트
  47. ^ Mbed TLS Changelog, 2007년 7월 7일
  48. ^ "ARM Cortex-A53 MPCore Processor Technical Reference Manual Cryptography Extension".
  49. ^ IBM z/Architecture 작동 원리(발행 번호 SA22-7832).7장의 KIMD 및 KLMD 지침을 참조하십시오.

추가 정보

외부 링크