이혁준 & 이수미, 2016. 비트코인의 신뢰구조와 이중지불의 위협. 정보보호학회지, 26(2), pp.25–30.
- 비트코인의 위협 행위는 이중 지불, 부정 인출 등이 있음
- 개인키를 탈취하여 부정인출을 시도
- 사용한 비트코인을 재사용하는 이중 지불(Double spending)
- 이중 지불은 탈중앙화의 구조적 특징에 기인하며, 다양한 방식이 존재
거래 절차
지갑설치 -> 주소생성 -> 송금지시 -> 송금지시 발송 -> 송금지시 검증 -> 블록 생성 및 배포 -> 블록체인 생성 및 공유
송금지시
- 이전 거래 해쉬 값 (Previous tx)
- 송금액 (value)
- 수신자 주소 (공개키, scriptPubKey)
- 전자서명 (scriptSig) : 송신자의 개인키(priviate key)로 서명
송금지시 검증
- 송금액 검증 : 블록체인의 거래 내역을 참고해 송금액의 존재 여부를 확인
- 송신자 및 거래내역 검증 : scriptSig를 확인하여 거래내역 및 송신자를 검증
비트코인의 신뢰구조
- 전자서명, 해쉬 연결, 검증 비용
거래내역의 무결성 검증
- 이전 거래의 공개키를 현재 거래의 송신자 전자서명에 대입. 성공한다면 송금지시 내역의 변조 여부와 송신자의 검증이 완료
블록체인 무결성 검증
- 머클 루트, 이전 블록 헤더 해쉬, 특정값을 헤더에 기록. 이전 블록 헤더로 블록들을 체이닝하고, 머클 루트로 포함 거래의 신뢰성을 확보
- 머클 트리 노드가 생성된 이후 거래가 변조되면 머클 루트가 변경되므로 신뢰성 판단 기준으로 삼을 수 있음
이중지불 위협 유형
- 개인키에 대한 위협
- 송금지시 거래내역의 블록체인 포함에 대한 위협
일반적 보안 위협
- 거래소 털릴 수 있음
- 개인 PC의 개인키도 털릴 수 있음
- 알죠? 콜드월릿
이중지불 공격 유형
- 기 지불된 비트코인을 회수하거나 재지불하여 거래를 완료하는 것
- 돈 못받는 사람이 생김
- 2가지 방식
- 송금지시가 포함되는 것을 방해하는 방식 (미승인형)
- 송금지시가 블록체인에 포함되었으나 이를 제거하는 방식 (승인형)
미승인형 1 : 레이스(Race) 공격
- 2개의 거래내역을 만듦. 원래 거래, 다른 사람한테 돈주는 거래
- 원래 거래 보여주고, 이것봐바 나 돈 냈음. ㅇㅇ
- 다른 사람한테 돈주는 거래를 네트워크에 먼저 전파 -> 블록체인에 들어감 -> 원래 거래는 나가리
미승인형 2 : 피니 공격
- 채굴꾼을 섭외해서 다른 사람한테 돈 주는 거래를 먼저 넣음
승인형
- 블록체인에 포함되었던 거래를 없애는 것
- 무작위(Btute Force) 공격 : 긴 블록체인을 가질 때 까지 기다림
>50%공격 : 이러면 확률적으로 원하는 거래를 없애기 쉬움<50%공격 : 네트워크를 박살내서 >50%으로 가는 것
이중지불 위협 대응
- 충분한 승인 횟수 확보
- 모니터링
- 대규모/장시간 단절 대응