Перейти к содержимому

Конфиденциальность данных и безопасность

Конфиденциальность — ключевая ценность DevLingo. Мы подробно объясняем, как данные перемещаются, где хранятся и кто имеет к ним доступ.

Сценарий 1: Одиночный запрос (без облачной синхронизации)

Заголовок раздела «Сценарий 1: Одиночный запрос (без облачной синхронизации)»
Шаг 1: Вы выделили "idempotent" в Slack
Шаг 2: Нажали ⌘⇧D
Шаг 3: Mac-приложение проверяет локальную базу и кэш
Шаг 4: Если не найдено, отправляет запрос в Cloudflare Workers (HTTPS-шифрование)
Запрос содержит:
- Выделенный текст: "idempotent"
- Контекст (текст до и после)
- Идентификатор приложения (Slack)
- Режим: Word
Шаг 5: Workers вызывает Claude API
Шаг 6: Claude возвращает структурированный JSON-результат
Шаг 7: Mac-приложение получает результат
Шаг 8: Если пользователь не нажал «Сохранить», результат не сохраняется
(после закрытия всплывающего окна данные исчезают)
Шаги 1-7: как выше
Шаг 8: Пользователь нажимает "Save to Word Book"
Шаг 9: Данные сохраняются в локальном SwiftData
(полностью на устройстве, не в облаке)
Шаг 10: Синхронизация словаря отключена → готово (только локально)
Синхронизация словаря включена → Шаг 11
Шаг 11: Устройство пользователя синхронизируется с Cloudflare D1
(личная база данных пользователя, с аутентификацией)

Текст не используется для обучения моделей

Заголовок раздела «Текст не используется для обучения моделей»

Важно: любой текст, отправленный через Claude API из DevLingo, не используется для обучения Claude или любой другой модели. Мы следуем политике Anthropic по умолчанию.

+ Ваш текст используется однократно
+ Claude обрабатывает и сразу удаляет (не хранит)
+ Не используется ни для какого анализа данных

:::note Способ проверки Все запросы к Anthropic Claude API помечены “user=”, что означает «это данные конечного пользователя, не должны использоваться для обучения». :::

Локальное хранилище — облачная синхронизация отключена по умолчанию

Заголовок раздела «Локальное хранилище — облачная синхронизация отключена по умолчанию»

Словарь (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 строго следует принципу «минимального сбора данных»:

- Содержимое кода (хотя вы можете использовать DevLingo в Xcode)
- Полная история просмотров или использования приложений
- Логи чатов или содержимое электронной почты
- Ваша Git-история
- Другие приватные файлы на устройстве
+ Выделенный вами текст запроса
+ 50 символов контекста до и после (только для понимания ИИ)
+ Bundle Identifier текущего приложения (помогает ИИ адаптировать стиль)
+ Настройка родного языка (для подсказок по L1-интерференции)
+ Содержимое словаря (только при явно включённой облачной синхронизации)

Бэкенд DevLingo (Cloudflare Workers) хранит ключ Claude API. Ваше Mac-приложение не нуждается в прямом доступе к ключу, все API-запросы проксируются через Workers.

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:

Привязан к ключу разблокировки iCloud на Mac
Каждый доступ требует подтверждения пользователя
Даже при краже жёсткого диска данные невозможно прочитать

Вся коммуникация между Mac и Cloudflare Workers зашифрована по HTTPS:

TLS 1.3 (новейший протокол)
Сертификат: LetsEncrypt (автоматическое обновление)
Полная прямая секретность (Perfect Forward Secrecy)

Система многоуровневых запросов DevLingo обеспечивает работу без интернета:

В режиме полёта выделяете "idempotent"
Запрос к локальной базе технических терминов (85+ слов) → Успех!
Результат отображается мгновенно, без сети

Сеть нужна только для:

+ Запрос новых слов, отсутствующих в локальной базе
+ Синхронизация словаря с облаком
+ Получение последнего кэша TTS-аудио

Остальные 95% запросов могут быть выполнены полностью офлайн.

Если вы решите удалить учётную запись DevLingo:

Шаг 1: Настройки → Учётная запись → Delete Account
Шаг 2: Система запросит подтверждение
Шаг 3: Cloudflare удаляет:
- Учётную запись пользователя
- Облачный словарь
- Историю входов
- Логи использования API
(полное удаление через 30 дней)
Шаг 4: Локальные данные не затрагиваются
(остаются на вашем Mac, удаляете самостоятельно)

:::caution Необратимость После удаления учётной записи облачные данные невозможно восстановить. Но вы можете экспортировать локальный словарь в CSV для постоянного хранения. :::

DevLingo соответствует следующим нормативам:

РегионНормативСтатус
ЕСGDPR (Общий регламент защиты данных)Соответствует
СШАCCPA / CPRAСоответствует
Другие регионыЛокализация данныхТолько локальное хранение; облачная синхронизация через Cloudflare (опционально)

:::note Ответственный за защиту данных По вопросам конфиденциальности обращайтесь по адресу [email protected]. Мы отвечаем в течение 24 часов. :::

Инженерная команда DevLingo регулярно проводит:

- Аудит безопасности кода (OWASP Top 10)
- Сканирование зависимостей (npm audit, Xcode security)
- Тестирование на проникновение (сторонние специалисты)
- Аудит доступа к базе данных (кто к чему обращался)

Отчёты об аудите публикуются для пользователей ежеквартально.


Итог: архитектура конфиденциальности DevLingo следует принципу «нулевого доверия» — предполагается, что сеть прослушивается, что устройство может быть скомпрометировано, но благодаря шифрованию, аутентификации и минимальному сбору данных ваши данные всегда остаются под вашим контролем.