পাসকি: কি হেক এবং কেন?

পাসকি: কি হেক এবং কেন?

এই জিনিসগুলি বলা হয় পাসকি নিশ্চিত এই দিন বৃত্তাকার করা হয়. তারা একটি প্রধান আকর্ষণ ছিল W3C TPAC 2022, এ সমর্থন অর্জন করেছে সাফারি 16, তাদের পথ খুঁজছেন macOS এবং iOS, এবং হতে slated হয় 1Password এর মত পাসওয়ার্ড পরিচালকদের ভবিষ্যত। তারা হয় ইতিমধ্যে সমর্থিত Android-এ, এবং শীঘ্রই ভবিষ্যতের রিলিজে Chrome OS এবং Windows-এ তাদের পথ খুঁজে পাবে।

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

যে এই নিবন্ধের পয়েন্ট. আমি পাসকি নিয়ে অধ্যয়ন ও পরীক্ষা-নিরীক্ষা করছি — এবং WebAuthn API-এর উপরে তৈরি করা হয়েছে — কিছু সময়ের জন্য। আমি যা শিখেছি তা আমাকে শেয়ার করতে দিন।

সুচিপত্র

পরিভাষা

এখানে পরিভাষাটির বাধ্যতামূলক বিভাগটি যা আপনি জানতে চাইছেন আমরা খনন করতে চাই। বেশিরভাগ প্রযুক্তির মতো, পাসকিগুলি গুপ্তভাষা এবং সংক্ষিপ্ত শব্দগুলি দিয়ে তৈরি করা হয় যা প্রায়শই বোঝার পথে বাধা হয়ে দাঁড়ায়। আমি এখানে আপনার জন্য বেশ কয়েকটিকে রহস্যমুক্ত করার চেষ্টা করব।

  • নির্ভরশীল দল: আপনি যে সার্ভারের বিরুদ্ধে প্রমাণীকরণ করবেন। আমরা এই নিবন্ধে নির্ভরকারী পক্ষ বোঝাতে "সার্ভার" ব্যবহার করব।
  • ক্লায়েন্ট: আমাদের ক্ষেত্রে, ওয়েব ব্রাউজার বা অপারেটিং সিস্টেম।
  • প্রমাণীকরণকারী: সফ্টওয়্যার এবং/অথবা হার্ডওয়্যার ডিভাইস যা পাবলিক কী জোড়ার জন্য প্রজন্ম এবং সঞ্চয়ের অনুমতি দেয়।
  • FIDO: একটি ওপেন স্ট্যান্ডার্ড বডি যা FIDO শংসাপত্রের চারপাশে স্পেসিফিকেশন তৈরি করে।
  • WebAuthn: পাসকিগুলির জন্য অন্তর্নিহিত প্রোটোকল, এ নামেও পরিচিত FIDO2 শংসাপত্র বা একক-ডিভাইস FIDO শংসাপত্র।
  • পাসকি: WebAuthn, কিন্তু ক্লাউড সিঙ্কিং সহ (এটিকে মাল্টি-ডিভাইস FIDO শংসাপত্র, আবিষ্কারযোগ্য শংসাপত্র, বা আবাসিক শংসাপত্রও বলা হয়)।
  • সর্বজনীন কী ক্রিপ্টোগ্রাফি: একটি উৎপন্ন কী জোড়া যা একটি ব্যক্তিগত এবং সর্বজনীন কী অন্তর্ভুক্ত করে। অ্যালগরিদমের উপর নির্ভর করে, এটি হয় স্বাক্ষর এবং যাচাই বা এনক্রিপ্ট এবং ডিক্রিপ্ট করার জন্য ব্যবহার করা উচিত। এটি নামেও পরিচিত অপ্রতিসম ক্রিপ্টোগ্রাফি.
  • RSA: নির্মাতাদের নামের সংক্ষিপ্ত রূপ, রিভেস্ট শামির এবং আদেল। RSA হল ফ্যাক্টরিং প্রাইমগুলির উপর ভিত্তি করে পাবলিক কী ক্রিপ্টোগ্রাফির একটি পুরানো, কিন্তু এখনও দরকারী, পরিবার।
  • উপবৃত্তাকার কার্ভ ক্রিপ্টোগ্রাফি (ECC): ক্রিপ্টোগ্রাফির একটি নতুন পরিবার উপবৃত্তাকার বক্ররেখার উপর ভিত্তি করে.
  • ES256: একটি উপবৃত্তাকার বক্ররেখা পাবলিক কী যা একটি ECDSA সাইনিং অ্যালগরিদম ব্যবহার করে (পিডিএফ) সঙ্গে SHA256 হ্যাশিংয়ের জন্য।
  • আরএস -256: ES256 এর মতো, তবে এটি এর সাথে RSA ব্যবহার করে RSASSA-PKCS1-v1.5 এবং SHA256।

পাসকি কি?

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

সর্বজনীন কী যে কেউ ব্যবহার করতে পারে। ব্যক্তিগত কী, যাইহোক, এটি তৈরি করা ডিভাইস থেকে সরানো যাবে না। এটি WebAuthn এর সমস্যাগুলির মধ্যে একটি ছিল; আপনি ডিভাইস হারান, আপনি অ্যাক্সেস হারাবেন.

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

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

পাসকিগুলি কীভাবে পাসওয়ার্ড প্রতিস্থাপন করে?

পাবলিক কী ক্রিপ্টোগ্রাফিতে, আপনি কী নামে পরিচিত তা সম্পাদন করতে পারেন স্বাক্ষর. সাইনিং ডেটার একটি অংশ নেয় এবং তারপর এটিকে ব্যক্তিগত কী দিয়ে সাইনিং অ্যালগরিদমের মাধ্যমে চালায়, যেখানে এটি সর্বজনীন কী দিয়ে যাচাই করা যেতে পারে।

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

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

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

ক্রিপ্টোগ্রাফি সম্পর্কে আরও

সর্বজনীন কী ক্রিপ্টোগ্রাফিতে একটি ব্যক্তিগত এবং একটি সর্বজনীন কী (কী জোড়া হিসাবে পরিচিত) থাকা জড়িত। কীগুলি একসাথে তৈরি করা হয় এবং আলাদা ব্যবহার রয়েছে। উদাহরণস্বরূপ, ব্যক্তিগত কীটি গোপন রাখার উদ্দেশ্যে করা হয়েছে, এবং আপনি যার সাথে বার্তা আদান-প্রদান করতে চান তার জন্য সর্বজনীন কী।

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

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

আমরা কিভাবে পাসকি অ্যাক্সেস করতে পারি?

পাসকিগুলি অ্যাক্সেস করতে, আমাদের প্রথমে সেগুলি তৈরি করে কোথাও সংরক্ষণ করতে হবে। এই কার্যকারিতা কিছু একটি প্রমাণীকরণ সঙ্গে প্রদান করা যেতে পারে. একটি প্রমাণকারী কোনো হার্ডওয়্যার বা সফ্টওয়্যার-সমর্থিত ডিভাইস যা ক্রিপ্টোগ্রাফিক কী তৈরির ক্ষমতা প্রদান করে। আপনি যে এককালীন পাসওয়ার্ডগুলি থেকে পান সেগুলি সম্পর্কে চিন্তা করুন৷ Google প্রমাণকারী1Password, বা LastPassiOS এর, অন্যদের মধ্যে.

উদাহরণস্বরূপ, একটি সফ্টওয়্যার প্রমাণীকরণকারী প্রমাণপত্র তৈরি করতে বিশ্বস্ত প্ল্যাটফর্ম মডিউল (TPM) বা একটি ডিভাইসের সুরক্ষিত এনক্লেভ ব্যবহার করতে পারে। শংসাপত্রগুলি তখন দূরবর্তীভাবে সংরক্ষণ করা যেতে পারে এবং ডিভাইস জুড়ে সিঙ্ক করা যেতে পারে যেমন পাসকি। একটি হার্ডওয়্যার প্রমাণীকরণকারী একটি মত কিছু হবে YubiKey, যা ডিভাইসেই কী তৈরি এবং সংরক্ষণ করতে পারে।

প্রমাণীকরণকারী অ্যাক্সেস করার জন্য, ব্রাউজারের হার্ডওয়্যারে অ্যাক্সেস থাকতে হবে এবং এর জন্য আমাদের একটি ইন্টারফেস প্রয়োজন। আমরা এখানে যে ইন্টারফেসটি ব্যবহার করি তা হল Client to Authenticator Protocol (CTAP)। এটি বিভিন্ন প্রক্রিয়ার মাধ্যমে বিভিন্ন প্রমাণীকরণকারীদের অ্যাক্সেসের অনুমতি দেয়। উদাহরণস্বরূপ, আমরা CTAP ব্যবহার করে NFC, USB, এবং Bluetooth-এর মাধ্যমে একটি প্রমাণীকরণকারী অ্যাক্সেস করতে পারি।

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

পাসকি এবং WebAuthn এর মধ্যে পার্থক্য

Passkeys এবং WebAuthn কী বিভিন্ন উপায়ে আলাদা। প্রথমত, পাসকিগুলিকে মাল্টি-ডিভাইস শংসাপত্র হিসাবে বিবেচনা করা হয় এবং ডিভাইসগুলি জুড়ে সিঙ্ক করা যেতে পারে। বিপরীতে, WebAuthn কীগুলি একক-ডিভাইস শংসাপত্র - এটি বলার একটি অভিনব উপায় যে আপনি যাচাইয়ের জন্য একটি ডিভাইসে আবদ্ধ৷

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

অন্যথায়, কীগুলি ক্রিপ্টোগ্রাফিকভাবে একই; তারা শুধুমাত্র কিভাবে তারা সংরক্ষণ করা হয় এবং লগইন প্রক্রিয়া শুরু করতে তারা কোন তথ্য ব্যবহার করে তার মধ্যে পার্থক্য করে।

প্রক্রিয়া... সংক্ষেপে

একটি WebAuthn বা একটি পাসকি তৈরি করার প্রক্রিয়াটি খুব অনুরূপ: সার্ভার থেকে একটি চ্যালেঞ্জ পান এবং তারপর ব্যবহার করুন navigator.credentials.create একটি সর্বজনীন কী জোড়া তৈরি করতে ওয়েব API। তারপরে, চ্যালেঞ্জ এবং সর্বজনীন কী সংরক্ষণ করার জন্য সার্ভারে ফেরত পাঠান।

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

ব্যবহারকারীর আরও একটি ধাপ রয়েছে — সার্ভার থেকে আরেকটি চ্যালেঞ্জ পুনরুদ্ধার করুন এবং ব্যবহার করুন navigator.credentials.get চ্যালেঞ্জ সাইন ইন করতে API. আমরা স্বাক্ষরিত চ্যালেঞ্জটি সার্ভারে ফেরত পাঠাই, এবং সার্ভার চ্যালেঞ্জটি যাচাই করে, তারপর স্বাক্ষর পাস হলে আমাদের লগ ইন করে।

অবশ্যই, প্রতিটি পদক্ষেপে আরও কিছুটা বেশি রয়েছে। কিন্তু সাধারণত আমরা WebAuthn বা পাসকি ব্যবহার করে একটি ওয়েবসাইটে লগ ইন করব।

মাংস এবং আলু

পাসকি দুটি স্বতন্ত্র পর্যায়ে ব্যবহার করা হয়: প্রত্যায়ন এবং কথন পর্যায়ক্রমে।

প্রত্যয়ন পর্বটিকে নিবন্ধন পর্ব হিসাবেও ভাবা যেতে পারে। আপনি একটি নতুন ওয়েবসাইটের জন্য একটি ইমেল এবং পাসওয়ার্ড দিয়ে সাইন আপ করবেন, তবে এই ক্ষেত্রে, আমরা আমাদের পাসকি ব্যবহার করব৷

দাবী পর্বটি সাইন আপ করার পরে আপনি কীভাবে একটি ওয়েবসাইটে লগ ইন করবেন তার অনুরূপ।

স্বীকৃতি

পাসকি: কি হেক এবং কেন? PlatoBlockchain ডেটা ইন্টেলিজেন্স। উল্লম্ব অনুসন্ধান. আ.
পুরো সাইজে দেখুন

সার্জারির  navigator.credentials.create API হল আমাদের প্রত্যয়ন পর্বের ফোকাস। আমরা সিস্টেমে একটি নতুন ব্যবহারকারী হিসাবে নিবন্ধিত হয়েছি এবং একটি নতুন পাবলিক কী জোড়া তৈরি করতে হবে৷ যাইহোক, আমরা কি ধরনের কী জোড়া তৈরি করতে চাই তা নির্দিষ্ট করতে হবে। এর মানে আমাদেরকে বিকল্প প্রদান করতে হবে navigator.credentials.create.

// The `challenge` is random and has to come from the server
const publicKey: PublicKeyCredentialCreationOptions = { challenge: safeEncode(challenge), rp: { id: window.location.host, name: document.title, }, user: { id: new TextEncoder().encode(crypto.randomUUID()), // Why not make it random? name: 'Your username', displayName: 'Display name in browser', }, pubKeyCredParams: [ { type: 'public-key', alg: -7, // ES256 }, { type: 'public-key', alg: -256, // RS256 }, ], authenticatorSelection: { userVerification: 'preferred', // Do you want to use biometrics or a pin? residentKey: 'required', // Create a resident key e.g. passkey }, attestation: 'indirect', // indirect, direct, or none timeout: 60_000,
};
const pubKeyCredential: PublicKeyCredential = await navigator.credentials.create({ publicKey
});
const { id // the key id a.k.a. kid
} = pubKeyCredential;
const pubKey = pubKeyCredential.response.getPublicKey();
const { clientDataJSON, attestationObject } = pubKeyCredential.response;
const { type, challenge, origin } = JSON.parse(new TextDecoder().decode(clientDataJSON));
// Send data off to the server for registration

আমরা পাবো PublicKeyCredential যা একটি ধারণ করে AuthenticatorAttestationResponse যা সৃষ্টির পর ফিরে আসে। শংসাপত্রে তৈরি করা কী জোড়ার আইডি রয়েছে।

প্রতিক্রিয়া কিছু বিট দরকারী তথ্য প্রদান করে. প্রথমত, এই প্রতিক্রিয়াতে আমাদের সর্বজনীন কী আছে, এবং আমাদের এটি সংরক্ষণ করার জন্য সার্ভারে পাঠাতে হবে। দ্বিতীয়ত, আমরা ফিরে পেতে clientDataJSON সম্পত্তি যা আমরা ডিকোড করতে পারি, এবং সেখান থেকে, ফিরে পেতে পারি typechallenge, এবং origin পাসকি এর

প্রত্যয়নের জন্য, আমরা যাচাই করতে চাই typechallenge, এবং origin সার্ভারে, সেইসাথে পাবলিক কী এর শনাক্তকারীর সাথে সংরক্ষণ করুন, যেমন বাচ্চা। আমরা ঐচ্ছিকভাবে সংরক্ষণ করতে পারেন attestationObject যদি আমরা চাই। সংরক্ষণ করার জন্য আরেকটি দরকারী সম্পত্তি হল COSE অ্যালগরিদম, যা আমাদের উপরে সংজ্ঞায়িত করা হয়েছে  PublicKeyCredentialCreationOptions সঙ্গে alg: -7 or alg: -256, দাবী পর্বে কোনো স্বাক্ষরিত চ্যালেঞ্জ সহজে যাচাই করার জন্য।

কথন

পাসকি: কি হেক এবং কেন? PlatoBlockchain ডেটা ইন্টেলিজেন্স। উল্লম্ব অনুসন্ধান. আ.
পুরো সাইজে দেখুন

সার্জারির  navigator.credentials.get এপিআই হবে দাবী পর্বের ফোকাস। ধারণাগতভাবে, এখানে ব্যবহারকারী সাইন আপ করার পরে ওয়েব অ্যাপ্লিকেশনে লগ ইন করবেন।

// The `challenge` is random and has to come from the server
const publicKey: PublicKeyCredentialRequestOptions = { challenge: new TextEncoder().encode(challenge), rpId: window.location.host, timeout: 60_000,
};
const publicKeyCredential: PublicKeyCredential = await navigator.credentials.get({ publicKey, mediation: 'optional',
});
const { id // the key id, aka kid
} = pubKeyCredential;
const { clientDataJSON, attestationObject, signature, userHandle } = pubKeyCredential.response;
const { type, challenge, origin } = JSON.parse(new TextDecoder().decode(clientDataJSON));
// Send data off to the server for verification

আমরা আবার একটি পেতে হবে PublicKeyCredential একটি সঙ্গে AuthenticatorAssertionResponse এইবার. শংসাপত্র আবার কী শনাক্তকারী অন্তর্ভুক্ত করে।

আমরা পেতে typechallenge, এবং origin থেকে clientDataJSON আবার। দ্য signature এখন প্রতিক্রিয়া অন্তর্ভুক্ত করা হয়েছে, সেইসাথে authenticatorData. আমরা যারা এবং প্রয়োজন হবে clientDataJSON এটি ব্যক্তিগত কী দিয়ে স্বাক্ষরিত হয়েছে তা যাচাই করতে।

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

একবার আপনি আপনার লগইন নিশ্চিত করার পরে, আপনাকে লগ ইন করা উচিত — অভিনন্দন! পাসকিগুলি একটি দুর্দান্ত প্রোটোকল, তবে এটি কিছু সতর্কতার সাথে আসে।

কিছু খারাপ দিক

পাসকিগুলির অনেক উল্টোদিকে রয়েছে, তবে এই লেখার সময় এটির সাথে কিছু সমস্যা রয়েছে। একটি জিনিসের জন্য, পাসকিগুলি এখনও কিছুটা প্রাথমিক সমর্থন-ভিত্তিক, উইন্ডোজে শুধুমাত্র একক-ডিভাইস শংসাপত্র অনুমোদিত এবং লিনাক্স সিস্টেমের জন্য খুব কম সমর্থন। Passkeys.dev একটি প্রদান করে চমৎকার টেবিল যে এই প্রোটোকল এর Caniuse মত সাজানোর.

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

জিনিষ কোথায় যাচ্ছে?

ভবিষ্যতের পাসকি প্রোটোকল দেখতে কেমন? এটা বেশ ভাল দেখায়! একবার এটি আরও অপারেটিং সিস্টেম থেকে সমর্থন লাভ করলে, ব্যবহারে একটি আপটেক হওয়া উচিত, এবং আপনি এটি দেখতে শুরু করবেন যে এটি বন্যতে আরও বেশি ব্যবহৃত হচ্ছে। কিছু পাসওয়ার্ড ম্যানেজার এমনকি তাদের প্রথম হাত সমর্থন করতে যাচ্ছে.

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

সর্বোপরি, আমরা পাসওয়ার্ডের প্রয়োজনীয়তা দূর করি, এবং এটি করার মাধ্যমে, এটির জন্য বিশ্বকে আরও নিরাপদ করে তুলুন!

Resources

আপনি যদি পাসকি সম্পর্কে আরও জানতে চান তবে এখানে আরও কিছু সংস্থান রয়েছে। এই নিবন্ধের জন্য আমি একত্রিত একটি সংগ্রহস্থল এবং ডেমো আছে.

সময় স্ট্যাম্প:

থেকে আরো সিএসএস কৌশল