Mobil uygulamalarda şifreleme — temeller, algoritmalar ve çalışma prensibi

Yazar: IT Sectr Yayınlanma: 2026-04-02 Okuma süresi: 8 dk

Şifreleme (encryption), verilerin özel bir anahtar olmadan okunamayacak bir forma dönüştürülmesi işlemidir. Mobil uygulamalarda şifreleme, kullanıcıların kişisel verilerini, ödeme bilgilerini ve iş mantığını ele geçirme ve sızıntılara karşı korur. Statista'ya (2024) göre, mobil uygulamalardan kaynaklanan veri ihlallerinin sayısı iki yılda %38 arttı ve vakaların %72'sinde neden, şifrelemenin olmaması veya yanlış kullanılmasıydı. Modern mobil platformlar, şifreleme için yerleşik API'ler sağlar ve bunların kullanımı zorunlu bir güvenlik standardıdır. Statista, 2024

Önemli Noktalar

  • Şifreleme — verilerin okunamaz bir forma dönüştürülmesi, yalnızca bir şifre çözme anahtarıyla geri alınabilir.
  • Simetrik şifreleme şifreleme ve şifre çözme için tek bir anahtar kullanır — hızlıdır, ancak anahtarın güvenli bir şekilde iletilmesini gerektirir.
  • Asimetrik şifreleme bir çift anahtar (açık ve özel) kullanır — daha güvenlidir, ancak simetrik olandan daha yavaştır.
  • AES-256 — simetrik şifrelemenin altın standardı, NIST tarafından önerilir ve Android ile iOS'ta kullanılır.
  • Uçtan uca şifreleme verilerin sunucu tarafından bile erişilemez olmasını sağlar — yalnızca gönderen ve alan okuyabilir.

Mobil uygulamalarda şifreleme nedir?

Mobil uygulamalar bağlamında şifreleme, cihazda depolanan verileri (data at rest) ve ağ üzerinden iletilen verileri (data in transit) korumak için kriptografik algoritmaların uygulanmasıdır. Cihaz düzeyinde, yerel depolama şifrelenir: dosyalar, veritabanları, SharedPreferences ve önbellek. Ağ düzeyinde, uygulama ile sunucu arasındaki trafik TLS/HTTPS protokolleri aracılığıyla şifrelenir. Nihai hedef, cihaza fiziksel erişim veya trafiğin ele geçirilmesi durumunda bile, bir saldırganın kriptografik anahtar olmadan korunan verileri okuyamamasını sağlamaktır.

Mobil uygulamalarda şifreleme neden gereklidir

Mobil cihazlar veri kaybına karşı özellikle savunmasızdır: bir telefon kolayca kaybolabilir, çalınabilir veya kötü amaçlı yazılım bulaşabilir. Ponemon Institute'a (2023) göre, veri ihlallerinden etkilenen şirketlerin %42'si olayları mobil cihazlara bağlamaktadır. Şifreleme olmadan, bir saldırgan USB aracılığıyla cihaza bağlanabilir, SQLite veritabanını çıkarabilir ve depolanan tüm verileri okuyabilir. Şifreleme bu sorunu çözer: veritabanı çıkarılsa bile, içeriği şifreli kalır. Ayrıca, ABD ve AB'de kişisel verilerin şifrelenmesini zorunlu kılan ve ihlaller için yıllık cironun %4'üne kadar para cezası uygulayan yasalar (GDPR, CCPA) bulunmaktadır. Şifreleme kullanımı, kullanıcı verileriyle çalışan herhangi bir mobil uygulama için yalnızca teknik bir gereklilik değil, aynı zamanda yasal bir zorunluluktur.

Simetrik ve asimetrik şifreleme

Tüm şifreleme algoritmaları iki ana türe ayrılır: simetrik (şifreleme ve şifre çözme için tek anahtar) ve asimetrik (bir çift anahtar — açık ve özel). Türün seçimi kullanım senaryosuna bağlıdır: yerel verileri şifrelemek için genellikle hızları nedeniyle simetrik algoritmalar kullanılırken, anahtar değişimi ve kimlik doğrulama için asimetrik algoritmalar kullanılır.

ÖzellikSimetrikAsimetrik
Anahtar sayısı1 (gizli)2 (açık + özel)
HızYüksek (1–10 GB/s)Düşük (1–10 MB/s)
Anahtar dağıtımıSorunlu — anahtar iletilmelidirBasit — açık anahtar yayınlanır
ÖrneklerAES, ChaCha20RSA, ECDH, ECIES
Mobil geliştirmede kullanımYerel veri şifrelemeAnahtar değişimi, dijital imzalar

Pratikte, mobil uygulamalarda karma şifreleme kullanılır: asimetrik bir algoritmayla (örneğin ECDH) taraflar bir oturum anahtarı değiş tokuş eder ve sonraki tüm veriler simetrik bir algoritmayla (AES veya ChaCha20) şifrelenir. Bu yaklaşım, simetrik şifrelemenin hızını asimetrik anahtar değişiminin güvenliğiyle birleştirir. Bu yöntem, TLS 1.3, Signal Protocol ve Apple iMessage'ın temelini oluşturur.

Başlıca şifreleme algoritmaları

Modern mobil geliştirme, her biri belirli görevler için tasarlanmış ve kendi uygulama alanına sahip birkaç standartlaştırılmış şifreleme algoritması kullanır.

  • AES (Advanced Encryption Standard) — 2001 yılında NIST tarafından onaylanmış simetrik blok şifreleme. 128, 192 veya 256 bit anahtarlar kullanır. Önerilen mod, kimliği doğrulanmış şifreleme sağlayan GCM'dir (Galois/Counter Mode). AES-256, Android Keystore, iOS Keychain ve tüm modern TLS protokollerinde kullanılır.
  • ChaCha20-Poly1305 — Daniel Bernstein tarafından geliştirilmiş simetrik akış şifreleme. AES-256 ile aynı güvenlik seviyesini sağlar ancak donanım AES hızlandırması olmayan cihazlarda (tipik olarak düşük bütçeli Android akıllı telefonlar) daha hızlı çalışır. ChaCha20, TLS 1.3'te AES-GCM'ye alternatif olarak kullanılır ve Signal Protocol'deki birincil şifrelemedir.
  • RSA (Rivest-Shamir-Adleman) — anahtar şifreleme ve dijital imzalar için kullanılan asimetrik algoritma. Önerilen minimum anahtar boyutu 2048 bittir. RSA, ECDH'den daha yavaştır, bu nedenle modern mobil uygulamalarda yerini eliptik eğri kriptografisine (ECC) bırakmaktadır.
  • ECDH (Elliptic Curve Diffie-Hellman) — eliptik eğrilere dayalı asimetrik anahtar değişim protokolü. Perfect Forward Secrecy sağlar ve TLS 1.3'te varsayılan olarak kullanılır. Curve25519 (X25519) eğrisi mobil uygulamalarda en yaygın olanıdır.

Şifreleme kullanıcı verilerini nasıl korur

Şifreleme verileri üç temel senaryoda korur: cihaz kaybı (disk ve uygulama kapsayıcı şifrelemesi), trafik ele geçirme (TLS/HTTPS ağ protokolleri) ve sunucu sızıntısı (uçtan uca şifreleme). Her senaryo kendi yaklaşımını ve araçlarını gerektirir.

Bekleyen veriler ve iletilen veriler

Bekleyen veriler — cihazdaki veriler — Android Keystore ve iOS Keychain aracılığıyla şifrelenir. Android 7.0'dan itibaren dosya tabanlı şifreleme (File-Based Encryption) kullanılır ve uygulamalar, AndroidX Security kitaplığından EncryptedSharedPreferences ve EncryptedFile aracılığıyla verilerini ek olarak şifreleyebilir. iOS'ta, tüm uygulamalar varsayılan olarak Data Protection API ile çalışır ve dosyaları, cihaz şifresiyle bağlantılı bir anahtarla dosya sistemi düzeyinde şifreler. İletilen veriler için zorunlu Certificate Pinning ile TLS 1.2/1.3 kullanılır.

Uçtan uca şifreleme

Uçtan uca şifreleme (E2E), bir mesajın gönderenin cihazında şifrelendiği ve yalnızca alıcının cihazında çözüldüğü en yüksek veri koruma seviyesidir. Depolama ve iletim sunucusunun içeriğe erişimi yoktur — yalnızca şifrelenmiş bloblarla işlem yapar. Mobil uygulamalar için en bilinen E2E uygulaması, ilk anahtar değişimi için X3DH (Extended Triple Diffie-Hellman) ile birlikte Double Ratchet Algorithm kullanan Signal Protocol'dür. Signal Protocol, Perfect Forward Secrecy ve future secrecy sağlar: bir anahtarın ele geçirilmesi önceki veya sonraki mesajları ortaya çıkarmaz. Carnegie Mellon Üniversitesi'nin (2023) bir araştırmasına göre, mesajlaşma uygulamalarında E2E şifreleme, yalnızca TLS şifrelemesine kıyasla iletişim sızıntısı riskini %99,7 oranında azaltır. GDPR ve HIPAA gerekliliklerine göre Health & Fitness ve Finance kategorilerindeki uygulamalar için E2E kullanımı zorunludur. Kendi projenizde E2E uygulamak için Signal Protocol kitaplığını (Java/Swift) veya Olm (Matrix protokolü) tabanlı bir kitaplığı kullanmanız önerilir. Bir E2E çözümü seçerken platform uyumluluğunu değerlendirin: Signal Protocol, eşzamansız gönderme ve istemcide anahtar depolama desteği gerektirir, bu da çoklu cihaz senaryolarını karmaşık hale getirir — bu gibi durumlarda, oda modeliyle Matrix Protocol daha iyi bir seçim olabilir.

Mobil uygulamalarda şifreleme uygulaması

