কম্পিউটার টিউটোরিয়াল

নেটওয়ার্ক সিকিউরিটিতে পাবলিক/প্রাইভেট কী জোড়া (Key Pair) জেনারেশন: ধাপে ধাপে গাইড

পাবলিক/প্রাইভেট কী জোড়া (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)

  1. PuTTYgen ডাউনলোড ও রান করুন
  2. Type of key to generate: EdDSA (Ed25519) বা RSA (4096 bits) সিলেক্ট করুন
  3. Generate ক্লিক করুন > মাউস ঘুরিয়ে এনট্রপি জেনারেট করুন
  4. Key passphrase দিন (সিকিউরিটির জন্য বাধ্যতামূলক)
  5. Save private key (.ppk ফরম্যাট) > Save public key (.txt বা OpenSSH ফরম্যাটে)
  6. 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 কী যোগ করা

  1. পাবলিক কী কপি করুন: cat ~/.ssh/id_ed25519.pub (বা .pub ফাইল খুলুন)
  2. GitHub: Settings > SSH and GPG keys > New SSH key > Paste > Save
  3. 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 সার্টিফিকেট, ব্লকচেইন ওয়ালেট, ডিজিটাল সিগনেচার সব একই সিদ্ধান্তের উপর ভিত্তি করে কাজ করে।

  1. নেটওয়ার্ক সিকিউরিটি কী কী? এটি কোথায় পাবেন

  2. নেটওয়ার্ক সিকিউরিটির কী কী?

  3. নেটওয়ার্ক নিরাপত্তায় পাবলিক কী (Public Key) কী এবং এর কাজ কী?

  4. নেটওয়ার্ক সিকিউরিটি কী কী?