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

207 lines
15 KiB
Markdown
Raw Normal View History

2024-04-06 18:36:54 +00:00
<details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong>를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요<strong>!</strong></summary>
HackTricks를 지원하는 다른 방법:
* 회사를 **HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하고 싶다면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요!
* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요.
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요. 독점적인 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션입니다.
* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **참여**하거나 **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)를 **팔로우**하세요.
* **Hacking 트릭을 공유하려면** [**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 저장소에 PR을 제출하세요.
</details>
## 기본 개념
- **스마트 계약**은 특정 조건이 충족될 때 블록체인에서 실행되는 프로그램으로, 중개인 없이 합의 실행을 자동화합니다.
- **탈중앙화 애플리케이션 (dApps)**은 스마트 계약을 기반으로 하며, 사용자 친화적인 프론트엔드와 투명하고 감사 가능한 백엔드를 갖추고 있습니다.
- **토큰 및 코인**은 코인이 디지털 화폐로 사용되는 반면, 토큰은 특정 맥락에서 가치나 소유권을 나타냅니다.
- **유틸리티 토큰**은 서비스에 대한 액세스를 부여하며, **보안 토큰**은 자산 소유를 나타냅니다.
- **DeFi**는 중앙 관리 기관 없이 금융 서비스를 제공하는 것을 의미합니다.
- **DEX**와 **DAO**는 각각 탈중앙화된 거래소 플랫폼과 탈중앙화된 자율 조직을 나타냅니다.
## 합의 메커니즘
합의 메커니즘은 블록체인에서 안전하고 합의된 트랜잭션 검증을 보장합니다:
- **작업 증명 (PoW)**은 트랜잭션 검증을 위해 계산 능력을 의존합니다.
- **지분 증명 (PoS)**은 검증자가 일정량의 토큰을 보유해야 하며, PoW에 비해 에너지 소비를 줄입니다.
## 비트코인 기본 사항
### 트랜잭션
비트코인 트랜잭션은 주소 간 자금 이전을 포함합니다. 트랜잭션은 디지털 서명을 통해 검증되며, 개인 키의 소유자만이 이체를 시작할 수 있도록 보장합니다.
#### 주요 구성 요소:
- **다중 서명 트랜잭션**은 트랜잭션을 승인하기 위해 여러 개의 서명이 필요합니다.
- 트랜잭션은 **입력** (자금의 출처), **출력** (목적지), **수수료** (마이너에게 지불) 및 **스크립트** (트랜잭션 규칙)로 구성됩니다.
### 라이트닝 네트워크
라이트닝 네트워크는 채널 내에서 여러 트랜잭션을 허용하여 비트코인의 확장성을 향상시키는 것을 목표로 합니다. 최종 상태만 블록체인에 브로드캐스트됩니다.
## 비트코인 개인 정보 보호 우려 사항
**공통 입력 소유** 및 **UTXO 변경 주소 감지**와 같은 개인 정보 보호 공격은 트랜잭션 패턴을 이용합니다. **믹서**와 **CoinJoin**과 같은 전략은 사용자 간의 트랜잭션 링크를 모호하게 만들어 익명성을 향상시킵니다.
## 익명으로 비트코인 획득하기
현금 거래, 채굴 및 믹서 사용 등의 방법이 있습니다. **CoinJoin**은 여러 트랜잭션을 혼합하여 추적을 복잡하게 만들고, **PayJoin**은 일반적인 트랜잭션으로 CoinJoin을 위장하여 더 높은 개인 정보 보호를 제공합니다.
# 비트코인 개인 정보 보호 공격
# 비트코인 개인 정보 보호 공격 요약
비트코인의 세계에서 트랜잭션의 개인 정보 보호와 사용자의 익명성은 종종 우려의 대상입니다. 여기에는 공격자가 비트코인 개인 정보를 침해할 수 있는 여러 일반적인 방법에 대한 단순화된 개요가 있습니다.
## **공통 입력 소유 가정**
일반적으로 서로 다른 사용자의 입력이 하나의 트랜잭션에 결합되는 것은 드물기 때문에 복잡성 때문에 **동일한 소유자에게 속하는 것으로 가정되는 두 개의 입력 주소**입니다.
## **UTXO 변경 주소 감지**
UTXO 또는 **사용되지 않은 트랜잭션 출력**은 트랜잭션에서 완전히 소비되어야 합니다. 일부만 다른 주소로 보내는 경우 나머지는 새로운 변경 주소로 이동합니다. 관찰자는 이 새 주소가 송신자에게 속한다고 가정하여 개인 정보를 침해할 수 있습니다.
### 예시
이를 완화하기 위해 믹싱 서비스를 사용하거나 여러 주소를 사용하여 소유권을 모호하게 할 수 있습니다.
## **소셜 네트워크 및 포럼 노출**
사용자들은 때로는 비트코인 주소를 온라인으로 공유하여 해당 주소를 소유자와 연결하기 쉽게 만듭니다.
## **트랜잭션 그래프 분석**
트랜잭션은 그래프로 시각화될 수 있으며, 자금의 흐름을 기반으로 사용자 간의 잠재적인 연결을 보여줍니다.
## **불필요한 입력 휴리스틱 (최적의 변경 휴리스틱)**
이 휴리스틱은 여러 입력과 출력을 가진 트랜잭션을 분석하여 송신자에게 반환되는 변경 출력이 어떤 것인지 추측하는 것에 기반합니다.
### 예시
```bash
2 btc --> 4 btc
3 btc 1 btc
```
## **강제 주소 재사용**
공격자는 이전에 사용한 주소로 작은 금액을 보내어 수신자가 이를 다른 입력과 결합하여 향후 거래에서 주소를 연결하도록 하는 것을 희망합니다.
### 올바른 지갑 동작
이 개인 정보 누출을 방지하기 위해 지갑은 이미 사용한 빈 주소에서 받은 코인을 사용하지 않아야 합니다.
## **기타 블록체인 분석 기법**
- **정확한 지불 금액:** 거스름돈이 없는 거래는 동일한 사용자가 소유한 두 주소 간의 거래일 가능성이 높습니다.
- **둥근 숫자:** 거래에서 둥근 숫자는 지불을 나타내며, 둥근이 아닌 출력은 거스름돈일 가능성이 높습니다.
- **지갑 지문 인식:** 서로 다른 지갑은 고유한 거래 생성 패턴을 가지고 있으므로, 분석가는 사용된 소프트웨어와 변경 주소를 식별할 수 있습니다.
- **금액 및 시간 상관 관계:** 거래 시간이나 금액을 공개하면 거래를 추적할 수 있습니다.
## **트래픽 분석**
네트워크 트래픽을 모니터링함으로써 공격자는 거래나 블록을 IP 주소와 연결하여 사용자의 개인 정보를 침해할 수 있습니다. 특히 한 개체가 많은 비트코인 노드를 운영하는 경우, 거래를 모니터링하는 능력이 향상됩니다.
## 더 알아보기
개인 정보 공격과 방어에 대한 포괄적인 목록은 [Bitcoin Privacy on Bitcoin Wiki](https://en.bitcoin.it/wiki/Privacy)를 참조하십시오.
# 익명의 비트코인 거래
## 익명으로 비트코인을 얻는 방법
- **현금 거래**: 현금으로 비트코인을 얻는 방법.
- **현금 대체 수단**: 상품권을 구매하고 온라인에서 비트코인으로 교환하는 방법.
- **마이닝**: 비트코인을 얻는 가장 개인적인 방법은 마이닝을 통해 얻는 것입니다. 특히 개인적으로 마이닝을 할 경우, 마이닝 풀은 마이너의 IP 주소를 알 수 있을 수 있습니다. [마이닝 풀 정보](https://en.bitcoin.it/wiki/Pooled_mining)
- **도난**: 이론적으로 비트코인을 훔칠 수도 있지만, 이는 불법이며 권장되지 않습니다.
## 혼합 서비스
혼합 서비스를 사용하면 사용자는 **비트코인을 보내고 다른 비트코인을 받아** 원래 소유자를 추적하기 어렵게 만들 수 있습니다. 그러나 이를 위해서는 서비스가 로그를 유지하지 않고 실제로 비트코인을 반환하지 않을 것을 신뢰해야 합니다. 대체로 혼합 옵션으로는 비트코인 카지노가 있습니다.
## CoinJoin
**CoinJoin**은 여러 사용자의 여러 거래를 하나로 병합하여 입력과 출력을 매칭하려는 노력을 어렵게 만듭니다. 그러나 고유한 입력과 출력 크기를 가진 거래는 여전히 추적될 수 있습니다.
CoinJoin을 사용한 예시 거래로는 `402d3e1df685d1fdf82f36b220079c1bf44db227df2d676625ebcbee3f6cb22a``85378815f6ee170aa8c26694ee2df42b99cff7fa9357f073c1192fff1f540238`가 있습니다.
자세한 정보는 [CoinJoin](https://coinjoin.io/en)을 참조하십시오. Ethereum에서 비슷한 서비스인 [Tornado Cash](https://tornado.cash)는 채굴자의 자금으로 거래를 익명화합니다.
## PayJoin
CoinJoin의 변형인 **PayJoin** (또는 P2EP)은 두 당사자 (예: 고객과 상인) 간의 거래를 일반적인 거래로 위장시키며, CoinJoin의 특징인 동일한 출력이 없습니다. 이로써 일반적인 입력 소유성 휴리스틱을 감지하기가 매우 어려워지며, 거래 감시 엔티티가 사용하는 휴리스틱을 무효화할 수 있습니다.
```plaintext
2 btc --> 3 btc
5 btc 4 btc
```
위의 거래와 같은 거래는 PayJoin일 수 있으며, 표준 비트코인 거래와 구별할 수 없는 상태로 개인 정보 보호를 향상시킬 수 있습니다.
**PayJoin의 활용은 전통적인 감시 방법을 크게 방해할 수 있으며**, 거래 개인 정보 보호의 추구에서 유망한 발전입니다.
# 암호화폐에서 개인 정보 보호를 위한 최상의 실천 방법
## **지갑 동기화 기술**
개인 정보 보호와 보안을 유지하기 위해 블록체인과 지갑을 동기화하는 것이 중요합니다. 두 가지 방법이 돋보입니다:
- **풀 노드**: 전체 블록체인을 다운로드하여 풀 노드는 최대한의 개인 정보 보호를 보장합니다. 모든 거래 내역이 로컬에 저장되어 있으므로, 상대방이 사용자가 관심을 가지고 있는 거래나 주소를 식별하는 것은 불가능합니다.
- **클라이언트 측 블록 필터링**: 이 방법은 블록체인의 각 블록에 대한 필터를 생성하여 지갑이 특정 관심사를 네트워크 관찰자에게 노출하지 않고도 관련 거래를 식별할 수 있게 합니다. 경량 지갑은 이러한 필터를 다운로드하며, 사용자의 주소와 일치하는 경우에만 전체 블록을 가져옵니다.
## **익명성을 위한 Tor의 활용**
비트코인이 P2P 네트워크에서 작동하기 때문에, 네트워크와 상호 작용할 때 IP 주소를 가리기 위해 Tor를 사용하는 것이 좋습니다.
## **주소 재사용 방지**
개인 정보 보호를 보호하기 위해 각 거래에 새로운 주소를 사용하는 것이 중요합니다. 주소를 재사용하면 거래를 동일한 개체에 연결하여 개인 정보 보호를 침해할 수 있습니다. 현대적인 지갑은 주소 재사용을 방지하기 위한 디자인을 채택하고 있습니다.
## **거래 개인 정보 보호를 위한 전략**
- **여러 거래**: 지불을 여러 거래로 분할하면 거래 금액을 모호하게 만들어 개인 정보 보호 공격을 방지할 수 있습니다.
- **거스름돈 회피**: 거스름돈 출력이 필요하지 않은 거래를 선택함으로써 거스름돈 감지 방법을 방해하여 개인 정보 보호를 향상시킵니다.
- **여러 거스름돈 출력**: 거스름돈 회피가 불가능한 경우에도 여러 거스름돈 출력을 생성함으로써 여전히 개인 정보 보호를 개선할 수 있습니다.
# **Monero: 익명성의 상징**
Monero는 디지털 거래에서 절대적인 익명성의 필요성을 해결하며, 개인 정보 보호에 대한 높은 기준을 제시합니다.
# **Ethereum: 가스와 거래**
## **가스 이해**
가스는 Ethereum에서 작업을 실행하는 데 필요한 계산 노력을 측정하며, **gwei**로 가격이 책정됩니다. 예를 들어, 2,310,000 gwei(또는 0.00231 ETH)의 비용이 드는 거래는 가스 한도와 기본 수수료, 채굴자를 동기화하기 위한 팁을 포함하고 있습니다. 사용자는 최대 수수료를 설정하여 과금을 방지하고, 초과 금액은 환불됩니다.
## **거래 실행**
Ethereum에서의 거래는 송신자와 수신자로 구성되며, 사용자나 스마트 계약 주소가 될 수 있습니다. 거래에는 수수료가 필요하며, 채굴되어야 합니다. 거래에서 중요한 정보는 수신자, 송신자의 서명, 가치, 선택적 데이터, 가스 한도 및 수수료입니다. 특히, 송신자의 주소는 서명에서 유추되므로 거래 데이터에 필요하지 않습니다.
이러한 실천 방법과 메커니즘은 개인 정보 보호와 보안을 우선시하는 사람들에게 필수적입니다.
## 참고 자료
* [https://en.wikipedia.org/wiki/Proof\_of\_stake](https://en.wikipedia.org/wiki/Proof\_of\_stake)
* [https://www.mycryptopedia.com/public-key-private-key-explained/](https://www.mycryptopedia.com/public-key-private-key-explained/)
* [https://bitcoin.stackexchange.com/questions/3718/what-are-multi-signature-transactions](https://bitcoin.stackexchange.com/questions/3718/what-are-multi-signature-transactions)
* [https://ethereum.org/en/developers/docs/transactions/](https://ethereum.org/en/developers/docs/transactions/)
* [https://ethereum.org/en/developers/docs/gas/](https://ethereum.org/en/developers/docs/gas/)
* [https://en.bitcoin.it/wiki/Privacy](https://en.bitcoin.it/wiki/Privacy#Forced\_address\_reuse)
<details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong>를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요<strong>!</strong></summary>
HackTricks를 지원하는 다른 방법:
* 회사를 **HackTricks에서 광고**하거나 **PDF로 HackTricks를 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요!
* [**공식 PEASS & HackTricks 상품**](https://peass.creator-spring.com)을 구매하세요.
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요. 독점적인 [**NFT**](https://opensea.io/collection/the-peass-family) 컬렉션입니다.
* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **참여**하거나 **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**를** 팔로우하세요.
* **HackTricks**와 **HackTricks Cloud** github 저장소에 PR을 제출하여 **당신의 해킹 기법을 공유**하세요.
</details>