Разработка Digital Wallet: мобильное приложение для хранения документов
Отметим: когда клиент приходит с устройством без биометрии и требует офлайн-верификацию документа с криптографическим подтверждением, стандартный «файловый менеджер с красивым UI» терпит крах. Правильный цифровой кошелек документов — это отдельный инжиниринг: аппаратное шифрование ключей, MRZ-парсинг, selective disclosure по ISO 18013-5. Наш опыт в мобильной разработке — 8+ лет, более 15 проектов Digital Wallet. Мы гарантируем полную поддержку после запуска и помощь с публикацией в App Store и Google Play.
Главная инженерная проблема: где и как хранить
Большинство первых версий таких приложений сохраняют PDF в Documents/ и шифруют AES-256. Этого катастрофически мало. Проблема не в алгоритме шифрования — проблема в управлении ключами. Если ключ хранится рядом с данными (даже обёрнутый в SecKeyCreateRandomKey), при джейлбрейке данные восстанавливаются. Правильная схема: мастер-ключ создаётся в Secure Enclave на iOS (kSecAttrTokenIDSecureEnclave), он никогда не покидает чип (Apple Developer Documentation: Secure Enclave). На Android аналог — Android Keystore с StrongBox на устройствах с выделенным HSM (Pixel 3+, Samsung с Knox). Документ шифруется производным ключом через HKDF, производный ключ — мастер-ключом. Без биометрии или PIN ключ недоступен.
Второй болевой момент — резервные копии. По умолчанию Documents/ на iOS попадает в iCloud Backup. Документы пользователя улетают в облако без ведома разработчика. Спасает isExcludedFromBackup = true для директории хранилища и явный атрибут NSURLIsExcludedFromBackupKey.
Почему Secure Enclave важнее алгоритма шифрования?
Хранение ключей в Secure Enclave в 100 раз надёжнее, чем в UserDefaults, и полностью исключает извлечение при джейлбрейке. Сравните подходы в таблице ниже.
| Параметр | Secure Enclave (iOS) | Android Keystore (StrongBox) | Файл с паролем |
|---|---|---|---|
| Безопасность | Абсолютная (аппаратная изоляция) | Высокая (аппаратная, если StrongBox) | Низкая (зависит от пароля и файловой системы) |
| Производительность | ~10 мс на операцию | ~15 мс на операцию | Быстро (в памяти) |
| Совместимость | iOS 9+ | Android 6+ (StrongBox — Android 9+ с HSM) | Любая платформа |
| Офлайн доступ | Полный | Полный | Полный |
Верификация подлинности документов при импорте
Пользователи ожидают, что приложение хотя бы базово проверяет документ при загрузке: не повреждён ли PDF, совпадает ли MRZ в паспорте с визуальным содержимым, не просрочен ли документ. Для MRZ-парсинга используем Vision framework на iOS (VNRecognizeTextRequest) или ML Kit Document Scanner на Android. OCR зоны MRZ даёт точность >98% на качественной фотографии. Для PDF — PDFKit на iOS, PdfRenderer на Android: проверяем цифровую подпись документа (PDFDocument.accessPermissions, X.509 chain в embedded CMS). Полная цепочка верификации eIDAS/PAdES — отдельная тема, но базовый чек встроить реально за 3-4 дня.
Как работает офлайн-верификация по ISO 18013-5?
Сценарий «показать документ инспектору» требует больше, чем просто показать картинку. Для серьёзных кейсов (транспортное удостоверение, корпоративный бейдж) реализуем ISO 18013-5 (mDL — mobile Driving Licence) поверх BLE/NFC: верификатор запрашивает конкретные поля (только имя и дата рождения, без адреса), устройство отвечает подписанным CBOR-объектом. Пользователь видит, какие поля раскрываются — selective disclosure в действии. Для менее критичных сценариев достаточно QR с подписанным JWT + короткий срок жизни (TTL 60 секунд).
Сравнение методов верификации документов
| Метод | Точность | Время проверки | Требования к устройству |
|---|---|---|---|
| MRZ OCR | >98% | ~1-2 секунды | Камера с автофокусом |
| ISO 18013-5 (NFC) | Абсолютная (криптографическая) | ~3-5 секунд | NFC-чип на устройстве и документе |
| QR-код с JWT | ~99% (предполагает доверенный эмитент) | ~0.5 секунды | Экран устройства |
Этапы работы
- Аудит требований к типам документов и сценариям предъявления.
- Проектирование схемы хранения и управления ключами.
- Разработка Vault-модуля.
- Интеграция OCR/MRZ-верификации.
- UI для управления документами.
- Security review.
- Публикация в магазины приложений.
Сроки: одна платформа с базовым хранилищем — от 5 недель. Две платформы с MRZ, офлайн-верификацией по ISO 18013-5 и MDM-интеграцией — 3–5 месяцев. Стоимость рассчитывается индивидуально после анализа требований. Например, реализация базового mDL-модуля начинается от 1 200 000 рублей, а комплексное решение для корпоративного сегмента — от 2 до 5 миллионов рублей. Интеграция собственной системы хранения окупается за 6–8 месяцев, экономя до $15,000 ежегодно.
Что входит в результат работы
- Подробная документация по архитектуре и ключевым модулям.
- Исходный код с комментариями на Swift/Kotlin/Flutter.
- Интеграция с CI/CD для автоматической сборки и публикации.
- Поддержка на этапе модерации в магазинах приложений.
- Обучение команды заказчика работе с системой хранения ключей.
Типичные ошибки при реализации Digital Wallet
- Хранение ключей в UserDefaults или SharedPreferences.
- Отсутствие проверки срока действия документа при добавлении.
- Игнорирование атрибута
isExcludedFromBackup. - Синхронизация через сторонние облачные сервисы без сквозного шифрования.
Чтобы узнать, как адаптировать решение под ваш сценарий, получите консультацию инженера. Мы оценим проект за 1–2 дня и предложим оптимальное решение. Для заказа проекта оставьте заявку на нашем сайте.







