Шифровање у мобилним апликацијама — основе, алгоритми и принцип рада

Аутор: 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 GB/s)Ниска (1–10 MB/s)
Дистрибуција кључаПроблем — треба пренети кључЈедноставно — јавни кључ се објављује
Примери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) — највиши ниво заштите података, при чему се порука шифрује на уређају пошиљаоца и дешифрује само на уређају примаоца. Сервер за складиштење и пренос података нема приступ садржају — он оперише само са шифрованим blob-овима. Најпознатија имплементација E2E за мобилне апликације — Signal Protocol, који користи Double Ratchet Algorithm у комбинацији са X3DH (Extended Triple Diffie-Hellman) за почетну размену кључева. Signal Protocol обезбеђује Perfect Forward Secrecy и future secrecy: компромитација једног кључа не открива претходне и накнадне поруке. Према истраживању универзитета Carnegie Mellon (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("Осетљиви подаци корисника".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. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође