리플레이 공격은 공격자가 보안 네트워크 통신을 가로채고, 해당 통신의 수신자로 하여금 공격자가 원하는 작업을 수행하도록 하기 위해 통신을 지연시키거나 재전송하는 방식이다. 리플레이 공격은 해커가 네트워크에서 메시지를 가로챈 후 메시지를 복호화 하기 위한 별도의 과정이 필요하지 않고, 메시지를 포함한 통신 전체를 다시 전송하는 것으로도 공격에 성공할 수 있다.
블록체인에서 리플레이 공격은 하드 포크시 이전에 생긴 트랜잭션 데이터를 포크 이후 블록체인에 그대로 복사하고 재전송하여 동일한 트랜잭션이 두 번 발생하도록 하는 것이다. 즉, 이중 지불 문제로 이어질 수 있다.
예를 들어, 다음과 같은 시나리오로 발생한다.
100BCH를 보내는 트랜잭션이 리플레이 되어, 비트코인 체인에서도 해당 트랜잭션이 실행되므로 비트코인 네트워크에서 사용하는 100BTC가 전송되는 것이다.
일회용 비밀번호: 아주 짧은 세션 기간을 가진 비밀번호를 두 통신자가 공유하여, 공격자가 가로채 재사용하지 못하도록 한다.
타임 스탬프: 엘리스가 네트워크에 MAC과 함께 브로드캐스트한다. 밥은 엘리스에게 통신을 요청할 때, 자신의 통신 메시지에 엘리스가 브로드캐스트한 시간을 기준으로 예상 시간을 포함해 인증을 진행한다. 엘리스는 타임 스탬프가 예상 시간 범위 내에 있는 메시지만 수락한다.