OAuth ചരിത്രം: പാസ്വേഡുകളിൽ നിന്ന് ആഗോള മാനദണ്ഡങ്ങളിലേക്ക്
നിങ്ങൾ ഇത് ദിവസവും കാണുന്നുണ്ടാകും. നിങ്ങൾ "Login with Google" അല്ലെങ്കിൽ "Login with GitHub" ക്ലിക്ക് ചെയ്യുന്നു. നിങ്ങൾ ഒരു പാസ്വേഡ് ടൈപ്പ് ചെയ്യുന്നില്ല. നിങ്ങൾ ഉടൻ തന്നെ സൈറ്റിലേക്ക് പ്രവേശിക്കുന്നു.
ഇത് OAuth കാരണമാണ് സാധ്യമാകുന്നത്. ഇത് സുരക്ഷയ്ക്കായുള്ള ആഗോള മാനദണ്ഡമാണ്. എന്നാൽ ഇത് ഇത്തരത്തിലല്ല തുടങ്ങിയത്. വലിയ പ്രശ്നങ്ങൾ പരിഹരിക്കാനാണ് ഇത് വികസിച്ചെടുത്തത്.
പാസ്വേഡുകളുമായുള്ള പ്രശ്നങ്ങൾ
ആദ്യകാലങ്ങളിൽ, ഓരോ വെബ്സൈറ്റിനും നിങ്ങൾ പുതിയ പാസ്വേഡ് ഉണ്ടാക്കുമായിരുന്നു. ഇത് മൂന്ന് വലിയ പ്രശ്നങ്ങൾക്ക് കാരണമായി:
- ആളുകൾ എല്ലായിടത്തും ഒരേ പാസ്വേഡ് ഉപയോഗിച്ചു. ഒരു സൈറ്റിലെ വിവരങ്ങൾ ചോർന്നാൽ, എല്ലാ അക്കൗണ്ടുകളും അപകടത്തിലായി.
- ആളുകൾ പാസ്വേഡുകൾ മറന്നുപോയി. വെബ് ഉപയോഗിക്കുന്നതിനേക്കാൾ കൂടുതൽ സമയം അവർ "forgot password" ക്ലിക്ക് ചെയ്യാൻ ചെലവഴിച്ചു.
- വെബ്സൈറ്റുകൾക്ക് നിങ്ങളുടെ യഥാർത്ഥ പാസ്വേഡ് കാണാൻ കഴിയുമായിരുന്നു. ഒരു സൈറ്റ് ഹാക്ക് ചെയ്യപ്പെട്ടാൽ, നിങ്ങളുടെ പാസ്വേഡ് നഷ്ടപ്പെടുമായിരുന്നു.
സുരക്ഷയുടെ പരിണാമം
Basic Auth: ഓരോ റിക്വസ്റ്റിനൊപ്പവും നിങ്ങൾ നിങ്ങളുടെ യൂസർനെയിമും പാസ്വേഡും അയച്ചു. നിങ്ങൾ HTTPS ഉപയോഗിച്ചില്ലെങ്കിൽ, ഹാക്കർമാർക്ക് എല്ലാം കാണാൻ കഴിയുമായിരുന്നു.
Session Cookies: നിങ്ങൾ ഒരിക്കൽ ലോഗിൻ ചെയ്യുകയും ഒരു session ID ലഭിക്കുകയും ചെയ്യുന്നു. ഇത് മെച്ചപ്പെട്ടതായിരുന്നു, പക്ഷേ XSS അല്ലെങ്കിൽ CSRF പോലുള്ള ആക്രമണങ്ങളിലൂടെ കുക്കികൾ (cookies) മോഷ്ടിക്കപ്പെടാം. കൂടാതെ, ഒരു സൈറ്റിന് മറ്റൊരു സൈറ്റുമായി ആശയവിനിമയം നടത്താൻ നിങ്ങളുടെ ലോഗിൻ ഉപയോഗിക്കാൻ കഴിയില്ലായിരുന്നു.
API Keys: നിങ്ങൾ ഒരു വെബ്സൈറ്റിന് പ്രത്യേക കീ (key) നൽകി. പാസ്വേഡ് അയക്കേണ്ടി വരാത്തതിനാൽ ഇത് മെച്ചപ്പെട്ടതായിരുന്നു. എന്നിരുന്നാലും, API കീകൾക്ക് പലപ്പോഴും അമിതമായ അധികാരമുണ്ടാകും. നിങ്ങൾ ഒരു ആപ്പിന് API കീ നൽകിയാൽ, ആ ആപ്പിന് നിങ്ങളുടെ ഇമെയിലുകൾ വായിക്കാനും സന്ദേശങ്ങൾ അയക്കാനും നിങ്ങളുടെ അക്കൗണ്ട് ഡിലീറ്റ് ചെയ്യാനും അധികാരമുണ്ടാകാം. ഇത് ഒരു ഹോട്ടൽ വാലെറ്റിന് (valet) നിങ്ങളുടെ കാറിന്റെ കീ നൽകുന്നത് പോലെയാണ്, എന്നാൽ ആ കീ നിങ്ങളുടെ വീടിന്റെ വാതിലും തുറക്കുന്നു.
OAuth പരിഹാരം: വാലെറ്റ് കീ (The Valet Key)
OAuth ഈ രീതിയെ മാറ്റിമറിച്ചു. പാസ്വേഡ് നൽകുന്നതിന് പകരം, നിങ്ങൾ ഒരു "token" നൽകുന്നു. ഇതിനെ ഒരു വാലെറ്റ് കീയായി കരുതുക. ഒരു വാലെറ്റ് കീ ഡ്രൈവർക്ക് നിങ്ങളുടെ കാർ പാർക്ക് ചെയ്യാൻ അനുവദിക്കുന്നു, എന്നാൽ അത് നിങ്ങളുടെ കാറിന്റെ ഡിക്കി തുറക്കാനോ നിങ്ങളുടെ വീട്ടിൽ പ്രവേശിക്കാനോ അനുവദിക്കുന്നില്ല.
OAuth പ്രായോഗികമായി എങ്ങനെ പ്രവർത്തിക്കുന്നു:
- നിങ്ങൾക്ക് Canva ഉപയോഗിക്കണമെന്നും Google-ൽ നിന്ന് ഫോട്ടോകൾ എടുക്കണമെന്നും ആഗ്രഹിക്കുന്നു.
- Canva, Google-നോട് അനുമതി ചോദിക്കുന്നു.
- Google നിങ്ങളോട് ചോദിക്കുന്നു: "Canva-യ്ക്ക് നിങ്ങളുടെ ഫോട്ടോകൾ കാണാൻ കഴിയുമോ?"
- നിങ്ങൾ പറയുന്നു: "അതെ, പക്ഷേ കാണാൻ മാത്രം. ഒന്നും ഡിലീറ്റ് ചെയ്യാൻ അനുവദിക്കരുത്."
- Google, Canva-യ്ക്ക് ഒരു പ്രത്യേക ടോക്കൺ നൽകുന്നു.
Canva ഒരിക്കലും നിങ്ങളുടെ Google പാസ്വേഡ് കാണുന്നില്ല. ഒരു ഹാക്കർ ആ ടോക്കൺ മോഷ്ടിച്ചാൽ പോലും, അവർക്ക് കുറച്ചു സമയത്തേക്ക് ഫോട്ടോകൾ കാണാൻ മാത്രമേ കഴിയൂ. അവർക്ക് നിങ്ങളുടെ പാസ്വേഡ് മാറ്റാനോ പണം മാറ്റാനോ കഴിയില്ല.
ആധുനിക സുരക്ഷ: PKCE
മൊബൈൽ ആപ്പുകൾക്കും വെബ് ആപ്പുകൾക്കും ഒരു ബലഹീനതയുണ്ട്. അവയ്ക്ക് രഹസ്യങ്ങൾ നന്നായി ഒളിപ്പിച്ചു വെക്കാൻ കഴിയില്ല. ഇത് പരിഹരിക്കാൻ നമ്മൾ PKCE (Proof Key for Code Exchange) ഉപയോഗിക്കുന്നു.
ഇത് ഒരു റിസർവേഷൻ സിസ്റ്റം പോലെ പ്രവർത്തിക്കുന്നു:
- ആപ്പ് ഒരു രഹസ്യ കോഡ് (the verifier) നിർമ്മിക്കുന്നു.
- ആപ്പ് ആ കോഡിന്റെ ഹാഷ് ചെയ്ത പതിപ്പ് (the challenge) Google-ലേക്ക് അയക്കുന്നു.
- ആപ്പ് ടോക്കണിനായി ആവശ്യപ്പെടുമ്പോൾ, അത് യഥാർത്ഥ രഹസ്യ കോഡ് അയക്കുന്നു.
- കോഡ് ചലഞ്ചിനോട് (challenge) യോജിക്കുന്നുണ്ടോ എന്ന് Google പരിശോധിക്കുന്നു.
അവ യോജിക്കുന്നുണ്ടെങ്കിൽ, അത് അതേ ആപ്പാണെന്ന് Google-ന് മനസ്സിലാകും. അവ യോജിക്കുന്നില്ലെങ്കിൽ, Google ആ റിക്വസ്റ്റ് തടയുന്നു. ഇത് ഹാക്കർമാർ നിങ്ങളുടെ ഓതറൈസേഷൻ കോഡ് മോഷ്ടിക്കുന്നത് തടയുന്നു.
OAuth-ന്റെ റോഡ്മാപ്പ്
- 2007 (OAuth 1.0): വളരെ സങ്കീർണ്ണമായിരുന്നു, കഠിനമായ ഗണിതശാസ്ത്രം ഉപയോഗിച്ചിരുന്നു.
- 2012 (OAuth 2.0): വേഗതയേറിയതും എളുപ്പവുമാണ്. ഇത് ടോക്കണുകൾ ഉപയോഗിക്കുകയും HTTPS ആവശ്യപ്പെടുകയും ചെയ്തു.
- 2016 (OAuth 2.0 + PKCE): മൊബൈൽ, ആധുനിക വെബ് ആപ്പുകൾക്കായി സുരക്ഷ കൂട്ടിച്ചേർത്തു.
- 2023 (OAuth 2.1): പുതിയ ഗോൾഡ് സ്റ്റാൻഡേർഡ്. ഇത് പഴയതും സുരക്ഷിതമല്ലാത്തതുമായ രീതികൾ ഒഴിവാക്കുന്നു.
പ്രധാന പാഠം: നിങ്ങളുടെ പാസ്വേഡ് ഒരിക്കലും മറ്റൊരു ആപ്പിന് നൽകരുത്. കാലാവധി കഴിയുന്ന ഒരു പരിമിത ടിക്കറ്റ് മാത്രം നൽകുക. നിയന്ത്രണം നിങ്ങളുടെ കൈവശമായിരിക്കും.
Source: https://dev.to/gophernment/oauth-elaaaebbprawatisaastr-cchaakrhasphaan-suumaatrthaanolk-16b4
