289 lines
15 KiB
Markdown
289 lines
15 KiB
Markdown
# Техническая спецификация: Прямая дистрибуция приложений ТБанк
|
||
|
||
**Для:** IT-команда ТБанк Холдинг
|
||
**От:** Alejandro Montana
|
||
**Дата:** 24.01.2026
|
||
|
||
---
|
||
|
||
## Проблема
|
||
|
||
App Store удалил приложения российских банков. Клиенты вынуждены:
|
||
- Искать APK/IPA на сторонних сайтах (риск малвари)
|
||
- Использовать веб-версии (ограниченный функционал)
|
||
- Терять доступ к push-уведомлениям и биометрии
|
||
|
||
---
|
||
|
||
## Решение: LazyShop-модель (уже работает)
|
||
|
||
Референс: **https://lazyshop.app** — сервис, который уже делает это для тысяч пользователей.
|
||
|
||
### Как это работает (проверено)
|
||
|
||
```
|
||
1. Клиент заходит на сайт через Safari на iPhone
|
||
2. Сайт определяет устройство автоматически
|
||
3. Клиент скачивает профиль → он появляется в Настройках iOS
|
||
4. Клиент заходит в Настройки → подтверждает установку профиля
|
||
5. Профиль собирает UDID и данные устройства
|
||
6. Через ~24 часа сертификат готов
|
||
7. Клиент получает ссылку на почту или переходит на сайт для скачивания
|
||
8. Приложение устанавливается напрямую
|
||
```
|
||
|
||
### Почему Apple не может это закрыть
|
||
|
||
Это **их собственный механизм** для масштабирования технологий:
|
||
- Enterprise Distribution Program
|
||
- Ad-Hoc Distribution
|
||
- Developer Certificates
|
||
|
||
Apple использует это для корпоративных клиентов, бета-тестирования, внутренних приложений. Закрыть = сломать свою же экосистему.
|
||
|
||
### Если сертификат отзывают
|
||
|
||
Процедура повторяется:
|
||
- Клиент заново устанавливает профиль
|
||
- Получает новый сертификат
|
||
- Скачивает приложение
|
||
|
||
**Это неудобно, но работает.** ТБанк может автоматизировать это через свою инфраструктуру.
|
||
|
||
---
|
||
|
||
## Что делает ТБанк vs. что делает LazyShop
|
||
|
||
| Компонент | LazyShop (сейчас) | ТБанк (своё решение) |
|
||
|-----------|-------------------|----------------------|
|
||
| Профиль | Их сервер | Сервер ТБанк |
|
||
| Сертификаты | Их Apple Developer Account | Apple Developer Account ТБанк |
|
||
| Доверие клиента | "Какой-то сайт" | "Мой банк" |
|
||
| Время выпуска | ~24 часа | Можно быстрее (своя инфраструктура) |
|
||
| Стоимость для клиента | Платно | Бесплатно (за счёт банка) |
|
||
| Лимит приложений | 3 шт | Все приложения холдинга |
|
||
|
||
---
|
||
|
||
## Архитектура для ТБанк
|
||
|
||
```
|
||
┌─────────────────────────────────────────────────────────────────┐
|
||
│ КЛИЕНТ (iPhone) │
|
||
├─────────────────────────────────────────────────────────────────┤
|
||
│ │
|
||
│ 1. Safari → tbank.ru/ios │
|
||
│ 2. Скачать профиль → Настройки │
|
||
│ 3. Подтвердить установку профиля │
|
||
│ 4. Подождать (автоматически или ~24ч) │
|
||
│ 5. Получить ссылку → Скачать приложение │
|
||
│ │
|
||
│ Результат: │
|
||
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
|
||
│ │ ТБанк App │ │ Т-Мобайл │ │ Т-Страхование│ │
|
||
│ └──────────────┘ └──────────────┘ └──────────────┘ │
|
||
│ │
|
||
└─────────────────────────────────────────────────────────────────┘
|
||
│
|
||
▼
|
||
┌─────────────────────────────────────────────────────────────────┐
|
||
│ СЕРВЕР ТБанк │
|
||
├─────────────────────────────────────────────────────────────────┤
|
||
│ │
|
||
│ ┌─────────────────────────────────────────────────────────┐ │
|
||
│ │ Profile Server │ │
|
||
│ │ │ │
|
||
│ │ • Генерация .mobileconfig для каждого клиента │ │
|
||
│ │ • Сбор UDID через профиль │ │
|
||
│ │ • Привязка к аккаунту клиента в банке │ │
|
||
│ └─────────────────────────────────────────────────────────┘ │
|
||
│ │
|
||
│ ┌─────────────────────────────────────────────────────────┐ │
|
||
│ │ Signing Service │ │
|
||
│ │ │ │
|
||
│ │ • Apple Developer Enterprise Program ($299/год) │ │
|
||
│ │ • Подписание IPA под конкретный UDID │ │
|
||
│ │ • Автоматизация через Apple API │ │
|
||
│ └─────────────────────────────────────────────────────────┘ │
|
||
│ │
|
||
│ ┌─────────────────────────────────────────────────────────┐ │
|
||
│ │ Distribution │ │
|
||
│ │ │ │
|
||
│ │ • itms-services:// manifest для установки │ │
|
||
│ │ • Push-уведомление "Ваше приложение готово" │ │
|
||
│ │ • Ссылка в личном кабинете / на почту │ │
|
||
│ └─────────────────────────────────────────────────────────┘ │
|
||
│ │
|
||
└─────────────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
---
|
||
|
||
## Процесс для клиента (как на LazyShop, но от банка)
|
||
|
||
### Шаг 1: Вход
|
||
```
|
||
Клиент заходит на tbank.ru/ios через Safari на iPhone
|
||
→ Сайт автоматически определяет устройство
|
||
→ Кнопка "Установить приложения ТБанк"
|
||
```
|
||
|
||
### Шаг 2: Профиль
|
||
```
|
||
Клиент нажимает кнопку
|
||
→ Safari предлагает скачать профиль (.mobileconfig)
|
||
→ Клиент переходит в Настройки → Основные → VPN и управление устройством
|
||
→ Видит "Профиль ТБанк" → Нажимает "Установить"
|
||
→ Подтверждает паролем устройства
|
||
```
|
||
|
||
### Шаг 3: Ожидание (~24 часа или быстрее)
|
||
```
|
||
Профиль отправляет UDID на сервер ТБанк
|
||
→ Сервер регистрирует устройство в Apple Developer Portal
|
||
→ Apple выпускает provisioning profile для этого UDID
|
||
→ ~24 часа (или быстрее при автоматизации)
|
||
```
|
||
|
||
### Шаг 4: Установка
|
||
```
|
||
Клиент получает push/SMS/email: "Приложения готовы"
|
||
→ Заходит на tbank.ru/ios
|
||
→ Нажимает "Скачать ТБанк" / "Скачать Т-Мобайл" / ...
|
||
→ iOS устанавливает приложение
|
||
→ Готово
|
||
```
|
||
|
||
### Если сертификат отозван Apple
|
||
```
|
||
Приложение перестаёт открываться
|
||
→ Клиент заходит на tbank.ru/ios
|
||
→ Повторяет процедуру (новый профиль → новый сертификат)
|
||
→ Скачивает приложения заново
|
||
```
|
||
|
||
**Это минус**, но Apple не может закрыть сам механизм — это их инфраструктура.
|
||
|
||
---
|
||
|
||
## Масштабирование на все приложения
|
||
|
||
| Приложение | Bundle ID | Отдельный сертификат |
|
||
|------------|-----------|---------------------|
|
||
| ТБанк | ru.tbank.app | Да |
|
||
| Т-Мобайл | ru.tbank.mobile | Да |
|
||
| Т-Страхование | ru.tbank.insurance | Да |
|
||
| Т-Бизнес | ru.tbank.business | Да |
|
||
| Т-Инвестиции | ru.tbank.invest | Да |
|
||
| ... | ... | Да |
|
||
|
||
**Каждое приложение** = отдельный сертификат на устройстве клиента.
|
||
|
||
**Преимущество:** Отзыв одного сертификата не влияет на другие приложения.
|
||
|
||
---
|
||
|
||
## Безопасность
|
||
|
||
### Защита от компрометации
|
||
```
|
||
1. Certificate Pinning — приложение проверяет свой сертификат
|
||
2. HSM — приватные ключи в аппаратном модуле
|
||
3. Audit Log — все операции с сертификатами логируются
|
||
4. Revocation — мгновенный отзыв при подозрении
|
||
```
|
||
|
||
### Согласие клиента (GDPR/152-ФЗ)
|
||
```
|
||
- Явное согласие перед регистрацией устройства
|
||
- Право отзыва в любой момент
|
||
- Данные UDID хранятся зашифрованно
|
||
- Привязка к уже верифицированному клиенту банка
|
||
```
|
||
|
||
---
|
||
|
||
## Стоимость для ТБанк
|
||
|
||
| Компонент | Стоимость |
|
||
|-----------|-----------|
|
||
| Apple Developer Enterprise Program | $299/год |
|
||
| Разработка Profile Server + Signing | Внутренняя команда или ~$30-50k |
|
||
| Инфраструктура | Уже есть у ТБанк |
|
||
| Поддержка | Внутренняя команда |
|
||
|
||
**Итого:** Минимальные затраты. Основная работа — разработка автоматизации.
|
||
|
||
**LazyShop берёт с пользователей деньги.** ТБанк делает бесплатно для своих клиентов → конкурентное преимущество.
|
||
|
||
---
|
||
|
||
## Альтернатива: Android (APK)
|
||
|
||
Для Android проще:
|
||
```
|
||
1. APK подписывается ключом ТБанк
|
||
2. Раздаётся с сайта tbank.ru/android
|
||
3. Клиент разрешает "Установка из неизвестных источников"
|
||
4. Готово
|
||
```
|
||
|
||
**Но риски:**
|
||
- Фишинговые сайты с поддельными APK
|
||
- Клиенты привыкают устанавливать "откуда угодно"
|
||
|
||
**Решение:** QR-код в отделении / в веб-банке с TOTP-верификацией
|
||
|
||
---
|
||
|
||
## Интеграция с Montana Protocol (опционально)
|
||
|
||
Montana Protocol добавляет:
|
||
1. **Постквантовые подписи ML-DSA-65** — защита от квантовых компьютеров
|
||
2. **Доказательство присутствия** — клиент доказывает владение устройством
|
||
3. **Временные метки** — неизменяемый лог всех операций
|
||
|
||
Это можно интегрировать позже или отдельно от Lazy Tool.
|
||
|
||
---
|
||
|
||
## Референс: LazyShop
|
||
|
||
**https://lazyshop.app** — уже работает, тысячи пользователей.
|
||
|
||
Посмотрите как они это делают:
|
||
1. Зайдите с iPhone через Safari
|
||
2. Пройдите процесс установки профиля
|
||
3. Увидите как это работает изнутри
|
||
|
||
ТБанк может сделать то же самое, но:
|
||
- Бесплатно для клиентов
|
||
- Под своим брендом
|
||
- С интеграцией в существующую инфраструктуру
|
||
- Для всех приложений холдинга
|
||
|
||
---
|
||
|
||
## Готовность
|
||
|
||
Я сейчас разрабатываю iOS-приложение Montana с этим механизмом.
|
||
|
||
Могу:
|
||
1. Показать как работает профиль + сертификат
|
||
2. Поделиться архитектурой
|
||
3. Помочь адаптировать под масштаб ТБанк
|
||
|
||
---
|
||
|
||
## Следующий шаг
|
||
|
||
30-минутный звонок:
|
||
1. Демо механизма
|
||
2. Ответы на технические вопросы
|
||
3. Обсуждение интеграции
|
||
|
||
---
|
||
|
||
*Alejandro Montana*
|
||
*24.01.2026*
|