SHA-3
더 많은 작업
SHA-3(Secure Hash Algorithm-3)는 미국 NIST 가 공개 경쟁을 거쳐 Keccak 을 바탕으로 2015년 FIPS 202 로 표준화한 암호 해시 함수 계열로, 스펀지 구조를 써서 SHA-1·SHA-2 와 전혀 다른 방식으로 동작한다.
SHA-2 는 MD5·SHA-1 과 같은 머클-담고르(Merkle-Damgård) 구조라서, 이 구조에 공통된 약점이 발견될 경우를 대비해 설계가 다른 예비 표준이 필요했다. NIST 는 2007년부터 SHA-3 공모를 열어 2012년 Keccak 을 우승 알고리즘으로 골랐고, 2015년 8월 FIPS 202 로 발표했다. FIPS 202 는 SHA-3 를 FIPS 180-4 의 SHA-1·SHA-2 를 보완하는 계열로 규정한다. SHA-2 를 폐기하고 바꾸는 것이 아니라 같은 출력 길이를 가진 대안을 하나 더 두는 것이다.[1]
SHA-3 계열은 해시 함수 4개와 확장 출력 함수(XOF) 2개, 모두 6개 함수로 이루어진다. 여섯 함수는 모두 1600비트 상태에 작용하는 같은 순열(Keccak-p[1600, 24])을 스펀지 구조 안에서 쓴다.[1]
| 함수 | 종류 | 출력 길이 |
|---|---|---|
| SHA3-224 | 해시 함수 | 224비트 |
| SHA3-256 | 해시 함수 | 256비트 |
| SHA3-384 | 해시 함수 | 384비트 |
| SHA3-512 | 해시 함수 | 512비트 |
| SHAKE128 | 확장 출력 함수(XOF) | 원하는 길이(보안 강도 128비트) |
| SHAKE256 | 확장 출력 함수(XOF) | 원하는 길이(보안 강도 256비트) |
- 해시 함수 이름 뒤의 숫자는 출력(다이제스트) 길이이고, SHAKE 뒤의 숫자는 보안 강도이다. SHA-2 의 SHA-224·256·384·512 와 출력 길이가 같아서 서로 바꿔 쓸 수 있다.[1]
- SHAKE128·SHAKE256 은 NIST 가 처음 표준화한 XOF 로, 출력을 필요한 만큼 늘려 뽑을 수 있다.
스펀지 구조는 고정 길이 순열 f 와 패딩 규칙으로, 길이가 정해지지 않은 입력을 받아 원하는 길이의 출력을 내는 함수를 만드는 방식이다. 상태 b 비트는 바깥쪽 r 비트(비트율)와 안쪽 c 비트(용량)로 나뉜다.[2]
- 흡수 단계(absorbing) - 입력을 패딩해 r 비트 블록으로 자르고, 블록마다 상태의 앞 r 비트에 XOR 한 뒤 f 를 적용한다.
- 짜내기 단계(squeezing) - 입력을 다 넣으면 상태의 앞 r 비트를 출력으로 꺼내고 f 를 적용하기를 원하는 길이가 될 때까지 되풀이한다.
용량 c 는 출력으로 나가지 않으므로 공격자가 내부 상태 전체를 볼 수 없다. 보안 수준은 c 로 정해지며, c 를 키우고 r 을 줄이면 안전성은 높아지고 속도는 느려진다.[2] SHA-2 에서 문제가 되는 길이 확장 공격(length-extension attack)이 SHA-3 에는 통하지 않는 것도 내부 상태 일부가 출력에 드러나지 않기 때문이다.
| 구분 | SHA-2 | SHA-3 |
|---|---|---|
| 표준 | FIPS 180-4 | FIPS 202 |
| 구조 | 머클-담고르 구조(압축 함수 반복) | 스펀지 구조(Keccak-p 순열) |
| 입력 길이 | 264 비트 미만(SHA-256), 2128 비트 미만(SHA-512) | 제한 없음 |
| 출력 | 224·256·384·512비트 등 고정 | 해시 함수는 고정, SHAKE 는 원하는 길이 |
| 길이 확장 공격 | 취약(HMAC 으로 보완) | 해당 없음 |
| 관계 | 현재도 승인된 표준 | SHA-2 를 보완하는 대안 |
- ↑ 1.0 1.1 1.2 1.3 1.4 「FIPS 202: SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions」, NIST, 2015, https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf, 확인일: 2026-11-05.
- ↑ 2.0 2.1 2.2 「Cryptographic sponge functions」, Keccak Team(Bertoni·Daemen·Peeters·Van Assche), https://keccak.team/sponge_duplex.html, 확인일: 2026-11-05.
- ↑ 「FIPS 180-4: Secure Hash Standard (SHS)」, NIST, 2015, https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf, 확인일: 2026-11-05.