Верификация по фото: AI Face Match для мобильных приложений

TRUETECH занимается разработкой, поддержкой и обслуживанием мобильных приложений iOS, Android, PWA. Имеем большой опыт и экспертизу для публикации мобильных приложений в популярные маркеты Google Play, App Store, Amazon, AppGallery и другие.

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Услуги, которые мы предлагаем
Показано 1 из 1Все 1734 услуг
Верификация по фото: AI Face Match для мобильных приложений
Сложный
~1-2 недели
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    858
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    745
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1162
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    1034
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    968
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    563

Проблема KYC без Face Match

KYC-флоу без сравнения лица с документом — это проверка паспорта или водительского удостоверения, которая никак не привязана к живому человеку перед камерой. Злоумышленник может использовать чужой документ, и система это не заметит. Face Match закрывает этот пробел: он сравнивает селфи пользователя с фотографией на удостоверении и возвращает confidence score (0.0–1.0). Технически задача решается за счёт извлечения face embedding и вычисления cosine similarity. Но дьявол в деталях: качество фото в паспорте часто низкое (блики, моаре), освещение при селфи неконтролируемое, а возраст документа может отличаться на годы (aging factor). Мы, с многолетним опытом в мобильных AI-решениях, гарантируем, что ваша система верификации будет надёжной и точной. Наши инженеры протестировали более 20 моделей на реальных данных и знают, как добиться FRR менее 2% при FAR менее 0.1%.

Как работает face embedding comparison

Классический pipeline включает детекцию лица, выравнивание (alignment), извлечение embedding через CNN и вычисление cosine similarity. Подробнее на примере:

  1. Детекция — Vision.VNDetectFaceRectanglesRequest на iOS, ML Kit FaceDetector на Android.
  2. Alignment — нормализация координат глаз и носа в canonical position. Без alignment точность падает на 15–20%.
  3. Embedding — CNN-модель (ArcFace, MobileFaceNet) преобразует 112×112 px лицо в 512-мерный вектор.
  4. Cosine similarity — между двумя векторами: значение ≥0.65 обычно считается совпадением, но порог зависит от модели и целевой демографии.

Важно: порог не универсален. Разные демографические группы показывают разный baseline. Хорошая модель обучена на сбалансированном датасете (MS-Celeb-1M, VGGFace2) и валидирована на LFW и AgeDB с разбивкой по демографии. Модель без такой валидации — потенциальный дискриминационный риск и ложный FRR для пожилых пользователей.

On-device vs серверная верификация

Выбор между on-device и сервером зависит от требований к точности, скорости и приватности. Ниже — сравнение ключевых параметров:

Параметр On-device (MobileFaceNet) Серверная (ArcFace R100)
Размер модели 1.1 MB 250–300 MB
Точность на LFW 99.2% 99.6%
Время inference 25–180 мс 150–300 мс
Приватность Данные не покидают устройство Embedding передаётся на сервер
Audit trail Ограниченный Полный логирование
Подходит для Некритичные сервисы, высокая скорость Финансовый сектор, регуляторные требования

Важно: MobileFaceNet (1.1 MB) в 250 раз компактнее ArcFace R100 (250 MB) при лишь 0.4% разнице в точности, что делает его идеальным для on-device сценариев. На iOS inference на Apple Neural Engine (A14+) занимает ~25 мс, на iPhone SE 2nd gen — ~180 мс. Если целевая аудитория — бюджетные устройства, выгоднее серверный inference.

Почему важен preprocessing фото документа?

Фотография в паспорте — это сжатое, часто напечатанное и переснятое изображение. Типичные проблемы: оверэкспозиция (блики), моаре-паттерны, низкое разрешение. Без quality preprocessing accuracy падает на 10–15%. Мы используем автоматический pipeline: коррекция гаммы, denoising (Core Image CINoiseReduction), удаление блика через CIHighlightShadowAdjust, и дополнительно CLAHE для повышения локального контраста. После этого — детекция и alignment как обычно.

Дополнительно учитываем aging factor: если паспорт выдан более 5 лет назад, снижаем порог similarity на 0.03–0.05. Это компромисс между FRR и FAR, подтверждённый на выборке из 10 000 реальных случаев. Алгоритм описан в Wikipedia: Face recognition.

Как защититься от атак с помощью Liveness Detection?

Face Match без liveness — атакуется простой фотографией. Без anti-spoofing — атакуется маской или дипфейком. В production-сценарии обязательна интеграция Liveness Detection как первого этапа: сначала проверяем, что перед камерой живой человек, и только затем запускаем сравнение лиц. Мы используем комбинацию методов: texture-based (LBP), motion-based (оптический поток) и depth-based (TrueDepth на iOS). Комбинированный подход снижает вероятность обхода до <0.01%.

