Шифрування в мобільних застосунках — основи, алгоритми та принцип роботи

Автор: IT Sectr Опубліковано: 2026-04-02 Час читання: 8 хв

Шифрування (encryption) — це процес перетворення даних у форму, недоступну для читання без спеціального ключа. У мобільних застосунках шифрування захищає персональні дані користувачів, платіжну інформацію та бізнес-логіку від перехоплення та витоку. За даними Statista (2024), кількість витоків даних із мобільних застосунків зросла на 38% за два роки, і в 72% випадків причиною стала відсутність або неправильне шифрування. Сучасні мобільні платформи надають вбудовані API для шифрування, і їх використання є обов'язковим стандартом безпеки. Statista, 2024

Головне

  • Шифрування — перетворення даних у нечитабельний вигляд, зворотне лише за наявності ключа розшифрування.
  • Симетричне шифрування використовує один ключ для шифрування та розшифрування — швидко, але потребує безпечної передачі ключа.
  • Асиметричне шифрування використовує пару ключів (відкритий і закритий) — безпечніше, але повільніше за симетричне.
  • AES-256 — золотий стандарт симетричного шифрування, рекомендований NIST і використовуваний в Android та iOS.
  • Наскрізне шифрування (end-to-end) гарантує, що дані недоступні навіть серверу — лише відправнику та отримувачу.

Що таке шифрування в мобільних застосунках?

Шифрування в контексті мобільних застосунків — це застосування криптографічних алгоритмів для захисту даних, що зберігаються на пристрої (data at rest) та передаються мережею (data in transit). На рівні пристрою шифрується локальне сховище: файли, бази даних, SharedPreferences та кеш. На рівні мережі шифрується трафік між застосунком і сервером через протоколи TLS/HTTPS. Кінцева мета — гарантувати, що навіть при фізичному доступі до пристрою або перехопленні трафіку зловмисник не зможе прочитати захищені дані без криптографічного ключа.

Навіщо потрібне шифрування в мобільних застосунках

Мобільні пристрої особливо вразливі до втрати даних: телефон легко загубити, вкрасти або заразити шкідливим ПЗ. За даними Ponemon Institute (2023), 42% компаній, постраждалих від витоків даних, пов'язують інциденти з мобільними пристроями. Без шифрування зловмисник може підключитися до пристрою через USB, витягнути SQLite-базу та прочитати всі збережені дані. Шифрування вирішує цю проблему: навіть якщо базу витягнуто, її вміст залишається зашифрованим. Додатково, у США та ЄС діють закони (GDPR, CCPA), що вимагають шифрування персональних даних і вводять штрафи до 4% від річного обороту за їх порушення. Використання шифрування — це не лише технічна, а й юридична необхідність для будь-якого мобільного застосунку, що працює з користувацькими даними.

Симетричне та асиметричне шифрування

Усі алгоритми шифрування поділяються на два основні типи: симетричні (один ключ для шифрування та розшифрування) та асиметричні (пара ключів — відкритий і закритий). Вибір типу залежить від сценарію використання: для шифрування локальних даних частіше застосовують симетричні алгоритми через їх швидкість, а для передачі ключів та автентифікації — асиметричні.

ХарактеристикаСиметричнеАсиметричне
Кількість ключів1 (секретний)2 (відкритий + закритий)
ШвидкістьВисока (1–10 ГБ/с)Низька (1–10 МБ/с)
Поширення ключаПроблема — потрібно передати ключПросте — відкритий ключ публікується
ПрикладиAES, ChaCha20RSA, ECDH, ECIES
Застосування в мобільній розробціШифрування локальних данихОбмін ключами, цифрові підписи

На практиці в мобільних застосунках використовується гібридне шифрування: асиметричним алгоритмом (наприклад, ECDH) сторони обмінюються сесійним ключем, а всі подальші дані шифруються симетричним алгоритмом (AES або ChaCha20). Такий підхід поєднує швидкість симетричного шифрування з безпекою асиметричного обміну ключами. Цей метод лежить в основі TLS 1.3, Signal Protocol та Apple iMessage.

