सुरक्षित तरीके से उपयोगकर्ता की पुष्टि करने की सुविधा

Android में अपने ऑथेंटिकेशन सिस्टम को सुरक्षित रखने के लिए, पासवर्ड आधारित मॉडल, खास तौर पर संवेदनशील खातों के लिए, जैसे कि आपके उपयोगकर्ता बैंक और ईमेल खातों पर लागू होता है. याद रखें कि कुछ ऐसे ऐप्लिकेशन जिन्हें आपके उपयोगकर्ता इंस्टॉल करते हैं, वे शायद आपके उपयोगकर्ताओं को फ़िशिंग करने की कोशिश कर सकते हैं.

साथ ही, यह न मानें कि केवल अधिकृत उपयोगकर्ता ही डिवाइस का उपयोग कर सकेंगे. फ़ोन चोरी है और हमलावर सीधे तौर पर मुनाफ़ा पाने के लिए अनलॉक किए गए डिवाइसों को टारगेट करते हैं या वित्तीय ऐप्लिकेशन से होती है. हमारा सुझाव है कि सभी संवेदनशील ऐप्लिकेशन बायोमेट्रिक वेरिफ़िकेशन की मदद से, पुष्टि करने का सही समय (15 मिनट?) और पैसे चुकाने जैसी संवेदनशील कार्रवाइयां करने से पहले, पुष्टि करने की अतिरिक्त प्रक्रिया पूरी करनी होगी ट्रांसफ़र.

बायोमेट्रिक ऑथेंटिकेशन डायलॉग

बायोमेट्रिक्स लाइब्रेरी, अनुरोध करने वाला प्रॉम्प्ट दिखाने के लिए, फ़ंक्शन का एक सेट उपलब्ध कराती है बायोमेट्रिक ऑथेंटिकेशन, जैसे कि चेहरे की पहचान या फ़िंगरप्रिंट की पहचान. हालांकि, बायोमेट्रिक प्रॉम्प्ट को LSKF पर वापस लाने के लिए कॉन्फ़िगर किया जा सकता है, जिसमें शोल्डर-सर्फ़िंग के जोखिमों से जुड़े जोखिम. हमारा सुझाव है कि संवेदनशील ऐप्लिकेशन के लिए बायोमेट्रिक तरीके से पिन पर वापस नहीं जाना, और बायोमेट्रिक तरीके से कोशिश पूरी होने के बाद, उपयोगकर्ता इंतज़ार कर सकते हैं, या पासवर्ड के साथ फिर से लॉगिन कर सकते हैं या खाते रीसेट कर सकते हैं. खाता रीसेट किया गया का इस्तेमाल करने के लिए ऐसे फ़ैक्टर की ज़रूरत होनी चाहिए जिन्हें डिवाइस पर आसानी से ऐक्सेस न किया जा सकता हो (सबसे सही तरीका नीचे दिया गया है).

इससे धोखाधड़ी और फ़ोन की चोरी के मामलों को कम करने में कैसे मदद मिलती है

इस्तेमाल का एक खास उदाहरण, धोखाधड़ी से बचने में मददगार हो सकता है. लेन-देन से पहले, आपके ऐप्लिकेशन में बायोमेट्रिक तरीके से पुष्टि करने की सुविधा. जब आपके उपयोगकर्ता आपको कोई आर्थिक लेन-देन करना है, तो बायोमेट्रिक डायलॉग बॉक्स में पुष्टि करें कि यह वही उपयोगकर्ता है जो लेन-देन कर रहा है. यह सबसे सही तरीका, डिवाइस चुराने वाले हमलावर के ख़िलाफ़ हमलावर को एलएसकेएफ़ के बारे में जानकारी नहीं है या नहीं, क्योंकि उसे इस बात की जांच करनी होगी कि वह मालिक डिवाइस का मालिक है.

अतिरिक्त सुरक्षा के लिए, हमारा सुझाव है कि ऐप्लिकेशन डेवलपर, क्लास 3 के लिए अनुरोध करें बायोमेट्रिक तरीके से पुष्टि करें और बैंकिंग सेवाओं के लिए CryptoObject का इस्तेमाल करें वित्तीय लेन-देन.

लागू करना

  1. पक्का करें कि आपने androidx.biometric लाइब्रेरी शामिल की हो.
  2. गतिविधि या फ़्रैगमेंट में, बायोमेट्रिक लॉगिन डायलॉग शामिल करें वह लॉजिक जिसके आधार पर आपको उपयोगकर्ता की पुष्टि करानी है.

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);
    });
}

सबसे सही तरीके

हमारा सुझाव है कि आप बायोमेट्रिक्स के बारे में ज़्यादा जानने के लिए, कोडलैब से शुरुआत करें.

