데이터 프라이버시와 보안
프라이버시는 DevLingo의 핵심 가치입니다. 데이터가 어떻게 흐르는지, 어디에 저장되는지, 누가 접근할 수 있는지 상세히 설명합니다.
데이터 흐름 투명성
섹션 제목: “데이터 흐름 투명성”시나리오 1: 단일 조회 (클라우드 동기화 없음)
섹션 제목: “시나리오 1: 단일 조회 (클라우드 동기화 없음)”Step 1: Slack에서 "idempotent"를 선택 ↓Step 2: ⌘⇧D 누르기 ↓Step 3: Mac 앱이 로컬 사전과 캐시 확인 ↓Step 4: 미스나면 Cloudflare Workers로 조회 전송 (HTTPS 암호화) 요청 포함: • 선택한 텍스트: "idempotent" • 컨텍스트 (앞뒤 텍스트) • 앱 식별자 (Slack) • 모드: Word ↓Step 5: Workers가 Claude API 호출 ↓Step 6: Claude가 구조화된 JSON 결과 반환 ↓Step 7: Mac 앱이 결과 수신 ↓Step 8: 사용자가 "저장"을 클릭하지 않는 한 결과는 저장되지 않음 (플로팅 창을 닫으면 데이터 소멸)시나리오 2: 단어장에 저장
섹션 제목: “시나리오 2: 단어장에 저장”Step 1-7: 위와 동일 ↓Step 8: 사용자가 "Save to Word Book" 클릭 ↓Step 9: 데이터가 로컬 SwiftData에 저장 (완전히 기기 내, 클라우드 전송 없음) ↓Step 10: 단어장 동기화 스위치 OFF → 완료 (로컬만) 단어장 동기화 스위치 ON → Step 11 ↓Step 11: 사용자 기기에서 Cloudflare D1으로 동기화 (사용자 개인 데이터베이스, 신원 인증 필요)핵심 약속
섹션 제목: “핵심 약속”텍스트는 모델 학습에 사용되지 않습니다
섹션 제목: “텍스트는 모델 학습에 사용되지 않습니다”중요: DevLingo가 Claude API를 통해 전송하는 모든 텍스트는 Claude나 다른 모델의 학습에 사용되지 않습니다. Anthropic의 기본 정책을 준수합니다.
✓ 텍스트는 일회성 사용✓ Claude가 처리 후 즉시 폐기 (저장하지 않음)✓ 어떤 형태의 데이터 마이닝에도 사용되지 않음:::note 검증 방법
Anthropic Claude API의 모든 요청에는 “user=
로컬 저장소는 기본적으로 클라우드 동기화 OFF
섹션 제목: “로컬 저장소는 기본적으로 클라우드 동기화 OFF”단어장(Word Book)은 기본적으로 Mac에만 저장되며, SwiftData를 사용합니다:
~/Library/Containers/com.devglish.com/Data/└── default.store/ └── word_entries.db (로컬 SQLite)이 데이터베이스는 기기 전용이며, DevLingo 앱만 접근할 수 있습니다.
클라우드 동기화는 선택 사항
섹션 제목: “클라우드 동기화는 선택 사항”여러 Mac에서 단어장을 동기화하려면 명시적으로 클라우드 동기화를 활성화할 수 있습니다:
Settings → iCloud Sync → Toggle ON활성화하면 단어장이 암호화된 후 Cloudflare D1에 업로드됩니다:
암호화: 클라이언트 측 암호화 (Curve25519) → 서버 저장인증: 사용자의 JWT 토큰 (보안 토큰)접근 제어: 각 사용자는 자신의 데이터만 접근 가능격리: 데이터베이스 행 수준 격리, 교차 사용자 접근 방지:::caution 데이터 전환 클라우드 동기화를 활성화한 후, 구독을 취소하거나 계정을 삭제하면 클라우드 데이터는 30일 후 자동 삭제됩니다. 로컬 SwiftData는 영향을 받지 않으며 기기에 남아 있습니다. :::
수집하지 않는 것
섹션 제목: “수집하지 않는 것”DevLingo는 “최소 수집” 원칙을 엄격히 준수합니다:
수집하지 않는 데이터
섹션 제목: “수집하지 않는 데이터”✗ 코드 내용 (Xcode에서 사용하더라도)✗ 전체 브라우저 기록이나 앱 사용 기록✗ 채팅 로그나 이메일 내용✗ Git 기록✗ 기기의 기타 개인 파일필요한 데이터만 수집
섹션 제목: “필요한 데이터만 수집”✓ 선택하여 조회한 텍스트 자체✓ 앞뒤 50자의 컨텍스트 (AI 이해용)✓ 현재 앱의 Bundle Identifier (AI 스타일 조정 지원)✓ 모국어 설정 (L1 간섭 팁용)✓ 단어장 내용 (명시적으로 클라우드 동기화를 활성화한 경우에만)API 키 보안
섹션 제목: “API 키 보안”Claude API 키
섹션 제목: “Claude API 키”DevLingo 백엔드(Cloudflare Workers)가 Claude API 키를 보유합니다. Mac 앱은 키를 직접 노출할 필요 없이 Workers를 통해 모든 API 요청을 프록시합니다.
Mac App Workers (edge) ↓ (HTTPS) ↓ │── Bearer: user_jwt ────────→ │ │ │ │ (유효기간 1시간) │ (Claude API Key) │ │ │← Structured Response ←────── Claude API장점:
- 키가 로컬에 저장되지 않음 (유출 불가)
- 모든 API 호출이 신뢰할 수 있는 Cloudflare 엣지에서 처리
- Mac이 공격받아도 키는 안전
사용자 JWT 토큰
섹션 제목: “사용자 JWT 토큰”사용자 로그인 시 단기 JWT 토큰(1시간 유효)을 받습니다:
알고리즘: HS256 (HMAC SHA-256)서명 키: Cloudflare Secret (로컬에 저장되지 않음)저장 위치: macOS Keychain (시스템 암호화)갱신: 토큰 만료 전 자동 갱신Keychain의 보안 수준:
Mac의 iCloud 잠금 해제 키와 연결접근 시마다 시스템이 사용자 확인 요청하드 디스크를 훔쳐도 읽을 수 없음네트워크 전송 보안
섹션 제목: “네트워크 전송 보안”Mac에서 Cloudflare Workers로의 모든 통신은 HTTPS 암호화됩니다:
TLS 1.3 (최신 프로토콜)인증서: LetsEncrypt (자동 갱신)완전 순방향 비밀성 (Perfect Forward Secrecy)오프라인 능력
섹션 제목: “오프라인 능력”DevLingo의 계층적 조회 시스템은 오프라인 사용을 보장합니다:
비행 모드에서 "idempotent" 선택 ↓로컬 기술 용어 사전 조회 (85+ 단어) → 성공! ↓결과 즉시 표시, 네트워크 불필요네트워크가 필요한 경우:
✓ 로컬 사전에서 미스난 새 어휘 조회✓ 단어장을 클라우드에 동기화✓ 최신 TTS 오디오 캐시 가져오기나머지 95%의 조회는 완전히 오프라인으로 완료할 수 있습니다.
계정 삭제와 데이터 소거
섹션 제목: “계정 삭제와 데이터 소거”DevLingo 계정을 삭제하기로 결정한 경우:
Step 1: 설정 → 계정 → Delete Account ↓Step 2: 시스템이 재확인을 요청 ↓Step 3: Cloudflare에서 삭제: • 사용자 계정 • 클라우드 단어장 • 로그인 기록 • API 사용 로그 (30일 후 완전 삭제) ↓Step 4: 로컬 데이터는 영향 없음 (Mac에 남아 있으며, 직접 삭제 가능):::caution 데이터 영속성 계정이 삭제되면 클라우드 데이터를 복구할 수 없습니다. 하지만 로컬 단어장을 CSV로 내보내어 영구 보관할 수 있습니다. :::
규정 준수
섹션 제목: “규정 준수”DevLingo는 다음 규범을 준수합니다:
| 지역 | 규범 | 상태 |
|---|---|---|
| EU | GDPR (일반 데이터 보호 규정) | ✓ 준수 |
| 미국 | CCPA / CPRA | ✓ 준수 |
| 한국 | 개인정보 보호법 | ✓ 로컬 저장 기본; 클라우드 동기화는 Cloudflare 사용 (선택 사항) |
:::note 데이터 보호 담당자 프라이버시 문의는 [email protected]으로 연락하세요. 24시간 내에 응답합니다. :::
정기 보안 감사
섹션 제목: “정기 보안 감사”DevLingo 엔지니어링 팀은 정기적으로 수행합니다:
• 코드 보안 감사 (OWASP Top 10)• 의존성 스캔 (npm audit, Xcode security)• 침투 테스트 (제3자)• 데이터베이스 접근 감사 (누가 무엇에 접근했는지)감사 보고서는 분기마다 사용자에게 투명하게 공개됩니다.
요약: DevLingo의 프라이버시 설계는 “제로 트러스트” 원칙을 따릅니다 — 네트워크가 감청되고 있다고 가정하고, 기기가 공격받을 수 있다고 가정하지만, 암호화, 신원 인증, 최소 수집을 통해 데이터가 항상 제어 하에 있도록 보장합니다.