ব্যবহারকারী যাচাইকরণ গভীর ডুব

এই ডকুমেন্টটি WebAuthn-এ userVerification কী এবং পাসকি তৈরি বা প্রমাণীকরণের সময় userVerification নির্দিষ্ট করা হলে ব্রাউজার আচরণের বিষয়ে আলোচনা করে।

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

ব্যবহারকারী যাচাইকরণ হল নিরাপত্তার একটি ঐচ্ছিক স্তর যা নিশ্চিত করার চেষ্টা করে যে প্রমাণীকরণের সময় সঠিক ব্যক্তি উপস্থিত ছিলেন, শুধুমাত্র কিছু ব্যক্তি নয়, ব্যবহারকারীর উপস্থিতি দাবি করে। স্মার্টফোনে, এটি সাধারণত স্ক্রিন-লক মেকানিজম ব্যবহার করে করা হয়, সেটা বায়োমেট্রিক হোক বা পিন বা পাসওয়ার্ড। ব্যবহারকারীর যাচাইকরণ করা হয়েছে কিনা তা "UV" পতাকায় রিপোর্ট করা হয়েছে যা পাসকি নিবন্ধন এবং প্রমাণীকরণের সময় প্রমাণীকরণকারী ডেটাতে ফেরত দেওয়া হয়

MacOS-এ iCloud Keychain-এ ব্যবহারকারী যাচাইকরণ ডায়ালগের একটি স্ক্রিনশট। ডায়ালগ ব্যবহারকারীকে টাচ আইডি ব্যবহার করে সাইন ইন করতে অনুরোধ করে, প্রমাণীকরণের অনুরোধের উৎস প্রদর্শন করে, সেইসাথে ব্যবহারকারীর নামও। ডায়ালগের উপরের ডানদিকে 'বাতিল' লেবেলযুক্ত একটি বোতাম রয়েছে।
MacOS-এ iCloud Keychain-এ ব্যবহারকারী যাচাইকরণ ডায়ালগ।
Android এর জন্য Chrome-এ ব্যবহারকারী যাচাইকরণ ডায়ালগের একটি স্ক্রিনশট। ডায়ালগটি ব্যবহারকারীকে মুখের স্বীকৃতি বা আঙুলের ছাপ সনাক্তকরণ ব্যবহার করে তাদের পরিচয় যাচাই করতে অনুরোধ করে এবং প্রমাণীকরণের অনুরোধের উত্স প্রদর্শন করে। নীচে বাম দিকে একটি পিন ব্যবহার করে যাচাই করার একটি বিকল্প রয়েছে৷
অ্যান্ড্রয়েড ক্রোমে ব্যবহারকারী যাচাইকরণ ডায়ালগ।

কিভাবে UP এবং UV সার্ভারে যাচাই করা হয়

ব্যবহারকারীর উপস্থিতি (UP) এবং ব্যবহারকারী যাচাইকৃত (UV) বুলিয়ান ফ্ল্যাগগুলি প্রমাণীকরণকারী ডেটা ক্ষেত্রে সার্ভারে সংকেত দেওয়া হয়। প্রমাণীকরণের সময়, প্রমাণীকরণকারী ডেটা ক্ষেত্রের বিষয়বস্তু সংরক্ষণ করা পাবলিক কী ব্যবহার করে স্বাক্ষর যাচাই করে যাচাই করা যেতে পারে। যতক্ষণ পর্যন্ত স্বাক্ষর বৈধ থাকে, সার্ভার পতাকাগুলিকে প্রকৃত বিবেচনা করতে পারে।

প্রমাণীকরণ ডেটা কাঠামোর একটি চিত্র। বাম থেকে ডানে, ডেটা স্ট্রাকচারের প্রতিটি বিভাগে 'RP ID হ্যাশ' (32 বাইট), 'ফ্ল্যাগস' (1 বাইট), 'কাউন্টার' (4 বাইট, বিগ-এন্ডিয়ান uint32), 'ATTESTE CRED' লেখা আছে। ডেটা' (উপস্থিত থাকলে পরিবর্তনশীল দৈর্ঘ্য), এবং 'এক্সটেনশন' (উপস্থিত থাকলে পরিবর্তনশীল দৈর্ঘ্য (CBOR))। 'ফ্ল্যাগস' বিভাগটি সম্ভাব্য পতাকার একটি তালিকা দেখানোর জন্য প্রসারিত করা হয়েছে, বাম থেকে ডানে লেবেলযুক্ত: 'ED', 'AT', '0', 'BS', 'BE', 'UV', '0', এবং 'ইউপি'।
একটি পাবলিক কী শংসাপত্রে প্রমাণীকরণকারী ডেটা ক্ষেত্র।

পাসকি রেজিস্ট্রেশন এবং প্রমাণীকরণে, সার্ভারের পরীক্ষা করা উচিত যে ইউপি পতাকাটি true , এবং প্রয়োজনের উপর নির্ভর করে ইউভি পতাকা true বা false কিনা।

userVerification পরামিতি নির্দিষ্ট করা হচ্ছে

