리플레이 공격의 동작 구조와 인증 시스템 방어 설계
리플레이 공격의 패킷 재전송 구조와 인증·무선·금융 환경의 위험, 논스·타임스탬프 기반 방어 방법을 정리한다.
2026-08-14 · 최초 발행 2025-06-28
정상 요청이 다시 공격이 되는 경우
리플레이 공격은 공격자가 이전에 가로챈 유효한 데이터 전송을 다시 보내 인증을 우회하거나 권한을 얻는 기법이다. 네트워크 통신, 인증 시스템, 무선 통신 환경에서 특히 취약점이 된다. 공격자는 패킷 캡처 도구로 정상 통신을 기록한 뒤, 필요한 시점에 그 데이터를 재전송한다.
공격의 핵심은 메시지 자체가 유효했는지가 아니라, 그 메시지가 지금도 유효한 요청인지를 시스템이 구분하지 못하는 데 있다. 일반적인 흐름은 트래픽 스니핑, 인증 정보나 중요 명령이 담긴 패킷 저장, 패킷 재전송, 시스템의 정상 요청 오인으로 이어진다.
인증과 통신 경로에서 나타나는 위험
네트워크 인증에서는 사용자의 로그인 정보인 사용자명과 패스워드 해시가 포함된 패킷을 캡처한 뒤 서버로 재전송할 수 있다. 단순 패스워드 기반 인증 시스템은 이런 방식에 특히 취약하다.
무선 환경에서는 차량 리모컨 키나 무선 도어락의 신호가 표적이 된다. 공격자가 신호를 캡처해 재생하면 문을 열거나 시스템 제어 권한을 얻을 수 있다. 롤링 코드를 사용하지 않는 구형 차량 키리스 시스템이 한 예다.
온라인 금융 거래에서는 거래 승인 패킷의 재전송이 같은 거래의 반복 실행으로 이어질 수 있다. 이중 결제나 금융 사기의 가능성이 생긴다.
웹 애플리케이션은 세션 토큰의 재사용에도 주의해야 한다. 사용자의 세션 토큰을 캡처한 공격자는 이를 이용해 권한 있는 세션에 접근할 수 있으며, 이는 세션 하이재킹에서 흔히 나타나는 공격 유형이다.
DNS 응답과 무선 카드키의 재사용
DNS 캐시 포이즈닝에서는 공격자가 DNS 쿼리와 응답을 캡처한 후 조작된 응답을 재전송한다. DNS 서버 캐시가 오염되면 이후 사용자는 악성 웹사이트로 리디렉션될 수 있다.
아파트나 사무실 출입 시스템의 RFID 신호도 재생 대상이 될 수 있다. 특수 장비로 RFID 신호를 복제하고 재전송하면 접근 통제가 무력화될 수 있다.
요청의 일회성을 검증하는 방법
타임스탬프는 모든 메시지에 현재 시간 정보를 넣고, 서버가 메시지가 특정 시간 창(time window) 안에 있는지 확인하는 방식이다. 일정 시간이 지난 메시지는 거부한다. 구현이 간단하고 효과적이지만, 클라이언트와 서버의 시간 동기화가 필요하다.
논스는 단 한 번만 사용하는 임의 값이다. 서버가 클라이언트에 논스를 제공하고, 클라이언트가 인증 요청에 이를 포함하면 서버는 이미 사용된 논스를 거부할 수 있다. 시간 동기화는 필요하지 않지만, 사용된 논스를 관리하기 위한 상태 정보를 유지해야 한다.
챌린지-응답 방식에서는 서버가 랜덤 챌린지를 보내고, 클라이언트는 비밀키와 챌린지를 조합해 응답을 만든다. 인증마다 다른 챌린지를 사용하므로 이전 응답을 다시 보내는 공격을 막을 수 있다. CHAP(Challenge-Handshake Authentication Protocol)이 예다.
시퀀스 번호도 재전송을 구분하는 방법이다. 각 메시지에 순차적으로 증가하는 번호를 부여하고, 서버는 이전에 처리한 번호보다 높은 번호만 수락한다. TCP 프로토콜이 사용하는 방식과 유사하다. 구현이 간단하고 오버헤드가 적지만 초기 동기화가 필요하며, 패킷 손실이 발생하면 처리가 복잡해진다.
전송 계층과 네트워크 계층에서는 TLS/SSL 및 IPsec 같은 암호화 통신 프로토콜을 사용할 수 있다. 세션 키를 통한 암호화는 패킷 재생 방지에 활용된다.
알려진 취약점 사례가 보여주는 지점
2015년 연구에서는 여러 자동차 제조사의 키리스 엔트리 시스템 취약점이 발견됐다. 공격자들은 특수 장비로 차량 리모컨 신호를 캡처하고 재전송했으며, 대응으로 매번 다른 코드를 생성하는 롤링 코드 기술이 도입됐다.
일부 EMV 구현에서는 트랜잭션 데이터를 재사용할 수 있는 취약점이 발견됐다. 공격자는 이전 거래 데이터를 캡처해 유사한 거래를 수행할 수 있었고, 대응에는 거래별 고유 식별자와 타임스탬프가 포함됐다.
2017년 발견된 WPA2 프로토콜의 KRACK 공격은 핸드셰이크 과정에서 키 재설정 패킷을 재전송하는 방식이다. 암호화 키 복구와 데이터 탈취가 가능하며, 프로토콜 패치와 WPA3 도입으로 대응한다.
애플리케이션과 운영 환경의 점검 항목
백엔드에서는 모든 API 요청에 타임스탬프와 논스를 통합하고, 무상태(stateless) 인증보다 상태 기반(stateful) 세션 관리를 고려할 수 있다. 인증 토큰에는 짧은 만료 시간을 설정하고, IP 주소·장치 식별자 같은 추가 요소를 검증한다. 중요 작업에는 추가 인증을 구현한다.
프론트엔드는 민감한 정보를 로컬 스토리지가 아닌 쿠키에 저장하고, CSRF 토큰을 구현해야 한다. HTTPS 통신만 허용하고 자동 로그아웃 타이머를 적용하며, SPA(Single Page Application)에서는 JWT 토큰 보안을 강화한다.
DevOps와 인프라 운영에서는 모든 서비스에 TLS/SSL을 적용한다. WAF(Web Application Firewall)로 비정상 요청 패턴을 탐지하고, 네트워크 트래픽 모니터링 및 이상 탐지 시스템을 구축한다. 정기적인 보안 감사와 취약점 스캔, 최신 보안 패치 적용도 함께 필요하다.
리플레이 공격 방어는 단일 기법에만 의존하지 않는다. 타임스탬프, 논스, 챌린지-응답 메커니즘을 인증 설계에 통합하고, 지속적인 보안 업데이트와 취약점 점검으로 새로운 변형에 대응해야 한다. 다중 방어 계층(Defense in Depth)을 적용하면 하나의 방어책이 실패해도 전체 시스템을 보호할 수 있다.