নিরাপদ ব্যবহারকারী প্রমাণীকরণ

অ্যান্ড্রয়েডে আপনার প্রমাণীকরণ সিস্টেমকে সুরক্ষিত করতে, একটি পাসওয়ার্ড-ভিত্তিক মডেল থেকে দূরে সরে যাওয়ার কথা বিবেচনা করুন, বিশেষ করে আপনার ব্যবহারকারীদের ব্যাঙ্ক এবং ইমেল অ্যাকাউন্টগুলির মতো সংবেদনশীল অ্যাকাউন্টগুলির জন্য৷ মনে রাখবেন যে আপনার ব্যবহারকারীরা ইনস্টল করা কিছু অ্যাপের সেরা উদ্দেশ্য নাও থাকতে পারে এবং আপনার ব্যবহারকারীদের ফিশ করার চেষ্টা করতে পারে।

এছাড়াও, অনুমান করবেন না যে শুধুমাত্র অনুমোদিত ব্যবহারকারীরা ডিভাইসটি ব্যবহার করবেন। ফোন চুরি একটি সাধারণ সমস্যা, এবং আক্রমণকারীরা ব্যবহারকারীর ডেটা বা আর্থিক অ্যাপ থেকে সরাসরি লাভের জন্য আনলক করা ডিভাইসগুলিকে লক্ষ্য করে। আমরা পরামর্শ দিই যে সমস্ত সংবেদনশীল অ্যাপ বায়োমেট্রিক যাচাইকরণের সাথে একটি যুক্তিসঙ্গত প্রমাণীকরণের সময়সীমা (15 মিনিট?) প্রয়োগ করে এবং অর্থ স্থানান্তরের মতো সংবেদনশীল ক্রিয়াকলাপের আগে অতিরিক্ত প্রমাণীকরণ প্রয়োজন।

বায়োমেট্রিক প্রমাণীকরণ ডায়ালগ

বায়োমেট্রিক্স লাইব্রেরি বায়োমেট্রিক প্রমাণীকরণের অনুরোধ যেমন মুখ শনাক্তকরণ বা আঙুলের ছাপ শনাক্তকরণের প্রম্পট প্রদর্শনের জন্য ফাংশনের একটি সেট অফার করে। যাইহোক, বায়োমেট্রিক প্রম্পটগুলি LSKF-এ ফিরে যাওয়ার জন্য কনফিগার করা যেতে পারে, যা কাঁধ-সার্ফিং ঝুঁকিগুলি জানে ৷ সংবেদনশীল অ্যাপ্লিকেশানগুলির জন্য, আমরা বায়োমেট্রিক পিন-এ ফিরে না আসার পরামর্শ দিই, এবং বায়োমেট্রিক পুনঃপ্রচারের ক্লান্তিকর পরে, ব্যবহারকারীরা অপেক্ষা করতে পারেন, বা পাসওয়ার্ড দিয়ে পুনরায় লগইন করতে পারেন বা অ্যাকাউন্টগুলি রিসেট করতে পারেন৷ অ্যাকাউন্ট রিসেট করতে হবে এমন ফ্যাক্টর যা ডিভাইসে সহজে অ্যাক্সেসযোগ্য নয় (নীচে সেরা অনুশীলন)।

এটি কীভাবে প্রতারণা এবং ফোন চুরি প্রশমিত করতে সহায়তা করে৷

একটি নির্দিষ্ট ব্যবহারের ক্ষেত্রে যা জালিয়াতি প্রতিরোধে সহায়ক হতে পারে তা হল একটি লেনদেনের আগে আপনার অ্যাপের মধ্যে বায়োমেট্রিক প্রমাণীকরণের অনুরোধ করা। যখন আপনার ব্যবহারকারীরা একটি আর্থিক লেনদেন করতে চান, তখন বায়োমেট্রিক ডায়ালগ দেখায় যাতে যাচাই করা যায় যে এটি প্রকৃতপক্ষে উদ্দেশ্যপ্রণোদিত ব্যবহারকারী যিনি লেনদেন করছেন। এই সর্বোত্তম অনুশীলনটি আক্রমণকারী LSKF জানুক বা না জানুক নির্বিশেষে একটি ডিভাইস চুরি করার বিরুদ্ধে রক্ষা করবে, কারণ তারা ডিভাইসের মালিক কিনা তা তদন্ত করতে হবে।

