🔐 대칭키 암호화 Symmetric Key Cryptography
비밀 키 하나가 두 가지 일을 다 해요. 메시지를 잠그는(암호화) 것도, 여는(복호화) 것도 같은 키로 합니다. 보내는 쪽과 받는 쪽이 반드시 동일한 키를 가져야 해서 '비밀키 암호화'라고도 불려요.
🔑 핵심만 보면 — 키 하나로 잠그고 열기
열쇠 하나짜리 자물쇠를 상상해 보세요. 그 열쇠를 가진 사람은 누구나 잠글 수도, 열 수도 있어요. 대칭키 암호화가 딱 이 구조입니다. 읽을 수 있는 메시지(평문)를 암호 알고리즘(cipher)과 키에 넣으면 암호문이 나와요. 알아볼 수 없는 뒤죽박죽 데이터죠. 암호문에 같은 키를 다시 넣으면 원래 메시지가 돌아와요. 잠금 자체는 단단합니다. 까다로운 건 그 열쇠 복사본을 상대방에게 안전하게 건네는 것이에요.
🧱 암호화 방식 두 가지: 블록 vs 스트림
대칭키 암호는 크게 두 계열로 나뉩니다. 블록 암호는 데이터를 고정 크기 덩어리(예: 128비트 블록)로 잘라 한 덩어리씩 암호화해요. 스트림 암호는 데이터를 비트 단위로 흘러가면서 암호화합니다. 가장 유명한 예는 AES(고급 암호화 표준)예요. 128·192·256비트 키를 지원하는 블록 암호로, AES-256은 현재 최고 수준의 안전성으로 평가받으며 거의 모든 곳에 쓰입니다.
🛡️ 키가 길수록 왜 더 안전한가요?
| 키 길이 | 공격자 입장에서의 의미 |
|---|---|
| 🔢 128비트 | 모든 가능한 키를 무작위 대입으로 시도하면 일반 컴퓨터로 수십억 년이 걸려요 |
| ➕ 1비트 추가될 때마다 | 필요한 시도 횟수가 대략 두 배로 늘어나 난이도가 기하급수적으로 올라가요 |
| 🔒 256비트(AES-256) | 매우 안전한 것으로 평가받으며 하드웨어·메시징 앱·디스크 암호화에 쓰여요 |
📊 여기서 안전성은 알고리즘을 숨겨서 오는 게 아니에요. 암호 알고리즘은 공개되어 있고, 안전성은 키 공간이 너무 방대해서 탐색이 불가능하다는 데서 나옵니다.
📦 단점: 키를 상대방에게 어떻게 전달하나?
가장 큰 약점은 키 배포 문제예요. 두 사람이 똑같은 비밀 키를 가져야 하는데, 그걸 인터넷으로 보내다가 누군가가 중간에 복사하면 끝입니다. 이 문제를 해결하기 위해 공개키 암호화가 탄생했어요. 실제로는 두 방식을 함께 씁니다. 공개키 암호화로 공유 키를 안전하게 교환하고, 그 키로 빠른 대칭키 암호화가 실제 데이터를 암호화하는 식이에요.
🌐 실생활에서 어디서 만나냐면
- 🔒 모든 HTTPS 사이트 — 브라우저가 보안 세션을 맺고 나면 AES가 주고받는 페이지 데이터를 암호화해요
- 💬 암호화 채팅 — 메시징 앱이 실제 메시지를 뒤섞는 데 대칭 암호화를 써요
- 💾 디스크·클라우드 암호화 — 비밀번호에서 유도한 대칭키로 파일을 잠가요
- 👛 지갑 백업 — 비밀번호로 지갑 파일이나 시드 백업을 잠글 때 대칭키 암호화가 그 역할을 해요
⚠️ 암호화와 암호학 전체를 혼동하지 마세요. 암호화는 데이터를 숨기는 것이고, 해싱이나 디지털 서명은 데이터를 숨기지 않는 별개의 도구예요.
❓ 자주 묻는 질문
- 비트코인 블록체인은 대칭키 암호화로 데이터를 숨기나요?
- 아니요. 비트코인 블록체인은 데이터를 아예 암호화하지 않아요. 의도적으로 공개되어 있고, 코인 소유권 증명과 전송 승인은 디지털 서명(ECDSA)으로 처리합니다. 대칭키 암호화는 지갑 레이어에서 등장해요. 예를 들어 비밀번호로 지갑 백업 파일을 잠글 때 쓰입니다.
- 더 빠른데 왜 대칭키 암호화만 쓰지 않나요?
- 키 배포 문제 때문이에요. 양쪽이 똑같은 비밀 키를 가져야 하는데, 그 키를 인터넷으로 안전하게 전달하기가 어렵습니다. 흔한 해결책은 하이브리드 방식이에요. 공개키 암호화로 공유 키를 안전하게 교환한 뒤, 빠른 대칭키 암호화로 실제 데이터를 암호화합니다.
- 128비트 키면 충분히 안전한가요?
- 현재는 충분합니다. 일반 컴퓨터로 128비트 키를 무작위 대입으로 뚫으려면 수십억 년이 걸려요. 키 길이가 1비트 늘 때마다 필요한 시도 횟수가 대략 두 배가 됩니다. AES-256은 매우 안전한 것으로 평가받으며 메시징 앱·디스크 암호화·클라우드 스토리지 등에 폭넓게 쓰입니다.