PrivateSphare
PrivateSphare는 안전하고 익명의 영지식 파일 저장 및 공유 플랫폼입니다. 사용자는 파일을 업로드하고 검색을 위해 사람이 읽을 수 있는 24단어 암호를 받을 수 있습니다. 계정이 없고, 추적이 없으며, 암호화되지 않은 데이터는 서버의 영구 저장소에 절대 닿지 않습니다.
🛡️ 주요 기능
- 포스트퀀텀 보안: 파일은 양자 안전 하이브리드 방식(Kyber1024 + AES-256-GCM)으로 암호화되어 미래의 양자 컴퓨터 위협으로부터 보호합니다.
- 영지식 암호화: 파일은 24단어 BIP-39 암호에서 파생된 키를 사용하여 브라우저 컨텍스트(클라이언트 측)에서 암호화됩니다.
- 메타데이터 프라이버시: 파일 이름과 MIME 타입은 데이터베이스에 저장되기 전에 암호화됩니다.
- 불투명 저장소: 파일은 무작위 UUID 키 아래 S3/MinIO에 저장됩니다. 관리자조차도 어떤 파일이 저장되어 있는지 식별할 수 없습니다.
- 자동 파기:
- 자동 만료: 파일은 S3 수명 주기 정책을 통해 업로드 24시간 후 자동으로 삭제됩니다.
- 검색 시 삭제: 파일 및 메타데이터는 성공적으로 검색되는 즉시 파기됩니다.
- 이중 제한: 기본 100MB 업로드 제한, 프리미엄 코드를 통해 1GB로 해제 가능.
- 현대적인 UI: 완전 반응형 디자인, 자동 다크 모드 지원, 브라우저 기록에서 암호를 보호하는 '완료' 보안 흐름.
🛠️ 기술 스택
- 백엔드: Rust (Axum, Tokio, Tower-HTTP)
- 데이터베이스: SurrealDB (v2.1.4)
- 저장소: MinIO (S3 호환)
- 프론트엔드: Handlebars 템플릿, Tailwind CSS
- 보안: Argon2id KDF, Kyber1024 (PQC), AES-256-GCM 암호화, SHA-256 해싱, JWT (프리미엄 세션용)
🚀 시작하기
사전 요구 사항
- Docker 및 Docker Compose (또는 Podman 및 Podman Compose)
1. 구성
예제 환경 파일을 복사하고 시크릿을 업데이트하세요:
.env 파일을 편집하여 SURREAL_PASS, S3_SECRET_KEY, PRIVATE_SPHARE_PREMIUM_CODE, PRIVATE_SPHARE_JWT_SECRET을 설정하세요.
2. 배포
전체 스택 실행:
docker-compose up -d --build
(또는 podman-compose up -d --build)
애플리케이션은 http://localhost:3000에서 사용할 수 있습니다.
🔒 보안 아키텍처
- 키 파생: 24단어 암호는 SHA-256 해시된 후 고유한 16바이트 솔트와 함께 Argon2id를 통과하여 64바이트 시드를 생성합니다.
- 포스트퀀텀 레이어: 시드는 결정론적으로 Kyber1024 키페어를 생성하는 데 사용됩니다. 공유 비밀은 공개 키를 사용하여 캡슐화되며 Kyber 암호문이 생성됩니다.
- 대칭 암호화: 공유 비밀은 AES-256-GCM으로 데이터를 암호화하는 데 사용됩니다.
- 저장소 레이아웃: 최종 블롭은 솔트, 논스, Kyber 암호문, AES 암호문을 포함합니다. 이 하이브리드 접근 방식은 고전적인 AES가 손상되더라도 PQC 레이어가 안전하게 유지되도록 보장합니다.
📜 라이선스
Daniel Shamany가 만들었습니다. 개인정보 보호를 위해 설계되었습니다.