షట్టర్‌స్టాక్ / అంటోన్ షపారెంకో

పాస్‌వర్డ్‌లు చాలా ప్రైవేట్ సమాచారం మరియు మీరు డేటా ఉల్లంఘనకు బాధ్యత వహించాలనుకోవడం లేదు. మీరు వాటిని మీ అప్లికేషన్‌లో నిర్వహించాల్సిన అవసరం ఉంటే వాటిని చాలా జాగ్రత్తగా తీసుకోవాలి.

దాడి చేసేవారు మీ సర్వర్‌కు ప్రాప్యత పొందిన తర్వాత మరియు మీ పాస్‌వర్డ్‌లను నిల్వ చేసే డేటాబేస్ను చూడగలిగిన తర్వాత చాలా పాస్‌వర్డ్ భద్రతా సమస్యలు సంభవిస్తాయి. మొదటి స్థానంలో అనధికార ప్రాప్యతను నిరోధించడానికి మీ సర్వర్‌ను లాక్ చేయడం ఖచ్చితంగా మంచి ఆలోచన అయితే, చెత్త దృష్టాంతంలో మీరు ఇంకా నష్టం నియంత్రణను అమలు చేయాలి.

మీకు వీలైతే బదులుగా OAuth ని ఉపయోగించండి

పాస్‌వర్డ్‌లను నిర్వహించడానికి ఉత్తమ మార్గం అస్సలు కాదు. పాస్‌వర్డ్‌లను నేరుగా నిర్వహించడానికి మీకు నిర్దిష్ట అవసరం లేకపోతే, మీ కోసం వేరొకరు దీన్ని నిర్వహించడానికి మీరు OAuth ని ఉపయోగించవచ్చు. దీనిని థర్డ్ పార్టీ లాగిన్ అని కూడా పిలుస్తారు మరియు మీరు ఎప్పుడైనా గూగుల్ లేదా ఫేస్‌బుక్‌తో సైన్ ఇన్ చేయమని అడిగినట్లయితే మీరు ఇంతకు ముందే దాన్ని చూడవచ్చు.

పాస్‌వర్డ్ ప్రామాణీకరణ కంటే OAuth చాలా క్లిష్టంగా ఉంటుంది, కానీ మీరు పూర్తిగా రాజీపడినా, దాడి చేసేవారు చూడగలిగే పాస్‌వర్డ్ డేటా లేదు, హాష్‌లు కూడా లేవు.

పాస్‌వర్డ్‌లను స్పష్టమైన వచనంలో ఎప్పుడూ నిల్వ చేయవద్దు

మీరు పాస్‌వర్డ్‌లను నిల్వ చేయవలసి వస్తే, మీరు వాటిని మీ సర్వర్‌లో ఎప్పుడూ సాదా వచనంగా నిల్వ చేయకూడదు. “సాదా వచనం” అంటే మీ డిస్క్‌కు ప్రాప్యత ఉన్న దాడిచేసేవారు దీన్ని చదవగలరు. ఉదాహరణకు, మీరు యూజర్ పాస్‌వర్డ్ తీసుకొని మీ MySQL డేటాబేస్‌లో నిల్వ చేస్తే, అది సాదా వచనంలో నిల్వ చేయబడుతుంది. అందువల్లనే మీ పాత పాస్‌వర్డ్ ఏమిటో కంపెనీ మీకు చెప్పే బదులు కంపెనీకి బదులుగా మీ పాస్‌వర్డ్‌ను రీసెట్ చేయడానికి మీకు ఎల్లప్పుడూ లింక్‌ను అందిస్తారు.

సాదాపాఠ సమస్యకు పరిష్కారం హాషింగ్. హాష్ అనేది విలువను అంగీకరించే మరియు ప్రత్యేకమైన కీని ఉత్పత్తి చేసే ఫంక్షన్. ఉదాహరణకు, “password“వీటిలో SHA256 హాష్ ఉంది:

6B3A55E0261B0304143F805A24924D0C1C44524821305F31D9277843B8A10F4E

కానీ ఒకే అంకెను కూడా మార్చడం (passwerd) అవుట్‌పుట్‌ను పూర్తిగా మారుస్తుంది:

0B503AEB841F18131DFA86FA052CEF91D9F4D81D301B89F6D035AF89C2CD8AA5

