- Published on
암호학의 기본: 혼돈과 확산이란? 🔒
- Authors

- Name
- Backouts
서론
오늘은 처음으로 매우 짧은 글을 쓸 예정입니다.
의외로 쓰다보면 길어질 수 있지만
일단 계획은 그렇습니다.
너무 길고 자세한 설명에 집착하다 보니
블로그를 쓰는게 점점 느려지고,
이제는 아예 멈춰버릴것 같다는 생각이 들었습니다.
그래서 이번 글은
제 나름의 고육지책이기도 합니다.
혼돈과 확산 🔎
암호 알고리즘을 공부하다 보면혼돈(confusion)과 확산(diffusion)이라는 단어를
자주 만나게 됩니다.
이 두 개념은 암호학에서
암호가 얼마나 안전한지를 설명할 때
기초가 되는 개념입니다.
하지만 처음 듣는 입장에서는
"도대체 저게 무슨소리인가..." 라는
생각이 들 수 밖에 없습니다.
그래서 오늘은
이 혼돈과 확산이 무엇을 의미하는지,
왜 암호에서 중요한 개념인지에 대해
짧게 정리해보려고 합니다.
혼돈(confusion) 이란? 😵💫
처음 혼돈이라는 단어를 보면
바로 떠오르는 개념은 chaos입니다.
그에 비해 confusion은 혼돈보다는
혼동, 혼란에 가깝습니다.
무질서한 상태를 의미하는 카오스와 달리,
우리가 암호학에서 말하는 혼돈은
질서 속에서 의도적으로 만들어진 혼란입니다.
암호학에서 중요한 것은
공격자가 입력과 출력 사이의 관계를
추론하기 힘들게 만드는 것입니다.
예를 들어,
아래와 같은 암호가 있다고 가정하겠습니다.
평문: 1234 (비밀번호)
암호 로직: f(x) = x + 2
암호문: 3456
위와 같은 암호가 있다면,
공격자는 1234를 입력하고
그 출력값이 3456인것을 보는 순간
자연스럽게 이런 생각을 합니다.
"아 2씩 더하는 거구나?"
이처럼 입력과 출력의 관계가
쉽게 드러나는 암호를
우리는 선형(linear) 하다고 말합니다.
예를 들면
- f(2) - f(1) = 1
- 2 - 1 = 1
처럼 입력과 출력의 차이가
항상 일정하게 유지된다면,
공격자는 이 관계를 이용해
암호의 구조를 매우 쉽게 추측할 수 있습니다.
이런 추론을 어렵게 하기 위해서
암호 알고리즘에서는
의도적으로 비선형 연산을 중간에 섞습니다.
이처럼 입력과 출력의 관계를
직관적으로 파악하기 어렵게 만드는 성질을
암호학에서는 혼돈(confusion) 이라고 부릅니다.
확산(diffusion) 이란? 🌊
확산(diffusion)은
비선형 연산으로 혼돈을 주어
추측을 어렵게 만든 그 상태를
전체로 퍼트리는 성질을 의미합니다.
즉, 혼돈이
관계를 흐리는 것이라면,
확산은
그 영향을 넓게 퍼뜨리는 것입니다.
예를 들어
평문: "안녕하세요 Backouts입니다!!"
암호 로직: 안 -> 7, ! -> ?, B -> D
암호문: "7녕하세요 Dackouts입니다??"
위 예시는
표 매핑과 같은 비선형 연산을 사용해
혼돈을 준 상태입니다.
하지만 이 상태만으로는
아직 충분하지 않습니다.
혼돈을 주었으나
공격자가 몇번 요청을 반복해서 보내다 보면
암호 로직이 드러날 수 있습니다.
같은 값을 넣으면
같은 결과가 나오고,
변화가 서로 대응되기 때문에,
공격자가 여러 번 요청을 반복하다 보면
암호 로직을 추측할 수 있습니다.
이때
우리는 확산(diffusion)을 줄 수 있습니다.
혼돈 이후 확산 예시
혼돈
평문: "안녕하세요 Backouts입니다!!"
암호 로직: 안 -> 7, ! -> ?, B -> D
암호문1: "7녕하세요 Dackouts입니다??"
이후
확산
암호문1: "7녕하세요 Dackouts입니다??"
암호 로직: 순서 바꾸기
암호문2: "녕7세하 요aDkcuost니입?다?"
이제는
어떤 문자가 어디에서 왔는지
직관적으로 파악하기 어렵습니다.
입력의 작은 변화가
문자열 전체로 퍼져,
결과가 크게 달라졌기 때문입니다.
이처럼
혼돈으로 만든 변화를
전체로 확산시켜
구조적인 추론을 어렵게 만드는 성질을
암호학에서는 확산(diffusion) 이라고 부릅니다.
이처럼 입력의 작은 변화가
출력 전체에 큰 영향을 주는 현상을
Avalanche Effect라고 부르기도 합니다.
후기 ✅
이렇게 혼돈과 확산을 통해눈사태 효과(Avalanche Effect)를 만들어내고,
암호의 내부 구조를 숨김으로써
암호화는 공격자의 분석으로부터
시간을 벌 수 있습니다.
완전히 안전한 암호는
현실적으로 불가능하니까요.
오늘은 이렇게
굉장히 짧은 글을 한 편 써보았습니다.
머릿속에 막연하게 흩어져 있던
혼돈과 확산이라는 개념을
글과 간단한 예시로 정리해보는 것이
이번 글의 목표였습니다.
확실히 글이 짧으니
중간에 흐름이 끊기지도 않고,
생각이 정리되는 속도도 빨라
바로 마무리할 수 있었습니다.
이 방식이
저한테는 오히려 더 잘 맞을지도
모르겠다는 생각이 듭니다.