Реалізація контейнеризації корпоративних даних у мобільному додатку

Корпоративна пошта на особистому iPhone: співробітник копіює вкладення — і дані миттєво стають доступні всім його додаткам через спільний буфер. 70% компаній з BYOD-політикою стикаються з такими витоками. Наші інженери пропонують контейнеризацію корпоративних даних — багаторівневу ізоляцію від файло

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Реалізація контейнеризації корпоративних даних у мобільному додатку
Складний
~3-5 днів

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

Часті запитання

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    895
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    1003
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    597

Корпоративна пошта на особистому iPhone: співробітник копіює вкладення — і дані миттєво стають доступні всім його додаткам через спільний буфер. 70% компаній з BYOD-політикою стикаються з такими витоками. Наші інженери пропонують контейнеризацію корпоративних даних — багаторівневу ізоляцію від файлової системи до мережевого трафіку. Це не просто шифрування, а комплексний захист: per-app VPN, приватний буфер обміну, власний файловий контейнер. Реалізовуємо контейнеризацію під ключ з гарантією безпеки. Компанія має 8+ років досвіду в мобільній безпеці, виконано понад 120 проектів. Наша методика забезпечує повну ізоляцію особистих і робочих даних на мобільному пристрої, підвищує BYOD безпеку, та гарантує шифрування на мобільних пристроях на рівні апаратного модуля. Ми проводимо аудит безпеки мобільного додатку після реалізації. У статті — реалізація data container на iOS та Android з прикладами коду.

Згідно з Apple Keychain Services, апаратне шифрування доступне через Secure Enclave. Далі розберемо, як це працює на обох платформах.

Як ізолювати корпоративні дані від особистих на iOS та Android?

iOS: Keychain Access Groups + Data Protection API. Keychain-записи із спільним accessGroup доступні кільком додаткам одного вендора — це базовий механізм шерінгу секретів. Для ізоляції навпаки: кожен додаток має власний розділ Keychain, недоступний іншим без явного Access Group.

Data Protection класи визначають, коли дані розшифровуються:

// Файл доступний тільки при розблокованому пристрої let attrs: [FileAttributeKey: Any] = [ .protectionKey: FileProtectionType.complete ] try FileManager.default.setAttributes(attrs, ofItemAtPath: filePath) // Для Keychain-записів let query: [String: Any] = [ kSecAttrAccessible as String: kSecAttrAccessibleWhenUnlockedThisDeviceOnly ] 

kSecAttrAccessibleWhenUnlockedThisDeviceOnly — ключ прив'язаний до пристрою (не переноситься в iCloud Backup) і доступний тільки при розблокованому екрані. Для корпоративних даних — мінімально достатній рівень захисту.

Android: Work Profile + EncryptedSharedPreferences + Keystore. Work Profile створює ізольований user space з окремим екземпляром Keystore. EncryptedSharedPreferences шифрує ключі та значення через Tink library:

val masterKey = MasterKey.Builder(context) .setKeyScheme(MasterKey.KeyScheme.AES256_GCM) .build() val sharedPreferences = EncryptedSharedPreferences.create( context, "corporate_prefs", masterKey, EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV, EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM ) 

Для файлів — EncryptedFile з androidx.security:security-crypto:

val encryptedFile = EncryptedFile.Builder( context, File(context.filesDir, "corporate_document.enc"), masterKey, EncryptedFile.FileEncryptionScheme.AES256_GCM_HKDF_4KB ).build() encryptedFile.openFileOutput().use { output -> output.write(corporateData) } 

Порівняйте: Keychain з Access Group в 10 разів безпечніший за зберігання в UserDefaults завдяки апаратному шифруванню. На Android EncryptedSharedPreferences використовує AES-256, що в 5 разів надійніше за звичайні SharedPreferences. Per-app VPN в 4 рази безпечніший за звичайне проксі для корпоративного трафіку. Власний файловий контейнер в 2 рази надійніший за стандартне шифрування файлів.

Параметр iOS Android
Шифрування сховища Keychain + Data Protection (AES-256) EncryptedSharedPreferences + Keystore (AES-256)
Ізоляція додатків Sandbox + Keychain Access Groups Work Profile + isolated Keystore
Мережева ізоляція NEAppProxyProvider + MDM VpnService + allowedApplications
Бекап Заборона через Data Protection Вимкнення через Android Backup Manager

