পাবলিক/প্রাইভেট কী জোড়া (Asymmetric Cryptography) কী?
পাবলিক কী (Public Key) এবং প্রাইভেট কী (Private Key) — এই দুটি গাণিতিকভাবে সম্পর্কিত কী যা আসিমেট্রিক ক্রিপ্টোগ্রাফির ভিত্তি। পাবলিক কী সবার সাথে শেয়ার করা যায় (এনক্রিপশন/ভেরিফিকেশনের জন্য), প্রাইভেট কী গোপন রাখা হয় (ডিক্রিপশন/সাইনিং-এর জন্য)। SSH, TLS/SSL, PGP, ব্লকচেইন, ডিজিটাল সিগনেচার—সব곳ে এটি ব্যবহৃত হয়।
কী জোড়া জেনারেট করার গাণিতিক ভিত্তি
- দুই বড় প্রাইম নম্বর (p, q) নির্বাচন করা হয়
- মডুলাস n = p × q ক্যালকুলেট করা হয়
- ইউলার টটিয়েন্ট ফাংশন φ(n) = (p-1)(q-1)
- পাবলিক এক্সপোনেন্ট e নির্বাচন (সাধারণত 65537)
- প্রাইভেট এক্সপোনেন্ট d = e⁻¹ mod φ(n) ক্যালকুলেট করা হয়
- পাবলিক কী: (e, n) — সবার সাথে শেয়ারযোগ্য
- প্রাইভেট কী: (d, n) — গোপন রাখা হয়
নোট: বাস্তবে RSA, ECDSA, Ed25519 বা altres অ্যালগরিদম ব্যবহার করা হয়।
প্ল্যাটফর্ম অনুযায়ী কী জোড়া জেনারেশন
১. লিনাক্স / ম্যাক / WSL (OpenSSH - সেরা ও স্ট্যান্ডার্ড)
# ED25519 (আধুনিক, দ্রুত, ছোট কী - সুপারিশ করা)
ssh-keygen -t ed25519 -C "your_email@example.com"
# RSA 4096-bit (লিগেসি কমপ্যাটিবিলিটির জন্য)
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
# ECDSA P-256
ssh-keygen -t ecdsa -b 256 -C "your_email@example.com"
- প্রম্পট অনুযায়ী ফাইল লোকেশন (ডিফল্ট:
~/.ssh/id_ed25519) ও পাসফ्रेज (সিকিউরিটির জন্য দিন) দিন - দুটি ফাইল তৈরি হবে:
id_ed25519(প্রাইভেট) এবংid_ed25519.pub(পাবলিক)
২. উইন্ডোজ ১০/১১ (নেটিভ OpenSSH)
# পাওয়ারশেল বা CMD-এ (Admin না হলে চলে)
ssh-keygen -t ed25519
- ফাইল সংরক্ষণ:
C:\Users\\.ssh\id_ed25519 - Git Bash, WSL, বা Windows Terminal ব্যবহার করলেও একই কমান্ড কাজ করে
৩. PuTTYgen (PuTTY ব্যবহারকারীদের জন্য GUI)
- PuTTYgen ডাউনলোড ও রান করুন
- Type of key to generate: EdDSA (Ed25519) বা RSA (4096 bits) সিলেক্ট করুন
- Generate ক্লিক করুন > মাউস ঘুরিয়ে এনট্রপি জেনারেট করুন
- Key passphrase দিন (সিকিউরিটির জন্য বাধ্যতামূলক)
- Save private key (.ppk ফরম্যাট) > Save public key (.txt বা OpenSSH ফরম্যাটে)
- OpenSSH ফরম্যাটে এক্সপোর্ট: Conversions > Export OpenSSH key
কী জোড়া ব্যবহার / ডিপ্লয়মেন্ট
SSH সার্ভারে পাবলিক কী যোগ করা (Authorized Keys)
# লোকাল মেশিন থেকে (ssh-copy-id উপলব্ধ থাকলে)
ssh-copy-id user@server_ip
# ম্যানুয়ালি (সার্ভারে)
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "YOUR_PUBLIC_KEY_CONTENT" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
GitHub / GitLab / Bitbucket-এ SSH কী যোগ করা
- পাবলিক কী কপি করুন:
cat ~/.ssh/id_ed25519.pub(বা .pub ফাইল খুলুন) - GitHub: Settings > SSH and GPG keys > New SSH key > Paste > Save
- GitLab: Preferences > SSH Keys > Add key > Paste
কী ম্যানেজমেন্ট সেরা অনুশীলন
- Ed25519 ব্যবহার করুন (RSA-র চেয়ে দ্রুত, ছোট, আরো সিকিউর)
- পাসফ्रेज অবশ্যই দিন (প্রাইভেট কী এনক্রিপ্ট রাখতে)
- প্রাইভেট কী কখনো শেয়ার করবেন না (পাবলিক কী শেয়ার করা নিরাপদ)
- নियमিত কী রোটেশন করুন (वार্ষিক বা কম্প্রোমাইজ সন্দেহ হলে)
- Hardware Security Key (YubiKey) ব্যবহার করুন প্রাইভেট কী স্টোর করার জন্য
- ssh-agent ব্যবহার করুন পাসফ्रेज মেমোরিতে ক্যাশ করার জন্য
সাধারণ সমস্যা ও সমাধান
- Permission denied (publickey)
- প্রাইভেট কী সঠিক লোকেশনে নেই, পারমিশন ভুল (chmod 600), অথবা সার্ভারে পাবলিক কী অ্যাডেড নেই
- Agent admitted failure to sign
ssh-add ~/.ssh/id_ed25519চালান- Host key verification failed
ssh-keygen -R hostnameদিয়ে known_hosts ক্লিয়ার করুন
OpenSSL দিয়ে কী জেনারেশন (সার্টিফিকেট/CSR-এর জন্য)
# প্রাইভেট কী জেনারেট
openssl genrsa -out private.key 4096
# পাবলিক কী এক্সট্র্যাক্ট
openssl rsa -in private.key -pubout -out public.key
# CSR (Certificate Signing Request) তৈরি
openssl req -new -key private.key -out csr.pem
পাবলিক/প্রাইভেট কী জোড়া আধুনিক সাইবার সিকিউরিটির মূল—.ssh কী, TLS সার্টিফিকেট, ব্লকচেইন ওয়ালেট, ডিজিটাল সিগনেচার সব একই সিদ্ধান্তের উপর ভিত্তি করে কাজ করে।