অতিরিক্ত স্তরের নিরাপত্তার জন্য, আমরা অ্যাপ ডেভেলপারদের ক্লাস 3 বায়োমেট্রিক প্রমাণীকরণের অনুরোধ করার এবং ব্যাঙ্কিং ও আর্থিক লেনদেনের জন্য CryptoObject ব্যবহার করার পরামর্শ দিই।

বাস্তবায়ন

  1. নিশ্চিত করুন যে আপনি androidx.biometric লাইব্রেরি অন্তর্ভুক্ত করেছেন।
  2. কার্যকলাপ বা খণ্ডে বায়োমেট্রিক লগইন ডায়ালগ অন্তর্ভুক্ত করুন যা আপনি ব্যবহারকারীকে প্রমাণীকরণ করতে চান এমন যুক্তি ধারণ করে৷

কোটলিন

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

জাভা

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

সর্বোত্তম অনুশীলন

বায়োমেট্রিক্স সম্পর্কে আরও জানতে আমরা আপনাকে কোডল্যাব দিয়ে শুরু করার পরামর্শ দিই।

আপনার ব্যবহারের ক্ষেত্রে নির্ভর করে আপনি স্পষ্ট ব্যবহারকারীর ক্রিয়া সহ বা ছাড়া ডায়ালগটি বাস্তবায়ন করতে পারেন। জালিয়াতি এড়াতে আমরা আপনাকে প্রতিটি লেনদেনের জন্য স্পষ্ট ব্যবহারকারীর ক্রিয়া সহ বায়োমেট্রিক ডায়ালগ যুক্ত করার পরামর্শ দিই। আমরা বুঝি যে প্রমাণীকরণ যোগ করলে UX-এ ঘর্ষণ হতে পারে, কিন্তু একটি ব্যাঙ্ক লেনদেনে তথ্যের প্রকৃতির কারণে এবং বায়োমেট্রিক প্রমাণীকরণ অন্যান্য প্রমাণীকরণ পদ্ধতির তুলনায় মসৃণ, আমরা মনে করি নেভিগেশনের এই স্তরটি যোগ করা প্রয়োজন।

বায়োমেট্রিক প্রমাণীকরণ সম্পর্কে আরও জানুন

পাসকি

পাসকি হল পাসওয়ার্ডের একটি নিরাপদ এবং সহজ বিকল্প। পাসকিগুলি সর্বজনীন-কী ক্রিপ্টোগ্রাফি ব্যবহার করে আপনার ব্যবহারকারীদের তাদের ডিভাইসের স্ক্রিন লক পদ্ধতি, যেমন আঙ্গুলের ছাপ বা মুখ শনাক্তকরণ ব্যবহার করে অ্যাপ এবং ওয়েবসাইটগুলিতে সাইন ইন করতে সক্ষম করতে। এটি ব্যবহারকারীকে পাসওয়ার্ড মনে রাখা এবং পরিচালনা করার থেকে মুক্ত করে এবং উল্লেখযোগ্যভাবে উন্নত নিরাপত্তা প্রদান করে।

ফিশিং আক্রমণের বিরুদ্ধে শক্তিশালী সুরক্ষা প্রদান করতে এবং এসএমএস বা অ্যাপ-ভিত্তিক ওয়ান-টাইম পাসওয়ার্ডের ব্যবহারকারীর অভিজ্ঞতার যন্ত্রণা এড়াতে পাসকিগুলি একটি একক ধাপে মাল্টিফ্যাক্টর প্রমাণীকরণের প্রয়োজনীয়তা পূরণ করতে পারে। যেহেতু পাসকিগুলি প্রমিত, তাই একটি একক প্রয়োগ ব্যবহারকারীদের সমস্ত ডিভাইস, ব্রাউজার এবং অপারেটিং সিস্টেম জুড়ে পাসওয়ার্ডবিহীন অভিজ্ঞতা সক্ষম করে।

