Android Uygulamalarında Veri Şifreleme: Jetpack Security ile Daha Güvenli Uygulamalar

Mert Melih Aytemur
Appcent
Published in
2 min readSep 13, 2023

--

Android uygulamalarında hassas verileri güvenli bir şekilde saklamak her zaman önemlidir. Bu yazıda, Jetpack Securitykütüphanesini kullanarak Android uygulamalarında verilerin nasıl şifreleneceğini ve şifresinin nasıl çözüleceğini göstereceğiz.

Hadi başlayalım!

Android Jetpack Security Kütüphanesi Nedir?

Android Jetpack Security kütüphanesi, Android uygulamalarının hassas verilerini daha güvenli bir şekilde saklamak için kullanılan bir araçtır. Bu kütüphane, veri şifreleme ve şifre çözme işlemlerini kolaylaştırmak ve güvenlik önlemlerini artırmak amacıyla geliştirilmiştir. İşte Jetpack Security kütüphanesinin bazı temel özellikleri:

  1. Veri Şifreleme: Jetpack Security, verilerinizi güçlü bir şekilde şifrelemek için kullanabilir. Bu sayede, verilerinizin yetkisiz erişimden korunmasını sağlayabilirsiniz.
  2. Hassas Verilerin Güvende Tutulması: Uygulamanızda sakladığınız kullanıcı şifreleri, API anahtarları veya diğer hassas bilgileri Jetpack Security ile güvende tutabilirsiniz. Bu veriler, şifresiz bir şekilde depolanmaz ve kötü niyetli kullanıcılardan korunur.
  3. Geliştirici Dostu: Jetpack Security kütüphanesi, geliştiriciler için kullanımı kolaydır. Android Jetpack bileşenleri ile uyumlu çalışır ve uygulamanızın performansını olumsuz etkilemez.
  4. Özelleştirilebilirlik: Kütüphane, şifreleme algoritmalarını ve anahtar yönetimini özelleştirmenize olanak tanır. Bu, uygulamanızın güvenlik gereksinimlerine göre ayarlanabilir.

Peki, Jetpack Security kütüphanesi kullanarak Android uygulamanızda veri şifrelemeyi nasıl başlatabilirsiniz?

(Bu senaryoda shared preferences ile lokalde tuttuğumuz verileri şifreleyeceğiz)

Kütüphane Eklemek:

İlk adım olarak, uygulamanıza Jetpack Security kütüphanesini eklemeniz gerekecektir. Bu kütüphane, Android Jetpack kütüphaneleri içinde bulunur, bu yüzden Gradle dosyanıza gerekli bağımlılığı eklemelisiniz.

implementation "androidx.security:security-crypto:x.y.z"

Anahtar Oluşturmak ve Yönetmek:

Verilerinizi şifrelemek ve çözmek için bir anahtar oluşturmanız gerekecektir. Jetpack Security, bu anahtarların güvenli bir şekilde yönetilmesini sağlar.

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

Verileri kaydetmek ve kullanmak için EncryptedSharedPreferences sınıfını kullanarak bir sharedPreferences nesnesi yaratalım.

EncryptedSharedPreferences

SharedPreferences sınıfını sarmalar ve otomatik olarak anahtarları ve değerleri iki aşamalı bir yöntem kullanarak şifreler:

-Anahtarlar (Key), anahtar şifrelemesi algoritması kullanılarak öyle bir şekilde şifrelenir ki anahtar şifrelenebilir ve doğru bir şekilde aranabilir.

-Değerler (Value), AES-256 GCM kullanılarak şifrelenir.

val sharedPreferences = EncryptedSharedPreferences.create(
context,
PREFS_NAME,
masterKeyAlias,
EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
)

Context değerini bu yapıyı kullanacağınız ilgili sınıfa constructor injection ile verebilirsiniz.

Şimdi örnek olarak bir bu verileri yöneteceğimiz bir class ve şifreleyeceğimiz bir token oluşturalım.

class ClientPreferences @Inject constructor(
@ApplicationContext context: Context) {

private val masterKeyAlias = MasterKey.Builder(context)
.setKeyScheme(MasterKey.KeyScheme.AES256_GCM)
.build()

private val sharedPreferences = EncryptedSharedPreferences.create(
context,
PREFS_NAME,
masterKeyAlias,
EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
)

fun setToken(token: String) {
sharedPreferences.edit().putString(KEY_TOKEN, token).apply()
}

fun getToken(): String? {
return sharedPreferences.getString(KEY_TOKEN, null)
}

companion object {
private const val PREFS_NAME = "user_prefs"
private const val KEY_TOKEN = "token"
}
}

Tebrikler, artık Jetpack Security kütüphanesi sayesinde Android uygulamanızdaki hassas verileri güvende tutabilirsiniz. Bu kütüphaneyi kullanarak veri şifrelemeyi ve çözmeyi öğrenerek uygulamanızın güvenliğini artırabilirsiniz.

Okuduğunuz için teşekkür ederim. İyi çalışmalar.

--

--