OAuth-এর ইতিহাস: পাসওয়ার্ড থেকে বৈশ্বিক মানদণ্ড পর্যন্ত

আপনি এটি প্রতিদিন দেখেন। আপনি "Login with Google" বা "Login with GitHub"-এ ক্লিক করেন। আপনি কোনো পাসওয়ার্ড টাইপ করেন না। আপনি তাৎক্ষণিকভাবে সাইটে প্রবেশ করতে পারেন।

এটি OAuth-এর কারণে সম্ভব হয়। এটি নিরাপত্তার জন্য একটি বৈশ্বিক মানদণ্ড। কিন্তু এটি শুরু থেকেই এমন ছিল না। বিশাল সব সমস্যার সমাধান করতে করতে এটি বিবর্তিত হয়েছে।

পাসওয়ার্ডের সমস্যাসমূহ

শুরুর দিনগুলোতে, আপনি প্রতিটি ওয়েবসাইটের জন্য একটি নতুন পাসওয়ার্ড তৈরি করতেন। এর ফলে তিনটি বড় সমস্যা দেখা দিত:

  • মানুষ সব জায়গায় একই পাসওয়ার্ড ব্যবহার করত। যদি একটি সাইটের তথ্য ফাঁস হতো, তবে প্রতিটি অ্যাকাউন্টই ঝুঁকির মুখে পড়ত।
  • মানুষ পাসওয়ার্ড ভুলে যেত। তারা ওয়েব ব্যবহারের চেয়ে "forgot password"-এ ক্লিক করতেই বেশি সময় ব্যয় করত।
  • ওয়েবসাইটগুলো আপনার আসল পাসওয়ার্ড দেখতে পেত। যদি কোনো সাইট হ্যাক হতো, তবে আপনার পাসওয়ার্ড চুরি হয়ে যেত।

নিরাপত্তার বিবর্তন

  1. Basic Auth: আপনি প্রতিটি রিকোয়েস্টের সাথে আপনার ইউজারনেম এবং পাসওয়ার্ড পাঠাতেন। আপনি যদি HTTPS ব্যবহার না করতেন, তবে হ্যাকাররা সবকিছু দেখতে পেত।

  2. Session Cookies: আপনি একবার লগ ইন করতেন এবং একটি session ID পেতেন। এটি আরও ভালো ছিল, কিন্তু XSS বা CSRF-এর মতো আক্রমণের মাধ্যমে কুকিজ চুরি করা সম্ভব। এছাড়া, একটি সাইট আপনার লগইন ব্যবহার করে অন্য একটি সাইটের সাথে যোগাযোগ করতে পারত না।

  3. API Keys: আপনি একটি ওয়েবসাইটকে একটি বিশেষ কী (key) দিতেন। এটি আরও ভালো ছিল কারণ এতে আপনাকে পাসওয়ার্ড পাঠাতে হতো না। তবে, API keys-এর ক্ষমতা অনেক বেশি থাকে। আপনি যদি কোনো অ্যাপকে একটি API key দেন, তবে সেই অ্যাপের আপনার ইমেল পড়া, মেসেজ পাঠানো এবং আপনার অ্যাকাউন্ট মুছে ফেলার ক্ষমতা থাকতে পারে। এটি অনেকটা হোটেলের ভ্যালে (valet)-কে আপনার গাড়ির চাবি দেওয়ার মতো, কিন্তু সেই চাবিটি দিয়ে আপনার বাড়িও খোলা সম্ভব।

OAuth সমাধান: ভ্যালে কী (Valet Key)

OAuth পুরো বিষয়টি বদলে দিয়েছে। পাসওয়ার্ড দেওয়ার পরিবর্তে, আপনি একটি "token" প্রদান করেন। এটিকে একটি ভ্যালে কী (valet key)-এর মতো ভাবুন। একটি ভ্যালে কী একজন ড্রাইভারকে আপনার গাড়ি পার্ক করতে দেয়, কিন্তু এটি তাকে আপনার গাড়ির ট্রাঙ্ক খুলতে বা আপনার বাড়িতে প্রবেশ করতে দেয় না।