अपने इस्तेमाल के उदाहरणों के आधार पर, डायलॉग बॉक्स को लागू किया जा सकता है: उपयोगकर्ता की कार्रवाई के बारे में साफ़ तौर पर बताना. धोखाधड़ी से बचने के लिए, हमारा सुझाव है कि आप बायोमेट्रिक जानकारी जोड़ें हर लेन-देन के लिए, उपयोगकर्ता की कार्रवाई के बारे में साफ़ तौर पर जानकारी देने वाला डायलॉग बॉक्स. हम समझते हैं कि पुष्टि करने से उपयोगकर्ता अनुभव में रुकावट आ सकती है. हालांकि, ऐसा इसलिए है, क्योंकि किसी बैंक लेन-देन में इस्तेमाल की जा रही जानकारी और बायोमेट्रिक पुष्टि करने की प्रोसेस आसान होती है. हालांकि, हमें लगता है कि यह इस स्तर का नेविगेशन जोड़ने के लिए आवश्यक है.

बायोमेट्रिक ऑथेंटिकेशन के बारे में ज़्यादा जानें.

पासकी

पासकी, पासवर्ड का एक सुरक्षित और आसान विकल्प है. पासकी का इस्तेमाल सार्वजनिक पासकोड क्रिप्टोग्राफ़ी, ताकि उपयोगकर्ता ऐप्लिकेशन और वेबसाइटों में साइन इन कर सकें अपने डिवाइस की स्क्रीन लॉक सुविधा, जैसे कि फ़िंगरप्रिंट या चेहरे का इस्तेमाल करके पहचान करने के लिए इस्तेमाल किया जा सकता है. इससे लोगों को पासवर्ड याद रखने और मैनेज करने की ज़रूरत नहीं पड़ती, और काफ़ी बेहतर सुरक्षा देता है.

पासकी से, एक ही बार में कई तरीकों से पुष्टि करने की ज़रूरी शर्तों को पूरा किया जा सकता है. पासवर्ड और ओटीपी कोड, दोनों को बदलना, ताकि खातों को सुरक्षित रखा जा सके फ़िशिंग अटैक और एसएमएस या ऐप्लिकेशन पर आधारित एक बार होने वाले उपयोगकर्ता अनुभव की परेशानी से बचें पासवर्ड. पासकी स्टैंडर्ड होती हैं. इसलिए, इन्हें एक बार लागू करने पर, बिना पासवर्ड के साइन इन करने का अनुभव पाएं किस तरह ऐक्सेस कर सकते हैं, और ऑपरेटिंग सिस्टम.

Android पर क्रेडेंशियल मैनेजर Jetpack का इस्तेमाल करके पासकी इस्तेमाल की जा सकती हैं इस लाइब्रेरी में, पुष्टि करने के मुख्य तरीकों के बारे में जानकारी मिलती है. जैसे, पासकी, पासवर्ड और फ़ेडरेटेड साइन इन (जैसे कि Google से साइन इन करें).

इससे धोखाधड़ी को कम करने में कैसे मदद मिलती है

पासकी आपको फ़िशिंग हमलों से बचाती हैं, क्योंकि ये सिर्फ़ आपकी रजिस्टर किए गए ऐप्लिकेशन और वेबसाइटों पर रजिस्टर किया जाता है.

पासकी का मुख्य कॉम्पोनेंट, क्रिप्टोग्राफ़िक निजी पासकोड होता है. आम तौर पर, यह निजी पासकोड पूरी तरह से आपके डिवाइसों पर रहता है, जैसे कि लैपटॉप या मोबाइल फ़ोन, और क्रेडेंशियल देने वाले (जिसे पासवर्ड भी कहा जाता है) की मदद से सिंक किया जाता है मैनेजर). जैसे, Google Password Manager. सिर्फ़ संगत सार्वजनिक कुंजी ही पासकी बनाने पर, ऑनलाइन सेवा इसका इस्तेमाल करती है. लॉगिन के दौरान, सेवा सार्वजनिक पासकोड से चैलेंज पर हस्ताक्षर करने के लिए, निजी पासकोड का इस्तेमाल करता है. इससे सिर्फ़ ये काम किए जा सकते हैं आपके किसी डिवाइस से शुरू हो सकता है. इसके अलावा, ऐसा करने के लिए, इससे आपके डिवाइस या क्रेडेंशियल स्टोर को अनलॉक किया जा सकता है. इससे बिना अनुमति के साइन-इन नहीं किया जा सकता (उदाहरण के लिए, चोरी हुए फ़ोन से).

