GSM 암호를 무너뜨린 레인보우 테이블 공격
초록
이 논문은 2008년 Pico Computing이 공개한 A5/1 실시간 해독을 기반으로, Chris Paget와 Karsten Nohl이 레인보우 테이블을 분산 torrent 형태로 제공함으로써 일반 사용자도 GSM 암호를 손쉽게 깨뜨릴 수 있게 만든 과정을 기술한다. GSM 인증·암호화 구조, A5/1·A5/2·A5/0의 취약점, 레인보우 테이블 생성·검색 알고리즘, 충돌 회피 기법 및 GPU 가속 구현을 상세히 설명하고, 향후 주파수 홉핑 방어와 A5/3 공격 가능성까지 논의한다.
상세 분석
논문은 GSM 시스템의 기본 인증 흐름을 정확히 서술하면서, IMSI와 128‑bit 비밀키(K) 가 SIM 카드에 저장되고, 네트워크와 단말 간에 챌린지‑응답 방식으로 세션키(Ks)를 도출한다는 점을 강조한다. 특히 A5/1 암호화 엔진이 3개의 LFSR(19, 22, 23비트)으로 구성되고, 비정규 클럭 제어에 의해 비선형성을 얻는 구조임을 명확히 제시한다. 이 구조는 알려진 평문(예: “0000…”)이 주기적으로 전송되는 특성 때문에, 암호문과 평문의 XOR 결과가 LFSR 출력과 동일함을 이용해 키 복구가 가능하다는 점을 지적한다.
키 복구를 위한 전통적 사전 공격은 2⁶⁴개의 상태를 모두 저장해야 하는 비현실적인 메모리 요구량을 초래한다. 논문은 이를 해결하기 위해 “시간‑메모리 트레이드‑오프” 개념을 적용한 레인보우 테이블을 도입한다. 레인보우 테이블은 체인 시작값을 무작위로 선택하고, A5/1 암호화 함수와 여러 개의 서로 다른 축소 함수(예: XOR 상수)를 교대로 적용해 체인을 만든 뒤, 시작값과 최종값만을 저장한다. 검색 시에는 캡처된 암호문에 동일한 연산을 반복 적용해 최종값이 테이블에 존재하는지 확인하고, 존재한다면 해당 체인을 역추적해 초기 상태, 즉 LFSR 내부값을 복원한다.
핵심 기술적 기여는 충돌 관리와 테이블 효율성이다. 동일한 중간값이 동일 컬럼에서 발생하면 체인이 병합돼 정보 손실이 발생하므로, 논문은 12비트 마스크를 적용해 마지막 컬럼을 제한함으로써 디스크 접근을 최소화하고, 충돌 확률을 낮추었다. 또한, 서로 다른 축소 함수를 사용해 컬럼별 충돌을 회피함으로써 “레인보우” 형태의 단일 테이블을 구현했다. 이는 다중 사전 방식에 비해 평균 검색 연산을 약 ½로 감소시키며, 50 % 확률로 체인 전반부에서 키를 찾을 수 있음을 이론적으로 증명한다.
실제 구현에서는 NVIDIA와 ATI GPU를 활용해 초당 500체인 정도의 속도로 테이블을 생성했으며, 전체 키 공간의 약 80 %를 커버하는 2⁰⁴개의 알려진 평문을 이용해 성공률을 높였다. 그러나 전체 키 공간을 완전 커버하지 못하는 이유는 메모리와 충돌 비용이 기하급수적으로 증가하기 때문이다. 또한, 논문은 A5/3(또는 KASUMI 기반) 공격을 위해 A5/1 테이블을 재활용하는 시나리오를 제시했으며, 주파수 홉핑 방어가 실제 방어 수단으로 채택될 경우 공격이 무력화될 가능성을 언급한다.
전반적으로 논문은 레인보우 테이블을 GSM A5/1에 적용한 구체적 설계와 구현 과정을 상세히 기술했지만, 실험적 검증(예: 실제 네트워크에서 캡처한 트래픽에 대한 성공률, 테이블 배포 후 실제 사용 사례)이나 보안 정책적 대응 방안에 대한 논의가 부족하다. 또한, 표기 오류와 비전문적인 서술이 다수 존재해 학술적 가독성을 저해한다. 그럼에도 불구하고, GSM 암호화가 여전히 4 십억 명 이상의 사용자를 보호하고 있음에도 불구하고, 오픈 소스 레인보우 테이블 배포가 보안 인식 전환을 촉진할 수 있다는 점에서 의미 있는 기여를 한다.
댓글 및 학술 토론
Loading comments...
의견 남기기