অ্যান্ড্রয়েডে, পাসকিগুলি ক্রেডেনশিয়াল ম্যানেজার জেটপ্যাক লাইব্রেরি ব্যবহার করে সমর্থিত যা পাসকি, পাসওয়ার্ড এবং ফেডারেটেড সাইন ইন (যেমন Google এর সাথে সাইন ইন) সহ প্রধান প্রমাণীকরণ পদ্ধতিগুলিকে একীভূত করে৷

এটি কীভাবে জালিয়াতি প্রশমিত করতে সহায়তা করে

পাসকিগুলি আপনাকে ফিশিং আক্রমণ থেকে রক্ষা করে কারণ তারা শুধুমাত্র আপনার নিবন্ধিত অ্যাপ এবং ওয়েবসাইটে কাজ করে৷

একটি পাসকির মূল উপাদান হল একটি ক্রিপ্টোগ্রাফিক ব্যক্তিগত কী। সাধারণত, এই ব্যক্তিগত কীটি শুধুমাত্র আপনার ডিভাইসে থাকে, যেমন ল্যাপটপ বা মোবাইল ফোন, এবং Google পাসওয়ার্ড ম্যানেজার-এর মতো শংসাপত্র প্রদানকারী (পাসওয়ার্ড ম্যানেজার নামেও পরিচিত) দ্বারা তাদের জুড়ে সিঙ্ক্রোনাইজ করা হয়। একটি পাসকি তৈরি করা হলে শুধুমাত্র সংশ্লিষ্ট পাবলিক কী অনলাইন পরিষেবা দ্বারা সংরক্ষণ করা হয়। লগইন করার সময়, পরিষেবাটি সর্বজনীন কী থেকে একটি চ্যালেঞ্জ স্বাক্ষর করতে ব্যক্তিগত কী ব্যবহার করে। এটি শুধুমাত্র আপনার ডিভাইসগুলির একটি থেকে উদ্ভূত হতে পারে৷ অতিরিক্তভাবে, এটি ঘটানোর জন্য, আপনাকে অবশ্যই আপনার ডিভাইস বা শংসাপত্রের দোকান আনলক করতে হবে, যা অননুমোদিত সাইন-ইন প্রতিরোধ করে (উদাহরণস্বরূপ, একটি চুরি হওয়া ফোন থেকে)।

চুরি হওয়া, আনলক করা ডিভাইসের ক্ষেত্রে অননুমোদিত অ্যাক্সেস রোধ করতে, পাসকিগুলিকে অবশ্যই একটি বুদ্ধিমান প্রমাণীকরণের সময়সীমার উইন্ডোর সাথে সংযুক্ত করতে হবে। যে আক্রমণকারী একটি ডিভাইস চুরি করে সে একটি অ্যাপ্লিকেশন ব্যবহার করতে সক্ষম হবে না কারণ পূর্ববর্তী ব্যবহারকারী লগ ইন করা হয়েছে। পরিবর্তে, শংসাপত্রগুলি নিয়মিত বিরতিতে (যেমন, প্রতি 15 মিনিটে) মেয়াদ শেষ হওয়া উচিত এবং ব্যবহারকারীদের যাচাই করতে হবে স্ক্রিন লক পুনরায় প্রমাণীকরণের মাধ্যমে তাদের পরিচয়।

আপনার ফোন চুরি হয়ে গেলে, পাসকিগুলি আপনাকে রক্ষা করে কারণ চোরেরা অন্য ডিভাইসে ব্যবহার করার জন্য আপনার পাসওয়ার্ড চুরি করতে পারে না – পাসকিগুলি ডিভাইস-নির্দিষ্ট। আপনি যদি Google পাসওয়ার্ড ম্যানেজার ব্যবহার করেন এবং আপনার ফোন চুরি হয়ে যায়, আপনি অন্য ডিভাইস (যেমন কম্পিউটার) থেকে আপনার Google অ্যাকাউন্টে লগ ইন করতে পারেন এবং চুরি হওয়া ফোন থেকে দূরবর্তীভাবে লগ আউট করতে পারেন। এটি চুরি হওয়া ফোনে Google পাসওয়ার্ড ম্যানেজারকে কোনো সংরক্ষিত পাসকি সহ অব্যবহারযোগ্য করে তোলে।

