프로젝트 소개
Syndeo는 전통적인 웹 브라우저 아키텍처를 재구성하여 캐시를 핵심 제품으로 우선시하는 오픈소스 프로젝트입니다. 이 설계 철학은 엄격한 프로세스 분리와 보안 경계를 중심으로 하며, 검증 가능한 상호작용을 통해 신뢰를 진실로 전환하는 것을 목표로 합니다.
**아키텍처 및 프로세스 모델**
시스템은 세 가지 주요 경계를 중심으로 구축되어 있습니다:
1. **렌더러는 네트워크와 통신하지 않습니다:** 렌더링 프로세스(Servo 또는 WebKit)는 소켓을 열지 않습니다. 대신 `NetRequest` 객체를 별도의 네트워크 프로세스(`syndeo-net`)로 보내며, 이 프로세스가 DNS, TLS, 캐싱을 처리합니다. 이를 통해 렌더러가 보안 정책을 우회하거나 네트워크 타이밍을 통해 정보를 유출하는 것을 방지합니다.
2. **에이전트는 키스토어와 통신하지 않습니다:** WebAssembly 도구를 실행할 수 있는 에이전트 프로세스는 키스토어와 격리되어 있습니다. 키에 직접 접근할 수 없으므로, 악성 스크립트나 에이전트에 대한 공격 표면이 줄어듭니다.
3. **키스토어는 단 하나의 작업만 노출합니다:** 쉘이 사용자 의도를 확인한 경우에만 페이로드를 서명할 수 있습니다. 이 확인에는 원본, 목적, 페이로드 해시에 대한 MAC이 포함되어 있어, 동의가 특정 작업에 명시적으로 바인딩됩니다.
**핵심 구성 요소**
- **`syndeo-cache`:** redb 인덱스와 BLAKE3 주소 기반 블롭 저장소를 사용하여 RFC 9111 정책을 구현합니다. 서브리소스 무결성(SRI)을 지원하며, 캐시 타이밍을 통한 크로스 사이트 추적을 방지하기 위해 최상위 원본별로 파티션됩니다.
- **`syndeo-net`:** HTTP/1.1, HTTP/2, HTTP/3(QUIC)을 처리하는 네트워크 프로세스입니다. 캐시와 통합되어 있으며, 시스템의 나머지 부분에 대한 fetch API를 제공합니다.
- **`syndeo-peer`:** libp2p를 사용하여 피어 투 피어 콘텐츠 가져오기를 가능하게 합니다. 피어는 페이지에서 이미 해시로 명명된 콘텐츠만 요청하므로, 분산된 콘텐츠 배포를 허용하면서도 일부 프라이버시가 유지됩니다.
- **`syndeo-keystore`:** 봉인된 루트 비밀을 사용하여 암호화 키를 관리합니다. Argon2id를 사용하여 패스프레이즈를 봉인하고, OS 수준의 자격 증명 저장소(macOS의 Keychain, Linux의 Secret Service)와 통합됩니다. 서명별 동의와 비활성 또는 잠금 후 자동 시드 삭제를 지원합니다.
- **`syndeo-dom`:** 에이전트가 전체 렌더링 없이 페이지를 읽을 수 있도록 하는 헤드리스 DOM 구현으로, 문장, 링크, 양식에 중점을 둡니다.
- **`syndeo-ui`:** winit, wgpu, egui로 구축된 창형 쉘로, 접근성 지원을 갖춘 그래픽 인터페이스를 제공합니다.
**프라이버시 및 보안**
Syndeo는 여러 가지 프라이버시 기본 설정을 시행합니다:
- **파티션된 캐시:** 캐시는 최상위 문서의 원본으로 키가 지정되어, 캐시 적중/미스 타이밍을 통한 크로스 사이트 추적을 방지합니다. 콘텐츠는 파티션에도 불구하고 공간 절약을 위해 블롭 수준에서 중복 제거됩니다.
- **DNS over HTTPS (DoH):** 기본적으로 활성화되어 있으며(Cloudflare), Google, Quad9, 또는 시스템 리졸버 옵션을 제공합니다.
- **텔레메트리 없음:** 코드베이스에는 분석, 충돌 보고, 또는 업데이트 핑이 포함되어 있지 않습니다.
- **자격 증명 제거:** `Authorization` 및 `Cookie` 헤더는 리디렉션이 원본을 넘을 때 삭제됩니다.
**사용 및 도구**
- **설치:** 체크섬을 검증하는 쉘 스크립트를 통해 macOS(Apple Silicon) 및 Linux(x86_64/arm64)에서 사용할 수 있습니다. `sudo`가 필요하지 않습니다.
- **CLI:** `syndeo browse`는 페이지를 가져오고 캐시 상태를 보고합니다. `syndeo agent`는 페이지 읽기 또는 크롤링과 같은 작업을 실행합니다. `syndeo sign`은 사용자 확인을 통해 암호화 서명을 수행합니다.
- **프록시 모드:** `syndeo-proxy`는 Chrome과 같은 다른 브라우저의 실제 트래픽에서 캐시 효율성을 측정하기 위해 인터셉팅 프록시로 실행될 수 있습니다.
- **렌더링:** Servo(헤드리스/기능 게이트) 및 WebKit(macOS 전용, 비디오 재생용)을 지원합니다. WebKit 통합은 WebKit이 HTTP/HTTPS에 대한 사용자 정의 스킴 핸들러를 지원하지 않기 때문에 네트워크 경계를 시행하기 위해 로컬 프록시를 사용합니다.
**개발 및 상태**
- **빌드:** Rust가 필요하며, Linux의 경우 D-Bus, Wayland/X11과 같은 특정 종속성이 필요합니다. 긴 컴파일 시간으로 인해 Servo 통합은 기능 게이트로 설정되어 있습니다.
- **테스트:** RFC 9111 준수, 메모리 측정 스크립트, 릴리스 검증 도구가 포함되어 있습니다.
- **미해결 사항:** Windows 및 ChromeOS 지원이 보류 중입니다. 이 프로젝트는 캐시 우선 모델의 실행 가능성과 보안 속성을 검증하는 데 중점을 두고 활발히 개발 중입니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.