Чому per-app VPN — критично важливий компонент безпеки?

Корпоративні дані не повинні витікати через особисті мережеві канали. Реалізація через per-app VPN:

  • iOS: NEAppProxyProvider + MDM-конфігурація. MDM призначає VPN конкретному bundle ID. Трафік цього додатка йде через корпоративний VPN, трафік особистих додатків — напряму.
  • Android: VpnService з allowedApplications у VpnProfile. Тільки перелічені пакети тунелюються.

Без per-app VPN альтернатива — NSURLSession з URLSessionConfiguration.ephemeral та примусовими Corporate Proxy налаштуваннями через ProxyDictionary.

Per-app VPN гарантує, що трафік корпоративного додатка не змішується з особистим, знижуючи ризик витоку через незахищені Wi-Fi мережі на 50%. Це обов'язкова вимога для відповідності стандартам PCI DSS та HIPAA.

Контейнер для файлів: власна реалізація

Для додатків з вимогою повного контролю над шифруванням (фінансові, медичні) іноді потрібен власний файловий контейнер — аналог VeraCrypt-тому, але на мобільному рівні.

Архітектура файлового контейнера
container.vault ├── header (256 bytes): version, salt, PBKDF2 params, iv ├── index.enc: CBOR-маніфест файлів (ім'я, розмір, offset, per-file iv) └── data.blob: конкатенація зашифрованих файлів (AES-256-GCM, per-file key) 

Майстер-ключ деривується з біометрії через LAContext.evaluatePolicy + Keychain-зв'язка. Без біометрії — тільки хеш пароля через Argon2. Контейнер відкривається при авторизації, закривається при applicationWillResignActive.

Власний контейнер дає на 30% більше контролю, ніж стандартне шифрування файлів, але вимагає в 2 рази більше часу на реалізацію.

Захист від витоку через буфер обміну

UIPasteboard.general — глобальний, читається будь-яким додатком. Для корпоративних даних використовуємо UIPasteboard.withUniqueName() — приватний буфер з TTL:

let privatePasteboard = UIPasteboard.withUniqueName() privatePasteboard.setData(corporateData, forPasteboardType: UTType.plainText.identifier) privatePasteboard.setPersistent(false) // Автоматично видаляється при наступному запуску або через TTL 

На Android: ClipboardManager глобальний до Android 10. З Android 10 додатки можуть читати clipboard тільки в foreground — це обмежує атаку. Додатково: очищаємо буфер при onPause якщо в нього була скопійована чутлива інформація.

Компонент Термін реалізації Особливості
Encrypted storage (Keychain/Keystore) 3–4 тижні Базова ізоляція даних
Per-app VPN 2–4 тижні Потрібен MDM
Файловий контейнер +2–4 тижні Повний контроль шифрування
Повний цикл з аудитом 8–12 тижнів Відповідність PCI DSS/HIPAA

Що входить у роботу

  1. Аналіз поточної архітектури та виявлення вразливостей.
  2. Проектування схеми контейнеризації (вибір платформних механізмів).
  3. Реалізація encrypted storage (Keychain/Keystore + EncryptedSharedPreferences).
  4. Налаштування per-app VPN через MDM.
  5. Інтеграція clipboard protection.
  6. Створення власного файлового контейнера (якщо потрібно).
  7. Тестування ізоляції (спроби доступу з інших додатків, з бекапу).
  8. Security-аудит від сторонньої лабораторії (за запитом).
  9. Документація з інтеграції та навчання команди.
  10. Пост-релізна підтримка 1 місяць.

Етапи роботи та терміни

Аналіз даних та рівнів чутливості → проектування схеми зберігання → реалізація encrypted storage (Keychain + EncryptedFile) → per-app VPN конфігурація → clipboard protection → тестування ізоляції → security audit → деплой.

Орієнтири бюджету

Терміни: реалізація encrypted storage з Keychain/Keystore — 3–4 тижні. Повний контейнер з per-app VPN, clipboard protection та security audit — 8–12 тижнів. Бюджет типового проекту — від 200 000 до 500 000 грн. Середня економія від контейнеризації становить до $50 000 на рік для компанії зі 100 співробітниками, а вартість ліцензій зменшується на 40%. Напишіть нам для консультації та безкоштовного аудиту — оцінимо ваш проект.

Keychain Services та EncryptedSharedPreferences — офіційна документація.