WebAuthn স্পেসিফিকেশন অনুসারে, RP শংসাপত্র তৈরি এবং দাবি উভয় ক্ষেত্রেই ব্যবহারকারী userVerification পরামিতি সহ ব্যবহারকারী যাচাইয়ের অনুরোধ করতে পারে। এটি 'preferred' , 'required' বা 'discouraged' গ্রহণ করে যার অর্থ যথাক্রমে:

  • 'preferred' (ডিফল্ট): ডিভাইসে একটি ব্যবহারকারী যাচাইকরণ পদ্ধতি ব্যবহার করা পছন্দনীয় , তবে এটি উপলব্ধ না হলে এড়িয়ে যাওয়া যেতে পারে। প্রতিক্রিয়া শংসাপত্রে একটি UV ফ্ল্যাগ মান রয়েছে যদি ব্যবহারকারীর যাচাইকরণ সম্পাদিত হয় তাহলে true এবং UV সঞ্চালিত না হলে false
  • 'required' : ডিভাইসে উপলব্ধ একটি ব্যবহারকারী যাচাইকরণ পদ্ধতি আহ্বান করা প্রয়োজন৷ যদি একটি উপলব্ধ না হয়, অনুরোধ স্থানীয়ভাবে ব্যর্থ হয়. এর অর্থ হল প্রতিক্রিয়া প্রমাণপত্রটি সর্বদা UV পতাকা true সেট করে ফিরে আসে।
  • 'discouraged' : ব্যবহারকারী যাচাইকরণ পদ্ধতি ব্যবহার করা নিরুৎসাহিত করা হয়। যাইহোক, ডিভাইসের উপর নির্ভর করে, ব্যবহারকারীর যাচাইকরণ যেভাবেই হোক সঞ্চালিত হতে পারে, এবং UV পতাকায় true বা false থাকতে পারে।

পাসকি তৈরির জন্য নমুনা কোড:

const publicKeyCredentialCreationOptions = {
  // ...
  authenticatorSelection: {
    authenticatorAttachment: 'platform',
    residentKey: 'required',
    requireResidentKey: true,
    userVerification: 'preferred'
  }
};

const credential = await navigator.credentials.create({
  publicKey: publicKeyCredentialCreationOptions
});

পাসকি প্রমাণীকরণের জন্য নমুনা কোড:

const publicKeyCredentialRequestOptions = {
  challenge: /* Omitted challenge data... */,
  rpId: 'example.com',
  userVerification: 'preferred'
};

const credential = await navigator.credentials.get({
  publicKey: publicKeyCredentialRequestOptions
});

userVerification জন্য আপনার কোন বিকল্পটি বেছে নেওয়া উচিত?

আপনার userVerification মান ব্যবহার করা উচিত তা নির্ভর করে আপনার আবেদনের প্রয়োজনীয়তার উপর, সেইসাথে আপনার ব্যবহারকারীর অভিজ্ঞতার প্রয়োজনের উপর।

userVerification='preferred' কখন ব্যবহার করবেন

userVerification='preferred' ব্যবহার করুন যদি আপনি সুরক্ষার চেয়ে ব্যবহারকারীর অভিজ্ঞতাকে অগ্রাধিকার দেন।

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

macOS-এ একটি পাসকি ডায়ালগের একটি স্ক্রিনশট যা টাচ আইডি উপলব্ধ না থাকলে প্রদর্শিত হয়৷ ডায়ালগটিতে তথ্য রয়েছে যেমন প্রমাণীকরণের অনুরোধকারী উত্স, সেইসাথে ব্যবহারকারীর নাম। ডায়ালগের উপরের ডানদিকে 'বাতিল' লেবেলযুক্ত একটি বোতাম রয়েছে।
টাচ আইডি উপলব্ধ না থাকলে ম্যাকওএস-এ একটি পাসকি ডায়ালগ প্রদর্শিত হয়।

userVerification='preferred' এর সাথে, ব্যবহারকারীর যাচাইকরণ সফলভাবে সম্পাদিত হলে UV পতাকাটি true এবং ব্যবহারকারীর যাচাইকরণ এড়িয়ে গেলে false । উদাহরণস্বরূপ, macOS-এ যেখানে টাচ আইডি উপলব্ধ নেই, এটি ব্যবহারকারীকে ব্যবহারকারী যাচাইকরণ এড়িয়ে যাওয়ার জন্য একটি বোতামে ক্লিক করতে বলে এবং সর্বজনীন কী শংসাপত্রে একটি false UV পতাকা অন্তর্ভুক্ত থাকে।

UV পতাকা তখন আপনার ঝুঁকি বিশ্লেষণে একটি সংকেত হতে পারে। সাইন-ইন প্রচেষ্টা অন্যান্য কারণের কারণে ঝুঁকিপূর্ণ মনে হলে, ব্যবহারকারীর যাচাইকরণ না করা হলে আপনি ব্যবহারকারীর কাছে অতিরিক্ত সাইন-ইন চ্যালেঞ্জ উপস্থাপন করতে চাইতে পারেন।

userVerification='required' কখন ব্যবহার করবেন

userVerification='required' ব্যবহার করুন যদি আপনি মনে করেন UP এবং UV উভয়ই একেবারে প্রয়োজনীয়।

এই বিকল্পের একটি নেতিবাচক দিক হল যে ব্যবহারকারী সাইন ইন করার সময় আরও ঘর্ষণ অনুভব করতে পারে। উদাহরণস্বরূপ, ম্যাকওএস-এ যেখানে টাচ আইডি উপলব্ধ নেই, ব্যবহারকারীকে তাদের সিস্টেম পাসওয়ার্ড লিখতে বলা হয়।

userVerification='required' এর মাধ্যমে, আপনি নিশ্চিত করতে পারেন যে ডিভাইসে ব্যবহারকারী যাচাই করা হয়েছে। নিশ্চিত করুন যে সার্ভারটি UV পতাকাটি true কিনা তা যাচাই করে।

উপসংহার

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