# 확산 (Diffusion)

확산(diffusion)은 평문의 작은 부분만 바꿔도 그 영향이 암호문 전체에 퍼지도록 하는 성질입니다. 확산은 평문의 통계적 중복성이 암호문의 통계에 「분산」되는 속성을 의미합니다. 클로드 섀넌이 1949년 논문 「비밀 시스템의 통신 이론」에서 혼돈(confusion)과 함께 좋은 암호가 갖춰야 할 두 성질로 제시했습니다.

## 혼돈과 확산

- **혼돈:** 키와 암호문의 관계를 최대한 복잡하게 만들어, 암호문에서 키를 추론하기 어렵게 하는 성질입니다. 주로 S-box 같은 비선형 치환이 담당합니다.
- **확산:** 평문(그리고 키)의 각 비트가 암호문의 많은 비트에 영향을 주게 해, 평문의 패턴이 암호문에 드러나지 않게 하는 성질입니다. 주로 비트·바이트의 위치를 섞는 순열(P-box)이나 선형 혼합 층이 담당합니다.

두 성질은 한 라운드만으로는 충분하지 않으므로, 현대 블록 암호는 치환과 확산 층을 여러 라운드 반복합니다. 이런 구조를 치환-순열 네트워크(SPN)라고 하며, Feistel 구조 암호도 라운드를 거듭하며 같은 효과를 얻습니다.

## AES에서의 확산

AES에서는 ShiftRows가 바이트를 다른 열로 옮기고, MixColumns가 한 열의 네 바이트를 섞어 각 출력 바이트가 네 입력 바이트 모두에 의존하게 합니다. 이 두 단계 덕분에 두 라운드만 지나도 상태의 모든 바이트가 입력의 모든 바이트에 의존하게 됩니다.

## 눈사태 효과

확산이 잘 된 암호나 해시 함수에서는 입력 1비트를 바꾸면 출력 비트의 약 절반이 바뀝니다. 이를 눈사태 효과라고 합니다. 물 한 컵에 잉크 한 방울을 떨어뜨리면 잉크가 컵 전체로 퍼져 처음 떨어진 위치를 알 수 없게 되는 것과 비슷합니다.

## 확산이 중요한 이유

- **중복성 은폐:** 평문의 반복이나 문자 빈도가 암호문 통계에 고르게 퍼져, 빈도 분석 같은 통계적 공격이 어려워집니다.
- **예측 방지:** 공격자가 평문-암호문 쌍 일부를 알고 있더라도 다른 부분을 쉽게 예측하지 못합니다.
- **분석 저항:** 차분 분석과 선형 분석에서 공격자가 추적해야 하는 활성 S-box 수가 라운드마다 늘어나 공격 비용이 커집니다.
- **해시 함수:** 사소한 데이터 변경에도 해시 값이 완전히 달라지게 하여 무결성 검사를 가능하게 합니다.

확산을 강하게 할수록 라운드 수나 연산량이 늘어 성능 부담이 생기므로, 암호 설계는 안전성과 속도 사이의 균형을 맞추는 일이기도 합니다.

---
출처: https://achivx.kr/glossary/diffusion-%ED%99%95%EC%82%B0/ · ACHIVX 용어 사전 · 수정일 2026-10-20
