나는 서버 압수와 검열을 피하는 'Paranoid' 데이터 프로토콜을 만들었다 (Python + Rust)
Source: Dev.to
“문을 두드리는” 문제
우리는 분산 스토리지(IPFS 등)를 영구적인 것으로 생각하지만, 실제 데이터는 언제나 누군가의 하드 드라이브에 존재합니다.
위험으로부터 도망치는 살아있는 유기체처럼 데이터를 만들 수 있을까요?
이번 주말에 WDP (Wanderer Data Preservation) 라는 개념 증명을 만들었습니다. 정적인 복제 대신, WDP는 Moving Target Defense 전략을 사용합니다:
- 시간 (TTL) – 데이터는 “epoch”(예: 10분)마다 자동으로 새로운 피어로 이동하여 정적 분석을 방지합니다.
- 위협 탐지 – 노드가 네트워크 이상, 패킷 손실, 혹은 스웜 내 “압수” 패턴을 감지하면 즉시 안전한 노드로 비상 마이그레이션을 수행하고 스스로 데이터를 삭제합니다.
암호학적으로 서명된 디지털 “핫 포테이토” 게임과 같습니다.
마이그레이션 로직 (Python)
def attempt_migration(self, trigger="TTL"):
# 1. Find a candidate node (or Emergency Peer)
# If under attack, find the furthest node by latency
target = self.swarm.find_peer(strategy=trigger)
# 2. Sign the payload
signature = self.signer.sign(self.data)
# 3. Transmit & Escape
if target.receive(self.data, signature):
self.secure_wipe() # <--- The critical part
print(f"Migration success ({trigger}). I am now empty.")
현재 구현은 로직에 Python을, 상태 전환마다 서명에 Ed25519를 사용합니다.
스웜 시뮬레이션
“스웜 시뮬레이션”은 이 접근법을 스트레스 테스트합니다. 노드의 30 %가 무작위로 사망하는 상황(활동적인 공격/압수 시뮬레이션)에서도 데이터는 안전한 노드로 계속 뛰어넘으며 살아남았습니다.
Rust로 전환
Python은 프로토타이핑에 좋지만, P2P 노드에는 높은 성능과 메모리 안전성이 필요합니다. 다음 단계는 libp2p와 tokio를 활용한 Rust 구현이며, 목표는 WASM으로 컴파일해 브라우저에서 직접 실행되는 WDP 노드를 만들고, 죽일 수 없는 서버리스 스토리지 레이어를 구축하는 것입니다.
남은 과제
- 대역폭 사용량 및 지연 시간 오버헤드
- 동적 토폴로지에서 악의적인 노드와 Sybil 공격 처리
- “마이그레이션”이 기존 복제 방식에 대한 실질적인 대안이 될 수 있는지 평가
토론 주제
- 마이그레이션이 복제의 실질적인 대안이 될 수 있을까요?
- 이 동적 토폴로지에서 Sybil 공격을 어떻게 완화할 수 있을까요?
저장소
이 개념이 멋지다고(또는 미쳤다고) 생각한다면 ⭐을 눌러 주세요. Rust 포팅을 마무리하는 데 큰 동기가 됩니다!