💡리플레이 공격
리플레이 공격이란 공격자가 보안 네트워크 통신을 가로채고, 해당 통신의 수신자에게 공격자가 원하는 일을 수행하도록 하기 위해 통신을 지연시키거나 재전송하는 방식이다. 리플레이 공격은 해커가 네트워크에서 메시지를 가로챈 후 메시지를 복호화하기 위한 별도의 과정이 필요하지 않으며, 메시지를 포함한 통신 전체를 다시 전송하는 것으로도 공격을 성공할 수 있다.
✓ 리플레이 공격 동작 방식
앨리스가 밥에게 100 달러를 송금해달라고 요청한다고 가정해보자. 일반적으로는 다음과 같이 요청과 응답이 이루어진다.
1. 앨리스는 밥에게 100달러를 송금해달라고 요청 "111-222-333으로 100달러를 보내세요" 메시지를 보낸다.
2. 밥은 앨리스를 신뢰하기 때문에 요청 메시지에 적힌 "111-222-333(앨리스의 주소)"에게 100달러를 송금한다.
그런데, 만약 앨리스가 요청을 보냈을 때 공격자가 앨리스의 요청을 가로채어 밥에게 메시지를 다시 보낼 수도 있다. 이 경우, 시나리오는 다음과 같이 변한다.
1. 앨리스는 밥에게 100달러를 송금해달라고 요청을 보낸다.
2. 공격자는 앨리스의 요청을 가로채, 메시지 중 앨리스의 주소 대신 자기 주소 "412-123-90"으로 바꾼다.
3. 바꾼 메시지 "412-123-90" 으로 100 달러를 보내세요를 밥에게 전송한다.
4. 밥은 앨리스로부터 왔다고 생각하는 요청 "412-123-90으로 100달러를 보내세요"를 확인하고 412-123-90으로 100달러를 송금한다. 그러나 이번에는 앨리스가 아닌 공격자에게 돈이 전달된다.
✓ 암호화폐에서 리플레이 공격이 위험한 이유
하드포크가 진행되면, 원장 데이터는 하드 포크 이전 버전과 이후 버전으로 나누어지게 된다. 하드포크가 진행되어 체인이 A와 B로 나누어졌다고 가정하자. 하드 포크 이후 생겨난 B 체인에서 처리한 트랜잭션은 이론적으로 A 체인에서도 유효하게 사용할 수 있다. 따라서 A와 B에 모든 계정이 있는 사용자는 B에서 트랜잭션을 발생시켰을 때, A 체인에서 누군가가 해당 트랜잭션을 탈취해 브로드캐스팅하면 A 체인에서도 해당 트랜잭션이 처리된다. 블록체인 하드포크 시 리플레이 공격은 다음과 같은 시나리오로 발생한다.
1. 비트코인에서 비트코인과 비트코인 캐시로 하드 포크가 일어난다.
2. 앨리스는 밥에게 100 BCH를 보낸다.
3. 밥은 악의적인 사용자이기 때문에, 앨리스가 밥에게 100 BCH를 보냄이라는 트랜잭션을 비트코인 네트워크에 브로드캐스팅한다.
4. 비트코인 네트워크에서도 비트코인 캐시의 트랜잭션을 유효하게 처리할 수 있으며, 이 체인에서는 아직 트랜잭션이 처리되지 않았기 때문에 트랜잭션이 블록에 들어가 처리된다.
5. 앨리스의 지갑에서는 100 BCH만 빠져나간 게 아니라, 100 BTC도 빠져나가게 된다.
* 100 BCH를 보내는 트랜잭션이 리플레이되어, 비트코인 체인에서도 해당 트랜잭션이 실행되어 비트코인 네트워크에서 사용하는 100BTC를 전송하는 것이기 때문이다.
✓ 리플레이 공격 대안
세션 식별자 추가
통신 당사자 간 일회용 토큰을 해싱한 값을 공유하여 리플레이 어택을 피한다.
1. 앨리스가 밥에게 일회용 토큰을 보낸다.
2. 밥은 토큰을 암호화하여 앨리스에게 보낸다.
3. 앨리스는 밥과 동일한 방식으로 토큰을 암호화하고, 그 값이 밥으로부터 받은 값과 같은 경우, 통신을 진행한다.
4. 공격자가 이 암호화된 값을 가로채고 다른 통신에서 사용하려고 해도, 앨리스가 밥에게 다른 일회용 토큰을 보내면 다른 암호화된 값이 나올 것이기 때문에 공격자가 가로챈 값은 사용할 수 없게 된다.
일회용 비밀번호
아주 짧은 세션 시간을 가진 비밀번호를 두 통신 당사자가 공유하여, 공격자가 가로채 재사용하지 못하도록 한다.
타임 스탬프
앨리스가 네트워크에 시간을 MAC과 함께 브로드캐스트한다. 밥은 앨리스에게 통신을 요청할 때, 자신의 통신 메시지에 앨리스가 브로드캐스트한 시간을 기준으로 예상 시간을 포함해 인증을 진행한다. 앨리스는 타임 스탬프가 예상 시간 범위 내에 있는 메시지만 수락한다.
'블록체인 > 블록체인이란?' 카테고리의 다른 글
인적 문제로 발생할 수 있는 블록체인의 보안적 이슈, 크립토재킹 & 더스팅 공격 & 시빌 공격 (0) | 2022.08.05 |
---|---|
이클립스 공격 (Eclipse Attack) (0) | 2022.08.05 |
51% 공격 (0) | 2022.08.04 |
암호화폐 시가총액 시세와 같은 다양한 데이터를 API 형태로 제공하는 Coingecko (0) | 2022.08.03 |
KAS (Klaytn API Service) (0) | 2022.08.03 |
댓글