Bcrypt ಎಂದರೇನು?
Blowfish ಸೈಫರ್ ಆಧರಿಸಿ Niels Provos ಮತ್ತು David Mazières ಅವರು ವಿನ್ಯಾಸಗೊಳಿಸಿದ ಒಂದು ಪಾಸ್ವರ್ಡ್-ಹ್ಯಾಶಿಂಗ್ ಫಂಕ್ಷನ್ ಆಗಿದೆ Bcrypt. MD5 ಅಥವಾ SHA-256 ನಂತಹ ವೇಗದ ಡೈಜೆಸ್ಟ್ಗಳಿಗಿಂತ ಭಿನ್ನವಾಗಿ, bcrypt ಉದ್ದೇಶಪೂರ್ವಕವಾಗಿ ನಿಧಾನ ಮತ್ತು ಕಂಪ್ಯೂಟೇಶನಲಿಯಾಗಿ ದುಬಾರಿಯಾಗಿದೆ — ಇದು ಕಳ್ಳತನವಾದ ಪಾಸ್ವರ್ಡ್ ಹ್ಯಾಶ್ಗಳ ವಿರುದ್ಧ ಬ್ರೂಟ್-ಫೋರ್ಸ್ ದಾಳಿಗಳನ್ನು ಅಪ್ರಾಯೋಗಿಕವಾಗಿಸುತ್ತದೆ. Bcrypt ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಪ್ರತಿ ಪಾಸ್ವರ್ಡ್ಗೆ ಒಂದು ರ್ಯಾಂಡಮ್ ಸಾಲ್ಟ್ ಅನ್ನು ಜನರೇಟ್ ಮಾಡುತ್ತದೆ, ಆದ್ದರಿಂದ ಒಂದೇ ಪಾಸ್ವರ್ಡ್ಗಳು ವಿಭಿನ್ನ ಹ್ಯಾಶ್ಗಳನ್ನು ಉತ್ಪಾದಿಸುತ್ತವೆ.
Bcrypt ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ?
Bcrypt ಅಲ್ಗಾರಿದಮ್ ಸಂಪೂರ್ಣವಾಗಿ ನಿಮ್ಮ ಬ್ರೌಸರ್ನಲ್ಲಿ ಚಲಿಸುತ್ತದೆ. ಹಂತ ಹಂತವಾಗಿ ಏನಾಗುತ್ತದೆ ಎಂಬುದು ಇಲ್ಲಿ:
- ನಿಮ್ಮ ಪಾಸ್ವರ್ಡ್ UTF-8 ಬೈಟ್ಗಳಾಗಿ ಎನ್ಕೋಡ್ ಆಗುತ್ತದೆ ಮತ್ತು bcrypt ಕೀ ಶೆಡ್ಯೂಲ್ಗೆ ಫೀಡ್ ಆಗುತ್ತದೆ, ಇದು ಪಾಸ್ವರ್ಡ್ ಮತ್ತು ಸಾಲ್ಟ್ ಬಳಸಿ Blowfish ಸೈಫರ್ನ 4,184-ಬೈಟ್ P-ಅರೇ ಮತ್ತು S-ಬಾಕ್ಸ್ಗಳನ್ನು ಆರಂಭಿಸುತ್ತದೆ.
- ಒಂದು ರ್ಯಾಂಡಮ್ 128-ಬಿಟ್ ಸಾಲ್ಟ್ ಜನರೇಟ್ ಆಗುತ್ತದೆ. ಸಾಲ್ಟ್ ಕೀ ಶೆಡ್ಯೂಲ್ನಲ್ಲಿ ಮಿಶ್ರಣಗೊಳ್ಳುತ್ತದೆ, ಆದ್ದರಿಂದ ಪ್ರತಿ ಅನನ್ಯ ಸಾಲ್ಟ್ ಒಂದೇ ಪಾಸ್ವರ್ಡ್ಗೆ ಸಹ ಸಂಪೂರ್ಣವಾಗಿ ವಿಭಿನ್ನ ಹ್ಯಾಶ್ ಅನ್ನು ಉತ್ಪಾದಿಸುತ್ತದೆ.
- ಕೀ ಶೆಡ್ಯೂಲ್ 2^cost ರೌಂಡ್ಗಳಿಗೆ (ಉದಾ. ಕಾಸ್ಟ್ 10 ನಲ್ಲಿ 2^10 = 1,024 ಪುನರಾವರ್ತನೆಗಳು) ಪುನರಾವರ್ತನೆಯಾಗುತ್ತದೆ. ಪ್ರತಿ ಪುನರಾವರ್ತನೆಯು ಸಾಲ್ಟ್ ಮತ್ತು P-ಅರೇ ಎಂಟ್ರಿಗಳನ್ನು ಮರು-ಎನ್ಕ್ರಿಪ್ಟ್ ಮಾಡುತ್ತದೆ, ಇದು ಕಾಸ್ಟ್ ಹೆಚ್ಚಾದಂತೆ ಲೆಕ್ಕಾಚಾರವನ್ನು ಅನುಪಾತದಲ್ಲಿ ನಿಧಾನಗೊಳಿಸುತ್ತದೆ.
- ಅಂತಿಮ ಔಟ್ಪುಟ್
$2b$<cost>$<salt><hash>ಫಾರ್ಮ್ಯಾಟ್ನಲ್ಲಿ 60-ಅಕ್ಷರದ ಸ್ಟ್ರಿಂಗ್ ಆಗಿದೆ, ಇಲ್ಲಿ cost ಶೂನ್ಯ-ಪ್ಯಾಡೆಡ್ (ಉದಾ. 10), salt 22 Base64 ಅಕ್ಷರಗಳು, ಮತ್ತು hash 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 ಅನುಷ್ಠಾನವನ್ನು ಬಳಸಿ ಚಲಿಸುತ್ತದೆ. ಪಾಸ್ವರ್ಡ್ಗಳನ್ನು ಸಂಗ್ರಹಿಸುವ ಮೊದಲು ಹ್ಯಾಶ್ ಮಾಡಿ, ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಹ್ಯಾಶ್ಗಳನ್ನು ಪರಿಶೀಲಿಸಿ, ಮತ್ತು ಕಾಸ್ಟ್ ಫ್ಯಾಕ್ಟರ್ ಅನ್ನು ನಿಮ್ಮ ಭದ್ರತೆ ಅಗತ್ಯಗಳಿಗೆ ಹೊಂದಿಸಿ — ಒಂದೇ ಬೈಟ್ ಅನ್ನು ಸರ್ವರ್ಗೆ ಕಳುಹಿಸದೆ.