653. 대칭키 암호화 (Symmetric Key) - 암/복호화 키 동일
핵심 인사이트: 방 문을 잠글 때 썼던 열쇠로, 문을 열 때도 똑같이 쓰는 것이 우리의 일상이다. 이 당연한 원리가 암호학에서는 '대칭키'라고 불린다. 잠그는 속도가 미친 듯이 빨라서 대용량 영화 파일도 1초면 암호화하지만, 이 열쇠를 부산에 있는 친구에게 택배로 보내다가 해커에게 털려버리는 '키 배송의 저주'를 안고 있는 기술이다.
Ⅰ. 대칭키 암호화 (Symmetric Key Cryptography)의 개념
- 평문을 암호화(Encryption, 잠그기)할 때 사용하는 키(Key)와, 암호문을 평문으로 복호화(Decryption, 풀기)할 때 사용하는 키(Key)가 완전히 동일한 암호화 방식입니다.
- 통신하는 두 사람(송신자와 수신자)이 같은 열쇠를 공유하고 있어야 하므로 비밀키(Secret Key) 암호 방식이라고도 부릅니다.
Ⅱ. 대칭키 암호화의 2가지 장점 🌟
1. 압도적으로 빠른 속도 (고속 처리)
- 덧셈, XOR, 비트 이동 같은 단순한 수학적 논리 연산을 반복하여 데이터를 섞어버리는 방식이므로 컴퓨터 CPU가 계산하기가 매우 쉽습니다.
- 뒤에 배울 비대칭키(공개키) 암호화보다 연산 속도가 1,000배 ~ 10,000배 이상 빠릅니다. 따라서 수 기가바이트짜리 영화 파일을 다운받거나 실시간으로 화상 통화를 할 때, 대용량 데이터를 지연 없이 암호화하는 통신망의 메인 암호화 엔진으로 무조건 사용됩니다.
2. 작은 키 사이즈
- 키의 길이가 보통 128비트, 256비트로 작아도 우주 나이만큼의 무차별 대입 공격(Brute-force)을 거뜬히 버텨낼 정도로 효율적입니다.
Ⅲ. 대칭키 암호화의 치명적 단점 (키 배송 문제) 🌟
1. 키 배송 문제 (Key Distribution Problem)
- 서울에 있는 앨리스가 암호화된 파일을 부산의 밥에게 보냈습니다. 밥이 파일을 풀려면 앨리스가 썼던 '똑같은 열쇠'가 필요합니다.
- 앨리스가 인터넷 메일로 열쇠를 보내면, 중간에 해커가 스니핑해서 열쇠를 가로채고 파일을 다 열어봅니다(보안 붕괴). 그렇다고 열쇠를 퀵서비스나 KTX를 타고 직접 건네줄 수도 없습니다. **"열쇠를 해커 몰래 어떻게 상대방에게 전달할 것인가?"**가 대칭키의 영원한 딜레마입니다. (이 문제는 디피-헬만이나 비대칭키 구조를 통해 해결하게 됩니다.)
2. 키 관리의 어려움 (Scalability Issue)
- $N(N-1)/2$ 법칙: 대칭키는 단둘만 알아야 하는 비밀키입니다. 내 친구가 10명이면 10명과 각각 은밀히 소통하기 위해 나는 서로 다른 10개의 열쇠 꾸러미를 가지고 다녀야 합니다. 사용자가 1,000명이면 서버는 무려 49만 개의 열쇠를 발급하고 헷갈리지 않게 관리해야 하므로 인프라가 붕괴됩니다.
Ⅳ. 대칭키의 두 가지 계열 (스트림 vs 블록)
- 데이터를 1비트씩 졸졸 흘려보내며 암호화하는 스트림 암호(RC4 등)와, 데이터를 128비트 단위의 큰 박스(Block)로 뭉텅 썰어서 통째로 섞어버리는 블록 암호(AES 등)로 나뉩니다. 현대는 거의 블록 암호를 씁니다. (상세 내용은 다음 654, 655 문서 참조)
📢 섹션 요약 비유: 대칭키는 군대에서 둘만 아는 '암호 책자(코드북)'를 나눠 갖는 것과 같습니다. 적군 무전이 아무리 빨라도 둘은 같은 책자를 보고 1초 만에 번역(고속 처리)해 냅니다. 하지만 새 부대원 1,000명이 오면 각자에게 겹치지 않게 암호 책자를 50만 권 복사해서 나눠주기가 지옥 같고(키 관리 문제), 그 책자를 배달병 편으로 보내다가 적군 첩자에게 뺏기면 군사 기밀이 통째로 털리는 치명적인 약점(키 배송 문제)을 가집니다.