হার-সীমাবদ্ধকরণ

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

অ্যান্ড্রয়েড, LSKF-এর উপর ব্রুট-ফোর্স অ্যাটাক চালানো আক্রমণকারীদের গতি কমাতে এবং যথেষ্ট সংখ্যক চেষ্টার পর তা ব্লক করতে ট্রাস্টেড এক্সিকিউশন এনভায়রনমেন্ট (TEE) বা সিকিওর এলিমেন্ট (SE) রেট-লিমিটার ব্যবহার করে। CDD 9.11, LSKF রেট-লিমিটারের জন্য ন্যূনতম নিরাপত্তা প্রয়োজনীয়তা এবং সুপারিশসমূহ নির্দিষ্ট করে। অ্যান্ড্রয়েড ১৬ QPR2 এবং এর পরবর্তী সংস্করণগুলো নিম্নতর অ্যান্ড্রয়েড সংস্করণগুলোর তুলনায় উল্লেখযোগ্যভাবে শক্তিশালী রেট-লিমিটিং নীতি প্রয়োগ করে। আরও বিস্তারিত জানতে, "অ্যান্ড্রয়েড ১৬ QPR2 এবং এর পরবর্তী সংস্করণগুলোতে শক্তিশালী ডিফল্ট রেট-লিমিটিং নীতি" দেখুন।

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

  • সময়ের উন্নত বিন্যাস: লকস্ক্রিনে এক মিনিট বা তার বেশি সময় স্থায়ী টাইমআউটগুলো আরও ভালোভাবে পড়ার সুবিধার জন্য বড় একক ব্যবহার করে দেখানো হয়, যেমন ‘১৮০০ সেকেন্ড পরে আবার চেষ্টা করুন’-এর পরিবর্তে ‘৩০ মিনিট পরে আবার চেষ্টা করুন’।
  • রিকভারি শর্টলিঙ্ক: লকস্ক্রিনে একটি শর্টলিঙ্ক (ডিফল্টরূপে g.co/android/unlock ) দেখানো হয়, যা ব্যবহারকারীদের অন্য ডিভাইসে রিকভারি অপশন খুঁজে পেতে সাহায্য করে। এই লিঙ্কটি config_lockscreenLockoutShortlink রিসোর্সের মাধ্যমে কনফিগার করা যায়।
  • একই চেষ্টার পুনরাবৃত্তি সংক্রান্ত প্রতিক্রিয়া: উইভার (Weaver) বাস্তবায়নযুক্ত ডিভাইসগুলিতে, একই ভুল অনুমান পুনরায় প্রবেশ করানো হলে সিস্টেম একটি স্বতন্ত্র বার্তা প্রদর্শন করে। শুধুমাত্র গেটকিপার (Gatekeeper) যুক্ত ডিভাইসগুলিতে এই নির্দিষ্ট প্রতিক্রিয়াটি পাওয়া যায় না, কারণ সেগুলি ভুল অনুমান এবং অন্যান্য যাচাইকরণ ব্যর্থতার জন্য আলাদা প্রতিক্রিয়া কোড প্রদান করে না।
  • সুসংগত ক্রেডেনশিয়াল এন্ট্রি ব্যবস্থাপনা: ডিভাইসটি যদি পাসওয়ার্ড এবং প্যাটার্ন ক্রেডেনশিয়াল এন্ট্রির মতো পিন ক্রেডেনশিয়াল ব্যবহার করে, তাহলে লকস্ক্রিন পিন এন্ট্রি প্যাডটি নিষ্ক্রিয় করে দেয়।

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

LSKFs-এর মাধ্যমে সুরক্ষিত ব্যবহারকারীর ডেটা আনলক করুন

LockSettingsService LSKF-গুলো সংরক্ষণ এবং যাচাই করার কাজ পরিচালনা করে। একজন ব্যবহারকারীর একই সময়ে কেবল একটিই সক্রিয় LSKF থাকে। একটি নতুন LSKF নির্ধারণ করা হলে আগেরটি বাতিল হয়ে যায় এবং রেট-লিমিটিং পলিসিটি প্রথম থেকে চালু হয়।

TEE বা SE-তে থাকা একটি প্রাথমিক রেট-লিমিটার, যা Gatekeeper বা Weaver-এর মধ্যে একটি, সক্রিয় LSKF-এর জন্য রেট-লিমিটিং প্রয়োগ করে। যখন কোনো ইমপ্লিমেন্টেশন উপলব্ধ থাকে, তখন LockSettingsService Weaver-কে অগ্রাধিকার দেয়।

সুরক্ষিত ব্যবহারকারীর ডেটা তখনই আনলক করা হয় যখন প্রাইমারি রেট-লিমিটারকে সঠিক LSKF প্রদান করা হয়। যদি LSKF ভুল হয়, তাহলে রেট-লিমিটার একটি ফেইলর কাউন্টার বাড়িয়ে দেয় এবং নির্দিষ্ট সংখ্যক ব্যর্থতার পর একটি টাইমআউট কার্যকর করে। টাইমআউট চলাকালীন, এটি সমস্ত অনুমান প্রত্যাখ্যান করে এবং অবশিষ্ট টাইমআউট সময় প্রদান করে।

অ্যান্ড্রয়েড ১৬ কিউপিআর২ এবং এর পরবর্তী সংস্করণগুলোতে আরও শক্তিশালী ডিফল্ট রেট-লিমিটিং নীতি।

CDD 9.11 অনুযায়ী Android 6 এবং এর পরবর্তী সংস্করণগুলোতে LSKF রেট-লিমিটিং আবশ্যক। ঐতিহাসিকভাবে, এই প্রয়োজনীয় রেট-লিমিটিং নীতিটি বেশ শিথিল ছিল। উদাহরণস্বরূপ, Android 16-এর ন্যূনতম শর্ত পূরণকারী একটি ইমপ্লিমেন্টেশনে প্রথম মিনিটে ১০টি, ৬ মিনিটে ২০টি, ২৫ মিনিটে ৫০টি, ২৪ ঘণ্টায় ১১০টি এবং ৫ বছরে ১৮০০টি পর্যন্ত অনুমানের অনুমতি দেওয়া হয়।

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

উদাহরণস্বরূপ, ‘এই পিনটি সহজেই অনুমান করা যায়’ শীর্ষক গবেষণায় দেখা গেছে যে, ১০০ বার অনুমানের পর বাস্তব পিন অনুমান করার ক্ষেত্রে সাফল্যের হার ছিল ১৬.২% এবং প্যাটার্নের ক্ষেত্রে ৩৫.৫%। আক্রমণকারীরা ব্যবহারকারীর ব্যক্তিগত তথ্য, যেমন জন্মতারিখ, জেনে আরও বেশি সাফল্যের হার অর্জন করতে পারে।

তাই, অ্যান্ড্রয়েড ১৬ কিউপিআর২ এবং এর পরবর্তী সংস্করণগুলো একটি শক্তিশালী ডিফল্ট এলএসকেএফ রেট-লিমিটিং পলিসি প্রদান করে। এই পলিসি অনুযায়ী প্রথম মিনিটে ৬টি, ৬ মিনিটে ৭টি, ২৫ মিনিটে ৮টি, ২৪ ঘণ্টায় ১২টি এবং ৫ বছরে ১৯টি পর্যন্ত অনুমান করা যায়। ২০টি ভুল অনুমানের পর আর কোনো অনুমান করার অনুমতি দেওয়া হয় না। সম্পূর্ণ টাইমআউট সময়সূচীটি নিচের টেবিলে দেখানো হয়েছে। ভবিষ্যতের অ্যান্ড্রয়েড সংস্করণগুলোতে এটি পরিবর্তিত হতে পারে।

