655. 블록 암호 (Block Cipher) - DES, 3DES
핵심 인사이트: 스트림 암호가 1비트씩 찔끔찔끔 처리하는 컨베이어 벨트라면, 블록 암호는 책 100페이지 분량의 데이터를 커다란 '박스(Block)'에 통째로 쑤셔 넣고, 거대한 믹서기에 넣어 10바퀴씩 마구 갈아버리는(라운드 연산) 묵직한 암호화다. 해커가 앞뒤 문맥을 전혀 유추할 수 없도록 완전히 짓이겨버리는, 현대 인터넷 뱅킹과 군사 기밀을 지키는 가장 완벽한 방어막이다.
Ⅰ. 블록 암호 (Block Cipher)의 개념
- 평문 데이터를 1비트씩 처리하지 않고, 특정 길이(예: 64비트, 128비트)의 커다란 덩어리(Block) 단위로 뭉텅 썰어서 암호화와 복호화를 수행하는 대칭키 암호화 방식입니다.
- 평문을 암호문으로 바꿀 때, 한 번만 섞는 것이 아니라 여러 번의 복잡한 섞기 과정(Round, 라운드)을 빙글빙글 돌려서 평문과 암호문 사이의 수학적 상관관계를 완전히 박살 내버립니다(혼돈과 확산 원리).
Ⅱ. 블록 암호의 시조새: DES (Data Encryption Standard)
1970년대에 미국 정부(NIST)가 채택한 인류 역사상 가장 유명했던 초기 1세대 블록 암호 표준입니다.
1. DES의 스펙과 구조 (페이스텔 구조)
- 블록 크기: 데이터를 64비트 단위 박스로 잘라서 넣습니다.
- 키(Key) 길이: 64비트 키를 쓰지만 파리티 비트를 빼면 실제 56비트 길이의 비밀번호를 씁니다.
- 구조: 좌우 데이터를 반으로 쪼개서 크로스 교차시키고 함수(S-Box)를 먹이는 과정을 무려 16바퀴(16 라운드) 반복하는 '페이스텔(Feistel)' 구조를 발명해 내어, 당시로선 외계인도 못 푸는 철옹성을 만들었습니다.
2. DES의 처참한 몰락
- 시간이 흘러 컴퓨터의 CPU 발전 속도(무어의 법칙)가 너무 빨라졌습니다.
- 56비트라는 키 길이는 경우의 수가 $2^{56}$(약 7경 개)인데, 1990년대 말 해커들이 만든 특수 슈퍼컴퓨터(Deep Crack)가 하루 종일 7경 개의 비밀번호를 1부터 무식하게 하나씩 다 찍어보는 '무차별 대입 공격(Brute-force)'을 돌렸더니 단 이틀 만에 금고가 덜컥 열려버렸습니다. 현재는 보안성이 0에 수렴하여 절대 사용 금지 권고가 내려졌습니다.
Ⅲ. 과도기의 구원 투수: 3DES (Triple DES)
미국 정부가 다급해졌습니다. DES가 뚫렸는데, 당장 새로운 암호 체계(AES)를 만들 시간이 없었고 은행들도 기존 장비를 다 버릴 수 없었습니다.
- 개념: 기존의 DES 기계를 그대로 쓰되, 평문을 통과시킬 때 기계 3대를 일렬로 붙여서 3번 연속으로 돌려버리는(암호화 -> 복호화 -> 암호화) 무식하지만 확실한 땜질 처방입니다.
- 효과: 56비트 키를 3번 쓰니까 키 길이가 **168비트(또는 112비트)**로 늘어나는 효과가 생겨 해커가 뚫는 데 수십억 년이 걸리게 방어력을 뻥튀기했습니다.
- 단점: 기계를 3번이나 억지로 돌리니 소프트웨어 속도가 미친 듯이 느려져서 스마트폰 시대에 도저히 쓸 수 없었습니다. 차세대 AES가 나올 때까지 버틴 '임시방편' 모델이었습니다.
📢 섹션 요약 비유: DES는 1970년대에 은행들이 쓰던 '비밀번호 4자리짜리 다이얼 금고'입니다. 옛날 사람 손으로는 풀기 힘들었지만, 요즘 도둑들은 컴퓨터 모터를 달아 4자리 숫자를 1초에 만 번씩 돌려버리니(슈퍼컴퓨터 무차별 대입) 5분이면 금고가 다 따였습니다. 다급해진 은행들은 임시방편으로 똑같은 자물쇠 3개를 겹쳐 달고 번호를 각각 다르게 설정했습니다(3DES). 금고는 다시 철옹성이 되었지만, 매번 문을 열 때마다 자물쇠를 3번이나 따야 해서 은행 직원(CPU)들이 느려터졌다고 불평하기 시작했습니다.