కాబట్టి పాస్‌వర్డ్‌ను సర్వర్‌లో నిల్వ చేయడానికి బదులుగా, మీరు ఈ హాష్‌ను నిల్వ చేస్తారు. హాష్‌లు క్రిప్టోగ్రఫీకి భిన్నంగా ఉంటాయి, అవి వన్-వే ఫంక్షన్లు. మీరు ఏదో హాష్ చేయవచ్చు, కానీ హాష్‌ను బలవంతం చేయకుండా “అన్హాష్” చేయడం అసాధ్యం. నిల్వ చేయడానికి రహస్య కీ లేదని దీని అర్థం, మరియు దాడి చేసిన వ్యక్తి హాష్‌పై చేయి సాధించినా, వారు మొదట విషయాలను చూడటానికి బలవంతం చేయాల్సి ఉంటుంది.

లాగ్ ఫైల్స్ వంటి సహాయక విషయాలకు కూడా ఈ సాదాపాఠం నియమం వర్తిస్తుంది – దాడి చేసేవారు ఎక్కడి నుండైనా చదవగలిగితే, అది పెద్ద విషయం. ఇది HTTP వంటి సాదా టెక్స్ట్ ట్రాన్స్మిషన్ పద్ధతులకు కూడా వర్తిస్తుంది, అయినప్పటికీ మీరు నెట్‌వర్క్ ద్వారా పాస్‌వర్డ్‌లను ఎప్పుడూ పంపకూడదు. పాస్‌వర్డ్‌లు నెట్‌వర్క్‌లో కనుగొనబడకుండా నిరోధించడానికి మీరు ఎంటర్ చేసినప్పుడు క్లయింట్-సైడ్ హాష్‌ను రూపొందించాలనుకుంటున్నారు.

HTTPS తో ట్రాఫిక్‌ను భద్రపరచడం క్లయింట్-సైడ్ మ్యాన్-ఇన్-ది-మిడిల్ దాడులను నిరోధిస్తుంది, దాడి చేసేవారికి మీ సర్వర్‌కు ప్రాప్యత ఉంటే, వారు కొత్తగా సృష్టించిన పాస్‌వర్డ్‌లను డీక్రిప్ట్ చేసి స్నిఫ్ చేయవచ్చు. ఇది మీ సేవను మరింత నమ్మదగినదిగా చేస్తుంది, ఎందుకంటే మీరు వారి పాస్‌వర్డ్‌ను తెర వెనుక రహస్యంగా నిల్వ చేస్తున్నారో వినియోగదారుకు తెలియదు. మీరు హాష్ మాత్రమే చూస్తే, సర్వర్‌కు కూడా వారి పాస్‌వర్డ్ ఏమిటో తెలియదు.

మీరు మంచి హాష్‌ను ఉపయోగించాలనుకుంటే, PBKDF2 ని ఎంచుకోండి, ఎందుకంటే ఇది పాస్‌వర్డ్‌లను నిల్వ చేయడానికి ప్రత్యేకంగా ఉపయోగించబడుతుంది మరియు చాలా సురక్షితం. మీరు బహుశా క్లయింట్ వైపు జావాస్క్రిప్ట్ అమలును ఉపయోగించాలనుకుంటున్నారు, కానీ మీరు దానిని సర్వర్ వైపు ఉపయోగించాల్సి వస్తే, మీరు మీ భాష కోసం అమలును ఉపయోగించాలనుకుంటున్నారు.

మీ పాస్‌వర్డ్‌లను దాటవేయి

హాషింగ్‌కు సమస్య ఉంది మరియు రెయిన్‌బో టేబుల్స్ అని పిలువబడే ఒక పద్ధతితో సాధారణ పాస్‌వర్డ్ హాష్‌లను పగులగొట్టవచ్చు.

హాష్‌పై దాడి చేయడానికి, మీ డేటాబేస్‌లోని ప్రతి హాష్ ఎంట్రీకి సాధ్యమయ్యే ప్రతి పాస్‌వర్డ్‌ను మీరు ప్రయత్నించవచ్చు, దీనిని బ్రూట్‌ఫోర్సింగ్ అని పిలుస్తారు – నెమ్మదిగా, కానీ పూర్తిగా అసాధ్యం కాదు, పాస్‌వర్డ్ ఎంత బలహీనంగా ఉందో మరియు దానిని నిల్వ చేయడానికి ఉపయోగించే హాష్‌ను బట్టి. లెక్కించడానికి కొన్ని రోజులు లేదా వారాలు పట్టవచ్చు, కాని చివరికి ఒకే బలహీనమైన పాస్‌వర్డ్ పగుళ్లు ఏర్పడుతుంది.

