hacktricks/crypto-and-stego/blockchain-and-crypto-currencies.md

175 lines
12 KiB
Markdown

{% hint style="success" %}
AWS 해킹 학습 및 실습:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCP 해킹 학습 및 실습: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricks 지원</summary>
* [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 가입하거나** 트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
* **HackTricks** 및 **HackTricks Cloud** 깃허브 저장소에 PR을 제출하여 해킹 트릭을 공유하세요.
</details>
{% endhint %}
## 기본 개념
- **스마트 계약**은 특정 조건이 충족될 때 블록체인에서 실행되는 프로그램으로 중개없이 합의 실행을 자동화합니다.
- **탈중앙화 애플리케이션 (dApps)**은 스마트 계약을 기반으로 하며 사용자 친화적인 프론트엔드와 투명하고 감사 가능한 백엔드를 제공합니다.
- **토큰 및 코인**은 코인이 디지털 화폐로 작용하는 반면 토큰은 특정 맥락에서 가치나 소유권을 나타냅니다.
- **유틸리티 토큰**은 서비스 접근을 허용하며 **보안 토큰**은 자산 소유를 나타냅니다.
- **DeFi**는 중앙 당국 없이 금융 서비스를 제공하는 Decentralized Finance의 약자입니다.
- **DEX** 및 **DAO**는 각각 탈중앙화 거래소 플랫폼과 탈중앙화 자율 조직을 가리킵니다.
## 합의 메커니즘
합의 메커니즘은 블록체인에서 안전하고 합의된 거래 유효성을 보장합니다:
- **작업 증명 (PoW)**은 거래 확인을 위해 계산 능력을 사용합니다.
- **지분 증명 (PoS)**은 유효성 검사자가 일정량의 토큰을 보유해야 하며 PoW에 비해 에너지 소비를 줄입니다.
## 비트코인 기본 사항
### 거래
비트코인 거래는 주소 간 자금 이체를 포함합니다. 거래는 디지턀 서명을 통해 유효화되며 개인 키 소유자만 이체를 시작할 수 있습니다.
#### 주요 구성 요소:
- **다중 서명 거래**는 거래를 승인하기 위해 여러 서명이 필요합니다.
- 거래는 **입력** (자금 출처), **출력** (목적지), **수수료** (마이너에게 지불), 및 **스크립트** (거래 규칙)로 구성됩니다.
### 라이트닝 네트워크
여러 거래를 채널 내에서 수행하고 최종 상태만 블록체인에 브로드캐스트하여 비트코인의 확장성을 향상시키는 것을 목표로 합니다.
## 비트코인 개인 정보 보호 우려
**공통 입력 소유 가정****UTXO 변경 주소 감지**와 같은 개인 정보 공격은 거래 패턴을 악용합니다. **믹서** 및 **CoinJoin**과 같은 전략은 사용자 간 거래 링크를 숨겨 개인 정보 보호를 향상시킵니다.
## 익명으로 비트코인 획득
현금 거래, 채굴, 및 믹서 사용이 포함됩니다. **CoinJoin**은 여러 거래를 혼합하여 추적을 복잡하게 하며 **PayJoin**은 더 높은 개인 정보 보호를 위해 CoinJoin을 일반 거래처럼 위장합니다.
# 비트코인 개인 정보 보호 공격
# 비트코인 개인 정보 보호 공격 요약
비트코인 세계에서 거래의 개인 정보 보호와 사용자의 익명성은 종종 우려의 대상입니다. 여기에는 공격자가 비트코인 개인 정보를 침해할 수 있는 여러 일반적인 방법에 대한 간소화된 개요가 포함되어 있습니다.
## **공통 입력 소유 가정**
일반적으로 서로 다른 사용자의 입력이 하나의 거래에서 결합되는 것은 복잡성 때문에 드물기 때문에 **동일한 소유자에게 속한 것으로 가정되는 경우가 많습니다**.
## **UTXO 변경 주소 감지**
UTXO 또는 **사용되지 않은 거래 출력**은 거래에서 완전히 사용되어야 합니다. 일부만 다른 주소로 전송되면 나머지는 새로운 변경 주소로 이동합니다. 관찰자는 이 새 주소가 송신자에게 속한다고 가정하여 개인 정보를 침해할 수 있습니다.
### 예시
이를 완화하기 위해 믹싱 서비스 또는 여러 주소 사용이 소유권을 숨기는 데 도움이 될 수 있습니다.
## **소셜 네트워크 및 포럼 노출**
사용자는 때로 온라인에서 비트코인 주소를 공유하여 해당 주소를 소유자에게 링크하는 것이 **쉽습니다**.
## **거래 그래프 분석**
거래는 그래프로 시각화될 수 있으며 자금의 흐름을 기반으로 사용자 간의 잠재적 연결을 보여줍니다.
## **불필요한 입력 휴리스틱 (최적 변경 휴리스틱)**
이 휴리스틱은 여러 입력과 출력을 갖는 거래를 분석하여 변경이 송신자에게 반환되는 것을 추측합니다.
```bash
2 btc --> 4 btc
3 btc 1 btc
```
## **강제 주소 재사용**
공격자는 이전에 사용된 주소로 소액을 송금하여 수신자가 이를 향후 거래에서 다른 입력과 결합하도록 하여 주소를 연결하는 것을 희망할 수 있습니다.
### 올바른 지갑 동작
개인 정보 누출을 방지하기 위해 지갑은 이미 사용된 빈 주소에서 받은 코인을 사용하지 않아야 합니다.
## **기타 블록체인 분석 기술**
- **정확한 지불 금액:** 거스름돈이 없는 거래는 동일한 사용자가 소유한 두 주소 간에 이루어졌을 가능성이 높습니다.
- **둥근 숫자:** 거래에서 둥근 숫자는 지불을 나타내며, 비둥근 출력은 거스름돈일 가능성이 높습니다.
- **지갑 지문:** 서로 다른 지갑은 고유한 거래 생성 패턴을 가지고 있어 분석가가 사용된 소프트웨어와 잠재적으로 거스름돈 주소를 식별할 수 있습니다.
- **금액 및 시간 상관 관계:** 거래 시간이나 금액을 공개하면 거래를 추적할 수 있습니다.
## **트래픽 분석**
네트워크 트래픽을 모니터링함으로써 공격자는 IP 주소를 통해 거래나 블록을 연결할 수 있어 사용자의 개인 정보를 침해할 수 있습니다. 특히 한 엔티티가 많은 비트코인 노드를 운영하는 경우, 거래를 모니터링하는 능력이 향상됩니다.
## 더 알아보기
개인 정보 공격 및 방어에 대한 포괄적인 목록은 [비트코인 위키의 비트코인 개인 정보](https://en.bitcoin.it/wiki/Privacy)를 방문하십시오.
# 익명 비트코인 거래
## 익명으로 비트코인 획득하는 방법
- **현금 거래**: 현금으로 비트코인을 획득하는 것.
- **현금 대체 수단**: 상품권을 구매하고 온라인에서 비트코인으로 교환하는 것.
- **채굴**: 비트코인을 획득하는 가장 개인 정보 보호 수준이 높은 방법은 채굴을 통해 하는 것이며, 특히 혼자 하는 경우에는 채굴 풀이 채굴자의 IP 주소를 알 수 있을 수 있습니다. [채굴 풀 정보](https://en.bitcoin.it/wiki/Pooled_mining)
- **도난**: 이론적으로 비트코인을 훔치는 것이 익명으로 획득하는 또 다른 방법일 수 있지만, 불법이며 권장되지 않습니다.
## 혼합 서비스
혼합 서비스를 사용하면 사용자는 **비트코인을 보내고** 다른 **비트코인을 반환** 받아 원래 소유자를 추적하기 어렵게 만들 수 있습니다. 그러나 이를 위해서는 서비스가 로그를 보관하지 않고 실제로 비트코인을 반환하는 것에 대한 신뢰가 필요합니다. 대체 혼합 옵션으로는 비트코인 카지노가 있습니다.
## 코인조인
**코인조인**은 여러 사용자의 다양한 거래를 하나로 병합하여 입력과 출력을 매칭하려는 누군가의 과정을 복잡하게 만듭니다. 그러나 고유한 입력과 출력 크기를 가진 거래는 여전히 추적될 수 있습니다.
코인조인을 사용한 예시 거래에는 `402d3e1df685d1fdf82f36b220079c1bf44db227df2d676625ebcbee3f6cb22a``85378815f6ee170aa8c26694ee2df42b99cff7fa9357f073c1192fff1f540238`가 있습니다.
더 많은 정보는 [코인조인](https://coinjoin.io/en)을 방문하십시오. 이더리움에서 유사한 서비스를 찾으려면 [토네이도 캐시](https://tornado.cash)를 확인하십시오. 이 서비스는 채굴자의 자금으로 거래를 익명화합니다.
## 페이조인
코인조인의 변형인 **페이조인** (또는 P2EP)은 두 당사자(예: 고객 및 상인) 사이의 거래를 일반 거래로 위장시키며, 코인조인의 특징적인 동일한 출력을 갖지 않아 감지하기 매우 어렵고 거래 감시 엔티티가 사용하는 공통 입력 소유 추론을 무효화할 수 있습니다.
```plaintext
2 btc --> 3 btc
5 btc 4 btc
```
## **암호화폐에서 개인 정보 보호를 위한 최상의 실천 방법**
### **지갑 동기화 기술**
개인 정보 보호와 보안을 유지하기 위해 블록체인과 지갑을 동기화하는 것이 중요합니다. 두 가지 주요 방법이 있습니다:
- **풀 노드**: 전체 블록체인을 다운로드하여 최대한의 개인 정보 보호를 보장합니다. 사용자가 관심을 가지는 거래나 주소를 식별하는 것을 불가능하게 합니다.
- **클라이언트 측 블록 필터링**: 이 방법은 블록체인의 각 블록에 대한 필터를 생성하여 관련 거래를 식별할 수 있게 합니다. 가벼운 지갑은 이러한 필터를 다운로드하며 사용자의 주소와 일치하는 경우에만 전체 블록을 가져옵니다.
### **익명성을 위한 Tor 활용**
비트코인이 피어 투 피어 네트워크에서 작동하기 때문에 Tor를 사용하여 IP 주소를 숨기는 것이 권장됩니다. 네트워크와 상호 작용할 때 개인 정보 보호를 강화할 수 있습니다.
### **주소 재사용 방지**
개인 정보 보호를 보호하기 위해 매 거래마다 새 주소를 사용하는 것이 중요합니다. 주소를 재사용하면 거래가 동일한 엔터티에 연결되어 개인 정보 보호가 손상될 수 있습니다. 현대적인 지갑은 주소 재사용을 방지하기 위한 설계를 통해 사용자를 격려합니다.
### **거래 개인 정보 보호를 위한 전략**
- **여러 거래**: 지불을 여러 거래로 분할하면 거래 금액을 숨기는 데 도움이 됩니다.
- **거스름돈 회피**: 거스름돈이 필요 없는 거래를 선택하면 거스름돈 감지 방법을 방해하여 개인 정보 보호를 강화할 수 있습니다.
- **여러 거스름돈 출력**: 거스름돈 회피가 불가능한 경우 여러 거스름돈 출력을 생성하면 여전히 개인 정보 보호가 향상될 수 있습니다.
# **모네로: 익명성의 상징**
디지털 거래에서 절대적인 익명성의 필요를 다루는 모네로는 개인 정보 보호에 높은 기준을 설정합니다.
# **이더리움: 가스와 거래**
### **가스 이해**
가스는 이더리움에서 작업을 실행하는 데 필요한 계산 노력을 측정하며 **gwei**로 가격이 매겨집니다. 예를 들어, 2,310,000 gwei(또는 0.00231 ETH)가 드는 거래에는 가스 한도와 기본 수수료, 채굴자를 동기화하기 위한 팁이 포함됩니다. 사용자는 과다 지불을 방지하기 위해 최대 수수료를 설정하고 초과분은 환불됩니다.
### **거래 실행**
이더리움의 거래에는 송신자와 수신자가 포함되며, 사용자 또는 스마트 계약 주소가 될 수 있습니다. 수수료가 필요하며 채굴되어야 합니다. 거래에 필요한 주요 정보는 수신자, 송신자의 서명, 가치, 선택적 데이터, 가스 한도 및 수수료를 포함합니다. 특히, 송신자의 주소는 서명에서 유추되어 거래 데이터에 필요하지 않습니다.
이러한 실천 방법과 메커니즘은 개인 정보 보호와 보안을 우선시하는 사람들에게 필수적입니다.