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

নেটওয়ার্ক সিকিউরিটিতে নন্স (Nonce) কী? কাজ, প্রয়োজনীয়তা ও উদাহরণ

নন্স (Nonce) - নেটওয়ার্ক সিকিউরিটি ও ক্রিপ্টোগ্রাফিতে ভূমিকা

Nonce হলো "Number used ONCE" (শুধু একবার ব্যবহৃত সংখ্যা) এর সংক্ষিপ্ত রূপ। এটি একটি র‍্যান্ডম বা অर्ध-র‍্যান্ডম সংখ্যা/মান যা একটি নির্দিষ্ট প্রোটোকল বা ট্রানজ্যাকশনে শুধু একবার ব্যবহার করা হয়। নন্স রিপ্লে আক্রমণ (Replay Attack) রোধ এবং লাইভনেস (Liveness) নিশ্চিত করতে ব্যবহৃত হয়।

নন্স কীভাবে কাজ করে?

  1. জেনারেশন: প্রোটোকল ইনিশিয়েটর (ক্লায়েন্ট/সার্ভার) একটি ক্রিপ্টোগ্রাফিক্যালি সিকিউর র‍্যান্ডম নম্বর জেনারেট করে (CSPRNG ব্যবহার করে)।
  2. ট্রান্সমিশন: নন্সটি অন্য পক্ষের পাঠানো হয় (চ্যালেঞ্জ হিসেবে বা প্রোটোকল মেসেজের অংশ হিসেবে)।
  3. ব্যারিফিকেশন: গ্রহণকারী নন্সটি ভেরিফাই করে (যেমন: হ্যাশে ব্যবহার করে, সিগনেচার ভেরিফাই করে)।
  4. স্টোরেজ/ট্র্যাকিং: সিস্টেম ব্যবহার করা নন্সগুলো সংরক্ষণ করে (ক্যাশে/ডেটাবেসে) যাতে পুনরায় ব্যবহার হয় না। TTL (Time-To-Live) সেট করে পুরানো নন্স পার্জ করা হয়।

নন্সের প্রয়োজনীয়তা (Why Nonce?)

উদ্দেশ্যব্যাখ্যা
রিপ্লে আক্রমণ রোধ (Replay Attack Prevention)আক্রমণকারী একটি বৈধ মেসেজ ক্যাপচার করে পরে পুনরায় পাঠাতে পারে না কারণ নন্সটি ইতিমধ্যে ব্যবহৃত হয়েছে এবং সিস্টেম এটিকে রিজেক্ট করবে।
লাইভনেস নিশ্চিতকরণ (Liveness/Freshness)প্রuves করে যে মেসেজটি হালনিয়ত তৈরি হয়েছে, পুরানো রিকর্ডেড মেসেজ নয়।
সেশন ইউনিকনেস (Session Uniqueness)প্রতিটি সেশন/ট্রানজ্যাকশন уникаল করে তোলে, কী রিয়ুজ আক্রমণ রোধ করে।
ক্রিপ্টোগ্রাফিক প্রোটোকল সিকিউরিটিTLS, IPsec, SSH, Kerberos, OAuth, JWT, Blockchain - সব জায়গায় নন্স/IV (Initialization Vector) ব্যবহার হয়।

নন্সের প্রকারভেদ ও ব্যবহারের ক্ষেত্র

প্রসঙ্গনন্সের রূপউদাহরণ
TLS/SSL HandshakeClient Random + Server Random (৩২ বাইট প্রতিটি)Master Secret তৈরির ইনপুট, সেশন কী ডাইভারসিটি।
AES-GCM / ChaCha20-Poly1305IV / Nonce (৯৬ বিট / ১২ বাইট)প্রতিটি এনক্রিপশন অপারেশনে ইউনিক নন্স বাধ্যতামূলক (রিপ্লে/কollision রোধ)।
JWT (JSON Web Token)jti (JWT ID) claimটোকেন রিপ্লে রোধ (ওপশনাল কিন্তু প্রস্তাবিত)।
OAuth 2.0 / OIDCnonce প্যারামিটার (Authorization Request-এ)ID Token রিপ্লে আক্রমণ রোধ, ক্লায়েন্ট সেশন বাইন্ডিং।
Web Crypto / CSPSubtleCrypto.encrypt()-এ IV/Nonce প্যারামিটারব্রাউজার-ভিত্তিক এনক্রিপশনে নন্স প্রোভাইড করা বাধ্যতামূলক।
Blockchain (Bitcoin Mining)Block Header-এ Nonce (৩২ বিট)Miners নন্স পরিবর্তন করে Hash < Target কন্ডিশন মিট করে (Proof of Work)।
API SecurityRequest Header-এ Nonce (র‍্যান্ডম স্ট্রিং/টাইমস্ট্যাম্প)রিপ্লে আক্রমণ রোধ, রিকোয়েস্ট ইউনিকনেস। Shared Secret + Nonce = Signature।
KerberosAuthenticator-এ Timestamp + Nonceরিপ্লে উইন্ডো (সাধারণত ৫ মিনিট) এনফোর্স করে।