डिवाइस चोरी हो जाने पर, उसे बिना अनुमति के ऐक्सेस किए जाने से रोकने के लिए, पासकी के साथ एक ऐसी विंडो होनी चाहिए जिसमें पुष्टि करने की समयसीमा खत्म हो और पुष्टि करने का समय निकल सके. अगर आप डिवाइस चुरा लेने वाला हमलावर किसी ऐप्लिकेशन का उपयोग क्योंकि पिछले उपयोगकर्ता ने लॉग इन किया हुआ था. इसके बजाय, क्रेडेंशियल को एक तय अंतराल पर खत्म होता है (जैसे कि हर 15 मिनट में). साथ ही, उपयोगकर्ताओं को उन्हें अपनी पहचान की पुष्टि करनी होगी. इसके लिए, स्क्रीन लॉक की फिर से पुष्टि करनी होगी.

फ़ोन चोरी हो जाने पर, पासकी आपकी सुरक्षा करती हैं, क्योंकि चोर आपका फ़ोन चुरा नहीं सकते पासवर्ड, जिनका इस्तेमाल दूसरे डिवाइसों पर किया जा सकता है – पासकी हर डिवाइस के लिए अलग-अलग होती हैं. अगर आपको Google Password Manager से आपका फ़ोन चोरी हो जाता है, तो अपने Google खाते में लॉग इन करें किसी दूसरे डिवाइस (जैसे कंप्यूटर) से खाता खोलें और फ़ोन चोरी हो गया. इससे चोरी हुए फ़ोन पर, Google Password Manager कनेक्ट हो जाएगा कुछ भी इस्तेमाल नहीं किया जा सकता. इसमें सेव की गई पासकी भी शामिल हैं.

सबसे खराब स्थिति में, अगर चोरी हुए डिवाइस को वापस नहीं पाया जाता है, तो पासकी उस क्रेडेंशियल देने वाले के ज़रिए नए डिवाइस पर वापस सिंक किया गया हो जिसे बनाया और सिंक किया गया है पासकी. उदाहरण के लिए, हो सकता है कि उपयोगकर्ता ने Google Password Manager को पासकी बनाएं. इसके बाद, वह साइन इन करके नए डिवाइस पर अपनी पासकी ऐक्सेस कर पाएगा अपने Google खाते में वापस जा सकते हैं और पिछले पेज का स्क्रीन लॉक उपलब्ध करा सकते हैं डिवाइस.

ज़्यादा जानकारी के लिए इस लिंक पर जाएं Google Password Manager में पासकी की सुरक्षा लेख में दी गई जानकारी.

लागू करना

पासकी, Android 9 (एपीआई लेवल 28) या उसके बाद के वर्शन पर काम करने वाले डिवाइसों पर इस्तेमाल की जा सकती हैं. पासवर्ड और 'Google से साइन इन करें' सुविधा, Android के 4.4 वर्शन पर काम करती है. यहां की यात्रा पर हूं पासकी का इस्तेमाल शुरू करने के लिए, यह तरीका अपनाएं:

  1. पासकी लागू करने के तरीके के बारे में शुरुआती जानकारी पाने के लिए, क्रेडेंशियल मैनेजर कोडलैब को फ़ॉलो करें.
  2. पासकी इस्तेमाल करने वाले लोगों के अनुभव को डिज़ाइन करने से जुड़े दिशा-निर्देश देखें. इस दस्तावेज़ में, आपके इस्तेमाल के उदाहरण के लिए सुझाए गए फ़्लो के बारे में जानकारी दी गई है.
  3. क्रेडेंशियल मैनेजर के बारे में जानने के लिए, गाइड देखें.
  4. अपने ऐप्लिकेशन के लिए, क्रेडेंशियल मैनेजर और पासकी लागू करने का प्लान बनाएं. डिजिटल ऐसेट लिंक के लिए सहायता जोड़ने की योजना बनाएं.

खाता बनाने, रजिस्टर करने, और पासकी की मदद से पुष्टि करें.

सुरक्षित खाता रीसेट किया गया

बिना अनुमति के हमला करने वाला ऐसा व्यक्ति जिसके पास अनलॉक किए गए डिवाइस का ऐक्सेस हो. जैसे, छीन लिए जाता है) संवेदनशील ऐप्लिकेशन, खास तौर पर बैंकिंग या कैश ऐप्लिकेशन को ऐक्सेस करने की कोशिश करेगा. अगर ऐप्लिकेशन, बायोमेट्रिक वेरिफ़िकेशन की सुविधा देता है, तो हमलावर रीसेट करने की कोशिश करेगा साइन इन करना होगा. खाता रीसेट करने के फ़्लो के लिए ज़रूरी है कि ऐसी जानकारी के लिए जिसे डिवाइस पर आसानी से ऐक्सेस किया जा सके. जैसे, ईमेल या एसएमएस पर मिलने वाला ओटीपी लिंक रीसेट करें.

