Android-এ আপনার যাচাইকরণ সিস্টেম সুরক্ষিত করতে, পাসওয়ার্ড-ভিত্তিক মডেল থেকে সরে আসার কথা বিবেচনা করুন, বিশেষ করে আপনার ব্যবহারকারীর ব্যাঙ্ক এবং ইমেল অ্যাকাউন্টের মতো সংবেদনশীল অ্যাকাউন্টের জন্য। মনে রাখবেন, আপনার ব্যবহারকারীদের ইনস্টল করা কিছু অ্যাপের উদ্দেশ্য খারাপ হতে পারে এবং সেগুলি আপনার ব্যবহারকারীদের ফিশিং করার চেষ্টা করতে পারে।
এছাড়াও, শুধু অনুমোদিত ব্যবহারকারীই ডিভাইস ব্যবহার করবেন বলে ধরে নেবেন না। ফোন চুরি একটি সাধারণ সমস্যা এবং আক্রমণকারীরা ব্যবহারকারীর ডেটা বা ফাইন্যান্স অ্যাপ থেকে সরাসরি লাভ করার জন্য আনলক করা ডিভাইসগুলিকে টার্গেট করে। আমরা সাজেস্ট করি যে সব সংবেদনশীল অ্যাপ যেন বায়োমেট্রিক যাচাইকরণের মাধ্যমে যুক্তিযুক্ত যাচাইকরণ টাইমআউট (১৫ মিনিট?) প্রয়োগ করে এবং টাকা ট্রান্সফারের মতো সংবেদনশীল অ্যাকশনের আগে অতিরিক্ত যাচাইকরণের প্রয়োজন হয়।
বায়োমেট্রিক যাচাইকরণ ডায়ালগ
বায়োমেট্রিক্স লাইব্রেরি, ফেস বা ফিঙ্গারপ্রিন্ট শনাক্তকরণের মতো বায়োমেট্রিক যাচাইকরণের অনুরোধ জানিয়ে প্রম্পট দেখানোর জন্য এক সেট ফাংশন অফার করে। তবে, বায়োমেট্রিক প্রম্পটকে LSKF-এ ফলব্যাক করার জন্য কনফিগার করা যেতে পারে, যার শোল্ডার-সার্ফিং সংক্রান্ত ঝুঁকি আছে। সংবেদনশীল অ্যাপের ক্ষেত্রে, আমরা সাজেস্ট করি বায়োমেট্রিক কাজ না করলে পিন ব্যবহার করার বিকল্প না রাখতে এবং বায়োমেট্রিক ব্যবহার করার চেষ্টা শেষ হয়ে গেলে, ব্যবহারকারী অপেক্ষা করতে পারেন অথবা পাসওয়ার্ড দিয়ে আবার লগ-ইন করতে পারেন বা অ্যাকাউন্ট রিসেট করতে পারেন। অ্যাকাউন্ট রিসেট করার জন্য এমন ফ্যাক্টর প্রয়োজন যা ডিভাইসে সহজে অ্যাক্সেস করা যায় না (নিচে পেশাদার পদ্ধতি দেওয়া হল)।
এটি কীভাবে প্রতারণা ও ফোন চুরি প্রতিরোধ করতে সাহায্য করে
প্রতারণা আটকানোর জন্য একটি বিশেষ ব্যবহারিক ক্ষেত্র হল ট্রানজ্যাকশন করার আগে আপনার অ্যাপের মধ্যে বায়োমেট্রিক যাচাইকরণের অনুরোধ করা। আপনার ব্যবহারকারী কোনও আর্থিক ট্রানজ্যাকশন করতে চাইলে, ট্রানজ্যাকশনটি যে আসল ব্যবহারকারীই করছেন তা যাচাই করার জন্য বায়োমেট্রিক ডায়ালগ দেখানো হয়। এই পদ্ধতি অনুসরণ করলে, আক্রমণকারী LSKF জানুক বা না জানুক, ডিভাইস চুরি করার হাত থেকে রক্ষা করা যাবে, কারণ তাকে প্রমাণ করতে হবে যে সে ডিভাইসের মালিক।
অতিরিক্ত লেভেলের নিরাপত্তার জন্য, আমরা সাজেস্ট করি যে অ্যাপ ডেভেলপাররা Class 3
বায়োমেট্রিক যাচাইকরণের অনুরোধ করুন এবং ব্যাঙ্কিং ও
আর্থিক ট্রানজ্যাকশনের জন্য CryptoObject ব্যবহার করুন।
প্রয়োগ
- androidx.biometric লাইব্রেরি অন্তর্ভুক্ত করেছেন কিনা তা ভাল করে দেখে নিন।
- অ্যাক্টিভিটি বা ফ্র্যাগমেন্টে বায়োমেট্রিক লগ-ইন ডায়ালগ অন্তর্ভুক্ত করুন, যাতে ব্যবহারকারীকে যাচাই করার জন্য আপনার প্রয়োজনীয় লজিক থাকে।
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 ) } }
জাভা
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-এ বাধা সৃষ্টি হতে পারে, তবে ব্যাঙ্ক ট্রানজ্যাকশনে যে ধরনের তথ্য ম্যানেজ করা হয় এবং অন্যান্য যাচাইকরণ পদ্ধতির তুলনায় বায়োমেট্রিক যাচাইকরণ অনেক বেশি মসৃণ হওয়ার কারণে, আমরা মনে করি যে এই লেভেলের নেভিগেশন যোগ করা প্রয়োজন।
বায়োমেট্রিক যাচাইকরণ সম্পর্কে আরও জানুন।
পাসকী
পাসওয়ার্ডের তুলনায় পাসকী আরও নিরাপদ ও সহজ বিকল্প। পাসকী সর্বজনীন-কী ক্রিপ্টোগ্রাফি ব্যবহার করে যাতে আপনার ব্যবহারকারীরা তাদের ডিভাইসের স্ক্রিন লক মেকানিজম, যেমন ফিঙ্গারপ্রিন্ট বা ফেস রেকগনিশন ব্যবহার করে অ্যাপ এবং ওয়েবসাইটে সাইন-ইন করতে পারেন। এর ফলে ব্যবহারকারীকে পাসওয়ার্ড মনে রাখতে ও ম্যানেজ করতে হয় না এবং অনেক বেশি নিরাপত্তা পাওয়া যায়।
পাসকী এক ধাপে মাল্টিফ্যাক্টর যাচাইকরণের প্রয়োজনীয়তা পূরণ করতে পারে, পাসওয়ার্ড এবং ওটিপি কোড উভয়ই প্রতিস্থাপন করে ফিশিং অ্যাটাকের বিরুদ্ধে শক্তিশালী সুরক্ষা প্রদান করে এবং এসএমএস বা অ্যাপ-ভিত্তিক একবার ব্যবহারের পাসওয়ার্ডের মাধ্যমে ব্যবহারকারীর অভিজ্ঞতা সংক্রান্ত সমস্যা এড়ায়। পাসকী যেহেতু স্ট্যান্ডার্ডাইজ করা, তাই একবার প্রয়োগ করলেই ব্যবহারকারীর সব ডিভাইস, ব্রাউজার ও অপারেটিং সিস্টেম জুড়ে পাসওয়ার্ড ছাড়াই সাইন-ইন করার অভিজ্ঞতা পাওয়া যায়।
Android-এ, ক্রেডেনশিয়াল ম্যানেজার Jetpack লাইব্রেরি ব্যবহার করে পাসকী কাজ করে। এই লাইব্রেরি পাসকী, পাসওয়ার্ড ও ফেডারেটেড সাইন-ইন (যেমন, Google-এর মাধ্যমে সাইন-ইন করুন) সহ প্রধান যাচাইকরণ পদ্ধতিগুলিকে একত্রিত করে।
এটি কীভাবে জালিয়াতি কমাতে সাহায্য করে
পাসকী আপনাকে ফিশিং অ্যাটাক থেকে রক্ষা করে কারণ এটি শুধুমাত্র আপনার রেজিস্টার করা অ্যাপ ও ওয়েবসাইটে কাজ করে।
পাসকী-এর মূল উপাদান হল ক্রিপ্টোগ্রাফিক ব্যক্তিগত কী। সাধারণত, এই ব্যক্তিগত কী শুধুমাত্র আপনার ডিভাইসে থাকে, যেমন ল্যাপটপ বা মোবাইল ফোন, এবং ক্রেডেনশিয়াল প্রদানকারী (পাসওয়ার্ড ম্যানেজার নামেও পরিচিত) যেমন Google Password Manager-এর মাধ্যমে সব ডিভাইসে সিঙ্ক করা হয়। পাসকী তৈরি করার সময় অনলাইন পরিষেবা শুধুমাত্র সংশ্লিষ্ট সর্বজনীন কী সেভ করে। লগ-ইন করার সময়, পরিষেবাটি সর্বজনীন কী থেকে একটি চ্যালেঞ্জে স্বাক্ষর করার জন্য ব্যক্তিগত কী ব্যবহার করে। এটি শুধুমাত্র আপনার কোনও একটি ডিভাইস থেকেই তৈরি হতে পারে। এছাড়াও, এটি হওয়ার জন্য, আপনাকে অবশ্যই আপনার ডিভাইস বা ক্রেডেনশিয়াল স্টোর আনলক করতে হবে, যা অননুমোদিত সাইন-ইন আটকায় (যেমন, চুরি হয়ে যাওয়া ফোন থেকে)।
ডিভাইস চুরি হয়ে গেলে বা আনলক করা থাকলে, অননুমোদিত অ্যাক্সেস আটকানোর জন্য, পাসকী অবশ্যই একটি যুক্তিসঙ্গত যাচাইকরণ টাইমআউট উইন্ডোর সাথে যুক্ত থাকতে হবে। কোনও আক্রমণকারী ডিভাইস চুরি করলে, শুধু আগের ব্যবহারকারী লগ-ইন করে ছিলেন বলে তিনি যেন অ্যাপ্লিকেশন ব্যবহার করতে না পারেন। পরিবর্তে, ক্রেডেনশিয়ালের মেয়াদ নিয়মিত বিরতিতে (যেমন, প্রতি ১৫ মিনিটে) শেষ হয়ে যাওয়া উচিত এবং ব্যবহারকারীদের স্ক্রিন লক রি-অথেন্টিকেশনের মাধ্যমে তাদের পরিচয় যাচাই করতে হবে।
আপনার ফোন চুরি হয়ে গেলে, পাসকী আপনাকে সুরক্ষিত রাখে কারণ চোরেরা আপনার পাসওয়ার্ড চুরি করে অন্য ডিভাইসে ব্যবহার করতে পারবে না – পাসকী ডিভাইস-নির্দিষ্ট। আপনি যদি Google Password Manager ব্যবহার করেন এবং আপনার ফোন চুরি হয়ে যায়, তাহলে আপনি অন্য ডিভাইস (যেমন, কম্পিউটার) থেকে আপনার Google অ্যাকাউন্টে লগ-ইন করতে পারবেন এবং চুরি হয়ে যাওয়া ফোন থেকে রিমোটলি লগ-আউট করতে পারবেন। এর ফলে চুরি হয়ে যাওয়া ফোনে Google Password Manager ব্যবহার করা যাবে না, এর মধ্যে সেভ করা পাসকীও অন্তর্ভুক্ত।
সবচেয়ে খারাপ পরিস্থিতিতে, চুরি যাওয়া ডিভাইসটি ফেরত না পাওয়া গেলে, যে ক্রেডেনশিয়াল প্রোভাইডার পাসকী তৈরি ও সিঙ্ক করেছে, সেটি নতুন ডিভাইসে পাসকী সিঙ্ক করে দেয়। যেমন, ব্যবহারকারী পাসকী তৈরি করার জন্য Google Password Manager বেছে নিতে পারেন এবং তিনি নিজের Google অ্যাকাউন্টে আবার সাইন-ইন করে এবং আগের ডিভাইসের স্ক্রিন লক প্রদান করে নতুন ডিভাইসে নিজের পাসকী অ্যাক্সেস করতে পারেন।
Google Password Manager-এ পাসকী সংক্রান্ত নিরাপত্তা নিবন্ধ থেকে আরও জানুন।
প্রয়োগ
Android 9 (API লেভেল ২৮) বা তার পরবর্তী যেকোনও ভার্সনে চলে এমন ডিভাইসে পাসকী কাজ করে। Android 4.4 থেকে শুরু করে পাসওয়ার্ড ও Google-এর মাধ্যমে সাইন-ইন করার সুবিধা কাজ করে। পাসকী ব্যবহার করা শুরু করতে, এইসব ধাপ অনুসরণ করুন:
- পাসকী কীভাবে প্রয়োগ করতে হয় সেই সম্পর্কে প্রাথমিক ধারণা পেতে ক্রেডেনশিয়াল ম্যানেজার কোডল্যাব অনুসরণ করুন।
- পাসকী ব্যবহারকারীর অভিজ্ঞতা ডিজাইন সংক্রান্ত নির্দেশিকা পর্যালোচনা করুন। আপনার ব্যবহারের ক্ষেত্রে কোন ফ্লো সাজেস্ট করা হয় তা এই ডকুমেন্ট থেকে জানতে পারবেন।
- গাইড অনুসরণ করে ক্রেডেনশিয়াল ম্যানেজার সম্পর্কে জানুন।
- আপনার অ্যাপের জন্য ক্রেডেনশিয়াল ম্যানেজার ও পাসকী প্রয়োগ করার পরিকল্পনা করুন। ডিজিটাল অ্যাসেট লিঙ্ক-এর জন্য সহায়তা যোগ করার পরিকল্পনা করুন।
পাসকী তৈরি, রেজিস্টার ও যাচাই করার ব্যাপারে আরও জানতে আমাদের ডেভেলপার ডকুমেন্টেশন দেখুন।
অ্যাকাউন্ট রিসেট করার প্রক্রিয়া সুরক্ষিত করা
কোনও অননুমোদিত আক্রমণকারী আনলক করা ডিভাইসে অ্যাক্সেস পেলে (যেমন, ফোন ছিনতাই হলে) সংবেদনশীল অ্যাপ, বিশেষ করে ব্যাঙ্কিং বা ক্যাশ অ্যাপ অ্যাক্সেস করার চেষ্টা করবে। অ্যাপে বায়োমেট্রিক যাচাইকরণ থাকলে, আক্রমণকারী অ্যাকাউন্ট রিসেট করে অ্যাক্সেস পাওয়ার চেষ্টা করবে। অ্যাকাউন্ট রিসেট ফ্লোর জন্য এটি অত্যন্ত গুরুত্বপূর্ণ যে, ইমেল বা এসএমএস ওটিপি রিসেট লিঙ্কের মতো ডিভাইসে সহজেই অ্যাক্সেসযোগ্য তথ্যের উপর সম্পূর্ণভাবে নির্ভর না করা।
এখানে কিছু সাধারণ পেশাদার পদ্ধতি দেওয়া হল যা আপনি অ্যাপের রিসেট ফ্লোতে অন্তর্ভুক্ত করতে পারেন:
- ওটিপি ছাড়াও ফেস শনাক্তকরণ
- নিরাপত্তা প্রশ্নসমূহ
- নলেজ ফ্যাক্টর (যেমন, মায়ের বিবাহের আগের পদবী, জন্মস্থান বা প্রিয় গান)
- আইডি যাচাইকরণ
SMS Retriever API
SMS Retriever API-এর সাহায্যে আপনার Android অ্যাপে অটোমেটিক এসএমএস-ভিত্তিক ব্যবহারকারী যাচাইকরণ
করতে পারবেন। এর ফলে ব্যবহারকারীকে ম্যানুয়ালি যাচাইকরণ কোড টাইপ করতে হবে না। এছাড়াও, এই API ব্যবহারকারীর কাছে RECEIVE_SMS বা READ_SMS-এর মতো অতিরিক্ত, সম্ভাব্য বিপজ্জনক অ্যাপের অনুমতি চায় না। তবে, ডিভাইসে অননুমোদিত লোকাল অ্যাক্সেস থেকে সুরক্ষিত রাখতে
ব্যবহারকারী যাচাইকরণের একমাত্র উপায় হিসেবে এসএমএস ব্যবহার করা উচিত নয়।
এটি কীভাবে জালিয়াতি কমাতে সাহায্য করে
কিছু ব্যবহারকারী এসএমএস কোডকে তাদের একমাত্র যাচাইকরণ ফ্যাক্টর হিসেবে ব্যবহার করেন যা জালিয়াতির জন্য একটি সহজ এন্ট্রি পয়েন্ট প্রদান করে।
SMS Retriever API, অ্যাপকে ব্যবহারকারীর ইন্টার্যাকশন ছাড়াই সরাসরি SMS কোড রিট্রিভ করার অনুমতি দেয় এবং প্রতারণার বিরুদ্ধে এক ধরনের সুরক্ষা প্রদান করতে পারে।
প্রয়োগ
SMS Retriever API প্রয়োগ করার দুটি অংশ আছে: Android এবং সার্ভার।
Android: (গাইড)
- ব্যবহারকারীর ফোন নম্বর পান।
- এসএমএস রিট্রিভার ক্লায়েন্ট চালু করুন।
- আপনার সার্ভারে ফোন নম্বর পাঠান।
- যাচাইকরণ মেসেজ পান।
- আপনার সার্ভারে ওটিপি পাঠান।
সার্ভার: (গাইড)
- যাচাইকরণ মেসেজ তৈরি করুন।
- এসএমএস-এর মাধ্যমে যাচাইকরণ মেসেজ পাঠান।
- ওটিপি ফেরত পাওয়ার পরে সেটি যাচাই করুন।
পেশাদার পদ্ধতি
অ্যাপটি ইন্টিগ্রেট করা হয়ে গেলে এবং ব্যবহারকারীর ফোন নম্বর SMS Retriever API-এর মাধ্যমে যাচাই করা হলে, এটি ওটিপি পাওয়ার চেষ্টা করে। এটি সফল হলে, তা থেকে বোঝা যাবে যে ডিভাইসে অটোমেটিক এসএমএস পাওয়া গেছে। এটি সফল না হলে এবং ব্যবহারকারীকে ম্যানুয়ালি ওটিপি টাইপ করতে হলে, এটি একটি সতর্কতার চিহ্ন হতে পারে যে ব্যবহারকারী প্রতারণার শিকার হতে পারেন।
ব্যবহারকারী যাচাইকরণের একমাত্র পদ্ধতি হিসেবে এসএমএস ব্যবহার করা উচিত নয়, কারণ এর ফলে স্থানীয় অ্যাটাকের সম্ভাবনা থেকে যায়, যেমন কোনও অ্যাটাকার আনলক করা ডিভাইস চুরি করতে পারে; অথবা সিম ক্লোনিং অ্যাটাক হতে পারে। সম্ভব হলে বায়োমেট্রিক্স ব্যবহার করার সাজেশন দেওয়া হয়। যেসব ডিভাইসে বায়োমেট্রিক সেন্সর উপলভ্য নেই, সেখানে ব্যবহারকারীর যাচাইকরণ কমপক্ষে এমন একটি বিষয়ের উপর নির্ভর করা উচিত যা বর্তমান ডিভাইস থেকে সহজে পাওয়া যায় না।
আরও জানুন
পেশাদার পদ্ধতি সম্পর্কে আরও জানতে নিম্নলিখিত রিসোর্সগুলি দেখুন:
- সুরক্ষা সংক্রান্ত আমাদের Android ডকুমেন্টেশন
- Play Integrity API ডকুমেন্টেশন
- Android 15-এ পরিবর্তন
- Monzo Bank-এর স্ক্যাম কল প্রতিরোধ করার পেশাদার পদ্ধতি