Основні алгоритми шифрування

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

  • AES (Advanced Encryption Standard) — симетричний блоковий шифр, сертифікований NIST у 2001 році. Використовує ключі 128, 192 або 256 біт. Рекомендований режим — GCM (Galois/Counter Mode), що забезпечує автентифіковане шифрування. AES-256 використовується в Android Keystore, iOS Keychain та всіх сучасних протоколах TLS.
  • ChaCha20-Poly1305 — симетричний потоковий шифр, розроблений Daniel Bernstein. Забезпечує таку ж безпеку, як AES-256, але працює швидше на пристроях без апаратного прискорення AES (типово для бюджетних Android-смартфонів). ChaCha20 використовується в TLS 1.3 як альтернатива AES-GCM і є основним шифром у Signal Protocol.
  • RSA (Rivest-Shamir-Adleman) — асиметричний алгоритм, що використовується для шифрування ключів та цифрових підписів. Мінімальний рекомендований розмір ключа — 2048 біт. RSA повільніший за ECDH, тому в сучасних мобільних застосунках витісняється еліптичною криптографією (ECC).
  • ECDH (Elliptic Curve Diffie-Hellman) — асиметричний протокол обміну ключами на основі еліптичних кривих. Забезпечує Perfect Forward Secrecy і використовується в TLS 1.3 за замовчуванням. Крива Curve25519 (X25519) є найпоширенішою в мобільних застосунках.

Як шифрування захищає дані користувачів

Шифрування захищає дані в трьох ключових сценаріях: при втраті пристрою (шифрування диска та контейнерів застосунку), при перехопленні трафіку (мережеві протоколи TLS/HTTPS) та при витоку з сервера (наскрізне шифрування). Кожен сценарій потребує свого підходу та інструментів.

Шифрування в стані спокою та в транзиті

Data at rest — дані на пристрої — шифрується через Android Keystore та iOS Keychain. На Android починаючи з 7.0 використовується файлове шифрування (File-Based Encryption), а застосунки можуть додатково шифрувати свої дані через EncryptedSharedPreferences та EncryptedFile з бібліотеки AndroidX Security. На iOS всі застосунки за замовчуванням працюють з Data Protection API, який шифрує файли на рівні файлової системи ключем, прив'язаним до коду пристрою. Для data in transit використовується TLS 1.2/1.3 з обов'язковим Certificate Pinning.

Наскрізне шифрування (End-to-End)

Наскрізне шифрування (E2E) — найвищий рівень захисту даних, при якому повідомлення шифрується на пристрої відправника і розшифровується лише на пристрої отримувача. Сервер зберігання та передачі даних не має доступу до вмісту — він оперує лише зашифрованими блобами. Найбільш відома реалізація E2E для мобільних застосунків — Signal Protocol, що використовує Double Ratchet Algorithm у комбінації з X3DH (Extended Triple Diffie-Hellman) для початкового обміну ключами. Signal Protocol забезпечує Perfect Forward Secrecy та future secrecy: компрометація одного ключа не розкриває попередні та наступні повідомлення. За даними дослідження університету Карнегі — Меллон (2023), E2E-шифрування в месенджерах скорочує ризик витоку листування на 99.7% порівняно з TLS-only шифруванням. Застосування E2E обов'язкове для застосунків категорії Health & Fitness та Finance згідно з вимогами GDPR та HIPAA. Для реалізації E2E у власному проєкті рекомендується використовувати бібліотеку Signal Protocol (Java/Swift) або на основі Olm (Matrix protocol). При виборі E2E-рішення оцініть сумісність із платформою: Signal Protocol потребує підтримки асинхронного надсилання та зберігання ключів на клієнті, що ускладнює реалізацію multi-device сценаріїв — для таких випадків Matrix Protocol з його моделлю кімнат може бути кращим вибором.

Реалізація шифрування в мобільних застосунках

Розглянемо приклад шифрування та розшифрування даних на Android з використанням Jetpack Security (AndroidX Security). Бібліотека надає EncryptedFile для шифрування файлів та EncryptedSharedPreferences для налаштувань.

kotlin
val masterKey = MasterKey.Builder(context)
    .setKeyScheme(MasterKey.KeyScheme.AES256_GCM)
    .build()

val encryptedFile = EncryptedFile.Builder(
    context,
    File(context.filesDir, "secret.dat"),
    masterKey,
    EncryptedFile.FileEncryptionScheme.AES256_GCM_HKDF_4KB
).build()

encryptedFile.openFileOutput(applicationContext).use { outputStream ->
    outputStream.write("Sensitive user data".toByteArray(Charsets.UTF_8))
}

MasterKey створюється з використанням AES256-GCM — найбільш безпечного режиму симетричного шифрування. Ключ зберігається в Android Keystore, ізольованому від основного процесу: навіть при компрометації застосунку зловмисник не може витягнути ключ. EncryptedFile використовує схему AES-256-GCM з HKDF для деривації ключа та розміром сторінки 4KB, що дає хороший баланс між швидкістю та безпекою. Для читання даних використовується openFileInput з тими ж параметрами: бібліотека автоматично розшифровує дані при читанні.

На iOS аналогічна функціональність забезпечується через CryptoKit (Swift) з використанням AES.GCM або ChaChaPoly. Ключ зберігається в Secure Enclave через Keychain Services. Принцип однаковий: ключі ніколи не залишають захищене апаратне сховище, а дані шифруються перед записом на диск. Така архітектура відповідає рекомендаціям OWASP MASVS (Mobile Application Security Verification Standard) рівня L2 — для застосунків, що працюють з чутливими даними. У реальних проєктах комбінація EncryptedSharedPreferences для токенів та EncryptedFile для користувацьких даних покриває 100% сценаріїв локального шифрування. Додатково, для роботи з ключами, отриманими від сервера (наприклад, сесійні ключі ECDH), використовується Android KeyStore з параметром purpose = KeyProperties.PURPOSE_ENCRYPT, який гарантує, що ключ може бути використаний лише для дозволених криптографічних операцій і ніколи не експортується з апаратного сховища в оперативну пам'ять у відкритому вигляді.

Часто задавані питання

Яке шифрування вважається найнадійнішим для мобільних застосунків?

AES-256 в режимі GCM зі зберіганням ключа в апаратному сховищі (Android Keystore / iOS Keychain) вважається золотим стандартом. Для мережевого трафіку — TLS 1.3 з еліптичною кривою Curve25519. ChaCha20-Poly1305 використовується як альтернатива на пристроях без апаратного AES.

Чим відрізняється AES від RSA?

AES — симетричний алгоритм (один ключ), швидкий, підходить для шифрування великих обсягів даних. RSA — асиметричний (пара ключів), повільний, використовується для шифрування ключів та підписів, а не для даних. У мобільних застосунках AES шифрує дані, RSA захищає ключі.

Чи потрібно шифрувати всі дані в застосунку?

Шифрувати потрібно конфіденційні дані: токени доступу, паролі, персональну інформацію, платіжні дані, медичні записи. Публічні дані (картинки, контент) можна не шифрувати, однак краще зберігати їх у захищеному контейнері застосунку.

Як працює наскрізне шифрування (end-to-end) на мобільних пристроях?

При наскрізному шифруванні дані шифруються на пристрої відправника перед відправкою та розшифровуються лише на пристрої отримувача. Сервер бачить лише зашифровані дані. Протокол Double Ratchet, реалізований у Signal Protocol, — найпоширеніший механізм E2E в мобільних месенджерах.

Чи можна використовувати одне шифрування і для даних на пристрої, і для мережі?

Технічно можна, але не рекомендується. Для даних на пристрої використовуйте симетричне шифрування (AES-GCM) з ключем із Keystore. Для мережі — TLS 1.3 з окремим набором ключів та Certificate Pinning. Розділення запобігає компрометації обох каналів при витоку одного ключа.

Підсумки

  • Шифрування — обов'язковий елемент безпеки мобільних застосунків, що захищає дані в стані спокою та в транзиті.
  • AES-256 GCM — стандарт симетричного шифрування, рекомендований NIST для всіх типів даних.
  • Гібридне шифрування (ECDH + AES) поєднує швидкість симетричного та безпеку асиметричного підходів.
  • Android Keystore та iOS Keychain — апаратні сховища ключів, що ізолюють криптографічні матеріали від застосунку.
  • Data at rest шифрується через EncryptedSharedPreferences та EncryptedFile (Android) або Data Protection API (iOS).
  • Data in transit захищається TLS 1.3 з Certificate Pinning та Perfect Forward Secrecy.
  • Рекомендація: шифруйте всі конфіденційні дані через Jetpack Security (Android) або CryptoKit (iOS) з ключами в апаратному сховищі.

Ми розробимо мобільний застосунок під ключ

IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.

Обговорити проект

Читайте також