Fugue(해시 함수)

Fugue (hash function)

FugueIBMNIST 해시 함수 경쟁업체에 제출한 암호화 해시 함수입니다.샤이 할레비, 윌리엄 E에 의해 디자인되었습니다.홀, 그리고 차란짓 S. 유틀라.Fugue는 임의의 길이의 메시지를 수신하여 고정 비트 길이(224, 256, 384 또는 512비트)로 압축합니다.다른 출력 길이에 대한 해시 함수를 Fugue-224, Fugue-256, Fugue-384 및 Fugue-512라고 합니다.저자들은 또한 파라메타화된 버전의 푸가를 묘사한다.이 파라미터화된 버전을 사용하여 Fugue-256의 약한 버전을 설명합니다.

푸가의 판매 포인트는 차분 암호해석에 기초한 광범위한 현행 공격 전략이 푸가에 대해 효율적일 수 없다는 저자들의 주장된 증거이다.또한 인텔 패밀리6 모델 15 Xeon 5150에서는 바이트당 최대 36.2 사이클, 인텔 Core 2 프로세서 T7700에서는 바이트당 최대 25 사이클을 달성하여 소프트웨어 및 하드웨어 효율 면에서 NIST 해시 함수 SHA-256과 경쟁하고 있습니다.45 nm Core2 프로세서(예: T9400)에서는 SSE4.1 명령을 사용하여 Fugue-256이 바이트당 16 사이클로 실행됩니다.Core i5와 같은 새로운 Westmere 아키텍처(32 nm)에서는 Fugue-256은 14 사이클/바이트로 동작합니다.

Fugue의 디자인은 해시함수 Grindahl에서 시작되며 Grindahl과 마찬가지로 AES의 S박스를 사용하지만 4×4 컬럼 혼합 매트릭스를 16×16 슈퍼믹스 연산으로 대체하여 확산을 크게 개선한다.그러나 "슈퍼 믹스" 운영은 AES 혼합 전략보다 계산 비용이 약간 더 많이 듭니다.

슈퍼믹스

224비트 및 256비트 베리안트는 부호 없는 바이트의 4x30 매트릭스로 나타낼 수 있는 상태로 동작하는 반면 384비트 및 512비트 베리안트는 4x36바이트 매트릭스로 동작합니다.이 상태에서는, 인플레이스 조작을 실행할 수 있습니다.

"SuperMix 변환"으로 알려진 알고리즘의 코어는 4×4 행렬을 입력으로 사용하고 새로운 4×4 행렬을 반환합니다.SuperMix에 대한 입력은 현재 30컬럼 상태의 처음 4컬럼이며 출력은 이 동일한 상태 영역을 대체하는 데 사용됩니다(즉, SuperMix는 상태 선두의 4x4 매트릭스에만 영향을 줍니다).

SuperMix 함수는 다음과 같이 정의할 수 있습니다.

여기서:

( 1 4 1 7 1 1 4 ){ M = " && 1 & 1 & & & 1 & 1 & 7 & { ;
U 4x4 바이트 매트릭스(즉, 입력의 S박스 치환 후의 매트릭스)입니다.
T M M의 전치입니다.

displaystyle 4x4 매트릭스를 사용하여 i i - 행을 으로 i i 만큼 회전시킵니다.

푸가 2.0

푸가 2.0은 256비트 출력에 대해 푸가보다 약 2배 빠른 속도로 작동하는 오리지널 푸가 수정판이다.설계자는 이 개선된 버전에 대해 차동 충돌 공격에 대한 고급 내성을 주장합니다.완전한 사양은 아래 링크에서 확인할 수 있습니다.

외부 링크