101. SHA-3 (Keccak 알고리즘)

⚠️ 이 문서는 현재의 표준인 SHA-2가 머클-담가드(Merkle-Damgård) 구조의 태생적 결함으로 인해 미래에 무너질 만일의 사태를 대비하여, 완전히 새로운 '스펀지(Sponge)' 구조로 설계되어 2015년 차세대 표준으로 등극한 SHA-3를 다룹니다.

핵심 인사이트 (3줄 요약)

  1. 본질: SHA-3는 미국 NIST의 공모전을 통해 선정된 Keccak(케착) 알고리즘 기반의 해시 함수로, 물을 빨아들이고 짜내는 스펀지의 원리를 수학적으로 구현한 **스펀지 구조(Sponge Construction)**를 채택했다.
  2. 가치: 기존 MD5, SHA-1, SHA-2가 모두 공유하던 '머클-담가드 구조'의 치명적 약점인 **길이 확장 공격(Length Extension Attack)**에 대한 면역력을 원천적으로 갖추어, 구조적 다양성을 통한 완벽한 방어 플랜 B를 제공한다.
  3. 융합: 아직 SHA-2가 뚫리지 않았기 때문에 전 세계 IT 인프라를 강제로 갈아엎지는 않았으나, 이더리움(Ethereum)과 같은 최신 블록체인 네트워크와 최고 등급의 스마트 컨트랙트 환경에서는 이미 기본 해시 함수로 융합되어 널리 쓰이고 있다.

Ⅰ. 개요 및 탄생 배경 (Context & Necessity)

2004~2005년 무렵, 해시 함수의 쌍두마차였던 MD5와 SHA-1이 연달아 충돌 취약점에 무너지는 대참사가 발생했다. 암호학계는 공포에 질렸다. 왜냐하면 당시 믿고 있던 최후의 보루인 SHA-2마저도 이 털린 녀석들과 똑같은 **머클-담가드(Merkle-Damgård)**라는 뼈대(구조)를 공유하고 있었기 때문이다.

NIST는 "SHA-2마저 뚫리면 인터넷은 멸망한다. 구조 자체가 아예 180도 다른 예비용 해시 함수를 찾아내라!"며 2007년에 SHA-3 공모전을 열었다. 수십 개의 쟁쟁한 알고리즘이 격돌한 끝에, 2012년 벨기에 출신의 Guido Bertoni 등이 만든 Keccak(케착) 알고리즘이 최종 우승을 차지했고, 2015년 정식으로 SHA-3 표준으로 발표되었다.

📢 섹션 요약 비유: 우리 마을을 지키는 1번, 2번 로봇(MD5, SHA-1)이 똑같은 관절 약점 때문에 악당에게 파괴되었습니다. 3번 로봇(SHA-2)이 아직은 잘 싸우고 있지만 관절 구조가 똑같아서 언제 부서질지 몰라요. 그래서 마을 사람들은 아예 쇳덩어리가 아니라 외계 금속(스펀지 구조)으로 만든 완전히 새로운 4번 로봇(SHA-3)을 예비용으로 만들어 대기시켜 둔 것입니다.


Ⅱ. 혁신의 코어: 스펀지 구조 (Sponge Construction)

기존 머클-담가드 구조는 데이터를 512비트 블록으로 잘라서 차례대로 '먹이고 소화시키는' 단순한 직렬구조였다. 해커는 이 구조의 꼬리 끝에 자신이 원하는 가짜 데이터를 교묘하게 덧붙이는 '길이 확장 공격'으로 시스템을 농락했다.

Keccak(SHA-3)은 이 한계를 스펀지 구조로 산산조각 냈다. 스펀지가 물을 끝없이 쭉 빨아들이고(Absorb), 나중에 꽉 짜면 물이 쏟아져 나오는(Squeeze) 원리를 모방했다.

1. 흡수 단계 (Absorbing Phase)

  • 믹서기 내부에는 $b$ 비트 크기의 거대한 상태(State) 상자가 있다. 이 상자는 $r$(비트레이트, 겉부분)과 $c$(용량, 속부분) 두 공간으로 나뉜다.
  • 외부에서 들어온 평문 데이터는 오직 겉부분인 $r$ 구역에만 XOR 연산으로 스며든다.
  • 데이터가 들어올 때마다 특수한 섞기 함수($f$)를 돌려서 겉부분($r$)과 속부분($c$)을 무자비하게 섞어버린다. 평문은 이 섞는 과정을 통해 스펀지 깊숙한 곳으로 완벽히 흡수된다.

2. 짜내기 단계 (Squeezing Phase)

  • 데이터 입력이 끝나면 스펀지를 짠다.
  • 겉부분($r$)에 고여 있는 데이터를 128비트, 256비트 등 내가 원하는 길이만큼 똑똑 떨어뜨려(출력) 해시 지문을 만든다. 모자라면 한 번 더 섞기 함수($f$)를 돌려서 또 짜낸다.
