G
Graspee

설계부터 제로 액세스 암호화

데이터는 서버에 도달하기 전에 기기에서 암호화됩니다. 서버는 읽을 수 없는 암호화된 블롭만 저장합니다.

암호화 작동 방식

Graspee는 클라이언트 측 키 계층 구조를 사용합니다. 비밀번호와 랜덤 솔트를 200,000회 반복하는 PBKDF2로 처리하여 키 암호화 키(KEK)를 유도합니다. KEK는 랜덤 생성된 데이터 암호화 키(DEK)를 암호화합니다. DEK는 AES-GCM-256을 사용하여 모든 데이터를 암호화합니다. 비밀번호는 브라우저를 떠나지 않습니다.

제로 액세스의 의미

서버는 평문 데이터, 비밀번호, 암호화 키를 볼 수 없습니다. 데이터베이스에 완전히 접근하더라도 서버 운영자는 메모, 할 일, 거래 또는 기타 콘텐츠를 읽을 수 없습니다. 동기화를 활성화하면 서버는 기기 간에 암호화된 블롭을 중계하지만 해독할 수 없습니다.

세션 보안

DEK는 sessionStorage에 저장된 임시 세션 래퍼 키로 암호화됩니다. 페이지 새로고침 시에는 유지되지만 브라우저를 닫으면 삭제됩니다. 세션은 SameSite 및 Secure 플래그가 있는 HttpOnly 쿠키를 사용합니다. CSRF 보호는 출처 확인을 통해 적용됩니다. 속도 제한이 인증 엔드포인트를 보호합니다.

동기화 암호화

클라우드 동기화는 클라이언트 측에서 암호화된 Yjs CRDT 문서를 사용합니다. WebSocket 전송은 암호화된 페이로드만 전달합니다. 상태 벡터와 업데이트는 서버 측에서 크기 검증을 하지만 해독하지 않습니다. 압축은 데이터 손실을 방지하기 위해 낙관적 잠금을 사용합니다.

은행 연결 보안

Plaid 액세스 토큰과 소유 증명은 암호화된 로컬 샤드에 저장되며, 서버 데이터베이스에는 절대 저장되지 않습니다. 서버는 패스스루 역할을 합니다: Plaid API 호출을 중계하고 동기화 페이로드를 메모리에 잠시 보관할 수 있지만, 영구적인 Plaid 데이터를 저장하지 않습니다. HMAC 소유 증명은 상태 없이 토큰을 계정에 바인딩합니다.