সবচেয়ে খারাপ পরিস্থিতিতে, যদি চুরি হওয়া ডিভাইসটি পুনরুদ্ধার করা না হয়, পাসকিগুলিকে নতুন ডিভাইসে আবার সিঙ্ক করা হয় সেই শংসাপত্র প্রদানকারীর দ্বারা যা পাসকি তৈরি এবং সিঙ্ক করেছে৷ উদাহরণস্বরূপ, ব্যবহারকারী পাসকি তৈরি করতে Google পাসওয়ার্ড ম্যানেজার বেছে নিতে পারেন এবং তারা তাদের Google অ্যাকাউন্টে আবার সাইন ইন করে এবং পূর্ববর্তী ডিভাইস থেকে স্ক্রিন লক প্রদান করে একটি নতুন ডিভাইসে তাদের পাসকি অ্যাক্সেস করতে পারে।

Google পাসওয়ার্ড ম্যানেজার নিবন্ধে পাসকিগুলির নিরাপত্তা সম্পর্কে আরও জানুন।

বাস্তবায়ন

পাসকিগুলি Android 9 (API স্তর 28) বা উচ্চতর চালিত ডিভাইসগুলিতে সমর্থিত। পাসওয়ার্ড এবং Google এর সাথে সাইন ইন অ্যান্ড্রয়েড 4.4 থেকে শুরু করে সমর্থিত। পাসকি দিয়ে শুরু করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. পাসকিগুলি কীভাবে প্রয়োগ করতে হয় সে সম্পর্কে প্রাথমিক ধারণা পেতে ক্রেডেনশিয়াল ম্যানেজার কোডল্যাব অনুসরণ করুন।
  2. পাসকি ব্যবহারকারীর অভিজ্ঞতা ডিজাইন নির্দেশিকা পর্যালোচনা করুন। এই নথিটি আপনাকে দেখায় যে আপনার ব্যবহারের ক্ষেত্রে কী প্রবাহের সুপারিশ করা হয়।
  3. নির্দেশিকা অনুসরণ করে ক্রেডেনশিয়াল ম্যানেজার অধ্যয়ন করুন।
  4. আপনার অ্যাপের জন্য আপনার ক্রেডেনশিয়াল ম্যানেজার এবং পাসকি বাস্তবায়নের পরিকল্পনা করুন। ডিজিটাল সম্পদ লিঙ্কের জন্য সমর্থন যোগ করার পরিকল্পনা করুন।

কীভাবে পাসকিগুলি তৈরি, নিবন্ধন এবং প্রমাণীকরণ করতে হয় সে সম্পর্কে আরও বিশদ বিবরণের জন্য আমাদের বিকাশকারী ডকুমেন্টেশন দেখুন৷

নিরাপদ অ্যাকাউন্ট রিসেট

একটি আনলক করা ডিভাইসে অ্যাক্সেস সহ একটি অননুমোদিত আক্রমণকারী (যেমন যখন একটি ফোন ছিনিয়ে নেওয়া হয়) সংবেদনশীল অ্যাপগুলি, বিশেষ করে ব্যাঙ্কিং বা নগদ অ্যাপগুলি অ্যাক্সেস করার চেষ্টা করবে৷ অ্যাপটি যদি বায়োমেট্রিক যাচাইকরণ প্রয়োগ করে, তাহলে আক্রমণকারী অ্যাকাউন্ট রিসেট করার চেষ্টা করবে। অ্যাকাউন্ট রিসেট প্রবাহের জন্য শুধুমাত্র ডিভাইসে সহজে অ্যাক্সেসযোগ্য তথ্য যেমন ইমেল বা এসএমএস ওটিপি রিসেট লিঙ্কের উপর নির্ভর না করা অপরিহার্য।

এখানে সাধারণ সেরা অনুশীলনগুলি রয়েছে যা আপনি আপনার অ্যাপের রিসেট প্রবাহে অন্তর্ভুক্ত করতে পারেন:

  • OTP ছাড়াও ফেসিয়াল রিকগনিশন
  • নিরাপত্তা প্রশ্ন
  • নলেজ ফ্যাক্টর (যেমন একজন মায়ের প্রথম নাম, জন্মের শহর, বা প্রিয় গান)
  • আইডি যাচাইকরণ

এসএমএস রিট্রিভার API

