맨위로가기

SHA-3

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

1. 개요

SHA-3는 2012년 미국 국립표준기술연구소(NIST)가 공모전을 통해 채택한 새로운 해시 함수 표준이다. Keccak 알고리즘을 기반으로 하며, SHA-2의 대체재가 아닌, 기존 해시 함수의 취약점을 보완하기 위해 개발되었다. SHA-3는 스펀지 구조를 사용하여 설계되었으며, SHA3-224, SHA3-256, SHA3-384, SHA3-512 및 SHAKE128, SHAKE256 등 다양한 변형을 제공한다. 블록체인, 전자서명 등 다양한 분야에서 활용되며, 향후에도 지속적인 연구와 발전을 통해 보안성을 강화할 것으로 기대된다.

더 읽어볼만한 페이지

  • 암호화 해시 함수 - RIPEMD
    RIPEMD는 MD4를 기반으로 1992년 설계된 암호화 해시 함수로, 보안 취약점 보완을 위해 RIPEMD-128, RIPEMD-160, RIPEMD-256, RIPEMD-320 등의 변형이 개발되었으며, 특히 RIPEMD-160은 160비트 해시 값을 생성하고 다양한 라이브러리에서 지원되지만 보안성 우려가 제기되고 있다.
  • 암호화 해시 함수 - MD5
    MD5는 로널드 리베스트 교수가 개발한 128비트 해시 값 생성 암호화 해시 함수이나, 보안 취약점으로 인해 현재는 보안이 중요한 분야에서는 사용이 중단되었다.
SHA-3
일반 정보
종류암호화 해시 함수
시리즈SHA-0, SHA-1, SHA-2, SHA-3
표준FIPS PUB 202
디자인
설계자Guido Bertoni, Joan Daemen, Michaël Peeters, Gilles Van Assche
발표일2016년
세부 정보
다이제스트 크기임의적
구조스폰지 구조
속도Keccak-f[1600]에 대해 전형적인 x86-64 기반 기계에서 바이트 당 12.6 사이클 (cpb), XORing 1024 비트. 이는 대략 SHA2-256에 해당함.
암호 분석2511.5 시간이 걸리고 2508 메모리가 필요한 8라운드로 축소된 Keccak-512에 대한 프리이미지 공격.
전체 24라운드 Keccak-f[1600]에 대한 제로섬 식별자가 존재하지만 해시 함수 자체를 공격하는 데 사용할 수 없음.

2. 역사

Keccak 알고리즘은 귀도 베르토니(Guido Bertoni), 조안 다이먼(빈센트 라이먼(Vincent Rijmen)과 함께 Rijndael 암호를 공동 설계하기도 했다), 미카엘 피터스(Michaël Peeters), 그리고 질 반 아셰(Gilles Van Assche)가 개발하였다. 이 알고리즘은 이전 해시 함수 설계인 PANAMA와 RadioGatún을 기반으로 한다. PANAMA는 1998년 다이먼과 크레이그 클랩(Craig Clapp)이 설계했고, PANAMA의 후속작인 RadioGatún은 다이먼, 피터스, 반 아셰가 설계하여 2006년 NIST 해시 워크숍에서 발표되었다.[14] 참조 구현(reference implementation)의 소스 코드는 CC0 포기서를 통해 퍼블릭 도메인에 공개되었다.[15]

MD5, SHA-0, SHA-1에 대한 성공적인 공격 이후, 미국 국립표준기술연구소(NIST)는 새로운 해시 표준인 SHA-3의 필요성을 인지하고, NIST 해시 함수 공모전을 개최하였다.

Keccak은 2008년 말 51개의 제출된 후보 중 하나였으며, 2009년 7월 2차 심사 대상 14개 알고리즘 중 하나로 선정되었고, 2010년 12월 최종 후보로 선정되었다.[18] 2012년 10월 2일, Keccak은 최종적으로 SHA-3 공모전의 우승자로 선정되었다.[21]

공모전 기간 동안 참가자들은 발견된 문제들을 해결하기 위해 자신들의 알고리즘을 수정하는 것이 허용되었다. Keccak에 가해진 변경 사항은 다음과 같다:[19][20]


  • 라운드 수를 늘려 보안을 강화했다.
  • 메시지 패딩을 단순화했다. (10*1 패턴)
  • 속도 ''r''을 증가시켜 보안 제한을 강화했다.


2014년, NIST는 "SHA-3 표준: 순열 기반 해시 및 확장 가능한 출력 기능"이라는 초안 연방 정보 처리 표준(FIPS) 202를 발행했고,[22] FIPS 202는 2015년 8월 5일에 승인되었다.[23] 같은 날, NIST는 SHA-3이 해싱 표준이 되었다고 발표했다.[24]

2013년 초, NIST는 SHA-3 표준에 대해 제출된 값과 비교하여 "용량"에 대해 다른 값을 선택할 것이라고 발표하면서 약간의 혼란이 있었다.[25][26] 이로 인해 여러 논란이 발생했지만, 결국 2013년 11월 NIST는 원래 제안 (c = 2d)으로 돌아갈 것을 제안했고,[34] 이는 최종 릴리스에서 확인되었다.[4]

2. 1. 개발 배경

MD5, SHA-0, SHA-1에 대한 공격이 성공하면서, 미국 국립표준기술연구소(NIST)는 새로운 해시 함수 표준이 필요하다고 판단했다.[16][17] 2006년 NIST는 공개 경쟁 방식의 SHA-3 공모전을 시작했다. SHA-3는 SHA-2를 대체하기 위한 것이 아니었지만, 기존 해시 함수에 대한 보안 우려를 해소하기 위한 목적이었다.

2008년 말까지 51개의 후보 알고리즘이 제출되었고, 그 중 Keccak이 채택되었다. 2009년 7월에는 2라운드를 위한 14개의 알고리즘이 선정되었으며, Keccak은 2010년 12월 최종 라운드에 진출했다.[18]

공모전 기간 동안 참가자들은 발견된 문제를 해결하기 위해 알고리즘을 수정할 수 있었다. Keccak에 적용된 주요 변경 사항은 다음과 같다:[19][20]

  • 보안 강화를 위해 라운드 수를 늘렸다.
  • 메시지 패딩 방식을 단순화했다.
  • 속도 ''r''을 증가시켜 보안 수준을 높였다.


2012년 10월 2일, Keccak은 SHA-3 공모전의 최종 우승자로 선정되었다.[21]

