---
status: SERVICE_MEDIA_READONLY_INVENTORY_AND_THREE_DOMAIN_POLICY_STAGED
external_transfers_made: false
production_changed: false
current_continuity: false
---

# 서비스 업로드·미디어 암호문 복제 preflight

5개 서비스의 업로드 디렉터리를 읽기 전용으로 해시했다. 파일명과 내용은 출력하지 않았으며 1,060개, 10,244,305,915바이트의 집계 content root를 기록했다.

기존 PC Sync encrypted chunk, authenticated heartbeat, unhealthy reassignment, deterministic repair, signed manifest 기반을 재사용하는 `serviceMediaReplication.example.json` 정책을 추가했다.

- 외부 저장 노드에는 평문과 복호화 키를 전달하지 않는다.
- SHA-256 content addressing과 object별 authenticated encryption을 요구한다.
- 최소 암호문 3복제, 최소 3개 failure domain, domain당 최대 1복제를 요구한다.
- repair는 3 peer vote, 최소 2 domain, 최대 180초 fencing lease를 요구한다.
- restore는 signed manifest 3표와 ciphertext/plaintext 경계 해시 검증을 요구한다.
- 삭제는 finalized signed tombstone 이전에 물리 삭제할 수 없다.
- activation, production read/write, 외부 전송, DNS 변경은 모두 false이다.

현재는 inventory와 정책만 준비됐다. 실제 ciphertext transfer와 독립 PC restore 증명은 아직 수행하지 않았다.

별도의 합성 2 MiB 객체로 AES-256-GCM 암호화, 3개 failure domain 복제, 한 복제 손실, 네 번째 domain으로 ciphertext-only repair, trusted boundary 복원, 평문 SHA-256 검증 및 변조 ciphertext 거부까지 실행했다. 합성 임시 디렉터리는 자동 삭제됐다. 이 검증은 production 업로드를 전송한 것이 아니므로 실제 독립 PC 복제 증명은 여전히 남아 있다.

증거: `evidence/service-media-readonly-inventory-redacted.json`
