Güvenli kullanıcı kimlik doğrulaması

Android'de kimlik doğrulama sisteminizi korumak için özellikle kullanıcılarınızın hesapları gibi hassas hesaplarda, şifre tabanlı modeli banka ve e-posta hesapları. Kullanıcılarınızın yüklediği bazı uygulamalarda kullanıcılarınızı kimlik avına maruz bırakmaya çalışabilir.

Ayrıca, cihazı yalnızca yetkili kullanıcıların kullanacağını da varsaymayın. Telefon hırsızlığı yaygın bir sorundur ve saldırganlar, kilidi açılmış cihazları doğrudan kâr etmek için hedef alır kullanıcı verilerinden veya finansal uygulamalardan. Tüm hassas uygulamaların, mobil cihazlarda biyometrik doğrulama ile makul kimlik doğrulama zaman aşımı (15 dakika) ve para gibi hassas işlemlerden önce ek kimlik doğrulaması yapılmasını gerektirir aktarım.

Biyometrik kimlik doğrulama iletişim kutusu

Biyometri kitaplığı, şu istekte bulunan bir istemi görüntülemek için bir dizi işlev sunar: yüz tanıma veya parmak izi tanıma gibi biyometrik kimlik doğrulama Ancak biyometrik istemler, LSKF'ye geçiş yapacak şekilde yapılandırılabilir. bilinen omuz sörfü riskleri hakkında daha fazla bilgi edinin. Hassas uygulamalar için şunları öneririz: biyometrinin PIN'e geri dönmesini önlemek ve biyometrik yeniden denemeleri tükettikten sonra Kullanıcılar bekleyebilir veya şifreyle yeniden giriş yapabilir ya da hesaplarını sıfırlayabilirler. Hesap sıfırlandı cihazda kolayca erişilemeyen faktörlerin gerekli olması gerekir (en iyi uygulama bölümüne bakın).

Bu yöntem, sahtekarlık ve telefon hırsızlığını azaltmaya nasıl yardımcı olur?

Sahtekarlığı önlemede yardımcı olabilecek özel kullanım alanlarından biri, bir işlemden önce uygulamanızda biyometrik kimlik doğrulama. Kullanıcılarınız ticari bir işlem yapmak istiyorsanız biyometrik iletişim kutusu işlemi yapan kişinin gerçekten de amaçlanan kullanıcı olduğunu doğrulamalıdır. Bu bir saldırganın, cihazı saldırıya uğramasını önlemek için saldırganın LSKF'yi bildiği veya bilmediği için cihazın sahibi olabiliyor.

Daha fazla güvenlik düzeyi için uygulama geliştiricilerin 3. Sınıfı istemesini öneririz Biyometrik kimlik doğrulama ve bankacılık ve işlemler için CryptoObject'i kullanma mali işlemler için geçerlidir.

Uygulama

  1. androidx.biometric kitaplığını eklediğinizden emin olun.
  2. Biyometrik giriş iletişim kutusunu içeren etkinlik veya parçaya kullanıcının kimliğinin doğrulanmasını istediğiniz mantığı kullanın.

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 birlikte veya açık kullanıcı işlemi. Sahtekarlığı önlemek için biyometriyi eklemenizi öneririz Her işlem için kullanıcının açıkça yaptığı işlemleri gösteren iletişim kutusu. Google'ın Kimlik doğrulama eklemek, kullanıcı deneyiminde sorunlara neden olabilir. Ancak banka işleminde işlenen bilgileri ve söz konusu biyometri diğer kimlik doğrulama yöntemlerinden daha kolay olduğuna inandığımız için eklemek için gereklidir.

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çabilmesi için ortak anahtar kriptografisi Cihazının ekran kilidi mekanizmasını (parmak izi veya yüz gibi) kullanarak teşekkür ederiz. Böylece kullanıcı, şifrelerini hatırlamak ve yönetmek zorunda kalmaz ve büyük ölçüde iyileştirilmiş güvenlik sağlar.