SMS Retriever API আপনাকে আপনার Android অ্যাপে স্বয়ংক্রিয়ভাবে SMS-ভিত্তিক ব্যবহারকারী যাচাইকরণ করতে দেয়। এইভাবে ব্যবহারকারীকে ম্যানুয়ালি যাচাইকরণ কোড টাইপ করার প্রয়োজন হবে না। উপরন্তু, এই API ব্যবহারকারীকে RECEIVE_SMS বা READ_SMS এর মতো অতিরিক্ত, সম্ভাব্য বিপজ্জনক অ্যাপের অনুমতির জন্য অনুরোধ করে না। যাইহোক, ডিভাইসে অননুমোদিত স্থানীয় অ্যাক্সেস থেকে রক্ষা করার জন্য শুধুমাত্র ব্যবহারকারীর যাচাইকরণ হিসাবে SMS ব্যবহার করা উচিত নয়।

এটি কীভাবে জালিয়াতি প্রশমিত করতে সহায়তা করে

কিছু ব্যবহারকারী তাদের একমাত্র প্রমাণীকরণ ফ্যাক্টর হিসাবে এসএমএস কোড ব্যবহার করে যা জালিয়াতির জন্য একটি সহজ এন্ট্রিপয়েন্ট প্রদান করে।

SMS Retriever API অ্যাপটিকে ব্যবহারকারীর ইন্টারঅ্যাকশন ছাড়াই সরাসরি SMS কোড পুনরুদ্ধার করার অনুমতি দেয় এবং জালিয়াতির বিরুদ্ধে একটি স্তরের সুরক্ষা প্রদান করতে পারে।

বাস্তবায়ন

এসএমএস রিট্রিভার API বাস্তবায়নের দুটি অংশ রয়েছে: অ্যান্ড্রয়েড এবং সার্ভার।

অ্যান্ড্রয়েড : ( গাইড )

  1. ব্যবহারকারীর ফোন নম্বর পান।
  2. এসএমএস রিট্রিভার ক্লায়েন্ট শুরু করুন।
  3. আপনার সার্ভারে ফোন নম্বর পাঠান.
  4. যাচাইকরণ বার্তা পান।
  5. আপনার সার্ভারে OTP পাঠান।

সার্ভার : ( গাইড )

  1. একটি যাচাইকরণ বার্তা তৈরি করুন।
  2. এসএমএসের মাধ্যমে যাচাইকরণ বার্তা পাঠান।
  3. OTP ফেরত দিলে তা যাচাই করুন।

সর্বোত্তম অনুশীলন

অ্যাপটি একবার সংহত হয়ে গেলে এবং ব্যবহারকারীর ফোন নম্বর SMS Retriever API দিয়ে যাচাই করা হলে, এটি OTP পাওয়ার চেষ্টা করে। এটি সফল হলে, এটি একটি শক্তিশালী সংকেত যে ডিভাইসে স্বয়ংক্রিয়ভাবে এসএমএস গৃহীত হয়েছে। যদি এটি সফল না হয় এবং ব্যবহারকারীকে ম্যানুয়ালি ওটিপি টাইপ করতে হয়, তবে এটি একটি সতর্কতা চিহ্ন হতে পারে যে ব্যবহারকারী জালিয়াতির সম্মুখীন হতে পারে।

এসএমএস শুধুমাত্র ব্যবহারকারী যাচাইকরণ পদ্ধতি হিসাবে ব্যবহার করা উচিত নয় কারণ এটি স্থানীয় আক্রমণের জন্য জায়গা ছেড়ে দেয়, যেমন একজন আক্রমণকারী যে একটি আনলক করা ডিভাইস ছিনতাই করে; বা সিম ক্লোনিং আক্রমণ। যখনই সম্ভব বায়োমেট্রিক্স ব্যবহার করার পরামর্শ দেওয়া হয়। যেসব ডিভাইসে বায়োমেট্রিক সেন্সর পাওয়া যায় না, সেখানে ব্যবহারকারীর প্রমাণীকরণের অন্তত একটি ফ্যাক্টরের উপর নির্ভর করা উচিত যা বর্তমান ডিভাইস থেকে সহজে পাওয়া যায় না।

আরও জানুন

সর্বোত্তম অনুশীলন সম্পর্কে আরও পড়ার জন্য নিম্নলিখিত সংস্থানগুলি দেখুন: