TOTP জেনারেটর

base32 সিক্রেট থেকে সময়-ভিত্তিক ওয়ান-টাইম পাসওয়ার্ড (TOTP) তৈরি ও যাচাই করুন। Google Authenticator এবং RFC 6238-এর সাথে সামঞ্জস্যপূর্ণ।

ওয়ান-টাইম পাসওয়ার্ড, RFC 6238। একটি base32 সিক্রেটের জন্য বর্তমান TOTP তৈরি করুন এবং আপনি প্রাপ্ত একটি কোড যাচাই করুন। কাউন্টারটি বর্তমান সময় থেকে উদ্ভূত হয়, তাই কোড প্রতি 30 বা 60 সেকেন্ডে রিফ্রেশ হয়। সম্পূর্ণরূপে আপনার ব্রাউজারে চলে।

------

একটি কোড যাচাই করুন

TOTP কীভাবে কাজ করে

একটি ভাগ করা সিক্রেট প্লাস ঘড়ি

TOTP RFC 6238-এ সংজ্ঞায়িত এবং এটি HOTP-এর উপরে একটি পাতলা স্তর। উভয় পক্ষ একই সিক্রেট ধারণ করে, সাধারণত একবার QR কোড হিসাবে সরবরাহ করা হয় এবং একটি অথেনটিকেটর অ্যাপে সংরক্ষণ করা হয়। একটি কোড তৈরি করতে, প্রতিটি পক্ষ বর্তমান ইউনিক্স সময় নেয়, এটি ধাপের মাপ (ডিফল্ট 30 সেকেন্ড) দিয়ে ভাগ করে একটি কাউন্টার পায়, সিক্রেটের অধীনে সেই কাউন্টারের HMAC-SHA1 গণনা করে, এবং ফলাফলটিকে প্রয়োজনীয় ডিজিট সংখ্যায় ছোট করে। কাউন্টারটি বার্তার পরিবর্তে ঘড়ি থেকে আসে বলে, নিবন্ধনের পরে দুই পক্ষের মধ্যে কিছু ভ্রমণ করতে হয় না। সার্ভার কোনো চ্যালেঞ্জ পাঠায় না এবং অ্যাপের নেটওয়ার্ক অ্যাক্সেসের প্রয়োজন হয় না — এ কারণেই অথেনটিকেটর অ্যাপ এয়ারপ্লেন মোডে কাজ করে।

ট্রাঙ্কেশন এবং ডিজিট সংখ্যা

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

ঘড়ি বিচ্যুতি এবং রিপ্লে

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

ওপেন-সোর্স নোট: ব্রাউজার-নেটিভ Web Crypto (crypto.subtle) API এবং স্ক্র্যাচ থেকে লেখা base32 ডিকোডার দিয়ে বাস্তবায়িত। কোনো তৃতীয়-পক্ষের লাইব্রেরি নেই।

FAQ

এটি কি আমার অথেনটিকেটর অ্যাপ প্রতিস্থাপন করতে পারে?
এটি পরীক্ষা এবং আপনার ফোন অনুপলব্ধ হলে কোড উদ্ধারের জন্য কার্যকর, কিন্তু একটি ব্রাউজার ট্যাব দীর্ঘস্থায়ী ভাগ করা সিক্রেট রাখার নিরাপদ জায়গা নয়।
আমার কোড কেন প্রত্যাখ্যান হয়?
প্রায় সবসময় ঘড়ি বিচ্যুতি। TOTP কোডটি বর্তমান ইউনিক্স সময় থেকে উদ্ভূত করে, তাই সার্ভার থেকে এক 30-সেকেন্ড ধাপের বেশি দূরে থাকা ডিভাইস এমন একটি কোড তৈরি করে যা সার্ভার ইতিমধ্যে পেরিয়ে গেছে।
Base32 সিক্রেট কী বোঝায়?
এটি উভয় পক্ষের ধারণ করা ভাগ করা কী। Base32 ব্যবহার করা হয় কারণ এটি কেস-সংবেদনশীল নয় এবং দ্ব্যর্থক অক্ষর এড়ায়, যা এটি টাইপ বা QR কোডে এনকোড করা বাস্তবসম্মত করে।
কোড কেন ছয় ডিজিটের হয়?
RFC 6238 HMAC-কে একটি 31-বিট মানে ছোট করে এবং এটি 10^6 মডিউল নেয়। ছয় ডিজিট প্রতি চেষ্টায় এক-ইন-এ-মিলিয়ন অনুমান হারের সাথে ব্যবহারযোগ্যতার ভারসাম্য রাখে, যা রেট লিমিটিং আরও কমিয়ে দেয়।
TOTP এবং HOTP-এর মধ্যে পার্থক্য কী?
TOTP 30-সেকেন্ড সময় ধাপ গণনা করে; HOTP ঘটনা গণনা করে এবং শুধুমাত্র একটি কোড ব্যবহার করা হলে অগ্রসর হয়। TOTP-তে সিঙ্ক্রোনাইজড ঘড়ি দরকার, HOTP-তে সিঙ্ক্রোনাইজড কাউন্টার দরকার।
একই কোড কি দুবার ব্যবহার করা যাবে?
উচিত নয়। একটি কোড তার পুরো সময় ধাপ জুড়ে বৈধ থাকে, তাই একটি সার্ভার থেকে আশা করা হয় এটি রেকর্ড করবে যে ব্যবহারকারী কোন ধাপ ইতিমধ্যে ব্যবহার করেছে এবং একটি রিপ্লে প্রত্যাখ্যান করবে।