Geçiş anahtarları, tek bir adımda çok öğeli kimlik doğrulama gereksinimlerini karşılayabilir. hem bir şifre hem de OTP kodlarını değiştirerek kimlik avı saldırılarından yararlanma ve tek seferlik SMS veya uygulama tabanlı kullanıcı deneyiminin sıkıntısını önleme şifreler. Geçiş anahtarları standart hale getirildiği için tek bir uygulama, tüm kullanıcıların şifresiz bir deneyim cihazlar, tarayıcılar ve işletim sistemleri.

Android'de geçiş anahtarları, Kimlik Bilgisi Yöneticisi Jetpack kullanılarak desteklenir geçiş anahtarları gibi kimlik doğrulama yöntemlerini ve ve birleşik oturum açma bilgilerini (ör. Google ile oturum açma) kullanabilir.

Bu yöntemle sahtekarlığın azaltılmasına nasıl yardımcı olur?

Geçiş anahtarları, yalnızca şuralarda işlev gördüğü için sizi kimlik avı saldırılarına karşı korur: kayıtlı uygulamalar ve web siteleri.

Geçiş anahtarının temel bileşeni, şifrelemeyle ilgili bir özel anahtardır. Genellikle bu bilgisayar veya cep telefonu gibi cihazlarınızın hepsinde bulunur. ve kimlik bilgisi sağlayıcıları (şifre yöneticileri gibi) gelen trafiktir. Yalnızca karşılık gelen ortak anahtar Şifre anahtarı oluşturulduğunda online hizmet tarafından kaydedilir. Giriş sırasında hizmet, ortak anahtardan bir sorgulama imzalamak için özel anahtarı kullanır. Bu yalnızca cihazlarınızdan birine erişim sağlayabilirsiniz. Ayrıca, bunun gerçekleşmesi için yetkisiz oturum açma işlemlerini önleyen, cihazınızın veya kimlik bilgisi deponuzun kilidini açın (örneğin, çalınmış bir telefondan).

Kilidi açılmış cihazın çalınması durumunda yetkisiz erişimi önlemek için geçiş anahtarları, geçerli bir kimlik doğrulama zaman aşımı penceresiyle birleştirilmelidir. cihazı çalan bir saldırgan, söz konusu uygulamayı sadece çünkü önceki kullanıcı giriş yapmıştı. Bunun yerine kimlik bilgileri kısa aralıklarla (örneğin, her 15 dakikada bir) sona erer ve kullanıcıların .

Telefonunuz çalınırsa geçiş anahtarları sizi korur. Çünkü hırsızlar şifrenizi çalamaz. diğer cihazlarda kullanılacak şifreler (Geçiş anahtarları) cihaza özeldir. Şunu kullanıyorsanız: Google Şifre Yöneticisi ve telefonunuz çalınırsa Google Hesabınıza giriş yapabilirsiniz. Başka bir cihazdaki (örneğin, bilgisayar) hesabınızı açın ve ilgili cihazda uzaktan çıkış yapın çalınmış. Bu işlem, çalıntı telefondaki Google Şifre Yöneticisi'nin kayıtlı geçiş anahtarları da dahil olmak üzere kullanılamaz.

En kötü senaryoda, çalınan cihaz kurtarılmazsa geçiş anahtarları oluşturulan ve senkronize edilen kimlik bilgisi sağlayıcısı tarafından yeni cihaza senkronize edildi. geçiş anahtarını kullanın. Örneğin, kullanıcı şu işlemler için Google Şifre Yöneticisi'ni seçmiş olabilir: geçiş anahtarını oluşturabilir. Bu kullanıcı, oturum açarak yeni bir cihazda geçiş anahtarına erişebilir. eski cihazdaki ekran kilidini açarak olanak tanır.

Daha fazla bilgi: Google Şifre Yöneticisi'ndeki geçiş anahtarlarının güvenliği makalesindeki bilgileri 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, Android 4.4'ten itibaren desteklenmektedir. Alıcı: geçiş anahtarlarını kullanmaya başlamak için şu adımları uygulayın:

  1. Geçiş anahtarlarını nasıl uygulayacağınızı ilk kez anlamak için Kimlik Bilgisi Yöneticisi codelab'ini izleyin.
  2. Geçiş anahtarları 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.
  3. Kılavuzdan yararlanarak Kimlik Bilgisi Yöneticisi'ni inceleyin.
  4. Kimlik Bilgisi Yöneticisi ve geçiş anahtarının uygulamanızda uygulanmasını planlayın. Dijital Öğe Bağlantıları için destek eklemeyi planlayın.