2. 2. Keccak 알고리즘 선정

2006년, 미국 국립표준기술연구소(NIST)는 새로운 해시 표준인 SHA-3을 만들기 위해 NIST 해시 함수 공모전을 시작했다. MD5, SHA-0, SHA-1에 대한 성공적인 공격으로 인해, NIST는 다른 암호화 해시의 필요성을 인식했다.[16][17]

설정 기간을 거쳐 2008년 말까지 제출이 완료되었고, Keccak은 51개의 후보 중 하나로 채택되었다. 2009년 7월, 14개의 알고리즘이 2라운드를 위해 선정되었으며, Keccak은 2010년 12월 최종 라운드에 진출했다.[18]

공모전 동안 참가자들은 발견된 문제를 해결하기 위해 자신들의 알고리즘을 수정할 수 있었다. Keccak에 가해진 변경 사항은 다음과 같다:[19][20]

  • 라운드 수가 보안을 위해 증가했다.
  • 메시지 패딩이 더 복잡한 방식에서 단순한 10*1 패턴으로 변경되었다.
  • 속도 ''r''이 보안 제한으로 증가했다.


2012년 10월 2일, Keccak은 공모전의 우승자로 선정되었다.[21] Keccak 알고리즘은 귀도 베르토니(Guido Bertoni), 조안 다이먼(빈센트 라이먼(Vincent Rijmen)과 함께 Rijndael 암호를 공동 설계하기도 했다), 미카엘 피터스(Michaël Peeters), 그리고 질 반 아셰(Gilles Van Assche)가 개발하였다.

2. 3. 표준화 및 논란

2015년 8월 5일, 미국 국립표준기술연구소(NIST)는 SHA-3을 해싱 표준으로 발표했다.[24]

2013년 초, NIST는 SHA-3 표준에 대해 제출된 값과 비교하여 "용량"(전반적인 강도 대 속도 매개변수)에 대해 다른 값을 선택할 것이라고 발표하면서 약간의 혼란이 있었다.[25][26]

해시 함수 경쟁은 SHA-2 인스턴스만큼 안전한 해시 함수를 요구했다. Keccak의 보안 증명은 "용량" ''c''를 기반으로 조절 가능한 보안 수준을 허용하여 충돌 및 사전 이미지 공격에 대해 ''c''/2-비트 저항성을 제공한다. 원래 경쟁 규칙을 충족하기 위해 Keccak의 저자는 c = 2d를 제안했다. 발표된 변경 사항은 모든 형태의 공격에 대해 동일한 ''d''/2-비트 보안을 허용하고 c = d를 표준화하는 것이었다. 이렇게 하면 Keccak의 속도가 빨라졌을 것이지만, 사전 이미지 저항성은 절반으로 줄어들어 양자 컴퓨팅의 발전에 취약해진다.[54]

2013년 9월, 다니엘 J. 번스타인은 NIST 해시 포럼 메일링 리스트에서[27] SHA-3 사양에 포함되지 않고 추가적으로 원래 기본 Keccak으로 제안된 576-비트 용량으로 보안을 강화할 것을 제안했다.[28] 9월 말, Keccak 팀은 SHA-3 제안에서 이미 옵션으로 c = 256을 설정하여 128-비트 보안을 제안했었다고 응답했다.[29] 용량 감소가 그들의 의견으로는 정당했지만, 부정적인 반응을 고려하여 모든 인스턴스에 대해 용량을 512 비트로 높일 것을 제안했다.[30]

2013년 10월 초, 브루스 슈나이어는 NIST의 결정이 알고리즘 채택에 미칠 수 있는 부정적인 영향에 근거하여 비판했다.[31] 그는 나중에 Keccak 순열은 변경되지 않았고, NIST가 제안한 것은 성능을 위해 해시 함수의 용량을 줄이는 것이었다고 정정했다.[31]

독립 소프트웨어 개발 회사에서 암호학자이자 수석 개발자인 폴 크롤리는 Keccak이 조정 가능해야 하며, 하나의 기본 요소 내에서 서로 다른 보안 수준을 가질 이유가 없다는 점을 언급하며 이 결정에 대한 지지를 표명했다.[32]

Keccak에 내부 변경이 있었을 수 있다는 혼란이 있었는데, 이는 원래 팀에 의해 해소되었다. NIST의 SHA-3 제안은 경쟁에 제출된 참조 코드를 사용하여 테스트 벡터를 생성할 수 있는 Keccak 제품군의 하위 집합이며, 이 제안은 그들과 NIST 해시 팀 간의 일련의 논의의 결과라고 밝혔다.[33]

2013년 11월, 이러한 논란에 대응하여 NIST의 존 켈시는 모든 SHA-2 드롭인 대체 인스턴스에 대해 원래 c = 2d 제안으로 되돌아갈 것을 제안했다.[34] 이 복귀는 후속 초안[35]과 최종 릴리스에서 확인되었다.[4]

3. 설계

SHA-3는 스펀지 함수 구조를 사용하여 설계되었다. 스펀지 함수는 데이터를 "흡수"하고 "짜내는" 두 단계로 작동한다. 흡수 단계에서는 입력 메시지를 블록 단위로 나누어 상태(state)와 XOR 연산을 하고, 이를 전체적으로 변환하는 순열 함수 f를 적용한다. 짜내는 단계에서는 상태의 일부를 출력하고, 다시 순열 함수를 적용하는 과정을 반복한다.

SHA-3의 내부 상태는 5x5x64 = 1600 비트 크기의 배열이다. Keccak은 이보다 작은 크기의 상태도 정의하지만, SHA-3에서는 1600 비트 상태가 사용된다.

SHA-3의 핵심 연산은 Keccak-f[1600]이라는 블록 순열 함수이다. 이 함수는 1600 비트 상태를 입력받아 24 라운드 동안 비선형 변환을 수행한다. 각 라운드는 θ(세타), ρ(로), π(파이), χ(카이), ι(이오타)의 5단계 연산으로 구성된다. 이 연산들은 XOR, AND, NOT 등 비트 연산을 기반으로 하여 소프트웨어 및 하드웨어 구현이 용이하다.