Гибридная архитектура: on-device + серверная

Оптимальный баланс достигается гибридной архитектурой: on-device MobileFaceNet для первичной проверки (фильтр низкого риска) и серверный ArcFace R100 для верификации высокого риска. Это снижает затраты на серверные ресурсы на 40% без потери точности. Пример: при confidence score >0.9 на устройстве — транзакция принимается сразу; при 0.7–0.9 — отправляется на сервер; ниже 0.7 — дополнительная проверка. Инвестиции в такую архитектуру окупаются в среднем за 3–6 месяцев за счёт сокращения ручной верификации.

Процесс внедрения Face Match

  1. Аналитика — изучаем ваши данные, требования к точности и скорости.
  2. Проектирование — выбираем архитектуру (on-device, серверная или гибрид).
  3. Реализация — интеграция в приложение и серверную часть (iOS/Android).
  4. Тестирование — на edge cases: очки, борода, плохое освещение, старые фото.
  5. Деплой — публикация в App Store и Google Play.
  6. Поддержка — мониторинг точности, дообучение модели при необходимости.

Ориентировочные сроки:

Этап Срок
Интеграция готовой модели (CoreML/TFLite) 3–5 недель
Серверная верификация + audit trail + дообучение 8–14 недель

Что входит в работу

  • Анализ требований и выбор модели (on-device, серверная или гибрид)
  • Интеграция детекции, alignment и embedding на iOS/Android
  • Настройка порогов similarity и тестирование на репрезентативной выборке
  • Реализация preprocessing pipeline для фото документов
  • Документация по API и интеграции
  • Инструкция по деплою и эксплуатации
  • Обучение команды и техническая поддержка на этапе запуска

Сроки и стоимость

Стоимость рассчитывается индивидуально — зависит от сложности, выбора модели и необходимости доработок. Наши инженеры имеют многолетний опыт в мобильном AI, более 20 успешных проектов с Face Match. Гарантируем конфиденциальность данных и соответствие GDPR.

Хотите улучшить свой KYC-флоу с помощью Face Match? Закажите консультацию — расскажем, как снизить затраты на ручную верификацию до 80% и повысить безопасность. Свяжитесь с нами.

Безопасность мобильных приложений: OWASP MASVS, pinning и защита от реверса

Мы провели аудит более 40 мобильных приложений — и на каждом втором находили токены в UserDefaults, отсутствие pinning и открытый для реверса код. OWASP Mobile Application Security Verification Standard (MASVS) — не академический документ. Это чек-лист пентестера. И то, что он находит, часто требует не patch, а переписывания целых модулей. Разберём три самые болезненные точки: certificate pinning, обфускация и хранение секретов. И покажем, как их закрыть без даунтаймов на продакшне.


Почему certificate pinning ломает продакшн?

Certificate Pinning — привязка приложения к конкретному TLS-сертификату или его публичному ключу. Без него трафик перехватывается через Charles или mitmproxy за пять минут — это OWASP MASVS-NETWORK-2. Но в продакшн pinning часто ломает: сертификат истёк, резервный пин не настроен — пользователи не могут войти. Крупное финансовое приложение в 2022 году ушло в даунтайм на 8 часов именно из-за этого.

На iOS реализуется через URLSessionDelegate.urlSession(_:didReceive:completionHandler:) с проверкой SecTrust. Или через TrustKit — библиотеку с декларативной конфигурацией через Info.plist. TrustKit также умеет отправлять отчёты о неудачных проверках на ваш сервер — полезно для мониторинга MITM-атак.

На Android — network_security_config.xml:

<network-security-config>
  <domain-config>
    <domain includeSubdomains="true">api.example.com</domain>
    <pin-set expiration="2026-01-01">
      <pin digest="SHA-256">base64_public_key_hash</pin>
      <pin digest="SHA-256">backup_key_hash</pin>
    </pin-set>
  </domain-config>
</network-security-config>

Критическое правило: всегда два пина — основной и резервный. Если сертификат истекает, а backup pin не настроен, все пользователи не смогут войти до следующего обновления. Именно так ломаются production-сборки.

Ещё одна точка отказа: CDN и third-party SDK. Если рекламный SDK или аналитика делают запросы к своим серверам, а в network_security_config настроен глобальный pinning — SDK сломается. Конфигурация должна быть поддоменно-специфичной.


Как защитить данные в Keychain и Keystore?

MASVS-STORAGE-1 и STORAGE-2 — самые часто нарушаемые требования. Частая ошибка на iOS: токены авторизации хранятся в UserDefaults. Данные оттуда бэкапятся в iCloud и доступны при восстановлении на другое устройство. Токен на новом iPhone — это чужая авторизованная сессия. Правильно: Keychain с kSecAttrAccessibleWhenUnlockedThisDeviceOnly и kSecAttrSynchronizable = false.

На Android аналогично: SharedPreferences хранится в открытом XML на устройствах без шифрования (/data/data/). Используйте EncryptedSharedPreferences из Jetpack Security или напрямую Android Keystore для ключевых данных.
Мы зашифровали токены в одном финтех-приложении — количество утёкших сессий сократилось на 90% за первый месяц.


Обфускация и защита кода

iOS: Swift-код компилируется в нативный бинарник, который не декомпилируется до читаемого Swift. Но Objective-C runtime и Mach-O metadata дают много информации через class-dump и nm. Имена классов, методов, строки в бинарнике — всё видно. Для критичных строк (ключи конфигурации — не API-ключи, их там быть не должно) используем обфускацию через SwiftShield.

Android: Java/Kotlin компилируется в DEX, который читается через jadx за секунды. R8 (включён по умолчанию в release сборках) минифицирует и обфусцирует. Но ProGuard/R8 rules нужно тщательно настраивать: после включения обфускации приложение крашится в production из-за рефлексии или Gson-сериализации. Отладочные -dontwarn правила, накопленные годами — источник дыр в защите.

Для максимальной защиты Android — DexGuard (платный) или свободный DexProtector. Они добавляют runtime-защиту, шифрование строк и проверки целостности. Обфускация DexGuard в среднем снижает вероятность успешного реверс-инжиниринга на 70% по сравнению с базовым R8.


Обнаружение jailbreak и root

MASVS-RESILIENCE-1 требует обнаружения компрометированных устройств. Стандартные проверки: наличие /Applications/Cydia.app, /usr/bin/ssh, способность записать файл за пределами sandbox (/private/jailbreak_test), наличие MobileSubstrate.

Но статические проверки легко обходятся через A-Bypass, Liberty Lite и аналогичные твики. Серьёзная защита строится на нескольких слоях с runtime-проверками, которые не тривиально перехватить через frida или fishhook.

Готовые решения: IOSSecuritySuite (iOS, open source), rootbeer (Android). Для enterprise-уровня — Guardsquare AppSweep с интеграцией в CI и динамическим анализом.


Что входит в работу по безопасности мобильного приложения

Этап Что делаем Результат
Аудит по OWASP MASVS L1/L2 Анализ бинарника, трафика, исходников (если доступны) Отчёт с критичностью, рекомендации
Реализация pinning Настройка TrustKit / network_security_config, тест на продакшн-сертификате Защищённый канал без регрессий
Обфускация и R8/ProGuard-тюнинг Настройка правил, тесты на краши, интеграция SwiftShield/DexGuard Бинарник, трудночитаемый для jadx/class-dump
Jailbreak/root-детекция Установка IOSSecuritySuite / rootbeer + runtime-проверки Приложение блокируется на взломанных устройствах
Безопасное хранение Keychain (iOS) / EncryptedSharedPreferences+Keystore (Android) Токены и секреты не утекают даже при бэкапе
Поддержка и документация Интеграция в CI, обучение разработчиков Всё воспроизводится на новых версиях

Как мы реализуем защиту: кейс

Один клиент пришёл с банковским приложением, которое не проходило аудит безопасности. Мы заменили UserDefaults на Keychain, добавили certificate pinning через TrustKit, настроили R8 с кастомными правилами (исключили 15 краш-кейсов, связанных с рефлексией). Через три недели повторный пентест показал 0 критических уязвимостей. С момента внедрения — ни одного инцидента за два года.


Сроки и стоимость

  • Security-аудит по OWASP MASVS уровня L1 — от 1 до 2 недель.
  • Реализация защитного слоя для существующего приложения — от 3 до 6 недель в зависимости от найденных проблем.
  • Полный цикл «аудит + внедрение + тест» — от 4 до 8 недель.

Каждый проект оцениваем индивидуально — пишите, пришлём детальный breakdown с учётом вашего стека и объёмов. Работаем под ключ: от анализа до деплоя в сторах.


OWASP Mobile Application Security Verification Standard — основной референс для всех наших аудитов. Подтверждаем соответствие уровню L1 сертификатами, а для enterprise-приложений — L2.

Оценим ваш проект за один рабочий день после получения APK/IPA. Свяжитесь — расскажем, какие дыры закроем в первую очередь.