రెయిన్బో పట్టికలు ఈ ప్రక్రియను బాగా వేగవంతం చేస్తాయి. ప్రతి పాస్‌వర్డ్‌ను ఒక్కొక్కటిగా బలవంతం చేయడానికి బదులుగా, సాధ్యమయ్యే ప్రతి పాస్‌వర్డ్‌కు హాష్‌లు ముందుగానే లెక్కించబడతాయి మరియు ఫైల్‌లో నిల్వ చేయబడతాయి. ఈ ఫైల్ భారీగా ఉంటుంది, అనేక వందల టెరాబైట్ల స్థాయిలో ఉంటుంది. ఇది సాధ్యమయ్యే ప్రతి పాస్‌వర్డ్ యొక్క కీ-విలువ జత (పట్టికను బట్టి ఒక నిర్దిష్ట పరిమాణం వరకు) మరియు సంబంధిత హాష్.

రెయిన్బో టేబుల్ ఉదాహరణ.

ఇది నిల్వ స్థలం మరియు సమయం మధ్య వర్తకం; మీరు ఒక్కసారి మాత్రమే హాష్ చేయాలి, అప్పుడు మీరు దానిని పట్టికలో శోధించవచ్చు (ఇది చాలా వేగంగా ఉంటుంది). ఈ పట్టికలు బహిరంగంగా అందుబాటులో ఉన్నాయి మరియు ఉత్పత్తి చేయడం సులభం.

ఈ దాడి వెక్టర్‌ను నివారించడానికి, మీరు హాషింగ్ ముందు పాస్‌వర్డ్ చివరలో ఒక ఉప్పు, యాదృచ్ఛిక స్ట్రింగ్‌ను జోడించాలి. హాషింగ్ బదులు “password“, మీకు హాష్ ఉంటుంది:

password + 1D75BCA3...

ఈ ఉప్పు డేటాబేస్లోని పాస్వర్డ్ హాష్తో కలిసి నిల్వ చేయబడుతుంది. ఒక వినియోగదారు వారి పాస్‌వర్డ్‌లోకి ప్రవేశించినప్పుడు, ఉప్పును వినియోగదారుకు తిరిగి పంపండి, తద్వారా వారు దానిని హాష్‌కు జోడించవచ్చు. ప్రతి వినియోగదారుడు తమదైన ప్రత్యేకమైన ఇంద్రధనస్సు పట్టికను కలిగి ఉన్నట్లు మీరు ఆలోచించవచ్చు, ఇది దాని ప్రయోజనాన్ని పూర్తిగా ఓడిస్తుంది.

ఉప్పు కూడా రహస్యం కాదు. ఇది అవసరం లేదు, ఎందుకంటే ఇంద్రధనస్సు పట్టికలు సృష్టించబడకుండా నిరోధించడం మరియు మీరు దీన్ని సాదా వచనంగా నిల్వ చేస్తున్నారు. సాల్టెడ్ పాస్వర్డ్లు ఇప్పటికీ వ్యక్తిగతంగా పగులగొట్టవచ్చు.

ఆచరణలో, 32-బైట్ హాష్ పరిమాణాలు చాలా సాధారణం, ఎందుకంటే చాలా చిన్న హాష్‌లు ఇప్పటికీ ఇంద్రధనస్సు పట్టికలకు హాని కలిగిస్తాయి. మరియు లవణాలు తిరిగి ఉపయోగించవద్దు; మీరు ప్రతిసారీ క్రొత్త యాదృచ్ఛిక స్ట్రింగ్‌ను రూపొందించాలి.

పాస్‌వర్డ్‌ల కోసం రూపొందించిన సురక్షిత హాష్‌ని ఉపయోగించండి