메시지를 r 비트 블록으로 균등하게 나누기 위해 SHA-3는 10*1 패딩을 사용한다. 즉, 메시지 끝에 1을 추가하고, 필요한 만큼 0을 추가한 후, 마지막에 다시 1을 추가한다. 이렇게 하면 메시지 길이가 r의 배수인 경우에도 패딩이 추가되어, 패딩된 메시지와 패딩처럼 보이는 메시지 간의 해시 충돌을 방지한다. 또한, 마지막 1 비트는 다중 속도 패딩의 역할을 하여, 서로 다른 SHA-3 변형 간의 충돌을 방지한다.

SHA-3 개발 과정에서, NIST는 원래 Keccak 알고리즘의 보안 매개변수를 일부 변경하려고 시도했다. 이는 알고리즘의 속도를 높이기 위한 것이었지만, 보안 수준이 SHA-2와 동일하지 않게 된다는 비판을 받았다. 특히, 사전 이미지 공격에 대한 저항성이 약화되어 양자 컴퓨팅 공격에 취약해질 수 있다는 우려가 제기되었다.[54]

이에 대해 다니엘 J. 번스타인 등은 보안 강화를 위해 원래 Keccak에서 제안한 576 비트 용량을 사용할 것을 제안했다.[28] Keccak 팀은 모든 인스턴스에 대해 512 비트 용량을 제안하여 256 비트 보안 수준을 제공하면서도 효율성을 유지하고자 했다.[30]

브루스 슈나이어는 NIST의 결정이 알고리즘 채택에 부정적인 영향을 미칠 수 있다고 비판했지만,[31] Keccak 순열 자체는 변경되지 않았다는 점을 인정하며 자신의 발언을 정정했다.[31]

결국, NIST는 모든 SHA-2 대체 인스턴스에 대해 원래 제안되었던 c=2d (c는 용량, d는 출력 크기)로 되돌아가기로 결정했다.[34]

3. 1. 스펀지 구조

스펀지 구조의 그림
해시 함수를 위한 스펀지 구조. ''Pi''는 입력, ''Zi''는 해시된 출력이다. 사용되지 않는 "용량" ''c''는 충돌 공격 또는 원상 공격에 대한 원하는 저항의 두 배여야 한다.


SHA-3는 스펀지 함수를 사용한다.[36] 스펀지 함수는 데이터를 "흡수"한 다음, 결과를 "짜내는" 방식으로 동작한다. 흡수 단계에서, 메시지 블록은 상태의 일부분과 XOR 연산을 거친 후, 순열 함수 f를 통해 변환된다. "짜내는" 단계에서는, 출력 블록이 상태의 동일한 부분에서 읽혀지고, 상태 변환 함수 f와 번갈아 나타난다. 상태 중 읽고 쓰는 부분의 크기를 "속도"(r)라 하고, 입/출력에 영향을 받지 않는 부분의 크기를 "용량"(c)이라 한다. 용량은 스킴의 보안 수준을 결정하며, 최대 보안 수준은 용량의 절반이다.

