Public-Key Cryptography वास्तव में कैसे काम करता है
Asymmetric encryption, key pairs, और digital signatures का practical walkthrough, बिना गणित के analogy के।
हर बार जब आप किसी server में SSH करते हैं या HTTPS site load करते हैं, तो दो mathematically linked keys heavy lifting करती हैं। एक public है, एक private है, और उनके बीच का relationship ही untrusted network के ऊपर secure communication को संभव बनाता है।
मूल विचार
Symmetric encryption में, एक ही key data को lock और unlock दोनों करती है। यह ठीक काम करता है अगर दोनों parties पहले से ही एक secret share करती हैं, लेकिन उस secret को safely distribute करना मुश्किल हिस्सा है। Public-key (asymmetric) cryptography इसे solve करता है एक mathematically related pair generate करके: एक public key जो आप किसी को भी देते हैं, और एक private key जो आप कभी share नहीं करते।
Data जो public key से encrypt किया जाए, वह सिर्फ matching private key से decrypt हो सकता है। Data जो private key से sign किया जाए, वह public key रखने वाला कोई भी verify कर सकता है। ये दोनों properties लगभग सब कुछ cover करते हैं जिसके लिए हम इसका use करते हैं: confidentiality और authentication।
RSA, classic example
RSA इस fact पर rely करता है कि दो बड़े primes को multiply करना fast है, लेकिन product को वापस उन primes में factor करना scale पर computationally brutal है। एक 2048-bit RSA key दो primes से build होती है जो roughly 1024 bits के हैं। Public key है (n, e) — n primes का product है, e एक fixed exponent जैसे 65537। Private key derive किया जाता है n के totient का use करके और original primes को जानने से।
Encryption modular exponentiation है: c = m^e mod n। Decryption इसे private exponent d से reverse करता है: m = c^d mod n। आमतौर पर कोई भी large payloads को directly RSA से encrypt नहीं करता है, हालांकि — यह slow है और size limits हैं जो key length से tied हैं। इसकी जगह, RSA आमतौर पर एक symmetric session key (AES-256, मिसाल के लिए) को wrap करता है, और symmetric cipher bulk data को handle करता है। यही hybrid approach है जो TLS use करता है।
Elliptic curve cryptography और यह क्यों लेना दे रहा है
ECC आपको RSA के equivalent security देता है much smaller keys के साथ। एक 256-bit ECC key (जैसे curve secp256r1 या Curve25519) roughly comparable है strength में एक 3072-bit RSA key से। Smaller keys मतलब faster handshakes और less bandwidth, जो इसीलिए modern TLS configs, SSH implementations, और Signal's protocol सब ECC पर lean करते हैं।
Math अलग है — यह discrete logarithm problem पर based है elliptic curve के ऊपर points की जगह integer factorization की — लेकिन public/private key relationship और guarantees conceptually same हैं।
Digital signatures: equation का दूसरा आधा
Encryption data को confidential रखता है। Signatures authenticity और integrity साबित करते हैं। किसी message को sign करने के लिए, आप इसे hash करते हैं (आमतौर पर SHA-256) और उस hash को अपनी private key से encrypt करते हैं। जिसके पास आपकी public key है, वह message को hash कर सकता है, आपके signature को decrypt कर सकता है, और दोनों hashes को match कर सकता है।
यह बिल्कुल वही है जो होता है जब आप git commit -S को एक GPG key के साथ run करते हैं, या जब एक Certificate Authority किसी TLS certificate को sign करता है। CA की private key आपके cert को sign करती है; browsers में CA की public key pre-trusted आती है, तो वह आपके cert की authenticity को verify कर सकते हैं बिना कभी CA से directly बात किए।
यह रोज़मर्रा में कहाँ दिखता है
SSH key auth एक direct application है: ssh-keygen -t ed25519 एक key pair generate करता है, आप public half को ~/.ssh/authorized_keys में server पर डालते हैं, और authentication एक challenge-response के through होता है private key को use करके, कभी कोई password transmit नहीं होता।
TLS handshakes asymmetric crypto को briefly use करते हैं, सिर्फ एक shared symmetric key establish करने के लिए (modern setups में ECDHE key exchange के via), फिर actual session के लिए fast symmetric encryption में चले जाते हैं। PGP/GPG email encryption भी hybrid pattern follow करता है — message को एक random AES key से encrypt करो, फिर उस AES key को recipient की RSA या ECC public key से encrypt करो।
क्या वास्तव में practice में टूटता है
RSA और ECC के पीछे का math classical computing के through नहीं टूटा है। जो गलत होता है वह लगभग हमेशा implementation है: weak random number generation जब keys बनाते हो (2008 की Debian OpenSSL bug textbook case है), reused nonces ECDSA signatures में जो private keys leak करते हैं, या padding oracle attacks poorly implemented RSA के against (Bleichenbacher's attack PKCS#1 v1.5 padding के against)। Quantum computing long-term theoretical threat है — Shor's algorithm RSA और ECC दोनों को break करता अगर sufficiently large quantum computer exist करता — जो इसीलिए NIST ने पहले से ही post-quantum algorithms जैसे ML-KEM (पहले Kyber) को standardize किया है future migration के लिए।
अगर आप इसके साथ आगे जाना चाहते हैं, तो Korra Studio की cryptography track key exchange protocols और hash function internals को more depth में cover करता है, और networking segments बताते हैं कि यह सब एक actual TLS handshake में byte by byte कैसे fit होता है।
AI सहायता से लिखा गया, माइकल पिल्च (CISSP), Korra Studio द्वारा समीक्षित और प्रकाशित।
यह Korra Studio के ज्ञान आधार से एक नोट है — प्लेटफ़ॉर्म हर विषय को 1-टू-1 मेंटरिंग के साथ जोड़ता है।
मुफ़्त शुरू करेंarrow_forward