यहां कुछ सबसे सही तरीके बताए गए हैं, जिन्हें अपने ऐप्लिकेशन को रीसेट करने के लिए शामिल किया जा सकता है फ़्लो:

  • चेहरे की पहचान, ओटीपी के अलावा
  • सुरक्षा प्रश्‍न
  • ज्ञान कारक (जैसे मां का विवाह-पूर्व नाम, जन्म का शहर या पसंदीदा गाना)
  • आईडी की मदद से पहचान की पुष्टि करना

एसएमएस रिट्रीवर एपीआई

SMS Retriever API की मदद से, अपने मोबाइल में मैसेज (एसएमएस) के आधार पर उपयोगकर्ता की पुष्टि की जाती है Android ऐप्लिकेशन अपने-आप. इस तरह उपयोगकर्ता को यह ज़रूरी नहीं पुष्टि करने के लिए कोड को मैन्युअल तरीके से टाइप करें. इसके अलावा, यह एपीआई उपयोगकर्ता से नहीं पूछता है अतिरिक्त, संभावित रूप से खतरनाक ऐप्लिकेशन अनुमतियों के लिए RECEIVE_SMS या READ_SMS. हालांकि, उपयोगकर्ता की पुष्टि करने के लिए, सिर्फ़ एसएमएस का इस्तेमाल डिवाइस को बिना अनुमति के ऐक्सेस करने से सुरक्षित रखता है.

इससे धोखाधड़ी को कम करने में कैसे मदद मिलती है

कुछ उपयोगकर्ता पुष्टि करने के लिए अपने इकलौते तरीके के तौर पर एसएमएस कोड का इस्तेमाल करते हैं. इससे धोखाधड़ी को रोकने की शुरुआत करने के लिए एक आसान तरीका है.

SMS Retriever API, ऐप्लिकेशन को सीधे तौर पर मैसेज (एसएमएस) कोड वापस पाने की सुविधा देता है उपयोगकर्ता इंटरैक्शन और धोखाधड़ी के ख़िलाफ़ सुरक्षा का एक स्तर उपलब्ध करा सकता है.

लागू करना

SMS Retriever API को लागू करने के दो हिस्से हैं: Android और सर्वर.

Android: (गाइड)

  1. उपयोगकर्ता का फ़ोन नंबर पाएं.
  2. एसएमएस रिट्रीवर क्लाइंट चालू करें.
  3. अपने सर्वर पर फ़ोन नंबर भेजें.
  4. पुष्टि करने वाले मैसेज पाएं.
  5. ओटीपी अपने सर्वर पर भेजें.

सर्वर: (गाइड)

  1. पुष्टि करने वाला मैसेज बनाएं.
  2. पुष्टि करने के लिए, एसएमएस भेजें.
  3. ओटीपी वापस आने पर उसकी पुष्टि करें.

सबसे सही तरीके

ऐप्लिकेशन के इंटिग्रेट होने और उपयोगकर्ता के फ़ोन नंबर की पुष्टि किए जाने के बाद SMS Retriever API, तो यह ओटीपी पाने की कोशिश करता है. अगर यह कामयाब होता है, तो सिग्नल अपने-आप डिवाइस पर मिला है. अगर ऐसा नहीं होता है, तो अगर उपयोगकर्ता को मैन्युअल रूप से ओटीपी टाइप करना होता है, तो यह चेतावनी का संकेत हो सकता है उपयोगकर्ता को धोखाधड़ी का सामना करना पड़ सकता है.

जगह खाली करते समय, उपयोगकर्ता की पुष्टि करने के लिए सिर्फ़ एसएमएस का इस्तेमाल नहीं किया जाना चाहिए लोकल हमले किए जा सकते हैं. जैसे, कोई ऐसा हमलावर जो अनलॉक किए गए डिवाइस को चुरा लेता है; या सिम क्लोनिंग हमले. हमारा सुझाव है कि जहां भी हो सके, बायोमेट्रिक्स का इस्तेमाल करें. चालू है ऐसे डिवाइस जिन पर बायोमेट्रिक सेंसर उपलब्ध नहीं हैं, तो उपयोगकर्ता की पुष्टि करने के लिए ज़रूरी है कि कम से कम एक ऐसे फ़ैक्टर का इस्तेमाल करें जो मौजूदा डिवाइस से आसानी से न मिलता हो.

ज़्यादा जानें

सबसे सही तरीकों के बारे में ज़्यादा जानने के लिए, इन संसाधनों को देखें: