Public-Key Cryptography اصل میں کیسے کام کرتی ہے
Asymmetric encryption، key pairs، اور digital signatures کی عملی وضاحت، بغیر ریاضیاتی تشبیہوں کے۔
ہر بار جب آپ کسی سرور پر SSH کرتے ہیں یا HTTPS سائٹ کھولتے ہیں، دو ریاضیاتی طور پر منسلک keys سب سے بھاری کام کرتی ہیں۔ ایک عوامی ہے، ایک نجی ہے، اور ان کے درمیان تعلق وہی ہے جو غیر معتبر نیٹ ورک پر محفوظ رابطہ ممکن بناتا ہے۔
بنیادی نقطہ نظر
Symmetric encryption کے ساتھ، ایک key ڈیٹا کو lock اور unlock دونوں کرتی ہے۔ یہ اچھی طرح کام کرتا ہے اگر دونوں فریق پہلے سے ایک secret شیئر کر رہے ہوں، لیکن اس secret کو محفوظ طریقے سے تقسیم کرنا مشکل حصہ ہے۔ Public-key (asymmetric) cryptography اس مسئلہ کو ایک ریاضیاتی طور پر متعلقہ جوڑی بنا کر حل کرتی ہے: ایک عوامی key جو آپ کسی کو بھی دے سکتے ہیں، اور ایک نجی key جو آپ کبھی شیئر نہیں کرتے۔
جو ڈیٹا عوامی key سے encrypt ہو، وہ صرف اس کی matching نجی key سے decrypt ہو سکتا ہے۔ جو ڈیٹا نجی key سے sign ہو، وہ کوئی بھی جس کے پاس عوامی key ہو verify کر سکتا ہے۔ یہ دونوں خصوصیات تقریباً سب کچھ احاطہ کرتی ہیں جو ہم اس کے لیے استعمال کرتے ہیں: confidentiality اور authentication۔
RSA، کلاسیکی مثال
RSA اس حقیقت پر منحصر ہے کہ دو بڑے primes کو ضرب دینا تیز ہے، لیکن پروڈکٹ کو واپس ان primes میں تقسیم کرنا بڑے پیمانے پر ریاضیاتی طور پر سخت ہے۔ ایک 2048-bit RSA key دو primes سے بنتی ہے جو تقریباً 1024 bits ہر ایک۔ عوامی key (n, e) ہے — n primes کی پروڈکٹ ہے، e ایک fixed exponent جیسے 65537۔ نجی key n کے totient استعمال کر کے derive ہوتی ہے اور اصل primes جاننے پر منحصر ہے۔
Encryption modular exponentiation ہے: c = m^e mod n۔ Decryption نجی exponent d سے اسے الٹا کرتی ہے: m = c^d mod n۔ عملی طور پر کوئی بھی براہ راست بڑے payloads کو RSA سے encrypt نہیں کر رہا — یہ سست ہے اور key length سے منسلک سائز کی حدود ہیں۔ بجائے اس کے، RSA عام طور پر ایک symmetric session key (جیسے AES-256) کو wrap کرتا ہے، اور symmetric cipher بڑے ڈیٹا کو سنبھالتا ہے۔ یہ وہی hybrid approach ہے جو TLS استعمال کرتا ہے۔
Elliptic curve cryptography اور یہ کیوں سنبھال رہی ہے
ECC آپ کو RSA کی طرح سیکیورٹی بہت چھوٹی keys سے دیتا ہے۔ ایک 256-bit ECC key (جیسے curve secp256r1 یا Curve25519) تقریباً 3072-bit RSA key کے برابر طاقت رکھتی ہے۔ چھوٹی keys تیز handshakes اور کم bandwidth کا مطلب ہے، جو وہی وجہ ہے کہ جدید TLS configs، SSH implementations، اور Signal کا protocol سب ECC پر انحصار کرتے ہیں۔
ریاضیات مختلف ہے — یہ integer factorization کی بجائے ایک elliptic curve پر نقاط کے لیے discrete logarithm problem پر مبنی ہے — لیکن public/private key کا تعلق اور guarantees تصوری طور پر وہی ہیں۔
Digital signatures: مساوات کا دوسرا حصہ
Encryption ڈیٹا کو مخفی رکھتا ہے۔ Signatures حقیقی ہونے اور درستگی کو ثابت کرتے ہیں۔ کسی پیغام کو sign کرنے کے لیے، آپ اسے hash کرتے ہیں (عام طور پر SHA-256) اور اس hash کو اپنی نجی key سے encrypt کرتے ہیں۔ کوئی بھی جس کے پاس آپ کی عوامی key ہو خود پیغام کو hash کر سکتا ہے، اپنی signature کو decrypt کر سکتا ہے، اور دونوں hashes کو مماثل کرنا چیک کر سکتا ہے۔
یہ بالکل وہی ہے جو ہوتا ہے جب آپ GPG key کے ساتھ git commit -S چلاتے ہیں، یا جب Certificate Authority کوئی TLS certificate sign کرتا ہے۔ CA کی نجی key آپ کے cert کو sign کرتی ہے؛ browsers میں CA کی عوامی key پہلے سے موثوق رکھی ہوتی ہے، تو وہ CA سے براہ راست بات کیے بغیر آپ کے cert کی حقیقی تصدیق کر سکتے ہیں۔
یہ روزمرہ میں کہاں نظر آتا ہے
SSH key auth براہ راست اطلاق ہے: ssh-keygen -t ed25519 ایک key pair generate کرتا ہے، آپ عوامی حصہ سرور پر ~/.ssh/authorized_keys میں ڈالتے ہیں، اور authentication نجی key استعمال کرتے ہوئے challenge-response کے ذریعے ہوتی ہے، کوئی password کبھی transmit نہیں ہوتی۔
TLS handshakes asymmetric crypto کو مختصر طور پر استعمال کرتے ہیں، صرف ایک shared symmetric key قائم کرنے کے لیے (جدید setups میں ECDHE key exchange کے ذریعے)، پھر تیز symmetric encryption میں actual session کے لیے۔ PGP/GPG email encryption بھی hybrid pattern کی پیروی کرتا ہے — پیغام کو random AES key سے encrypt کریں، پھر وہ AES key recipient کی RSA یا ECC عوامی key سے encrypt کریں۔
جو عملی طور پر ٹوٹتا ہے
RSA اور ECC کے پیچھے کی ریاضیات classical computing کے ذریعے ٹوٹی نہیں ہے۔ جو غلط ہوتا ہے وہ تقریباً ہمیشہ implementation ہے: keys بناتے وقت ضعیف random number generation (2008 کا Debian OpenSSL bug textbook کیس ہے)، ECDSA signatures میں reused nonces سے نجی keys نکلنا، یا poorly implemented RSA کے خلاف padding oracle attacks (Bleichenbacher کا PKCS#1 v1.5 padding کے خلاف attack)۔ Quantum computing طویل مدتی نظریاتی خطرہ ہے — Shor's algorithm اگر کوئی کافی بڑا quantum computer موجود ہوتا تو RSA اور ECC دونوں کو توڑ دیتا — جو وہی وجہ ہے کہ NIST نے پہلے سے ہی post-quantum algorithms جیسے ML-KEM (سابقہ Kyber) کو مستقبل کی migration کے لیے standardize کر دیا ہے۔
اگر آپ اس کے ساتھ مزید جانا چاہیں تو Korra Studio کی cryptography track key exchange protocols اور hash function internals کو زیادہ گہرائی سے احاطہ کرتا ہے، اور networking segments آپ کو دکھاتے ہیں کہ یہ سب ایک actual TLS handshake میں byte by byte کیسے فٹ ہوتا ہے۔
AI کی مدد سے لکھا گیا، Michal Pilch (CISSP)، Korra Studio کے ذریعے جائزہ لیا گیا اور شائع کیا گیا۔
یہ Korra Studio کے علم کے ذخیرے کا ایک نوٹ ہے — یہ پلیٹ فارم ہر موضوع کو ایک سے ایک رہنمائی کے ساتھ جوڑتا ہے۔
مفت شروع کریںarrow_forward