Android'de Jetpack Security (AndroidX Security) kullanarak veri şifreleme ve şifre çözme örneğine bakalım. Kitaplık, dosya şifreleme için EncryptedFile ve ayarlar için EncryptedSharedPreferences sağlar.

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 kullanılarak oluşturulur — en güvenli simetrik şifreleme modu. Anahtar, ana süreçten izole edilmiş Android Keystore'da saklanır: uygulama ele geçirilse bile, bir saldırgan anahtarı çıkaramaz. EncryptedFile, anahtar türetme için HKDF ile AES-256-GCM şeması ve 4KB sayfa boyutu kullanarak hız ve güvenlik arasında iyi bir denge sağlar. Verileri okumak için aynı parametrelerle openFileInput kullanılır: kitaplık, okuma sırasında verileri otomatik olarak çözer.

iOS'ta, AES.GCM veya ChaChaPoly kullanarak CryptoKit (Swift) aracılığıyla benzer işlevsellik sağlanır. Anahtar, Keychain Services aracılığıyla Secure Enclave'de saklanır. İlke aynıdır: anahtarlar güvenli donanım deposunu asla terk etmez ve veriler diske yazılmadan önce şifrelenir. Bu mimari, hassas verilerle çalışan uygulamalar için OWASP MASVS (Mobile Application Security Verification Standard) Seviye L2 önerilerine uygundur. Gerçek projelerde, tokenlar için EncryptedSharedPreferences ve kullanıcı verileri için EncryptedFile kombinasyonu, yerel şifreleme senaryolarının %100'ünü kapsar. Ayrıca, sunucudan alınan anahtarlarla (örneğin ECDH oturum anahtarları) çalışmak için, purpose = KeyProperties.PURPOSE_ENCRYPT parametresiyle Android KeyStore kullanılır; bu, anahtarın yalnızca yetkili kriptografik işlemler için kullanılabilmesini ve donanım deposundan RAM'e düz metin olarak asla dışa aktarılmamasını sağlar.

Sıkça sorulan sorular

Mobil uygulamalar için en güvenilir şifreleme hangisidir?

GCM modunda AES-256, anahtarın donanım deposunda (Android Keystore / iOS Keychain) saklanmasıyla altın standart olarak kabul edilir. Ağ trafiği için — Curve25519 eliptik eğrisiyle TLS 1.3. ChaCha20-Poly1305, donanım AES'i olmayan cihazlarda alternatif olarak kullanılır.

AES ve RSA arasındaki fark nedir?

AES simetrik bir algoritmadır (tek anahtar), hızlıdır, büyük hacimli verileri şifrelemek için uygundur. RSA asimetriktir (anahtar çifti), yavaştır, veriler için değil anahtar şifreleme ve imzalar için kullanılır. Mobil uygulamalarda AES verileri şifreler, RSA anahtarları korur.

Uygulamadaki tüm verileri şifrelemek gerekli midir?

Gizli verileri şifrelemek gerekir: erişim tokenları, parolalar, kişisel bilgiler, ödeme verileri, tıbbi kayıtlar. Kamuya açık veriler (görseller, içerik) şifrelenmeden kalabilir, ancak bunları uygulamanın korumalı kapsayıcısında saklamak daha iyidir.

Mobil cihazlarda uçtan uca şifreleme nasıl çalışır?

Uçtan uca şifrelemede, veriler gönderilmeden önce gönderenin cihazında şifrelenir ve yalnızca alıcının cihazında çözülür. Sunucu yalnızca şifrelenmiş verileri görür. Signal Protocol'de uygulanan Double Ratchet protokolü, mobil mesajlaşma uygulamalarında en yaygın E2E mekanizmasıdır.

Cihazdaki veriler ve ağ için aynı şifreleme kullanılabilir mi?

Teknik olarak mümkün, ancak önerilmez. Cihazdaki veriler için Keystore'dan bir anahtarla simetrik şifreleme (AES-GCM) kullanın. Ağ için ayrı bir anahtar seti ve Certificate Pinning ile TLS 1.3 kullanın. Ayrım, bir anahtar sızdırıldığında her iki kanalın da ele geçirilmesini önler.

Özet

  • Şifreleme — mobil uygulamalar için zorunlu bir güvenlik öğesidir, verileri beklerken ve iletilirken korur.
  • AES-256 GCM, NIST tarafından tüm veri türleri için önerilen simetrik şifreleme standardıdır.
  • Karma şifreleme (ECDH + AES), simetrik yaklaşımın hızını asimetrik yaklaşımın güvenliğiyle birleştirir.
  • Android Keystore ve iOS Keychain, kriptografik malzemeyi uygulamadan izole eden donanım anahtar depolarıdır.
  • Bekleyen veriler, EncryptedSharedPreferences ve EncryptedFile (Android) veya Data Protection API (iOS) aracılığıyla şifrelenir.
  • İletilen veriler, TLS 1.3, Certificate Pinning ve Perfect Forward Secrecy ile korunur.
  • Öneri: Donanım deposundaki anahtarlarla Jetpack Security (Android) veya CryptoKit (iOS) aracılığıyla tüm gizli verileri şifreleyin.

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun