Android'deki kimlik doğrulama sisteminizi korumak için özellikle kullanıcılarınızın banka ve e-posta hesapları gibi hassas hesaplarda şifre tabanlı modelden uzaklaşmayı düşünebilirsiniz. Kullanıcılarınızın yüklediği bazı uygulamaların iyi niyetli olmayabileceğini ve kullanıcılarınızın kimliklerini çalmaya çalışabileceğini unutmayın.
Ayrıca, cihazı yalnızca yetkili kullanıcıların kullanacağını varsaymayın. Telefon hırsızlığı yaygın bir sorundur ve saldırganlar, kullanıcı verilerinden veya finansal uygulamalardan doğrudan kâr elde etmek için kilidi açık cihazları hedef alır. Tüm hassas uygulamaların biyometrik doğrulama ile makul bir kimlik doğrulama zaman aşımı (15 dakika?) uygulaması ve para transferi gibi hassas işlemlerden önce ek kimlik doğrulama gerektirmesi önerilir.
Biyometrik kimlik doğrulama iletişim kutusu
Biyometri kitaplığı, yüz tanıma veya parmak izi tanıma gibi biyometrik kimlik doğrulama isteyen bir istem görüntülemek için bir dizi işlev sunar. Ancak biyometrik istemler, bilinen omuz üzerinden izleme riskleri olan LSKF'ye geri dönecek şekilde yapılandırılabilir. Hassas uygulamalarda, biyometrik doğrulama başarısız olduğunda PIN'e geri dönülmemesini öneririz. Biyometrik doğrulama denemeleri tükendikten sonra kullanıcılar bekleyebilir, şifreyle yeniden giriş yapabilir veya hesapları sıfırlayabilir. Hesap sıfırlama işlemi için cihazda kolayca erişilemeyen faktörler gereklidir (en iyi uygulama aşağıda verilmiştir).
Bu özellik, sahtekarlığı ve telefon hırsızlığını azaltmaya nasıl yardımcı olur?
Sahtekarlığı önlemeye yardımcı olabilecek belirli bir kullanım alanı, işlemden önce uygulamanızda biyometrik kimlik doğrulama istemektir. Kullanıcılarınız finansal işlem yapmak istediğinde, işlemi yapanın gerçekten amaçlanan kullanıcı olduğunu doğrulamak için biyometrik iletişim kutusu gösterilir. Bu en iyi uygulama, saldırganın LSKF'yi bilip bilmediğine bakılmaksızın cihazı çalmasını engeller. Saldırganın cihazın sahibi olduğunu kanıtlaması gerekir.
Ek güvenlik düzeyleri için uygulama geliştiricilerin 3. Sınıf
Biyometrik Kimlik Doğrulama isteğinde bulunmasını ve bankacılık ile
finansal işlemler için CryptoObject
kullanmasını öneririz.
Uygulama
- androidx.biometric kitaplığını eklediğinizden emin olun.
- Biyometrik giriş iletişim kutusunu, kullanıcının kimliğinin doğrulanmasını istediğiniz mantığı içeren etkinlik veya parçaya ekleyin.
Kotlin
private var executor: Executor? = null private var biometricPrompt: BiometricPrompt? = null private var promptInfo: BiometricPrompt.PromptInfo? = null fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_login) executor = ContextCompat.getMainExecutor(this) biometricPrompt = BiometricPrompt(this@MainActivity, executor, object : AuthenticationCallback() { fun onAuthenticationError( errorCode: Int, @NonNull errString: CharSequence ) { super.onAuthenticationError(errorCode, errString) Toast.makeText( getApplicationContext(), "Authentication error: $errString", Toast.LENGTH_SHORT ) .show() } fun onAuthenticationSucceeded( @NonNull result: BiometricPrompt.AuthenticationResult? ) { super.onAuthenticationSucceeded(result) Toast.makeText( getApplicationContext(), "Authentication succeeded!", Toast.LENGTH_SHORT ).show() } fun onAuthenticationFailed() { super.onAuthenticationFailed() Toast.makeText( getApplicationContext(), "Authentication failed", Toast.LENGTH_SHORT ) .show() } }) promptInfo = Builder() .setTitle("Biometric login for my app") .setSubtitle("Log in using your biometric credential") .setNegativeButtonText("Use account password") .build() // Prompt appears when user clicks "Log in". // Consider integrating with the keystore to unlock cryptographic operations, // if needed by your app. val biometricLoginButton: Button = findViewById(R.id.biometric_login) biometricLoginButton.setOnClickListener { view -> biometricPrompt.authenticate( promptInfo ) } }
Java
private Executor executor; private BiometricPrompt biometricPrompt; private BiometricPrompt.PromptInfo promptInfo; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); executor = ContextCompat.getMainExecutor(this); biometricPrompt = new BiometricPrompt(MainActivity.this, executor, new BiometricPrompt.AuthenticationCallback() { @Override public void onAuthenticationError(int errorCode, @NonNull CharSequence errString) { super.onAuthenticationError(errorCode, errString); Toast.makeText(getApplicationContext(), "Authentication error: " + errString, Toast.LENGTH_SHORT) .show(); } @Override public void onAuthenticationSucceeded( @NonNull BiometricPrompt.AuthenticationResult result) { super.onAuthenticationSucceeded(result); Toast.makeText(getApplicationContext(), "Authentication succeeded!", Toast.LENGTH_SHORT).show(); } @Override public void onAuthenticationFailed() { super.onAuthenticationFailed(); Toast.makeText(getApplicationContext(), "Authentication failed", Toast.LENGTH_SHORT) .show(); } }); promptInfo = new BiometricPrompt.PromptInfo.Builder() .setTitle("Biometric login for my app") .setSubtitle("Log in using your biometric credential") .setNegativeButtonText("Use account password") .build(); // Prompt appears when the user clicks "Log in". // Consider integrating with the keystore to unlock cryptographic operations, // if needed by your app. Button biometricLoginButton = findViewById(R.id.biometric_login); biometricLoginButton.setOnClickListener(view -> { biometricPrompt.authenticate(promptInfo); }); }
En iyi uygulamalar
Biyometri hakkında daha fazla bilgi edinmek için codelab ile başlamanızı öneririz.
Kullanım alanlarınıza bağlı olarak iletişim kutusunu açık kullanıcı işlemiyle veya bu işlem olmadan uygulayabilirsiniz. Sahtekarlığı önlemek için her işlemde açık kullanıcı işlemiyle birlikte biyometrik iletişim kutusunu eklemenizi öneririz. Kimlik doğrulama eklemenin kullanıcı deneyiminde sorunlara yol açabileceğinin farkındayız. Ancak banka işlemlerinde işlenen bilgilerin niteliği ve biyometrik kimlik doğrulamanın diğer kimlik doğrulama yöntemlerine göre daha sorunsuz olması nedeniyle bu gezinme düzeyinin eklenmesinin gerekli olduğunu düşünüyoruz.
Biyometrik kimlik doğrulama hakkında daha fazla bilgi edinin.
Geçiş anahtarları
Geçiş anahtarları, şifrelere kıyasla daha güvenli ve kolay bir alternatiftir. Geçiş anahtarları, kullanıcılarınızın uygulamalarda ve web sitelerinde oturum açmak için cihazlarının ekran kilidi mekanizmasını (ör. parmak izi veya yüz tanıma) kullanmasını sağlamak üzere açık anahtarlı şifreleme kullanır. Bu sayede kullanıcılar şifreleri hatırlamak ve yönetmek zorunda kalmaz. Ayrıca güvenlik önemli ölçüde artar.
Geçiş anahtarları, çok öğeli kimlik doğrulama şartlarını tek bir adımda karşılayabilir. Hem şifrenin hem de OTP kodlarının yerini alarak kimlik avı saldırılarına karşı güçlü koruma sağlar ve SMS veya uygulama tabanlı tek kullanımlık şifrelerin kullanıcı deneyiminde neden olduğu sorunları önler. Geçiş anahtarları standartlaştırıldığından tek bir uygulama, kullanıcıların tüm cihazlarında, tarayıcılarında ve işletim sistemlerinde şifresiz deneyim sağlar.
Android'de geçiş anahtarları, geçiş anahtarları, şifreler ve federasyon oturum açma (ör. Google ile oturum açma) dahil olmak üzere başlıca kimlik doğrulama yöntemlerini birleştiren Credential Manager Jetpack kitaplığı kullanılarak desteklenir.
Bu özellik, sahtekarlığı azaltmaya nasıl yardımcı olur?
Şifre anahtarları yalnızca kayıtlı uygulamalarınızda ve web sitelerinizde çalıştığından sizi kimlik avı saldırılarına karşı korur.
Geçiş anahtarının temel bileşeni, şifreleme özel anahtarıdır. Genellikle bu özel anahtar yalnızca dizüstü bilgisayar veya cep telefonu gibi cihazlarınızda bulunur ve Google Şifre Yöneticisi gibi kimlik bilgisi sağlayıcılar (şifre yöneticileri olarak da bilinir) tarafından cihazlarınız arasında senkronize edilir. Geçiş anahtarı oluşturulduğunda online hizmet tarafından yalnızca ilgili ortak anahtar kaydedilir. Hizmet, giriş sırasında ortak anahtardan gelen bir sorguyu imzalamak için özel anahtarı kullanır. Bu işlem yalnızca cihazlarınızdan birinde başlatılabilir. Ayrıca, bu durumun gerçekleşmesi için cihazınızın veya kimlik bilgisi deponuzun kilidini açmanız gerekir. Bu sayede yetkisiz oturum açma işlemleri (ör. çalınan bir telefondan) engellenir.
Çalınan ve kilidi açılmış bir cihazda yetkisiz erişimi önlemek için geçiş anahtarları, makul bir kimlik doğrulama zaman aşımı penceresiyle eşleştirilmelidir. Bir cihazı çalan saldırgan, yalnızca önceki kullanıcı oturum açtığı için uygulamayı kullanamamalıdır. Bunun yerine, kimlik bilgileri düzenli aralıklarla (ör. her 15 dakikada bir) sona ermeli ve kullanıcıların ekran kilidi yeniden kimlik doğrulaması yoluyla kimliklerini doğrulamaları zorunlu olmalıdır.
Telefonunuz çalınırsa geçiş anahtarları sizi korur. Çünkü hırsızlar, diğer cihazlarda kullanmak için şifrelerinizi çalamaz. Geçiş anahtarları cihaza özeldir. Google Şifre Yöneticisi'ni kullanıyorsanız ve telefonunuz çalınırsa Google Hesabınıza başka bir cihazdan (ör. bilgisayar) giriş yapabilir ve çalınan telefonda oturumunuzu uzaktan kapatabilirsiniz. Bu işlem, çalınan telefondaki Google Şifre Yöneticisi'ni (kayıtlı geçiş anahtarları dahil) kullanılamaz hâle getirir.
En kötü senaryoda, çalınan cihaz kurtarılamazsa geçiş anahtarları, geçiş anahtarını oluşturan ve senkronize eden kimlik bilgisi sağlayıcı tarafından yeni cihazla tekrar senkronize edilir. Örneğin, kullanıcı geçiş anahtarı oluşturmak için Google Şifre Yöneticisi'ni seçmiş olabilir. Google Hesabı'nda yeniden oturum açıp önceki cihazdaki ekran kilidini sağlayarak yeni bir cihazda geçiş anahtarına erişebilir.
Daha fazla bilgi için Google Şifre Yöneticisi'nde Geçiş Anahtarlarının Güvenliği başlıklı makaleyi inceleyin.
Uygulama
Geçiş anahtarları, Android 9 (API düzeyi 28) veya sonraki sürümleri çalıştıran cihazlarda desteklenir. Şifreler ve Google ile oturum açma özelliği Android 4.4'ten itibaren desteklenir. Şifre anahtarlarını kullanmaya başlamak için aşağıdaki adımları uygulayın:
- Geçiş anahtarlarını nasıl uygulayacağınızla ilgili temel bilgileri edinmek için Credential Manager codelab'ini inceleyin.
- Geçiş anahtarı kullanıcı deneyimi tasarım yönergelerini inceleyin. Bu dokümanda, kullanım alanınız için hangi akışların önerildiği gösterilmektedir.
- Kılavuzu inceleyerek Kimlik Bilgisi Yöneticisi hakkında bilgi edinin.
- Uygulamanız için Kimlik Bilgisi Yöneticisi ve geçiş anahtarları uygulamanızı planlayın. Digital Asset Links desteği eklemeyi planlayın.
Geçiş anahtarlarıyla oluşturma, kaydetme ve kimlik doğrulama hakkında daha fazla bilgi için geliştirici dokümanlarımıza bakın.
Hesabın güvenliğini sağlama ve sıfırlama
Kilidi açık bir cihaza (ör. telefon çalındığında) erişimi olan yetkisiz bir saldırgan, hassas uygulamalara (özellikle bankacılık veya nakit uygulamaları) erişmeye çalışır. Uygulama biyometrik doğrulama kullanıyorsa saldırgan, hesaba girmek için sıfırlamayı dener. Hesap sıfırlama akışının yalnızca cihazda kolayca erişilebilen bilgilere (ör. e-posta veya SMS OTP sıfırlama bağlantıları) dayanmaması gerekir.
Uygulamanızın sıfırlama akışına dahil edebileceğiniz yaygın en iyi uygulamalar aşağıda verilmiştir:
- OTP'ye ek olarak yüz tanıma
- Güvenlik soruları
- Bilgi faktörü (ör. annenin evlenmeden önceki soyadı, doğum yeri veya en sevdiği şarkı)
- Kimlik doğrulama
SMS Retriever API
SMS Retriever API, Android uygulamanızda SMS'e dayalı kullanıcı doğrulamasını otomatik olarak gerçekleştirmenize olanak tanır. Bu sayede kullanıcının doğrulama kodlarını manuel olarak girmesi gerekmez. Ayrıca bu API, kullanıcıdan RECEIVE_SMS
veya READ_SMS
gibi ek ve tehlikeli olabilecek uygulama izinleri istemez. Ancak SMS, cihaza yetkisiz yerel erişime karşı koruma sağlamak için tek kullanıcı doğrulaması olarak kullanılmamalıdır.
Bu özellik, sahtekarlığı azaltmaya nasıl yardımcı olur?
Bazı kullanıcılar, tek kimlik doğrulama faktörü olarak SMS kodlarını kullanır. Bu durum, dolandırıcılık için kolay bir giriş noktası sağlar.
SMS Retriever API, uygulamanın SMS kodunu kullanıcı etkileşimi olmadan doğrudan almasına olanak tanır ve sahtekarlığa karşı bir koruma düzeyi sağlayabilir.
Uygulama
SMS Retriever API'yi uygulama işlemi iki bölümden oluşur: Android ve Sunucu.
Android: (rehber)
- Kullanıcının telefon numarasını alma
- SMS Retriever istemcisini başlatın.
- Telefon numarasını sunucunuza gönderin.
- Doğrulama mesajları alma
- OTP'yi sunucunuza gönderin.
Sunucu: (rehber)
- Doğrulama mesajı oluşturun.
- Doğrulama mesajını SMS ile gönderin.
- Döndürüldüğünde OTP'yi doğrulayın.
En iyi uygulamalar
Uygulama entegre edildikten ve kullanıcının telefon numarası SMS Retriever API ile doğrulandıktan sonra OTP'yi almaya çalışır. Bu işlem başarılı olursa SMS'in cihazda otomatik olarak alındığına dair güçlü bir sinyal verilir. Başarılı olmazsa ve kullanıcının OTP'yi manuel olarak girmesi gerekirse bu, kullanıcının sahtekarlıkla karşı karşıya kalmış olabileceğine dair bir uyarı işareti olabilir.
SMS, kilidi açılmış bir cihazı çalan saldırgan veya SIM klonlama saldırıları gibi yerel saldırılara karşı açık kapı bıraktığı için tek kullanıcı doğrulama mekanizması olarak kullanılmamalıdır. Mümkün olduğunda biyometri kullanılması önerilir. Biyometrik sensörlerin bulunmadığı cihazlarda kullanıcı kimlik doğrulaması, mevcut cihazdan kolayca elde edilemeyen en az bir faktöre dayanmalıdır.
Daha fazla bilgi
En iyi uygulamalar hakkında daha fazla bilgi edinmek için aşağıdaki kaynaklara göz atın:
- Güvenlikle ilgili Android dokümanlarımız
- Play Integrity API dokümanları
- Android 15'teki Değişiklikler
- Monzo Bank'ın Dolandırıcılık Amaçlı Arama Önleme Konusundaki En İyi Uygulamaları