বাস্তবে OAuth যেভাবে কাজ করে:

  • আপনি Canva ব্যবহার করতে চান এবং Google থেকে ছবি নিতে চান।
  • Canva, Google-এর কাছে অনুমতি চায়।
  • Google আপনাকে জিজ্ঞেস করে: "Canva কি আপনার ছবিগুলো দেখতে পারে?"
  • আপনি বলেন: "হ্যাঁ, কিন্তু শুধু দেখার জন্য। তাদের কিছু মুছে ফেলার অনুমতি দেবেন না।"
  • Google, Canva-কে একটি নির্দিষ্ট টোকেন প্রদান করে।

Canva কখনোই আপনার Google পাসওয়ার্ড দেখতে পায় না। এমনকি যদি কোনো হ্যাকার সেই টোকেনটি চুরিও করে ফেলে, তবুও তারা খুব অল্প সময়ের জন্য কেবল ছবিগুলো দেখতে পারবে। তারা আপনার পাসওয়ার্ড পরিবর্তন করতে বা আপনার টাকা সরিয়ে নিতে পারবে না।

আধুনিক নিরাপত্তা: PKCE

মোবাইল অ্যাপ এবং ওয়েব অ্যাপগুলোর একটি দুর্বলতা রয়েছে। তারা গোপনীয় তথ্য ভালোভাবে লুকিয়ে রাখতে পারে না। এটি সমাধানের জন্য আমরা PKCE (Proof Key for Code Exchange) ব্যবহার করি।

এটি একটি রিজার্ভেশন সিস্টেমের মতো কাজ করে:

  • অ্যাপটি একটি গোপন কোড (the verifier) তৈরি করে।
  • অ্যাপটি সেই কোডের একটি হ্যাশ করা সংস্করণ (the challenge) Google-এর কাছে পাঠায়।
  • যখন অ্যাপটি টোকেনের জন্য অনুরোধ করে, তখন এটি আসল গোপন কোডটি পাঠায়।
  • Google পরীক্ষা করে দেখে যে কোডটি চ্যালেঞ্জের সাথে মিলে কি না।

যদি সেগুলো মিলে যায়, তবে Google বুঝতে পারে যে এটি একই অ্যাপ। যদি না মিলে, তবে Google রিকোয়েস্টটি ব্লক করে দেয়। এটি হ্যাকারদের আপনার অথরাইজেশন কোড চুরি করা থেকে বিরত রাখে।

OAuth-এর রোডম্যাপ

  • 2007 (OAuth 1.0): অত্যন্ত জটিল ছিল এবং এতে ভারী গণিত ব্যবহৃত হতো।
  • 2012 (OAuth 2.0): দ্রুততর এবং সহজতর। এটি টোকেন ব্যবহার করত এবং এর জন্য HTTPS প্রয়োজন ছিল।
  • 2016 (OAuth 2.0 + PKCE): মোবাইল এবং আধুনিক ওয়েব অ্যাপের জন্য অতিরিক্ত নিরাপত্তা যোগ করা হয়েছে।
  • 2023 (OAuth 2.1): নতুন গোল্ড স্ট্যান্ডার্ড। এটি পুরনো এবং অনিরাপদ পদ্ধতিগুলো সরিয়ে দিয়েছে।

মূল শিক্ষা: কখনোই অন্য কোনো অ্যাপকে আপনার পাসওয়ার্ড দেবেন না। তাদের একটি সীমিত মেয়াদী টিকিট দিন যা নির্দিষ্ট সময় পর শেষ হয়ে যাবে। এতে আপনি নিয়ন্ত্রণে থাকবেন।

উৎস: https://dev.to/gophernment/oauth-elaaaebbprawatisaastr-cchaakrhasphaan-suumaatrthaanolk-16b4