ভুল অনুমানের সংখ্যা ভুল অনুমানের পর টাইমআউট
প্রযোজ্য নয়
১-৪ ০ সেকেন্ড
১ মিনিট
৫ মিনিট
১৫ মিনিট
৩০ মিনিট
৯০ মিনিট
১০ ৪ ঘন্টা
১১ ১২ ঘন্টা
১২ ৩৬ ঘন্টা
১৩ ৪ দিন
১৪ ১৩ দিন
১৫ ৪১ দিন
১৬ ১২৩ দিন
১৭ ১ বছর
১৮ ৩ বছর
১৯ ৯ বছর
২০+ আর কোনো অনুমান করা যাবে না।

আপডেট করা রেট-লিমিটার

অ্যান্ড্রয়েড ১৬ কিউপিআর২ এবং এর পরবর্তী সংস্করণগুলোতে আপডেট করা গেটকিপার এবং উইভার ইমপ্লিমেন্টেশন অন্তর্ভুক্ত রয়েছে, যা টেবিলে উল্লেখিত রেট-লিমিটিং পলিসি প্রয়োগ করে।

সফটওয়্যার রেট-লিমিটার

অ্যান্ড্রয়েড ১৬ কিউপিআর২ এবং এর পরবর্তী সংস্করণগুলোতে SoftwareRateLimiter. এটি সিস্টেম সার্ভারে প্রয়োগ করা হয় এবং যখন টিইই বা এসই আপডেট করা যায় না, তখন ডিভাইসগুলোকে আরও শক্তিশালী রেট-লিমিটিং নীতি প্রয়োগ করার সুযোগ দেয়।

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

ডুপ্লিকেট অনুমান সনাক্তকরণ

ব্যবহারযোগ্যতা উন্নত করতে এবং আরও শক্তিশালী রেট-লিমিটিং পলিসি প্রয়োগ সক্ষম করতে, অ্যান্ড্রয়েড ১৬ কিউপিআর২ এবং এর পরবর্তী সংস্করণগুলো ডুপ্লিকেট গেস ডিটেকশন সমর্থন করে। এটি সক্রিয় থাকলে, ব্যবহারকারীরা একাধিকবার একই ভুল এলএসকেএফ (LSKF) প্রবেশ করালেও কোনো শাস্তির সম্মুখীন হন না।

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

Android 16 QPR2 ও তার পরবর্তী সংস্করণ, একটি Weaver ইমপ্লিমেন্টেশন এবং enforcing মোডে কনফিগার করা SoftwareRateLimiter যুক্ত ডিভাইসগুলিতে, একই ধরনের অনুমান Weaver-এ পাঠানোর আগে শনাক্ত ও বাতিল করা হয়। এই ধরনের বাতিলের কারণে ভুল অনুমানের সংখ্যা বাড়ে না। মেমরিতে সর্বোচ্চ ৫টি স্বতন্ত্র ভুল অনুমান ট্র্যাক করা হয়। ট্র্যাকার পূর্ণ হয়ে গেলে, জায়গা খালি করার জন্য সবচেয়ে নতুন অনুমানটি বাতিল করে দেওয়া হয়। সর্বশেষ ট্র্যাক না করা ভুল অনুমানটি করার ৫ মিনিট পর ট্র্যাক করা সমস্ত অনুমান বাতিল হয়ে যায়।

গেটকিপার ভুল অনুমানকে অন্যান্য যাচাইকরণ ব্যর্থতা থেকে আলাদা করে না, তাই যখন গেটকিপার প্রাথমিক রেট-লিমিটার হিসেবে কাজ করে, তখন SoftwareRateLimiter সদৃশ অনুমান শনাক্তকরণ সমর্থন করে না।

উইভার বাস্তবায়নকারীরা উইভার বাস্তবায়নে ডুপ্লিকেট অনুমান সনাক্তকরণ সমর্থন করার বিকল্প বেছে নিতে পারেন।