Keccak이란?
Keccak은 SHA-3(Secure Hash Algorithm 3) 표준의 기초가 되는 암호화 해시 함수 계열입니다. Guido Bertoni, Joan Daemen, Michaël Peeters, Gilles Van Assche가 개발했으며, 2012년 NIST 해시 함수 경쟁에서 우승했습니다.
주요 특징:
- 스펀지 구조: 흡수 및 짜내기 단계를 가진 혁신적인 스펀지 함수 설계 사용
- 가변 출력 길이: 원하는 길이의 해시 출력을 생성 가능
- 높은 보안 마진: 상당한 보안 예비력으로 설계
- SHA-1/SHA-2와 다름: 완전히 다른 수학적 원리 기반
- Keccak[c=2d] 변형: 이 구현은 용량 c = 2d(d는 출력 길이)인 원본 Keccak 사양 사용
Keccak vs SHA-3 (FIPS 202) 차이점: 🔍 중요한 구별: 원본 Keccak과 표준화된 SHA-3는 동일하지 않습니다:
- 원본 Keccak: 용량 c = 2d와 다른 패딩(Keccak 패딩: 0x01) 사용
- FIPS 202 SHA-3: 용량 c = 2d를 사용하지만 다른 패딩(SHA-3 패딩: 0x06)
- 도메인 분리: 패딩 차이로 Keccak과 SHA-3가 동일한 입력에 대해 다른 출력 생성
- 이 도구 구현: Keccak[c=2d] 매개화를 사용한 원본 Keccak 사양
보안 상태: ✅ Keccak은 매우 안전한 것으로 간주됩니다. 알려진 실용적인 공격이 없습니다. 우수한 보안 마진과 다양한 암호 분석 기법에 대한 저항성을 제공합니다.
일반적인 용도:
- 이더리움 블록체인(원본 Keccak-256 사용)
- 학술 연구 및 암호화 프로토콜
- 가변 길이 해시 출력이 필요한 애플리케이션
- SHA-2 계열의 대안이 필요한 시스템
- 블록체인 및 암호화폐 구현
기존 해시 대비 장점:
- 근본적으로 다른 설계로 관련 공격 위험 감소
- 유연한 출력 길이(고정 크기에 제한되지 않음)
- 강력한 이론적 보안 기반
- 길이 확장 공격에 대한 저항성
- 다양한 플랫폼에서 우수한 성능
기술적 참고사항:
- Keccak-256: 256비트 출력 생성(가장 일반적인 변형)
- 용량 공식: c = 2d가 적절한 보안 수준 보장
- 이더리움 사용: 이더리움은 SHA3-256이 아닌 원본 Keccak-256을 특별히 사용