নন্স জেনারেশনের সেরা অনুশীলন (Best Practices)

  • CSPRNG ব্যবহার করুন: /dev/urandom, CryptGenRandom, secrets.token_bytes() (Python), window.crypto.getRandomValues() (Web)। Math.random() ব্যবহার করবেন না।
  • पर্যাপ্ত এনট্রপি: ন্যূনতম ৯৬ বিট (১২ বাইট) AES-GCM-এর জন্য, ১২৮ বিট (১৬ বাইট) সাধারণ ব্যবহারের জন্য।
  • কখনো রিয়ুজ করবেন না: একই কী দিয়ে একই নন্স দুবার ব্যবহার করলে বিনাশকারী ফলাফল (AES-GCM-এ কী রিকভারি সম্ভব)।
  • কাউন্টার ভিত্তিক নন্স: যদি র‍্যান্ডম জেনারেশন কঠিন হয়, তবে মনোটোনিক কাউন্টার ব্যবহার করুন (পারসিস্টেন্ট স্টোরেজ দরকার)।
  • নন্স ট্র্যাকিং:ইন-মেমরি সেট/ব্লুম ফিল্টার/Redis দিয়ে ব্যবহার করা নন্স ট্র্যাক করুন (TTL সহ)।

নন্স সম্পর্কিত ভালনারেবিলিটি (Nonce Vulnerabilities)

  • Nonce Reuse: AES-GCM-এ একই কী+নন্স দুবার ব্যবহার করলে প্লেইনটেক্সট রিকভারি সম্ভব (Forbidden Attack)।
  • Predictable Nonce: দুর্বল RNG (যেমন: লিনাক্স কernel এনট্রপি অভাব, পুরানো جاয়া SecureRandom বাগ) -> নন্স প্রিডিক্টেবল -> আক্রমণ।
  • Nonce Overflow: কাউন্টার ভিত্তিক নন্সে ওভারফ্লো -> রিয়ুজ।
  • Missing Nonce Validation: সার্ভার নন্স চেক না করলে -> রিপ্লে আক্রমণ সম্ভব।

উদাহরণ: Python-এ সিকিউর নন্স জেনারেশন

import secrets

# AES-GCM-এর জন্য ৯৬-বিট (১২ বাইট) নন্স
nonce = secrets.token_bytes(12)  # CSPRNG ব্যবহার করে

# JWT/OAuth-এর জন্য URL-safe নন্স
nonce_urlsafe = secrets.token_urlsafe(16)  # ১২৮ বিট এনট্রপি

# API রিকোয়েস্ট নন্স (টাইমস্ট্যাম্প + র‍্যান্ডম)
import time
api_nonce = f"{int(time.time())}:{secrets.token_hex(8)}"

সারসংক্ষেপ: নন্স (Nonce) হলো "শুধু একবার ব্যবহৃত সংখ্যা" যা রিপ্লে আক্রমণ রোধ করে, লাইভনেস নিশ্চিত করে, এবং ক্রিপ্টোগ্রাফিক প্রোটোকলগুলোর (TLS, AES-GCM, JWT, OAuth, Blockchain, API) একটি ভিত্তিয় স্তম্ভ। সঠিক জেনারেশন (CSPRNG), ইউনিকনেস, এবং ভ্যালিডেশন - এই তিনটি নন্স সিকিউরিটির কী।

  1. নেটওয়ার্ক সিকিউরিটি কী? ধরন, গুরুত্ব এবং বাস্তব উদাহরণ

  2. নেটওয়ার্ক সিকিউরিটি আইডি/কী কী এবং কীভাবে খুঁজে বের করবেন

  3. নেটওয়ার্ক সিকিউরিটি কী? প্রকার, গুরুত্ব ও কাজ করার পদ্ধতি

  4. Wireshark-এ নেটওয়ার্ক সিকিউরিটিতে Nonce কী?