सही जनरेटर,
सही भाषा.
हर पासवर्ड जनरेटर बराबर नहीं होता — और आपका वॉल्ट जिस भाषा में लिखा गया है, वह कोई मामूली इंजीनियरिंग विवरण नहीं है। एंट्रॉपी, जनरेशन मोड और Rust क्यों अंदरूनी स्तर पर निर्णायक बनता है, इसका विश्लेषण।
जब कोई मैनेजर कहता है कि वह “मजबूत पासवर्ड बनाता है”, तो दो सवाल उठते हैं: क्या वह सचमुच अप्रत्याशित है, यानी randomness की गुणवत्ता, और दिखाए जाने के बाद वह मेमोरी में क्या बनता है? पहला सवाल जनरेशन मोड से जुड़ा है। दूसरा उस भाषा से, जो एप्लिकेशन को चलाती है। यह लेख दोनों को कवर करता है।
01 / मूल बातेंएंट्रॉपी: वही माप जो सच में मायने रखता है
पासवर्ड की ताकत उसकी महसूस होने वाली “जटिलता” से नहीं, बल्कि उसकी एंट्रॉपी से मापी जाती है: हमलावर के लिए अनिश्चितता के bits की संख्या। जितनी अधिक संभावित संयोजन होंगे, brute-force हमले की लागत उतनी ही तेज़ी से बढ़ेगी। पूरे ASCII alphabet से चुने गए 16 अक्षरों का पासवर्ड लगभग 100 bits तक पहुंचता है — यानी “बहुत मजबूत” श्रेणी।
एक अहम बात अक्सर छूट जाती है: एंट्रॉपी तभी मायने रखती है जब randomness का स्रोत CSPRNG हो, यानी cryptographically secure pseudorandom number generator। सामान्य Math.random() पूर्वानुमेय है और बाकी सारी सुरक्षा को अमान्य कर देता है। अच्छी implementations ऑपरेटिंग सिस्टम से एंट्रॉपी पढ़ती हैं: Unix पर /dev/urandom या getrandom(2), Windows पर CNG।
02 / मोडजनरेटर की चार श्रेणियां
एक अच्छा मैनेजर “एक” जनरेटर नहीं देता, बल्कि उपयोग के हिसाब से कई मोड देता है। नियम है: याद रखने की सुविधा लंबाई के बदले मिलती है। यहां चार श्रेणियां हैं, सबसे घनी से सबसे मानवीय तक।
शुद्ध रैंडम
j7$kQ!mP2#xR9vL@Passphrase (Diceware / EFF)
Granite-Bicycle-Phantom-Violet-9याद रखने योग्य / उच्चारण योग्य
Crimson7!Falcon$Reefसंख्यात्मक PIN
8392 4471सही आदत: एंट्रॉपी को उपयोग के अनुसार ढालें
दर-सीमित login page से सुरक्षित किसी web account के लिए हमलावर प्रति सेकंड कुछ सौ कोशिशों तक सीमित होता है: ऐसे में 50 bits भी भूवैज्ञानिक समय तक टिकते हैं। अतिरिक्त एंट्रॉपी तभी अर्थ रखती है जब secret offline हो, जैसे encryption key या crypto wallet seed, जहां हमला बड़े पैमाने पर parallel किया जा सकता है. बहुत उच्च मूल्य वाले ऐसे secrets के लिए वास्तविक भौतिक dice फेंकना, यानी सही अर्थों में Diceware, अभी भी सर्वोच्च विकल्प है: यह CSPRNG की गुणवत्ता या compromised browser पर किसी भी निर्भरता को समाप्त कर देता है।
03 / अंदर की बातRust फर्क क्यों पैदा करता है
अच्छा पासवर्ड बनाना काम का आधा हिस्सा है। दूसरा आधा है: उसे यूं ही पड़ा न रहने देना। एक बार दिखने या decrypt होने के बाद आपका पासवर्ड RAM में रहता है — और यहीं एप्लिकेशन की भाषा निर्णायक हो जाती है।
Microsoft ने बताया है कि उसे मिलने वाली 70 % सुरक्षा कमजोरियां मेमोरी bugs होती हैं, जैसे buffer overflow, use-after-free आदि। Google ने Chrome और Android पर भी यही अनुपात देखा। Rust अपने ownership और borrowing मॉडल के जरिए, garbage collector के बिना, इन्हीं bug classes को compile time पर समाप्त करता है।
Google के आंकड़े स्पष्ट हैं: Android की memory vulnerabilities 2019 में 223 से 2024 में 50 से कम हो गईं, और पहली बार कुल का 20 % से नीचे आईं। नया Rust code ऐतिहासिक C/C++ code की तुलना में memory flaws की density 1000× तक कम दिखाता है, साथ में 4× कम rollbacks और review time में 25 % कमी।
1. Garbage collector के बिना memory safety. Java या Python जैसी भाषाएं memory-safe हैं, लेकिन उनका garbage collector memory को non-deterministic तरीके से मुक्त करता है: कोई secret memory dump या cold-boot attack के लिए अनिश्चित समय तक बचा रह सकता है। Rust memory को deterministic तरीके से मुक्त करता है, जैसे ही data का उपयोग समाप्त होता है।
2. zeroize से explicit wiping. Rust यह guarantee नहीं देता कि freed memory overwrite हो जाएगी। zeroize crate इस कमी को भरती है: secret को Zeroizing में wrap करने से, उसके scope से बाहर जाते ही zeroes से overwrite होना सुनिश्चित होता है — volatile write के जरिए, जिसे compiler optimize नहीं कर सकता।
3. Type system जो crypto का सही उपयोग मजबूर करता है. Rust का strict type system यह सीमित कर सकता है कि sensitive data कैसे और कितनी बार उपयोग हो। उदाहरण के लिए, ऐसी key model की जा सकती है जो सिर्फ एक बार इस्तेमाल हो सके, और compiler उसका दोबारा उपयोग अस्वीकार कर दे।
मेमोरी में automatic wipinguse zeroize::Zeroizing;
fn unlock_vault(master: &str) {
let dek = Zeroizing::new(derive_key(master));
// ... déchiffrement du coffre ...
} // `dek` est écrasé par des zéros ici, automatiquementMEMORY VULNERABILITIES — ANDROID (कुल का %)
RUST ADOPTION
तकनीकी ईमानदारी: Rust कोई जादू की छड़ी नहीं है
unsafe code और third-party dependencies फिर भी attack surfaces रहते हैं — Google ने production में भेजने से पहले ही Rust parser के एक unsafe block में vulnerability (CVE-2025-48530) ठीक की थी। Memory safety एक layer है, लक्ष्य नहीं: यह defense in depth के साथ जुड़ती है, जैसे Argon2id जैसी मजबूत KDF, zero-knowledge architecture, auto-locking और MFA।
Garbage-collected भाषा
- Non-deterministic memory release
- Secrets अज्ञात समय तक memory में बने रहते हैं
- Explicit wiping कठिन या असंभव
- Dumps और cold-boot के सामने exposed
Rust
- Deterministic release (ownership)
- zeroize के जरिए immediate wiping
- न buffer overflow, न use-after-free
- Crypto errors compile time पर पकड़ी जाती हैं
04 / याद रखने योग्य बातेंपासवर्ड मैनेजर से क्या मांगना चाहिए
पासवर्ड मैनेजर चुनते या मूल्यांकन करते समय चार ठोस सवाल पूछें:
Checklist
- 1. क्या generator system CSPRNG पर आधारित है, और क्या वह entropy को bits में दिखाता है?
- 2. क्या वह master password के लिए Diceware/EFF passphrase mode देता है?
- 3. क्या generation local (client-side) है, server से गुजरे बिना?
- 4. क्या sensitive core memory-safe language में लिखा है और secrets की explicit wiping करता है?
सुरक्षित generation. लंबे समय के लिए बनाया गया vault.
High-entropy passwords, याद रखने योग्य passphrases, और memory safety के लिए तैयार core.
हमारा तरीका देखें