SHA256 సురక్షితమైన హాష్ అయినప్పటికీ, ఇది సాధారణ హాష్‌గా కూడా రూపొందించబడింది. దీని అర్థం ఇది వేగంగా ఉండాలి, ఎందుకంటే ఇది చెక్‌సమ్‌లను సృష్టించడానికి కూడా ఉపయోగించబడుతుంది (ఇది గిగాబైట్ల డేటాను ప్రాసెస్ చేయాల్సిన అవసరం ఉంది). వేగం నేరుగా బలవంతపు సమయాన్ని తగ్గిస్తుంది, మరియు దాటవేసిన పాస్‌వర్డ్‌లతో కూడా, ఒకే చిన్న తీగలను పగులగొట్టడం ఇప్పటికీ చాలా సులభం. లవణాలు ఇంద్రధనస్సు పట్టికల నుండి మాత్రమే రక్షిస్తాయి.

బదులుగా, PBKDF2 ఉపయోగించండి. ఇది పాస్‌వర్డ్‌ల కోసం ప్రత్యేకంగా రూపొందించబడింది, అంటే సగటు పొడవు పాస్‌వర్డ్‌ను లెక్కించడం చాలా నెమ్మదిగా ఉంటుంది. బ్రూట్ ఫోర్స్‌కు ఇది చాలా ఎక్కువ సమయం పడుతుంది మరియు దానితో నిల్వ చేసిన ఎక్కువ పాస్‌వర్డ్‌లను పగులగొట్టడం వాస్తవంగా అసాధ్యం. మీరు జావాస్క్రిప్ట్ అమలు లేదా సర్వర్ వైపు అమలును ఉపయోగించవచ్చు.

PBKDF2 యొక్క పూర్తి ప్రయోజనాన్ని పొందడానికి, మీరు మీ సైట్ కోసం ఒక విధమైన పాస్‌వర్డ్ ప్రమాణాన్ని అమలు చేయాలని మేము సిఫార్సు చేస్తున్నాము. అవన్నీ డాలర్ చిహ్నాలు మరియు సంఖ్యలను కలిగి ఉండవలసిన అవసరం లేదు; పొడవు అన్నిటికంటే ఎక్కువ. కనీసం 8-12 అక్షరాల పాస్‌వర్డ్‌లను అమలు చేయడానికి ప్రయత్నించండి.

తుది చెక్‌లిస్ట్

మూసివేసేటప్పుడు, మీరు సిద్ధంగా ఉన్నారని నిర్ధారించుకోవడానికి ఇక్కడ భద్రతా తనిఖీ జాబితా ఉంది:

  • పాస్‌వర్డ్‌లను ఉపయోగించడం మానుకోండి మరియు వీలైతే, OAuth కి మారండి.
  • పాస్‌వర్డ్‌లను స్పష్టమైన డేటాబేస్, లాగ్ లేదా ఫైల్‌లో ఎప్పుడూ నిల్వ చేయవద్దు మరియు వాటిని HTTP కనెక్షన్‌ల ద్వారా ప్రసారం చేయవద్దు.
  • PBKDF2 లేదా SHA256 వంటి సురక్షిత హాష్ ఫంక్షన్‌తో పాస్‌వర్డ్ హాష్.
  • పాస్‌వర్డ్ హాష్‌లకు ఎల్లప్పుడూ యాదృచ్ఛిక ఉప్పును జోడించి, హాష్‌తో పాటు నిల్వ చేయండి.
  • MD5 లేదా SHA1 ఉపయోగించడం మానుకోండి. (అవి రెండూ దెబ్బతిన్నాయి మరియు సురక్షితం కాదు.)
  • మీ సైట్ వినియోగదారుల కోసం మంచి పాస్‌వర్డ్ ప్రమాణాలను వర్తించండి. (పొడవు ఇక్కడ కీలకం.)
  • ఆదర్శవంతంగా, క్లయింట్ వైపు మొదట హాషింగ్ చేయడం ద్వారా మీ సర్వర్‌ను సాదాపాఠం పాస్‌వర్డ్‌ల గురించి పూర్తిగా క్లూలెస్‌గా ఉంచండి. దాడి చేసేవారు మీ సర్వర్ మెమరీకి పూర్తి ప్రాప్తిని పొందినప్పటికీ ఈ భవిష్యత్-ప్రూఫ్ పాస్‌వర్డ్ రక్షణ.
  • SSH ప్రాప్యతను నిరోధించడం ద్వారా మరియు ప్రతిదీ తాజాగా ఉంచడం ద్వారా సర్వర్ సురక్షితంగా ఉందని నిర్ధారించుకోండి, కాబట్టి మీకు ఈ సమస్య ఎప్పుడూ మొదటి స్థానంలో ఉండదు.

Source link