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

동기화된 프로필 데이터는 서버에 도달하기 전에 기기에서 암호화되므로, 서버는 읽을 수 없는 암호화된 블롭만 저장합니다. 캘린더 앱 연결은 캘린더 받은편지함과 읽기 전용 구독에 한정된, 문서화된 평문 예외입니다.

사용자에게 의미하는 것

  • 프로필의 모든 내용은 저장되거나 동기화되기 전에 기기에서 암호화됩니다.
  • 서버는 동기화된 노트, 작업, 재정 기록을 읽을 수 없습니다. 해독할 수 없는 암호화된 데이터만 저장합니다.
  • Graspee는 잃어버린 프로필 비밀번호를 재설정할 수 없습니다. 비밀번호를 잃으면 해당 프로필에 접근할 수 없게 되므로 안전하게 보관하세요.
  • 캘린더 앱 연결은 문서화된 예외입니다. 의도적으로 제한된 이벤트 데이터를 캘린더 앱과 공유하므로 제로 액세스가 아닙니다.

한 기기에서 Graspee 사용하기

로컬 프로필은 자체 비밀번호로 보호되며 기기에만 존재합니다. 계정이 필요 없고, 아무것도 업로드되지 않으며, 앱은 완전히 오프라인으로 작동합니다. 동기화나 내보내기가 없다면 기기를 잃으면 데이터도 함께 사라집니다.

동기화 켜기

동기화는 이메일 코드로 로그인하는 클라우드 계정을 사용합니다. 프로필은 업로드 전에 기기에서 암호화되며, 읽으려는 모든 기기에는 프로필 비밀번호가 필요합니다. 로그인은 동기화된 프로필을 복원하고, 잠금을 해제하는 것은 프로필 비밀번호입니다.

외부 서비스 연결하기

외부 연결은 선택 사항이며 각각 명확한 경계가 있습니다.

  • 은행 연결(Plus 플랜 기능)은 자격 증명을 암호화된 프로필 안에 보관합니다. 제공업체 트래픽은 서버를 일시적으로 통과하며, 서버는 되돌릴 수 없는 연결 식별자 지문만 보관합니다.
  • 캘린더 앱 연결은 의도적으로 이벤트 데이터를 공유합니다. 빠른 추가 이벤트는 대기 중 최대 7일 동안 서버에서 읽을 수 있는 상태로 유지되고, 게시된 읽기 전용 피드는 해지할 때까지 구독 URL을 가진 누구나 읽을 수 있습니다. 이 URL을 비밀번호처럼 다루세요.
  • Plus 플랜의 카드 입력은 Stripe가 호스팅하는 페이지에서 이루어집니다. 카드 정보는 Graspee에 절대 들어오지 않습니다.

보호하지 않는 것

  • 프로필 비밀번호를 아는 사람은 누구나 프로필을 잠금 해제할 수 있습니다.
  • 제로 액세스는 서버에 저장되고 동기화되는 것을 보호합니다. 이미 잠금 해제된 브라우저 세션이나 이미 침해된 기기는 보호하지 못합니다.
  • 내보내기는 일반 텍스트 파일입니다. 사본이 앱을 떠난 뒤에는 보호가 사용자의 몫입니다.

기술 세부 정보

프로필 암호화

비밀번호와 무작위 솔트를 PBKDF2(비밀번호 기반 키 유도 함수)에 SHA-256과 200,000회 반복으로 통과시켜 키 암호화 키를 유도합니다. 이 키가 무작위로 생성된 데이터 키를 암호화하고, 데이터 키가 저장 전에 모든 레코드를 AES-GCM-256으로 암호화합니다. 비밀번호는 절대 브라우저를 떠나지 않습니다.

동기화와 세션

동기화는 암호화된 Yjs CRDT(무충돌 복제 데이터 타입) 문서를 WebSocket으로 전송합니다. 서버는 불투명한 암호화 샤드를 저장하고 해독 없이 기기 간에 중계합니다. 잠금 해제 후 데이터 키는 임시 래퍼 키로 다시 암호화되어 sessionStorage에 보관됩니다. 페이지 새로 고침에도 유지되고 브라우저를 닫으면 지워지며, 이는 이미 잠금 해제된 세션을 위한 편의 기능이지 두 번째 보안 경계가 아닙니다. 세션은 HttpOnly 쿠키, 출처 확인 요청, 속도 제한 인증을 사용합니다.

외부 서비스

금융 데이터 제공업체(Plaid와 활성화된 지역의 Flinks, MX)의 트래픽은 지속 저장 없이 서버를 통해 중계됩니다. 소유권 증명과 링크 원장은 원본 식별자가 아닌 단방향 HMAC(키 해시) 지문만 사용합니다. Calendar Bridge 엔드포인트는 위에서 설명한 대로 대기 중인 빠른 추가 이벤트와 게시된 피드 아티팩트를 일반 텍스트로 보관하며, 자격 증명과 피드 토큰은 해시로만 저장합니다. Stripe는 호스팅된 결제 페이지에서 구독 결제를 처리합니다. 카드 정보는 Stripe에 남고, Graspee는 Stripe가 발급한 식별자와 함께 개인정보 처리방침의 보관 규칙에 따른 제한된 결제 및 감사 기록을 보관하며, 서명된 Stripe 알림을 확인한 뒤에만 결제 상태를 변경합니다.

무엇이 수집되고 얼마나 보관되는지는 개인정보 처리방침을 읽어보세요. 데이터 사본을 가져가는 방법은 FAQ의 내보내기 답변을 참고하세요.

새로 만드는 모든 프로필은 처음 잠금 해제부터 이렇게 작동합니다. 샘플 데이터로 시험해 보거나, 직접 만들어 보세요.

계정이 필요 없습니다. 동기화를 켜지 않는 한 프로필 데이터는 이 기기에만 저장됩니다.