Oluşturma, kaydolma ve bu işlemleri nasıl yapacağınızla ilgili daha fazla bilgi için geliştirici belgelerimize geçiş anahtarı kullanın.

Güvenli hesap sıfırlama

Kilidi açılmış bir cihaza erişimi olan yetkisiz bir saldırgan (ör. bir telefon çalındığında), özellikle bankacılık veya nakit para uygulamaları olmak üzere hassas uygulamalara erişmeye çalışır. Uygulamada biyometrik doğrulama uygulanırsa saldırgan cihazı sıfırlamaya çalışır hesaba katması gerekir. Hesap sıfırlama akışının yalnızca e-posta veya SMS OTP gibi cihazda kolayca erişilebilen bilgiler sıfırlama bağlantıları.

Uygulamanızı sıfırlama işlemine dahil edebileceğiniz yaygın en iyi uygulamaları burada bulabilirsiniz akış:

  • OTP'ye ek olarak yüz tanıma
  • Güvenlik soruları
  • Bilgi faktörü (ör. annenin kızlık soyadı, doğduğu şehir veya favori şarkı)
  • Kimlik doğrulama

SMS Retriever API'si

SMS Retriever API, SMS'e dayalı kullanıcı doğrulaması gerçekleştirmenizi sağlar. Android uygulaması otomatik olarak. Bu şekilde, kullanıcının Doğrulama kodlarını manuel olarak yazın. Ayrıca, bu API kullanıcıdan ekstra, tehlikeli olabilecek uygulama izinleri için (ör. RECEIVE_SMS veya READ_SMS. Ancak SMS, SMS ve e-posta göndererek yetkisiz yerel erişime karşı koruma sağlar.

Bu yöntemle sahtekarlığın azaltılmasına nasıl yardımcı olur?

Bazı kullanıcılar tek kimlik doğrulama faktörü olarak SMS kodlarını kullanır. Bu da kolay bir giriş noktası işlevi görür.

SMS Retriever API, uygulamanın SMS kodunu herhangi bir işlem gerekmeden doğrudan almasını sağlar kullanıcı etkileşimine karşı koruma sağlar ve sahtekarlığa karşı üst düzey bir koruma sağlar.

Uygulama

SMS Retriever API'yi uygulamanın iki bölümü vardır: Android ve Sunucu.

Android: (kılavuz)

  1. Kullanıcının telefon numarasını alın.
  2. SMS retriever istemcisini başlatın.
  3. Telefon numarasını sunucunuza gönderin.
  4. Doğrulama mesajları alın.
  5. OTP'yi sunucunuza gönderin.

Sunucu: (kılavuz)

  1. Bir doğrulama mesajı oluşturun.
  2. Doğrulama mesajını SMS ile gönder.
  3. İade edildiğinde OTP'yi doğrulayın.

En iyi uygulamalar

Uygulama entegre edildikten ve kullanıcının telefon numarası SMS Retriever API'si varsa OTP'yi almaya çalışır. Başarılı olursa bu güçlü bir SMS'in cihazda otomatik olarak alındığını belirten sinyaldir. Eşleşmezse OTP'yi manuel olarak yazması gerekiyorsa bu, bir uyarı işareti olabilir. kullanıcının sahtekarlıkla karşılaşıyor olabilir.

Yer bıraktığı için tek kullanıcı doğrulama mekanizması olarak SMS kullanılmamalıdır Kilidi açılmış bir cihazı soyan bir saldırgan gibi yerel saldırılara karşı; veya SIM çok önemlidir. Mümkünse Biyometri kullanmanız önerilir. Şu tarihte: Biyometrik sensörlerin kullanılamadığı cihazlarda, kullanıcı kimlik doğrulaması mevcut cihazdan kolayca elde edilemeyen en az bir faktöre dayalı olması gerekir.

Daha fazla bilgi

En iyi uygulamalarla ilgili daha fazla bilgi edinmek için aşağıdaki kaynaklara göz atın: