Bcrypt என்றால் என்ன?
Bcrypt என்பது கடவுச்சொல்-ஹாஷிங் செயல்பாடு ஆகும், இது Niels Provos மற்றும் David Mazières ஆகியோரால் Blowfish சைஃபரின் அடிப்படையில் வடிவமைக்கப்பட்டது. MD5 அல்லது SHA-256 போன்ற வேகமான டைஜெஸ்ட்களைப் போலல்லாமல், bcrypt வேண்டுமென்றே மெதுவானது மற்றும் கணினிச் செலவு அதிகமானது — இது திருடப்பட்ட கடவுச்சொல் ஹாஷ்களுக்கு எதிரான ப்ரூட்-ஃபோர்ஸ் தாக்குதல்களை நடைமுறைச் சாத்தியமற்றதாக்குகிறது. Bcrypt ஒவ்வொரு கடவுச்சொல்லுக்கும் தானாகவே ஒரு சீரற்ற சால்ட்டை உருவாக்குகிறது, எனவே ஒரே மாதிரியான கடவுச்சொற்கள் வெவ்வேறு ஹாஷ்களை உருவாக்குகின்றன.
Bcrypt எவ்வாறு செயல்படுகிறது?
Bcrypt அல்காரிதம் முழுவதுமாக உங்கள் உலாவியில் இயங்குகிறது. படிப்படியாக என்ன நடக்கிறது என்பது இங்கே:
- உங்கள் கடவுச்சொல் UTF-8 பைட்டுகளாக குறியாக்கம் செய்யப்பட்டு bcrypt கீ ஷெட்யூலில் வழங்கப்படுகிறது, இது கடவுச்சொல் மற்றும் சால்ட்டைப் பயன்படுத்தி Blowfish சைஃபரின் 4,184-பைட் P-array மற்றும் S-பெட்டிகளை துவக்குகிறது.
- ஒரு சீரற்ற 128-பிட் சால்ட் உருவாக்கப்படுகிறது. சால்ட் கீ ஷெட்யூலில் கலக்கப்படுகிறது, எனவே ஒவ்வொரு தனித்துவமான சால்ட்டும் ஒரே கடவுச்சொல்லுக்கு கூட முற்றிலும் மாறுபட்ட ஹாஷை உருவாக்குகிறது.
- கீ ஷெட்யூல் 2^cost சுற்றுகளுக்கு (எ.கா., காஸ்ட் 10 இல் 2^10 = 1,024 மறுசெய்கைகள்) மீண்டும் செயல்படுகிறது. ஒவ்வொரு மறுசெய்கையும் சால்ட் மற்றும் P-array உள்ளீடுகளை மீண்டும் குறியாக்கம் செய்கிறது, காஸ்ட் அதிகரிக்கும்போது கணினி மெதுவாகிறது.
- இறுதி வெளியீடு
$2b$<cost>$<salt><hash>வடிவத்தில் 60-எழுத்து சரமாகும், இதில் காஸ்ட் பூஜ்ஜிய-பேட் செய்யப்பட்டது (எ.கா., 10), சால்ட் 22 Base64 எழுத்துகள், மற்றும் ஹாஷ் 31 Base64 எழுத்துகள். - சரிபார்ப்புக்காக, அதே அல்காரிதம் வேட்பாளர் கடவுச்சொல் மற்றும் சேமிக்கப்பட்ட ஹாஷிலிருந்து எடுக்கப்பட்ட சால்ட்டுடன் மீண்டும் இயக்கப்படுகிறது. உருவாக்கப்பட்ட ஹாஷ் சேமிக்கப்பட்ட ஹாஷுடன் பொருந்தினால், கடவுச்சொல் சரியானது.
நான் எந்த காஸ்ட் காரணியைப் பயன்படுத்த வேண்டும்?
காஸ்ட் காரணி என்பது மறுசெய்கை எண்ணிக்கையின் மடக்கை ஆகும் — காஸ்ட் 10 என்றால் 2^10 = 1,024 சுற்றுகள், காஸ்ட் 12 என்றால் 4,096 சுற்றுகள். உங்கள் பாதுகாப்புத் தேவைகள் மற்றும் வன்பொருளின் அடிப்படையில் தேர்வுசெய்யவும்:
- காஸ்ட் 4-6 (16-64 சுற்றுகள்) — டெவலப்மென்ட் மற்றும் சோதனைக்கு மட்டுமே. புரொடக்ஷன் பயன்பாட்டிற்கு மிகவும் வேகமானது; குறைந்த பாதுகாப்பை வழங்குகிறது.
- காஸ்ட் 8 (256 சுற்றுகள்) — முக்கியமற்ற பயன்பாடுகளுக்கான குறைந்தபட்சம். நவீன வன்பொருளில் சுமார் 6ms.
- காஸ்ட் 10 (1,024 சுற்றுகள்) — தற்போதைய பரிந்துரைக்கப்பட்ட அடிப்படை. சுமார் 25ms ஆகும். பெரும்பாலான வலை பயன்பாடுகளுக்கு நல்லது.
- காஸ்ட் 12 (4,096 சுற்றுகள்) — நிர்வாக போர்டல்கள், நிதி முறைமைகள் மற்றும் உயர்-பாதுகாப்பு பயன்பாடுகளுக்கு பரிந்துரைக்கப்படுகிறது. சுமார் 100ms ஆகும்.
- காஸ்ட் 14 (16,384 சுற்றுகள்) — உயர் பாதுகாப்பு. சுமார் 400ms ஆகும். மாஸ்டர் கடவுச்சொற்கள், என்க்ரிப்ஷன் கீகள் அல்லது உள்நுழைவு தாமதம் ஏற்றுக்கொள்ளத்தக்கதாக இருக்கும்போது பயன்படுத்தவும்.
ஏன் இந்த bcrypt உருவாக்கியைப் பயன்படுத்த வேண்டும்?
- உங்கள் தனியுரிமை பாதுகாக்கப்படுகிறது — ஒவ்வொரு கடவுச்சொல்லும் உங்கள் உலாவியில் உள்நாட்டில் ஹாஷ் செய்யப்படுகிறது, மேலும் எந்த தரவும் உங்கள் சாதனத்தை விட்டு வெளியேறாது.
- நீங்கள் இரண்டு முறைகளையும் அருகருகே பெறுகிறீர்கள்: பக்கத்தை மாற்றாமல் புதிய ஹாஷ்களை உருவாக்கவும் அல்லது இருக்கும் ஹாஷ்களை சரிபார்க்கவும்.
- காஸ்ட் காரணி 4 (வேகமான) முதல் 15 (மிக மெதுவான) வரை சரிசெய்யக்கூடியது, எனவே உங்கள் பயன்பாட்டின் பாதுகாப்புத் தேவைகளுடன் பொருந்தலாம்.
- ஹாஷ்கள் நிலையான
$2b$வடிவத்தைப் பயன்படுத்துகின்றன, இது ஒவ்வொரு முக்கிய மொழி மற்றும் கட்டமைப்புடன் வேலை செய்கிறது.
Bcrypt-ன் பொதுவான பயன்பாடுகள் யாவை?
தொழில்துறை முழுவதும் கடவுச்சொல் சேமிப்பு மற்றும் சரிபார்ப்புக்காக Bcrypt பரவலாகப் பயன்படுத்தப்படுகிறது:
- வலை பயன்பாட்டு அங்கீகாரம் — டேட்டாபேஸ்களில் பயனர் கடவுச்சொல் ஹாஷ்களை சேமித்தல், இதனால் ப்ளைன்டெக்ஸ்ட் கடவுச்சொற்கள் ஒருபோதும் சேமிக்கப்படாது.
- API கீ ஹாஷிங் — சேமிப்பதற்கு முன் API ரகசியங்களை ஹாஷ் செய்தல், இதனால் டேட்டாபேஸ் மீறல் செல்லுபடியாகும் நற்சான்றிதழ்களை கசியவிடாது.
- இடம்பெயர்வு தணிக்கை — பழைய முறைமையிலிருந்தான லெகசி கடவுச்சொல் ஹாஷ்கள் அங்கீகார அடுக்கை மேம்படுத்திய பிறகும் பயனர்களை அங்கீகரிக்க முடியுமா என்பதை சரிபார்த்தல்.
Bcrypt ஹாஷ் எப்படி இருக்கும்?
கடவுச்சொல் hunter2 ஐ காஸ்ட் காரணி 10 உடன் ஹாஷ் செய்வது $2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy போன்ற ஒரு சரத்தை உருவாக்குகிறது. வடிவம் இவ்வாறு உடைகிறது: $2b$ (அல்காரிதம் பதிப்பு), 10 (காஸ்ட் காரணி), $, பிறகு 22 எழுத்துகள் சால்ட் மற்றும் 31 எழுத்துகள் ஹாஷ், அனைத்தும் Base64-குறியாக்கம் செய்யப்பட்டவை. சீரற்ற சால்ட் காரணமாக ஒரே கடவுச்சொல்லுடன் ஒவ்வொரு முறையும் வெவ்வேறு ஹாஷ் உருவாகிறது.
இந்த bcrypt உருவாக்கி முழுவதுமாக உங்கள் உலாவியில் தூய-JavaScript செயலாக்கத்தைப் பயன்படுத்தி இயங்குகிறது. கடவுச்சொற்களை சேமிப்பதற்கு முன் ஹாஷ் செய்யவும், இருக்கும் ஹாஷ்களை சரிபார்க்கவும், மற்றும் காஸ்ட் காரணியை உங்கள் பாதுகாப்புத் தேவைகளுக்கு சரிசெய்யவும் — ஒரு பைட் கூட சர்வருக்கு அனுப்பாமல்.