┌─────────────────────────────────────────────────────────────────────────────┐
│           SHA-3의 스펀지 구조 (Sponge Construction) 작동 시각화             │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                             │
│ [ 1. 흡수(Absorbing) 단계 ]                                                 │
│  입력 데이터 (M1) ──────────┐ (XOR)                                         │
│                          ▼                                                  │
│                ┌─────────r (비트레이트) ─────────┐                          │
│ 내부 스펀지 상자: │ ▒▒▒▒▒ 섞기 함수(f) 회전 ▒▒▒▒▒ │                         │
│                └─────────c (용량/안전구역) ───────┘                         │
│  * 해커는 외부와 맞닿은 r 구역만 볼 수 있고, c 구역은 절대 볼 수 없음!      │
│                                                                             │
│ [ 2. 짜내기(Squeezing) 단계 ]                                               │
│  스펀지를 꽉 짬 ────────────▶ (r 구역에서 해시 결과물 Z1 뚝 떨어짐)         │
│  스펀지 한 번 더 섞고 짬 ──────▶ (r 구역에서 해시 결과물 Z2 뚝 떨어짐)      │
│                                                                             │
│ ★ 구조적 승리: 해커가 끝에 데이터를 덧붙이려(길이 확장 공격) 해도, 내부의   │
│   'c(용량)' 구역이 철저히 비밀로 가려져 있어서 수학적으로 연산이 불가능함!  │
└─────────────────────────────────────────────────────────────────────────────┘

[다이어그램 해설] 이 스펀지 구조의 위대함은 유연성이다. 원하는 만큼 데이터를 무한정 빨아들일 수 있고, 짜낼 때도 256비트든 512비트든 내가 원하는 만큼 즙을 짤 수 있다(가변 출력 길이 지원). 특히 내부의 거대한 용량($c$) 공간이 믹서기의 안전을 지탱하는 블랙박스 역할을 하여 머클-담가드의 약점을 완벽히 소거했다.

  • 📢 섹션 요약 비유: 옛날 믹서기(SHA-2)는 과일을 넣으면 쥬스가 차오르는 게 밖에서 투명하게 다 보였어요(길이 확장 공격 취약점). 스펀지 믹서기(SHA-3)는 과일을 넣으면 속이 안 보이는 거대한 스펀지가 국물을 다 빨아들여 버립니다. 나중에 꼭지를 틀어 원하는 만큼만 쥬스를 따라 마시는, 구조 자체가 완전히 다른 신개념 믹서기입니다.

Ⅲ. 실무 적용: 이더리움과 성능의 딜레마

"SHA-2가 뚫리지도 않았는데 굳이 SHA-3로 갈아타야 하나요?" 이 질문에 대한 현재 IT 업계의 대답은 "아니오"다.

  1. 소프트웨어 성능의 한계
    • SHA-256은 지난 20년간 인텔/AMD CPU 아키텍처에 하드웨어 가속(AES-NI처럼)이 뼛속까지 최적화되어 있어 소프트웨어 환경에서 미친 듯이 빠르다. 반면 SHA-3는 소프트웨어로 돌리면 SHA-2보다 속도가 느려 웹 서버들이 도입을 꺼리고 있다. (단, 하드웨어 칩으로 직접 구워내면 SHA-3가 더 빠름)
  2. 이더리움(Ethereum)의 선택
    • 기존의 질서에 얽매이지 않는 최신 기술인 블록체인, 특히 이더리움은 비트코인(SHA-256)과 차별화를 두기 위해 지갑 주소 생성과 스마트 컨트랙트 해시에 이 **Keccak-256 (SHA-3의 초기 버전)**을 기본 암호로 채택하여 맹렬하게 사용하고 있다.

Ⅳ. 결론

"완벽한 플랜 B가 존재한다는 것만으로도 세상은 안심할 수 있다." SHA-3는 전임자인 SHA-2가 실패해서 나온 것이 아니라, 인류의 암호학적 생존 능력을 보장하기 위한 다층 방어(Defense in Depth) 철학의 산물이다. 만약 내일 아침 양자 컴퓨터나 천재 수학자에 의해 머클-담가드 구조(SHA-2)가 수학적으로 뚫린다는 논문이 발표되더라도, 전 세계 IT 시스템은 패닉에 빠지지 않고 미리 준비된 이 훌륭한 스펀지(SHA-3) 구조로 코드를 스위칭하여 안전하게 굴러갈 것이다.


📌 관련 개념 맵

  • 전임자 (현재 표준): SHA-2 (머클-담가드 구조)
  • 내부 구조: Sponge Construction (스펀지 구조)
  • 극복한 취약점: 길이 확장 공격 (Length Extension Attack)
  • 현대적 활용처: 이더리움 블록체인 (Keccak-256)

👶 어린이를 위한 3줄 비유 설명

  1. 지금 우리가 쓰는 훌륭한 금고(SHA-2)는 아주 튼튼하지만, 옛날에 털렸던 금고들이랑 문짝 구조가 똑같아서 왠지 찝찝했어요.
  2. 그래서 똑똑한 발명가들이 아예 문짝 모양부터 잠그는 원리까지 180도 완전히 다른 스펀지 모양의 새로운 예비 금고(SHA-3)를 발명해서 옆방에 대기시켜 놨죠.
  3. 지금 당장은 쓰던 금고가 안 부서져서 그대로 쓰고 있지만, 만약 지금 금고가 부서지는 날이 오면 바로 옆방의 예비 금고로 짐을 옮기면 되니까 인터넷 세상은 늘 안전하답니다!