OAuth வரலாறு: கடவுச்சொற்களிலிருந்து உலகளாவிய தரநிலைகள் வரை

நீங்கள் இதை ஒவ்வொரு நாளும் பார்க்கிறீர்கள். "Login with Google" அல்லது "Login with GitHub" என்பதைக் கிளிக் செய்கிறீர்கள். நீங்கள் கடவுச்சொல்லைத் தட்டச்சு செய்வதில்லை. உடனடியாகத் தளத்திற்குள் நுழைகிறீர்கள்.

இது OAuth காரணமாகச் சாத்தியமாகிறது. இது பாதுகாப்பிற்கான உலகளாவிய தரநிலையாகும். ஆனால் இது இப்படித் தொடங்கவில்லை. மிகப்பெரிய சிக்கல்களைத் தீர்ப்பதற்காக இது பரிணாம வளர்ச்சி அடைந்தது.

கடவுச்சொற்களுடன் உள்ள சிக்கல்

ஆரம்ப காலங்களில், ஒவ்வொரு இணையதளத்திற்கும் நீங்கள் ஒரு புதிய கடவுச்சொல்லை உருவாக்கினீர்கள். இது மூன்று பெரிய சிக்கல்களை ஏற்படுத்தியது:

  • மக்கள் எல்லா இடங்களிலும் ஒரே கடவுச்சொல்லைப் பயன்படுத்தினர். ஒரு தளம் கசிந்தால், ஒவ்வொரு கணக்கும் ஆபத்தில் இருக்கும்.
  • மக்கள் கடவுச்சொற்களை மறந்துவிட்டனர். இணையத்தைப் பயன்படுத்துவதை விட "forgot password" என்பதைக் கிளிக் செய்வதிலேயே அதிக நேரத்தைச் செலவிட்டனர்.
  • இணையதளங்கள் உங்கள் மூலக் கடவுச்சொல்லைப் பார்த்தன. ஒரு தளம் ஹேக் செய்யப்பட்டால், உங்கள் கடவுச்சொல் திருடப்படும்.

பாதுகாப்பின் பரிணாம வளர்ச்சி

  1. Basic Auth: ஒவ்வொரு கோரிக்கைக்கும் (request) உங்கள் பயனர் பெயர் மற்றும் கடவுச்சொல்லை அனுப்பினீர்கள். நீங்கள் HTTPS பயன்படுத்தவில்லை என்றால், ஹேக்கர்கள் அனைத்தையும் பார்க்க முடியும்.

  2. Session Cookies: நீங்கள் ஒருமுறை உள்நுழைந்து ஒரு session ID-ஐப் பெற்றீர்கள். இது சிறந்தது, ஆனால் XSS அல்லது CSRF போன்ற தாக்குதல்கள் மூலம் cookies திருடப்படலாம். மேலும், ஒரு தளம் மற்றொரு தளத்துடன் தொடர்புகொள்ள உங்கள் லாகின் விவரங்களைப் பயன்படுத்த முடியாது.

  3. API Keys: நீங்கள் ஒரு இணையதளத்திற்கு ஒரு சிறப்புச் சாவியை வழங்கினீர்கள். இது சிறந்தது, ஏனெனில் நீங்கள் உங்கள் கடவுச்சொல்லை அனுப்பவில்லை. இருப்பினும், API keys பெரும்பாலும் அதிக அதிகாரத்தைக் கொண்டிருக்கும். நீங்கள் ஒரு செயலியில் (app) API key-ஐ வழங்கினால், அந்தச் செயலி உங்கள் மின்னஞ்சல்களைப் படிக்கவும், செய்திகளை அனுப்பவும் மற்றும் உங்கள் கணக்கை நீக்கவும் அதிகாரம் கொண்டிருக்கலாம். இது ஒரு ஹோட்டல் வேலெட்டிற்கு (valet) உங்கள் காரின் சாவியை வழங்குவதைப் போன்றது, ஆனால் அந்தச் சாவி உங்கள் வீட்டையும் திறக்கும்.

OAuth தீர்வு: வேலெட் சாவி (The Valet Key)

OAuth விளையாட்டை மாற்றியது. உங்கள் கடவுச்சொல்லை வழங்குவதற்குப் பதிலாக, நீங்கள் ஒரு "token"-ஐ வழங்குகிறீர்கள். இதை ஒரு வேலெட் சாவி என்று நினைத்துக் கொள்ளுங்கள். ஒரு வேலெட் சாவி ஓட்டுநரை உங்கள் காரை நிறுத்த அனுமதிக்கிறது, ஆனால் உங்கள் காரின் டிக்கியைத் திறக்கவோ அல்லது உங்கள் வீட்டிற்குள் நுழையவோ அனுமதிக்காது.

OAuth நடைமுறையில் எவ்வாறு செயல்படுகிறது:

  • நீங்கள் Canva-வைப் பயன்படுத்த விரும்புகிறீர்கள் மற்றும் Google-லிருந்து புகைப்படங்களைப் பெற விரும்புகிறீர்கள்.
  • Canva, Google-இடம் அனுமதி கேட்கிறது.
  • Google உங்களிடம் கேட்கிறது: "Canva உங்கள் புகைப்படங்களைப் பார்க்கலாமா?"
  • நீங்கள் சொல்கிறீர்கள்: "ஆம், ஆனால் பார்க்க மட்டும் தான். எதையும் நீக்க அனுமதிக்காதீர்கள்."
  • Google, Canva-விற்கு ஒரு குறிப்பிட்ட token-ஐ வழங்குகிறது.

Canva உங்கள் Google கடவுச்சொல்லை ஒருபோதும் பார்க்காது. ஒரு ஹேக்கர் அந்த token-ஐத் திருடினாலும், அவர்களால் குறுகிய காலத்திற்கு மட்டுமே புகைப்படங்களைப் பார்க்க முடியும். அவர்களால் உங்கள் கடவுச்சொல்லை மாற்றவோ அல்லது உங்கள் பணத்தை நகர்த்தவோ முடியாது.

நவீன பாதுகாப்பு: PKCE

மொபைல் செயலிகள் மற்றும் இணையச் செயலிகளுக்கு ஒரு பலவீனம் உள்ளது. அவற்றால் ரகசியங்களைச் சரியாக மறைக்க முடியாது. இதைச் சரிசெய்ய, நாங்கள் PKCE (Proof Key for Code Exchange) பயன்படுத்துகிறோம்.

இது ஒரு முன்பதிவு முறையைப் போலச் செயல்படுகிறது:

  • செயலி ஒரு ரகசியக் குறியீட்டை (the verifier) உருவாக்குகிறது.
  • செயலி அந்த குறியீட்டின் ஹேஷ் செய்யப்பட்ட பதிப்பை (the challenge) Google-க்கு அனுப்புகிறது.
  • செயலி token-ஐக் கேட்கும்போது, அசல் ரகசியக் குறியீட்டை அனுப்புகிறது.
  • குறியீடு challenge-உடன் பொருந்துகிறதா என்று Google சரிபார்க்கிறது.

அவை பொருந்தினால், அது அதே செயலி என்பதை Google அறிந்து கொள்ளும். அவை பொருந்தவில்லை என்றால், Google கோரிக்கையைத் தடுக்கும். இது ஹேக்கர்கள் உங்கள் அங்கீகாரக் குறியீட்டைத் (authorization code) திருடுவதைத் தடுக்கிறது.

OAuth-இன் வரைபடம் (Roadmap)

  • 2007 (OAuth 1.0): மிகவும் சிக்கலானது மற்றும் கடினமான கணிதத்தைப் பயன்படுத்தியது.
  • 2012 (OAuth 2.0): வேகமானது மற்றும் எளிதானது. இது tokens-களைப் பயன்படுத்தியது மற்றும் HTTPS தேவைப்பட்டது.
  • 2016 (OAuth 2.0 + PKCE): மொபைல் மற்றும் நவீன இணையச் செயலிகளுக்கான பாதுகாப்பைச் சேர்த்தது.
  • 2023 (OAuth 2.1): புதிய தங்கம் போன்ற தரநிலை (gold standard). இது பழைய, பாதுகாப்பற்ற முறைகளை நீக்குகிறது.

முக்கிய பாடம்: உங்கள் கடவுச்சொல்லை மற்றொரு செயலிக்கு ஒருபோதும் கொடுக்காதீர்கள். காலாவதியாகும் வரையறுக்கப்பட்ட டிக்கெட்டை மட்டும் அவர்களுக்கு வழங்குங்கள். நீங்கள் கட்டுப்பாட்டில் இருப்பீர்கள்.

ஆதாரம்: https://dev.to/gophernment/oauth-elaaaebbprawatisaastr-cchaakrhasphaan-suumaatrthaanolk-16b4