콘텐츠로 이동

데이터 프라이버시와 보안

프라이버시는 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: 사용자가 "저장"을 클릭하지 않는 한 결과는 저장되지 않음
(플로팅 창을 닫으면 데이터 소멸)
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 간섭 팁용)
✓ 단어장 내용 (명시적으로 클라우드 동기화를 활성화한 경우에만)

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 토큰(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는 다음 규범을 준수합니다:

지역규범상태
EUGDPR (일반 데이터 보호 규정)✓ 준수
미국CCPA / CPRA✓ 준수
한국개인정보 보호법✓ 로컬 저장 기본; 클라우드 동기화는 Cloudflare 사용 (선택 사항)

:::note 데이터 보호 담당자 프라이버시 문의는 [email protected]으로 연락하세요. 24시간 내에 응답합니다. :::

DevLingo 엔지니어링 팀은 정기적으로 수행합니다:

• 코드 보안 감사 (OWASP Top 10)
• 의존성 스캔 (npm audit, Xcode security)
• 침투 테스트 (제3자)
• 데이터베이스 접근 감사 (누가 무엇에 접근했는지)

감사 보고서는 분기마다 사용자에게 투명하게 공개됩니다.


요약: DevLingo의 프라이버시 설계는 “제로 트러스트” 원칙을 따릅니다 — 네트워크가 감청되고 있다고 가정하고, 기기가 공격받을 수 있다고 가정하지만, 암호화, 신원 인증, 최소 수집을 통해 데이터가 항상 제어 하에 있도록 보장합니다.