# Keyhive - 로컬 우선 접근 제어(Local-first Access Control)

> Clean Markdown view of GeekNews topic #23982. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=23982](https://news.hada.io/topic?id=23982)
- GeekNews Markdown: [https://news.hada.io/topic/23982.md](https://news.hada.io/topic/23982.md)
- Type: news
- Author: [neo](https://news.hada.io/@neo)
- Published: 2025-10-29T10:21:02+09:00
- Updated: 2025-10-29T10:21:02+09:00
- Original source: [inkandswitch.com](https://www.inkandswitch.com/keyhive/notebook/)
- Points: 3
- Comments: 0

## Topic Body

- **Keyhive**는 중앙 서버 없이 오프라인에서도 동작 가능한 **로컬 우선 접근 제어 시스템**을 구축하기 위한 연구 프로젝트로, **Signal 수준의 보안성을 문서 협업에 적용**하려는 시도  
- 분산 환경에서도 동기화 가능한 **권한 위임 모델(Capability Model)** 과 **그룹 관리 CRDT**, **인과 관계 기반 E2EE(Causal Keys)** 를 통해 협업 중에도 안전한 데이터 접근 제어를 실현  
- 핵심 암호화 프로토콜 **BeeKEM**은 중앙 서버 없이도 **Forward Secrecy(순방향 보안)** 와 **Post-Compromise Security(침해 이후 보안)** 를 보장하며 수천 명 규모 그룹에 대응  
- Keyhive의 동기화 계층 **Beelay**는 **RIBLT 기반 세트 동기화**와 **Sedimentree 압축 방식**을 활용해 대규모 로컬 문서 동기화 속도를 개선  
- Ink & Switch는 이 프로젝트를 통해 **서버 의존 없는 보안 협업 플랫폼의 기반 기술**을 제시하며, 오프라인 퍼스트 소프트웨어 생태계 확장을 목표로 함  
  
---  
### Keyhive 개요  
- **Keyhive**는 클라우드 서버를 사용하지 않고도 **협업 데이터에 대한 접근 제어를 로컬 우선(local-first)** 환경에서 구현하기 위한 연구임  
  - 전통적인 클라우드 인증(OAuth 등)은 중앙 서버를 통한 권한 확인에 의존하지만, 로컬 우선 모델에서는 **데이터와 권한이 함께 이동**해야 함  
  - 이를 위해 Keyhive는 **권한 위임(capability)** 기반 설계를 적용하고, **분산된 인증·암호화 계층**을 구축함  
- 목표는 Google Docs, GitHub처럼 **사용자 친화적 경험을 유지하면서도 완전한 탈중앙 협업 보안**을 구현하는 것임  
  
### 설계 철학과 구성  
- Keyhive는 **데이터 계층보다 먼저 접근 제어 계층이 존재**해야 한다는 원칙하에 설계됨  
  - 이로 인해 스토리지나 동기화 구조도 암호화·권한 관리 방식을 따라야 함  
- 세 가지 주요 구성요소:  
  1. **Convergent Capabilities:** CRDT에 적합한 새로운 권한 모델로, 개체 간 위임을 암호학적으로 증명 가능  
  2. **Group Management CRDT:** 중앙 서버 없이 그룹 추가·제거 및 권한 회수를 수행  
  3. **E2EE with Causal Keys:** 문서의 인과적 구조에 따라 키를 관리하여 효율적 암호화 구현  
  
### Convergent Capabilities  
- 기존 객체 권한(Object-capability)과 인증서 기반 권한(Certificate-capability)의 장점을 결합한 모델  
  - CRDT 상태를 포함시켜 오프라인 상태에서도 **일관성(convergence)** 유지  
- **공개키 기반 위임 체계**를 통해 사용자·그룹·문서를 동등한 개체로 처리 가능  
  - 예: 사용자는 디바이스 그룹을, 문서는 팀 단위를 구성해 접근 권한을 부여  
  
### BeeKEM: 그룹 키 합의 프로토콜  
- **BeeKEM**은 중앙 서버 없이 동작하는 **지속적 그룹 키 합의(CGKA)** 프로토콜임  
  - **TreeKEM**의 구조를 계승하면서 **인과적 순서(Causal Order)** 만으로 동작 가능하도록 개선  
  - **Diffie-Hellman 키 교환**과 **BLAKE3 해시 함수**만을 사용해 표준 암호 기반으로 설계됨  
- 주요 특징:  
  - 그룹 멤버 추가·제거, 동시 업데이트 충돌 해결, 빈 노드 복원 등 모든 작업을 분산 상태에서 처리  
  - **동시성 충돌 시 “Conflict Key” 병합 알고리듬**을 통해 보안 유지  
  - 일반적 경우 로그 시간(logarithmic) 성능, 최악의 경우 선형(linear) 성능  
  
### Beelay: 신뢰 최소화 동기화 프로토콜  
- **Beelay**는 Keyhive의 데이터 및 권한 정보를 동기화하는 **RPC 기반 프로토콜**로, 서버는 암호화된 데이터만 중계함  
  - 메시지는 **Ed25519 서명**으로 인증되며, **재전송 공격**과 **중간자 공격(PITM)** 방지 기능 내장  
- 핵심 동작 절차:  
  - **RIBLT (Rateless Invertible Bloom Lookup Table)** 을 사용한 세트 차이 계산으로 대규모 데이터의 빠른 동기화 실현  
  - 멤버십 그래프(그룹·문서 관계), 문서 컬렉션 상태, 문서 본문을 순차 동기화  
- **Sedimentree** 구조를 통해 Automerge 커밋 그래프를 압축·병합, 대규모 문서 동기화 시 대역폭 절감  
  
### 동기화 흐름  
1. **멤버십 그래프 동기화:** 그룹 및 권한 관계 동기화  
2. **문서 컬렉션 동기화:** 변경된 문서 식별  
3. **CGKA 동기화:** BeeKEM 연산 병합  
4. **문서 본문 동기화:** Sedimentree 기반 압축 전송  
- 일반적 변경 1건의 경우 **2회 왕복 요청만으로 전체 동기화 완료**  
  
### 향후 계획  
- Keyhive는 현재 **pre-alpha 버전 공개** 상태로, Rust 기반 구현 및 WASM/TypeScript 바인딩 제공  
  - [`keyhive_core`](https://github.com/inkandswitch/keyhive/tree/main/keyhive_core): 서명·암호화·위임 시스템  
  - [`beelay-core`](https://github.com/inkandswitch/keyhive/tree/main/beelay/beelay-core): 암호화 데이터 기반 동기화 엔진  
  - [`keyhive_wasm`](https://github.com/inkandswitch/keyhive/tree/main/keyhive_wasm): 브라우저 지원용 래퍼  
- 향후 보안 검증 및 성능 논문 공개 예정이며, 로컬 우선 협업 시스템의 **보안 표준 모델 확립**을 목표로 함

## Comments



_No public comments on this page._
