Dockeyhunt 거래 가단성 공격

## 소개

거래 가단성은 비트코인 ​​시스템의 취약점으로, 공격자가 네트워크에서 확인되기 전에 거래의 고유 식별자를 변경할 수 있습니다. 이 변경으로 인해 거래가 존재하지 않는 것처럼 보일 수 있으며, 이중 입금 또는 이중 출금이 발생할 가능성이 있습니다. 이 글에서는 이 공격의 메커니즘, 결과 및 방어 방법을 살펴보겠습니다.

## 서명 준수

### ASN.1 및 DER

가단성의 첫 번째 형태는 서명 자체에 있습니다. 각 서명에는 DER로 인코딩된 정확히 하나의 ASN.1 옥텟 표현이 있습니다. 그러나 비트코인의 암호화 작업에 사용되는 라이브러리인 OpenSSL은 이 표준을 엄격하게 준수하지 않습니다. 이는 서명이 여전히 유효한 것으로 간주되지만 표시 방식이 달라지는 방식으로 서명이 변경될 수 있음을 의미합니다.

### ECDSA 및 서명 수정

각 ECDSA 서명(r,s)에 대해 동일한 메시지에 유효한 동등한 서명(r, -s(mod N))이 있습니다. 이를 통해 공격자는 유효성에 영향을 미치지 않고 서명을 변경할 수 있으며, 결과적으로 트랜잭션 ID가 변경됩니다.

## ScriptSig 유연성

### 서명 알고리즘

비트코인에서 사용되는 서명 알고리즘은 서명을 생성하기 위해 ScriptSig에 서명하지 않습니다. 즉, 필요한 서명과 공개 키 전에 추가 데이터를 추가하고 스택에 푸시할 수 있습니다. 예를 들어, scriptPubKey가 실행되기 전에 OP_DROP 명령을 추가하여 스택을 이전과 정확히 동일하게 둘 수 있습니다.

### 거래 ID에 미치는 영향

ScriptSig를 변경하면 트랜잭션 ID가 변경되어 공격자가 트랜잭션이 발생하지 않은 것처럼 가장할 수 있습니다. 이는 이중 입금이나 이중 출금에 사용될 수 있는 비트코인 ​​거래소의 경우 특히 위험합니다.

## 보호 방법

### 서명 라이브러리의 유연성 테스트

거래 유연성 공격에 대한 방어 방법 중 하나는 사용된 서명 라이브러리를 확인하여 유연성을 보장하는 것입니다. 예를 들어, BIP-0066에서 제안된 대로 강력한 DER 서명을 사용하면 공격 위험을 크게 줄일 수 있습니다.

### 프로토콜 변경

또 다른 보호 방법은 비트코인 ​​프로토콜 자체를 변경하는 것입니다. 예를 들어 SegWit(Segregated Witness)을 구현하면 서명을 거래 데이터에서 분리할 수 있으므로 서명을 변경하여 거래 ID를 변경할 수 없습니다.

## 결론

거래 유연성 공격은 공격자가 거래 ID를 변경하고 거래 ID가 존재하지 않는 것처럼 보이게 함으로써 비트코인 ​​시스템에 심각한 위협을 가합니다. 이는 재정적 손실로 이어질 수 있으며 시스템에 대한 신뢰를 약화시킬 수 있습니다. 그러나 강력한 DER 서명 사용 및 SegWit 구현과 같은 보안 기술을 사용하면 이 공격의 위험을 크게 줄일 수 있습니다. 비트코인 개발자와 사용자는 이 취약점을 인지하고 이를 방지하기 위한 조치를 취하는 것이 중요합니다.

## 연결

1.   거래 유연성
2.   BIP-0066: 강력한 DER 서명
3.   EIP-2: 홈스테드 하드 포크 변경

Dockeyhunt 트랜잭션 가단성 공격

От

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *