Replay Attack.

리플레이 공격은 공격자가 특정한 통신 세션에서 전송된 데이터를 가로채고 그 데이터를 재전송하여 시스템을 속이는 방식으로 작동한다.
이는 데이터 패킷이나 메시지를 중간에서 가로채서 똑같이 다시 전송함으로써 수행될 수 있다.
예를 들어, 인증 토큰이나 세션 ID를 가로채서 같은 토큰이나 ID를 사용하여 시스템에 다시 인증하는 것이다.
리플레이 공격은 데이터의 기밀성, 무결성 및 인증에 대한 위협이 될 수 있다.
공격자가 성공적으로 리플레이 공격을 수행하면, 시스템은 공격자를 정당한 사용자로 오인하게 되거나, 사용자의 데이터나 자금 등이 도난당할 수 있다.
대응 방법.
- 데이터 패킷이나 메시지에 유효기간을 부여한다.
특정 요청이 수신된 후 일정 시간 내에만 처리되도록 설정하여 replay attacks의 유효성을 제한할 수 있다.
- 요청마다 무작위로 생성된 nonce 값을 추가하여 해당 요청이 유일함을 보장한다.
서버는 이전에 수신한 요청의 nonce를 기록하고, 같은 nonce가 여러 번 사용되는 경우 이를 거부한다.
- 메시지나 통신 세션에 타임스탬프를 포함하여 이전에 전송된 메시지를 다시 사용하는 것을 방지한다.
Request ID 사용: 각 요청에 고유한 식별자를 부여하고, 서버에서 이를 추적하여 중복된 요청을 거부합니다.
- 요청마다 증가하는 시퀀스 번호를 부여하여, 이전에 처리된 요청보다 낮은 번호의 요청을 거부한다.