입력 비트열 N, 패딩 함수 pad, 비트 블록 단위로 작동하는 순열 함수 f, 속도 r, 출력 길이 d가 주어지면, 용량 c = b - r을 가지는 스펀지 구조 Z = \text{sponge}[f,pad,r](N,d)는 길이 d의 비트열 Z를 다음과 같이 생성한다.[5]

  • pad 함수를 사용하여 입력 ''N''을 패딩해 r로 나누어 떨어지는 길이의 패딩된 비트열 ''P''를 만든다. (n = \text{len}(P)/r은 정수)
  • ''P''를 ''n''개의 연속된 ''r'' 비트 조각 ''P''0, ..., ''P''''n''−1로 나눈다.
  • 상태 ''S''를 ''b''개의 0 비트 문자열로 초기화한다.
  • 입력을 상태에 흡수한다: 각 블록 ''P''''i''에 대해:
  • ''P''''i''의 끝에 ''c''개의 0 비트 문자열을 추가하여 길이가 ''b''가 되게 한다.
  • 이를 ''S''와 XOR 연산한다.
  • 블록 순열 ''f''를 결과에 적용하여 새로운 상태 ''S''를 얻는다.
  • ''Z''를 빈 문자열로 초기화한다.
  • ''Z''의 길이가 ''d''보다 작은 동안:
  • ''S''의 처음 ''r'' 비트를 ''Z''에 추가한다.
  • ''Z''가 여전히 ''d'' 비트보다 작으면, ''f''를 ''S''에 적용하여 새로운 상태 ''S''를 만든다.
  • ''Z''를 ''d'' 비트로 자른다.


내부 상태 ''S''가 ''Z''에 출력되는 것 외에 추가로 ''c'' 비트의 정보를 포함한다는 사실은 SHA-2, SHA-1, MD5 및 메르클-담고르 구성 기반의 해시 함수들이 취약한 길이 확장 공격을 방지한다.

SHA-3에서 상태 ''S''는 5 × 5개의 ''w'' 비트 단어들의 배열로 구성되며, 여기서 ''w'' = 64이다. 따라서 총 ''b'' = 5 × 5 × ''w'' = 1600 비트가 된다. Keccak은 더 작은 2의 거듭제곱 워드 크기 ''w'' (최소 1비트, 총 25비트 상태)도 정의한다. 작은 상태 크기는 암호 분석 공격을 실험하는 데 사용될 수 있고, 중간 크기 상태(200~800 비트)는 가벼운 애플리케이션에 사용될 수 있다.[10][11]

SHA3-224, SHA3-256, SHA3-384, SHA3-512 인스턴스에서는 ''r''이 ''d''보다 크므로, 압착 단계에서 추가적인 블록 순열이 필요 없다. 즉, 상태의 앞 ''d'' 비트가 원하는 해시 값이다. 그러나 SHAKE128과 SHAKE256은 임의의 출력 길이를 허용하며, 이는 최적 비대칭 암호화 패딩과 같은 응용에 유용하다.

3. 2. 블록 치환 (Block Permutation)

SHA-3의 핵심 연산은 Keccak-f[1600] 블록 치환 함수이다.[5] Keccak-f[1600]은 5x5x64 (1600비트) 크기의 상태를 입력받아, 24 라운드 동안 비선형 변환을 수행한다. 각 라운드는 θ(세타), ρ(로), π(파이), χ(카이), ι(이오타)의 5단계 연산으로 구성된다. 이러한 연산들은 XOR, AND, NOT 등 비트 연산을 기반으로 하여, 소프트웨어 및 하드웨어 구현에 용이하다.

이 치환은 워드 길이를 ''w''로 할 때, ''5×5×w'' 비트의 상태를 다른 상태로 변환한다. 2의 거듭제곱인 임의의 ''w=2''에 대해 정의되어 있지만, SHA-3에서는 워드 길이는 ''w=64'' (''ℓ= 6'')가 사용된다. 상태는 5×5×''w'' 비트의 배열로 표현된다. ''A''[''x''][''y''][''z'']는 리틀 엔디안을 따를 때 (5''y'' + ''x'')×''w'' + ''z'' 번째 입력 비트가 된다. 인덱스 연산은 처음 두 차원에 대해서는 modulo 5, 세 번째 차원에 대해서는 modulo ''w''가 된다.

기본적인 블록 치환 함수는 5개의 부 라운드로 구성된 12+2ℓ의 반복으로 구성된다. 각 부 라운드는 다음과 같다. (대입 형식으로 기술되는 경우, 입력 상태를 ''A'', 출력 상태를 ''A’''로 한다).

  • θ(세타): 5×''w'' (''w'' = 64일 때 320)마다 5비트 열의 패리티 (이 경우 5비트의 배타적 논리합)를 계산하고, 추가로 인접한 2개의 열과의 배타적 논리합을 취한다.
  • ''A’''[''x''][''y''][''z''] = ''A''[''x''][''y''][''z''] ⊕ parity(''A''[''x''-1][0...4][''z'']) ⊕ parity(''A''[''x''+1][0...4][''z''−1])
  • ρ(로): 25워드마다 다른 삼각수 0, 1, 3, 6, 10, 15, ....로 로테이트한다.
  • ''A''[0][0]은 로테이트하지 않고, 출력 ''A’''에 복사한다. 그 외 모든 0≤''t''≤23에 대해, ''A’''[''x''][''y''][''z''] = ''A''[''x''][''y''][''z''−(''t''+1)(''t''+2)/2]로 한다. 이때 \begin{pmatrix} x \\ y \end{pmatrix} = \begin{pmatrix} 0 & 1 \\ 2 & 3 \end{pmatrix}^t \begin{pmatrix} 1 \\ 0 \end{pmatrix}으로 한다.
  • π(파이): 25워드를 정해진 패턴으로 치환한다.
  • ''A’''[''x''][''y''] = ''A''[''y''][''2x+3y'']
  • χ(카이): ''a'' = ''a'' ⊕ (¬''b'' & ''c'')를 사용하여 비트 열을 결합한다.
  • ''A’''[''x''][''y''] = ''A''[''x''][''y''] ⊕ (¬''A''[''x''+1][''y''] & ''A''[''x''+2][''y''])
  • SHA-3에서 이 과정만이 비선형 연산이다.
  • ι(이오타): 라운드 상수와 상태 워드의 배타적 논리합을 취한다.
  • 라운드 ''i''''r''에서 0≤''j''≤ℓ일 때 ''A''[0][0][2''j''−1]와 degree-8 LFSR 시퀀스의 ''j''+7''i''''r'' 번째 출력과의 배타적 논리합을 취한다. 이것으로 다른 부 라운드에서 유지되었던 대칭성이 깨진다.

3. 3. 패딩 (Padding)

SHA-3는 메시지를 r 비트 단위의 블록으로 나누기 위해 10*1 패턴의 패딩 방식을 사용한다. 즉, 메시지 끝에 1비트를 추가하고, 0개 이상의 0비트(최대 r-1개)를 추가한 후, 마지막에 1비트를 추가한다.[5]

메시지 길이가 이미 r로 나누어 떨어지더라도 10*1 패턴(이 경우 100...001 형태의 r 비트 블록)이 추가된다.[79] 이는 패딩된 메시지와 "패딩된 것처럼 보이는 메시지" 간의 해시 충돌을 방지하기 위해 필요하다.

마지막 1비트는 서로 다른 속도(r)를 사용하는 SHA-3 변형(예: SHA3-224와 SHA3-256) 간의 해시 충돌을 방지하는 다중 속도 패딩(multi-rate padding) 역할을 한다. 이는 동일한 짧은 메시지에 대해 서로 다른 해시 변형이 잘림(truncation)까지 동일한 해시값을 생성하는 것을 막는다.

4. SHA-3 변형

미국 국립표준기술연구소가 게시한 예제 해시 값은 다음과 같다.[109]

함수해시값 (빈 문자열)
SHA3-2246b4e03423667dbb73b6e15454f0eb1abd4597f9a1b078e3f5b5a6bc7
SHA3-256a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a
SHA3-3840c63a75b845e4f7d01107d852e4c2485c51a50aaaa94fc61995e71bbee983a2ac3713831264adb47fb6bd1e058d5f004
SHA3-512a69f73cca23a9ac5c8b567dc185a756e97c982164fe25859e0d1dcc1475c80a615b2123af1f5f94c11e3e9402c3ac558f500199d95b6d3e301758586281dcd26
SHAKE128 (256비트 출력)7f9c2ba4e88f827d616045507605853ed73b8093f6efbc88eb1a6eacfa66ef26
SHAKE256 (512비트 출력)46b9dd2b0ba88d13233b3feb743eeb243fcd52ea62b81b82b50c27646ed5762fd75dc4ddd8c0f200cb05019d67b592f6fc821c49479ab48640292eacb3b7c4be



1비트만 변경해도 쇄도 효과 때문에 출력값의 각 비트가 50% 확률로 변경되어 상당한 변화가 일어난다. 다음은 "The quick brown fox jumps over the lazy dog" 문자열과 마지막 글자만 'f'로 바꾼 문자열의 SHAKE128 (256비트 출력) 해시값이다.


  • SHAKE128("The quick brown fox jumps over the lazy dog", 256): f4202e3c5852f9182a0430fd8144f0a74b95e7417ecae17db0f8cfeed0e3e66e
  • SHAKE128("The quick brown fox jumps over the lazy dof", 256): 853f4538be0db9621a6cea659a06c1107b1f83f02b13d18297bd39d7411cf10c


두 해시값을 비교하면 총 126개의 비트가 달라졌으며, 이는 전체 비트 수 256개의 약 49.22%에 해당한다.

SHA-3의 긴 메시지 해싱 속도는 ''f'' = Keccak-f[1600] 계산과 확장된 ''P''i와 ''S''를 XOR하는 연산에 의해 결정된다. 확장된 ''P''i의 마지막 ''c'' 비트는 어차피 0이므로, ''r'' 비트(SHA3-224의 경우 ''r'' = 1152비트, SHA3-256의 경우 1088비트, SHA3-384의 경우 832비트, SHA3-512의 경우 576비트)에 대해서만 XOR 연산을 수행하면 충분하다. ''r'' 값이 작을수록 해싱은 덜 효율적이지만 더 안전해진다.

NIST 표준은 메시지 ''M''과 출력 길이 ''d''에 대해 다음 인스턴스를 정의한다.[5]

인스턴스출력
크기 d
속도 r
= 블록 크기
용량 c정의저항 (비트 단위)
충돌프리이미지2차 프리이미지
SHA3-224(M)2241152448Keccak[448](M01, 224)112224224
SHA3-256(M)2561088512Keccak[512](M01, 256)128256256
SHA3-384(M)384832768Keccak[768](M01, 384)192384384
SHA3-512(M)5125761024Keccak[1024](M01, 512)256512512
SHAKE128(M, d)d1344256Keccak[256](M1111, d)min(d/2, 128)≥min(d, 128)min(d, 128)
SHAKE256(M, d)d1088512Keccak[512](M1111, d)min(d/2, 256)≥min(d, 256)min(d, 256)



여기서,


  • Keccak[''c''](''N'', ''d'') = sponge[Keccak-f[1600], pad10*1, ''r''](''N'', ''d'')[5]
  • Keccak-f[1600] = Keccak-p[1600, 24][5]
  • ''c''는 용량
  • ''r''은 속도 = 1600 − ''c''
  • ''N''은 입력 비트 문자열


SHAKE는 요청된 만큼의 비트를 생성하는 확장 가능한 출력 함수(XOF)이다. 예를 들어 SHAKE128(M, 256)은 128비트 보안 강도를 가진 256 문자 비트스트림의 해시 함수로 사용할 수 있다.

모든 인스턴스는 메시지에 몇 비트를 추가하며, 가장 오른쪽 비트는 도메인 분리 (암호화) 접미사를 나타낸다. 이는 Keccak 해시 함수의 다른 응용 프로그램에 대해 동일한 해시 출력을 생성하는 메시지를 구성할 수 없도록 보장하기 위한 것이다. 다음 도메인 분리 접미사가 존재한다.[5][45]

접미사의미
...0미래 사용을 위해 예약됨
01SHA-3
...11RawSHAKE
1111SHAKE


4. 1. 추가 변형 (Additional Instances)

2016년, SHA-3 함수와 Keccak 알고리즘을 만든 팀은 트리 해싱을 사용하여 병렬 실행의 이점을 활용할 수 있는 더 빠른 축소 라운드 대안인 KangarooTwelve와 MarsupilamiFourteen을 소개했다.[48]

이 함수들은 FIPS 표준화된 Keccak 기반의 병렬화 가능한 해시 함수인 ParallelHash와 다르며, 작은 메시지 크기에 대해 ParallelHash보다 빠르다.

라운드 수를 줄인 것은 12 라운드 Keccak에 가까운 어떤 것에 대해서도 실질적인 공격을 하지 못한 Keccak에 집중된 암호 분석 노력으로 정당화된다. 이러한 고속 알고리즘은 SHA-3의 일부가 아니며(나중에 개발되었기 때문에) FIPS를 준수하지 않지만, 동일한 Keccak 순열을 사용하기 때문에 12 라운드로 축소된 SHA-3에 대한 공격이 없는 한 안전하다.[48]

KangarooTwelve는 Keccak의 고성능 축소 라운드(24에서 12 라운드) 버전으로, Skylake CPU에서 128비트의 보안[49]을 주장하면서 0.55 사이클/바이트만큼의 성능을 낸다.[50] 이 알고리즘은 IETF RFC 초안이다.[51]

KangarooTwelve의 약간의 변형인 MarsupilamiFourteen은 Keccak 순열의 14 라운드를 사용하며 256비트의 보안을 주장한다. 256비트 보안은 128비트 보안보다 실제로 더 유용하지 않지만 일부 표준에서 요구할 수 있다.[49] 128비트는 현재 하드웨어에서 무차별 대입 공격을 물리치기에 이미 충분하므로, 사용자가 ''클래식'' 컴퓨터의 속도에서 상당한 발전을 걱정하지 않는 한 256비트 보안은 실질적인 가치를 더하지 않는다.

KangarooTwelve와 MarsupilamiFourteen은 SHAKE와 유사한 확장 가능한 출력 함수이므로, 공통 메시지에 대해 다른 출력 길이로 밀접하게 관련된 출력을 생성한다(더 긴 출력은 더 짧은 출력의 확장). 이러한 속성은 SHA-3 또는 ParallelHash와 같은 해시 함수에서는 나타나지 않는다(XOF 변형 제외).[5]

5. 성능

SHA-3의 해싱 속도는 Keccak-f[1600] 계산과 확장된 ''P''i와 ''S''를 XOR하는 연산에 의해 결정된다. SHA3-224, SHA3-256, SHA3-384, SHA3-512는 각각 1152비트, 1088비트, 832비트, 576비트에 대해 XOR 연산을 수행한다. ''r'' 값이 작을수록 해싱은 덜 효율적이지만 더 안전하다.

Keccak-f[1600]과 1024비트 XOR을 위한 소프트웨어 구현 속도는 다음과 같다.[37] 이는 대략 SHA3-256에 해당한다.

플랫폼속도 (cpb)
IA-32, 인텔 펜티엄 357.4
IA-32+MMX, 인텔 펜티엄 341
IA-32+SSE, 인텔 코어 2 듀오 또는 AMD 애슬론 6420
전형적인 x86-64 기반 시스템12.6
IA-646–7[37]



x86-64에서 SHA3-256의 경우, 11.7–12.25 cpb가 측정된다.[39] SHA-3는 Keccak 함수를 빠르게 계산하는 특수 명령어가 없는 CPU에서는 느리다는 비판이 있었다. 그러나 프리이미지 저항을 절반으로 줄이는 대신 SHA3-256 및 SHA3-512 대신 SHAKE128 및 SHAKE256을 사용하면 SHA2-256 및 SHA2-512와 비슷한 성능을 낼 수 있다.

하드웨어 구현에서 SHA-3는 다른 모든 최종 후보 및 SHA-2, SHA-1보다 빠르다.[41][40]

ARMv8,[42] z/Architecture,[43] RISC-V[44] 아키텍처는 Keccak 알고리즘을 가속하는 특수 명령어를 포함한다. 애플 A13 SoC CPU 코어는 ARMv8.2-SHA 암호화 확장 세트의 특수 명령어(EOR3, RAX1, XAR, BCAX)를 사용하여 SHA-3을 가속화한다.[72]

일부 소프트웨어 라이브러리는 CPU의 벡터화 기능을 사용하여 SHA-3 사용을 가속화한다. 예를 들어, Crypto++는 x86에서 SSE2를 사용하고,[74] OpenSSLMMX, AVX-512 또는 AVX-512VL을 사용할 수 있다.[75] POWER8 CPU는 2x64비트 벡터 회전을 구현하여 SHA-3 구현을 가속화한다.[76] ARM 구현은 Neon 벡터 명령어 대신 스칼라 코드가 더 빠르기 때문에 사용하지 않지만, SVE 및 SVE2 벡터 명령어를 사용하여 가속화할 수 있다.[77]

IBM z/Architecture는 2017년부터 메시지 보안 지원 확장 6의 일부로 SHA-3를 지원하며,[78] 각 코어에 내장된 하드웨어 지원 엔진을 통해 전체 SHA-3 및 SHAKE 알고리즘을 구현한다.

6. 보안성

SHA-3는 스펀지 구조를 사용하여, 양자 컴퓨터 환경에서도 높은 보안성을 제공한다. 일반적인 그로버 알고리즘을 사용하는 구조화된 원상 공격은 \sqrt{2^d} = 2^{d/2}의 복잡도를 가지는 반면, 고전적인 무차별 대입 공격은 2''d''의 복잡도를 가진다. 구조화된 원상 공격에는 2차 원상 공격[54]충돌 공격이 포함된다. 양자 컴퓨터는 생일 공격을 통해 충돌 저항을 \sqrt[3]{2^d} = 2^{d/3}로 낮출 수 있다.[55] (논란의 여지가 있음)[56]

SHA-3의 최대 강도가 c/2임을 고려할 때, 양자 보안 강도는 다음과 같다.[57]

인스턴스저항의 비트 단위 보안 강도
충돌
(Brassard 외)
충돌
(Bernstein)
원상2차 원상
SHA3-224(M)112112
SHA3-256(M)128128
SHA3-384(M)128192192192
SHA3-512(M)256256256
SHAKE128(M, d)min(d/3,128)min(d/2,128)≥min(d/2,128)min(d/2,128)
SHAKE256(M, d)min(d/3,256)min(d/2,256)≥min(d/2,256)min(d/2,256)



SHA-2에서 사용된 메르클-담고르 구성은 양자 충돌 저항성을 갖는다고 증명되었지만,[58] SHA-3에 사용된 스펀지 구성의 경우, 블록 함수 ''f''가 효율적으로 반전 가능하지 않은 경우에만 증명이 제공된다. Keccak-f[1600]은 효율적으로 반전 가능하므로, 이 증명은 적용되지 않는다.[59]

7. 활용 사례

이더리움은 Keccak-256 해시 함수를 사용한다(Bertoni et al.이 SHA-3 경연대회에서 우승한 버전 3을 기반으로 하며, 최종 SHA-3 사양과는 다르다).[1]

8. 향후 발전

SHA-3는 지속적인 연구와 개선을 통해 더욱 발전할 것으로 예상된다. 특히, KangarooTwelve와 같이 트리 해싱을 활용하여 병렬 처리를 지원하는 새로운 알고리즘이 개발되고 있다.[48] KangarooTwelve는 Keccak의 고성능 축소 라운드 (24에서 12 라운드) 버전으로, Skylake CPU에서 128비트의 보안[49]을 주장하면서 0.55 사이클/바이트만큼의 성능을 낸다.[50] 이 알고리즘은 IETF RFC 초안이다.[51] KangarooTwelve의 약간의 변형인 MarsupilamiFourteen은 Keccak 순열의 14 라운드를 사용하며 256비트의 보안을 주장한다.[49]

이 함수들은 병렬 처리 측면에서 FIPS 표준화된 Keccak 기반의 병렬화 가능한 해시 함수인 ParallelHash와 다르며, 작은 메시지 크기에 대해 ParallelHash보다 빠르다. 라운드 수를 줄인 것은 12 라운드 Keccak에 가까운 어떤 것에 대해서도 실질적인 공격을 하지 못한 Keccak에 집중된 엄청난 암호 분석 노력으로 정당화된다. 이러한 고속 알고리즘은 SHA-3의 일부가 아니며 (나중에 개발되었기 때문에) FIPS를 준수하지 않지만, 동일한 Keccak 순열을 사용하기 때문에 12 라운드로 축소된 SHA-3에 대한 공격이 없는 한 안전하다.[48]

대한민국에서도 SHA-3의 발전과 활용을 위한 연구가 활발히 진행될 것으로 기대된다.

9. SHA-3 예제

미국 국립표준기술연구소가 게시한 예제 해시 값은 다음과 같다.[109]

함수입력출력
SHA3-224(없음)6b4e03423667dbb73b6e15454f0eb1abd4597f9a1b078e3f5b5a6bc7
SHA3-256(없음)a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a
SHA3-384(없음)0c63a75b845e4f7d01107d852e4c2485c51a50aaaa94fc61995e71bbee983a2ac3713831264adb47fb6bd1e058d5f004
SHA3-512(없음)a69f73cca23a9ac5c8b567dc185a756e97c982164fe25859e0d1dcc1475c80a615b2123af1f5f94c11e3e9402c3ac558f500199d95b6d3e301758586281dcd26
SHAKE128(없음), 2567f9c2ba4e88f827d616045507605853ed73b8093f6efbc88eb1a6eacfa66ef26
SHAKE256(없음), 51246b9dd2b0ba88d13233b3feb743eeb243fcd52ea62b81b82b50c27646ed5762fd75dc4ddd8c0f200cb05019d67b592f6fc821c49479ab48640292eacb3b7c4be



1비트를 변경하면 출력값의 각 비트가 50% 확률로 변경되어, 쇄도 효과 때문에 상당한 변화가 일어난다.

함수입력출력
SHAKE128"The quick brown fox jumps over the lazy dog", 256f4202e3c5852f9182a0430fd8144f0a74b95e7417ecae17db0f8cfeed0e3e66e
SHAKE128"The quick brown fox jumps over the lazy dof", 256853f4538be0db9621a6cea659a06c1107b1f83f02b13d18297bd39d7411cf10c



달라진 비트는 총 126개이며, 이는 전체 비트 수 256개의 약 49.22%이다.[60]

참조

[1] 서적 Fast Software Encryption 2019-02-08
[2] 웹사이트 The Keccak SHA-3 submission https://keccak.team/[...] 2023-03-27
[3] 웹사이트 'Hash Functions {{!}} CSRC {{!}} CSRC' https://csrc.nist.go[...] 2024-04-19
[4] 웹사이트 Hash Functions https://csrc.nist.go[...] NIST 2021-02-17
[5] 간행물 SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions https://nvlpubs.nist[...] National Institute of Standards and Technology 2020-02-29
[6] 웹사이트 SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions https://www.nist.gov[...] Federal Information Processing Standards (NIST FIPS) 2015-08-04
[7] 웹사이트 Keccak: The New SHA-3 Encryption Standard http://www.drdobbs.c[...] 2013-05-07
[8] 웹사이트 Keccak specifications summary https://keccak.team/[...] 2023-03-27
[9] 간행물 Third-Round Report of the SHA-3 Cryptographic Hash Algorithm Competition https://nvlpubs.nist[...] 2020-02-29
[10] 웹사이트 CAESAR submission: Ketje v1 https://competitions[...] 2020-02-29
[11] 웹사이트 CAESAR submission: Keyak v1 https://competitions[...] 2020-02-29
[12] 웹사이트 'NIST Transitioning Away from SHA-1 for All Applications {{!}} CSRC' https://csrc.nist.go[...] 2024-10-09
[13] 웹사이트 'Announcing Request for Candidate Algorithm Nominations for a New Cryptographic Hash Algorithm (SHA-3) Family [U.S. Federal Register Vol. 72 No. 212)]' http://csrc.nist.gov[...] 2017-07-18
[14] 웹사이트 The road from Panama to Keccak via RadioGatún https://keccak.team/[...] 2023-03-27
[15] 문서 KeccakReferenceAndOptimized-3.2.zip https://keccak.team/[...]
[16] 웹사이트 The first collision for full SHA-1 https://shattered.io[...] 2017-02-23
[17] 웹사이트 SHA-1 is a Shambles https://sha-mbles.gi[...] 2020-01-08
[18] 웹사이트 'NIST Computer Security Division – The SHA-3 Cryptographic Hash Algorithm Competition, November 2007 – October 2012' http://csrc.nist.gov[...] 2017-01-04
[19] 웹사이트 Keccak parameter changes for round 2 https://keccak.team/[...] 2020-02-29
[20] 웹사이트 Simplifying Keccak's padding rule for round 3 https://keccak.team/[...] 2023-03-27
[21] 웹사이트 NIST Selects Winner of Secure Hash Algorithm (SHA-3) Competition https://www.nist.gov[...] NIST 2012-10-02
[22] 웹사이트 SHA-3 standardization http://csrc.nist.gov[...] NIST 2015-04-16
[23] 웹사이트 'Federal Information Processing Standards: Permutation-Based Hash and Extendable-Output Functions, etc.' https://federalregis[...] 2015-08-05
[24] 뉴스 Announcing Approval of Federal Information Processing Standard (FIPS) 202, SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions, and Revision of the Applicability Clause of FIPS 180-4, Secure Hash Standard https://www.federalr[...] 2015-08-05
[25] 웹사이트 SHA3, Where We've Been, Where We're Going http://csrc.nist.gov[...] RSA Conference 2013
[26] 웹사이트 SHA3, Past, Present, and Future https://docs.google.[...] CHES 2013
[27] 웹사이트 NIST hash forum mailing list http://csrc.nist.gov[...] 2017-01-04
[28] 웹사이트 The Keccak SHA-3 submission https://keccak.team/[...] 2023-03-27
[29] 웹사이트 On 128-bit security https://keccak.team/[...] 2023-03-27
[30] 웹사이트 A concrete proposal https://keccak.team/[...] 2023-03-27
[31] 웹사이트 'Schneier on Security: Will Keccak = SHA-3?' https://www.schneier[...]
[32] 웹사이트 'LShift: Why I support the US Government making a cryptography standard weaker' http://www.lshift.ne[...]
[33] 웹사이트 Yes, this is Keccak! https://keccak.team/[...] 2023-03-27
[34] 웹사이트 Moving Forward with SHA-3 http://csrc.nist.gov[...]
[35] 웹사이트 SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions http://csrc.nist.gov[...] NIST
[36] 웹사이트 The sponge and duplex constructions https://keccak.team/[...] 2023-03-27
[37] 웹사이트 Keccak implementation overview https://keccak.team/[...] 2023-03-27
[38] 문서
[39] 웹사이트 Optimization failures in SHA-3 software https://cr.yp.to/has[...] 2020-02-29
[40] 웹사이트 Is SHA-3 slow? https://keccak.team/[...] 2023-03-27
[41] 간행물 Fair and Comprehensive Performance Evaluation of 14 Second Round SHA-3 ASIC Implementations http://csrc.nist.gov[...] 2011-02-18
[42] 문서
[43] 문서
[44] 논문 Vector Instruction Set Extensions for Efficient Computation of Keccak https://ieeexplore.i[...] 2017
[45] 웹사이트 Sakura: A Flexible Coding for Tree Hashing https://keccak.team/[...] 2020-02-29
[46] 문서
[47] 웹사이트 Software performance figures https://keccak.team/[...]
[48] 웹사이트 Keccak Team: KangarooTwelve https://keccak.team/[...] Keccak Team
[49] 웹사이트 KangarooTwelve: fast hashing based on Keccak-p https://eprint.iacr.[...] International Association for Cryptologic Research
[50] 웹사이트 KangarooTwelve slides presented at ACNS 2018 https://keccak.team/[...] Keccak Team
[51] 뉴스 draft-irtf-cfrg-kangarootwelve-00 – KangarooTwelve https://datatracker.[...] IETF 2020-01-17
[52] 논문 Farfalle: parallel permutation-based cryptography https://eprint.iacr.[...] 2016-12-29
[53] 논문 The authenticated encryption schemes Kravatte-SANE and Kravatte-SANSE https://eprint.iacr.[...] 2018-10-12
[54] 웹사이트 Abstract http://cr.yp.to/hash[...]
[55] 서적 Abstract
[56] 웹사이트 Cost Analysis http://cr.yp.to/hash[...]
[57] 웹사이트 Collision problem http://www.scottaaro[...]
[58] 웹사이트 Paper https://eprint.iacr.[...]
[59] 웹사이트 Abstract https://eprint.iacr.[...]
[60] 웹사이트 NIST.gov – Computer Security Division – Computer Security Resource Center http://csrc.nist.gov[...] 2016-12-29
[61] 웹사이트 Measurements table http://bench.cr.yp.t[...]
[62] 간행물 Fast Collision Attack on MD5 https://eprint.iacr.[...] International Association for Cryptologic Research
[63] 간행물 The first collision for full SHA-1 https://shattered.io[...] Google Research
[64] 문서
[65] 웹사이트 The Keccak sponge function family http://keccak.noekeo[...] 2016-01-27
[66] 웹사이트 openssl/openssl – kecak1600-avx512vl.pl https://github.com/o[...] 2020-06-25
[67] 웹사이트 openssl/openssl – keccak1600-avx2.pl https://github.com/o[...] 2021-11
[68] 웹사이트 openssl/openssl – keccak1600-x86_64.pl https://github.com/o[...] 2020-06-25
[69] 웹사이트 openssl/openssl – keccak1600-armv8.pl https://github.com/o[...] 2021-11
[70] 웹사이트 openssl/openssl – keccak1600-ppc64.pl https://github.com/o[...] 2020-06-25
[71] 웹사이트 openssl/openssl – kccak1600-mmx.pl https://github.com/o[...] 2020-06-25
[72] 웹사이트 llvm/llvm-project – AArch64.td https://github.com/l[...] 2020-06-24
[73] 웹사이트 ARMv8 – ARM – WikiChip https://en.wikichip.[...] 2020-06-24
[74] 웹사이트 weidai11/cryptopp https://github.com/w[...] 2020-06-25
[75] 웹사이트 openssl/openssl https://github.com/o[...] 2020-06-25
[76] 웹사이트 openssl/openssl https://github.com/o[...] 2021-11
[77] 웹사이트 apple/llvm-project – lib/Target/AArch64/AArch64SVEInstrInfo.td https://github.com/a[...] 2020-06-25
[78] 문서 IBM z/Architecture Principles of Operation, publication number SA22-7832. See KIMD and KLMD instructions in Chapter 7.
[79] 웹사이트 SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions http://nvlpubs.nist.[...] NIST 2015-08
[80] 웹사이트 SHA-3 Standardization http://csrc.nist.gov[...] NIST 2015-08-06
[81] 웹사이트 The Keccak sponge function family: Specifications summary http://keccak.noekeo[...] 2014-01-02
[82] 문서 「当初の目的」としたほうが正確かもしれない。
[83] 웹사이트 Collisions for Hash Functions MD4, MD5, HAVAL-128 and RIPEMD https://eprint.iacr.[...] 2015-08-06
[84] 웹사이트 Update on SHA-1 http://eprint.iacr.o[...] 2015-08-06
[85] 웹사이트 Forthcoming SHA-3 Hash Function May Be Unnecessary https://threatpost.c[...] Threatpost 2015-08-06
[86] 웹사이트 NIST Selects Winner of Secure Hash Algorithm (SHA-3) Competition http://www.nist.gov/[...] NIST 2014-01-02
[87] 웹사이트 Sponge Functions http://sponge.noekeo[...] Ecrypt Hash Workshop 2007 2014-01-02
[88] 웹사이트 On the Indifferentiability of the Sponge Construction http://sponge.noekeo[...] EuroCrypt 2008 2014-01-02
[89] 문서 Keccak implementation overview Version 3.2 http://keccak.noekeon.org/Keccak-implementation-3.2.pdf
[90] 간행물 Fair and Comprehensive Performance Evaluation of 14 Second Round SHA-3 ASIC Implementations http://csrc.nist.gov[...] 2014-01-02
[91] 문서 NIST, [http://nvlpubs.nist.gov/nistpubs/ir/2012/NIST.IR.7896.pdf Third-Round Report of the SHA-3 Cryptographic Hash Algorithm Competition], sections 5.1.2.1(「木」構造), 6.2(認証付き暗号), 7(将来標準化されるかもしれない「追加」)
[92] 웹사이트 Keccak parameter changes for round 2 http://keccak.noekeo[...] 2014-01-02
[93] 웹사이트 Simplifying Keccak's padding rule for round 3 http://keccak.noekeo[...] 2014-01-02
[94] 웹사이트 SHA3, Where We've Been, Where We're Going https://ae.rsaconfer[...] RSA Conference 2013 2014-01-03
[95] 웹사이트 SHA3, Past, Present, and Future https://docs.google.[...] CHES 2013 2014-01-02
[96] 웹사이트 Schneier on Security: Will Keccak = SHA-3? https://www.schneier[...] 2014-01-02
[97] 웹사이트 LShift: Why I support the US Government making a cryptography standard weaker http://www.lshift.ne[...] 2014-01-03
[98] 웹사이트 Yes, this is Keccak! http://keccak.noekeo[...] 2014-01-02
[99] 웹사이트 A concrete proposal http://keccak.noekeo[...] 2014-01-02
[100] 웹사이트 Moving Forward with SHA-3 http://csrc.nist.gov[...] 2015-07-05
[101] 웹사이트 DRAFT FIPS 202, SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions http://csrc.nist.gov[...] 2015-08-06
[102] 웹사이트 SAKURA: a flexible coding for tree hashing http://keccak.noekeo[...] 2016-06-20
[103] 웹사이트 Crypto++ 5.6.0 Benchmarks http://www.cryptopp.[...] 2014-01-01
[104] 웹사이트 Announcing the first SHA1 collision https://security.goo[...] 2017-02-23
[105] 웹사이트 The Sponge Functions Corner http://sponge.noekeo[...] 2016-01-28
[106] 웹사이트 The Keccak sponge function family http://keccak.noekeo[...] 2016-01-28
[107] 뉴스 5년간 공모 끝에 SHA-3 해시 알고리즘 최종 선정!, 보안뉴스 http://www.boannews.[...] 2012-10-05
[108] 뉴스 Announcing Approval of Federal Information Processing Standard (FIPS) 202, SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions, and Revision of the Applicability Clause of FIPS 180-4, Secure Hash Standard https://www.federalr[...] 2015-08-05
[109] 웹인용 NIST.gov – Computer Security Division – Computer Security Resource Center http://csrc.nist.gov[...]



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

문의하기 : help@durumis.com