আজকের বিষয় : Cryptography! the father of Information Security
একুশ শতকের দোরগোড়ায় এসে আমাদের দৈনন্দিন কাজ কর্মের সাথে ইন্টারনেট যেন ওতপ্রোতভাবে মিশে গেছে যেমন ক্রেডিট কার্ডের মাধ্যমে অনলাইন শপিং, অনলাইন ব্যাঙ্কিং, মেইলের মাধ্যমে বড় বড় বিজনেস ডিলিং ইত্যাদি |
এবার একবার ভাবুন আপনি কিন্তু উপরে উল্লিখিত সব কাজই করছেন পাবলিক নেটওয়ার্ক ব্যবহার করে আর এই পাবলিক নেটওয়ার্ক-এ বসে আছে আপনার আমার মত ভালো মানুষের পাশাপাশি কিছু খারাপ লোকও(হ্যাকার) বটে এখন আপনার ক্রেডিট কার্ড নম্বর এবং বিজনেস মেইল যদি ওই সব খারাপ লোকদের হাতে চলে যায় তাহলে বুঝতেই পারছেন আপনার বারোটা বাজতে আর বাকি থাকবে না বৈকি |এখন খারাপ লোক থাকবেই তাই বলে তো আর আপনি হাত-পা গুটিয়ে ঘরে বসে থাকতে পারেন না তাই আপনাকে এই পাবলিক নেটওয়ার্কই ব্যবহার করতে হবে এবং সেটা ওই খারাপ লোক গুলোর চোখে ধুলো দিয়ে | এখন প্রশ্ন হলো সেটা কিভাবে-Cryptography-এর মাধ্যমে |
Cryptography হলো এমন একটা বিজ্ঞান যার মাধ্যমে একটা human-readable টেক্সট বা data কে human-unreadable ফরমেটে রূপান্তর করা হয় যাতে ওই সব খারাপ লোকগুলোর সামনে দিয়ে বা তাদের হাতে পড়ে গেলেও ডাটার কোনো ক্ষতি করতে না পারে |
এখন এই-
- human-readable টেক্সট কে টেকনিক্যালি বলে-PlainText
- human-unreadable টেক্সট কে বলে-CipherText
- আর human-readable ফরমেট থেকে human-unreadable ফরমেটে রূপান্তর করাকে বলা হয়-Encryption
- আবার human-unreadable ফরমেট থেকে human-readable ফরমেটে রূপান্তর করাকে বলে-Decryption
- যে algorithm ব্যবহার করে এটা করা হয় তাকে বলে-Encryption-Decryption Algorithm or Cipher
এমন তিনটি Cryptographic algorithm হলো-
- Symmetric Encryption Algorithm
- Asymmetric Encryption Algorithm
- Hash Algorithm
Symmetric Encryption Algorithm-এর ক্ষেত্রে Sender এবং Recipient উভয়ই একই Key ব্যবহার করে data Encryption এবং Decryption জন্য যেটাকে বলা হয় Secret Key বা Private Key | যেহেতু Secret বা Private Key, তো বুঝতেই পারছেন এটা publicly ডিস্ট্রিবিউটেড না শুধুমাত্র sender এবং Recipient-ই জানবে |
বিষয়টা হলো এমন যে একটা data-কে বাক্স বন্দি করে তাতে একটা তালা ঝুলিয়ে দেয়া এবং যার কাছে পাঠানো হচ্ছে তাকে ওই একই চাবি দিয়ে বাক্সটা খুলতে হবে যেটা দিয়ে Sender তালা দিয়েছিল তারমানে চাবিটাও Recipient-এর কাছে পৌছে দিতে হবে যেটা একটা ঝামেলার ব্যপার এবং সেটা আবার নেটওয়ার্কের ভিতর দিয়ে securely পাঠানোও tough কিন্তু এটা অনেক ফাস্ট Encryption Algorithm.
কিছু Symmetric Encryption Algorithm-এর নাম-
Asymmetric Encryption Algorithm-এর ক্ষেত্রে দুইটা key ব্যবহার করা হয় যার একটা কে Public Key আর অন্যটাকে বলে Private Key | Recipient-এর Public Key দিয়ে sender তার পাঠানোকৃত ডাটাকে Encrypt করে আর Recipient তার Private Key দিয়ে sender-এর পাঠানো ডাটাকে Decrypt করে |এখানে একটা কথা বলে রাখা দরকার যে, sender যে algorithm ব্যবহার করে তার পাঠানোকৃত ডাটাকে Encrypt করবে, সেই একই algorithm ব্যবহার করে Recipient ওই ডাটাকে ডিক্রিপ্ট করতে হবে |
কিছু Symmetric Encryption Algorithm-এর নাম-
- Data Encryption Standard (DES)
- Triple Data Encryption Standard (3DES)
- Advanced Encryption Standard (AES)
- Rivest Cipher (RC)-RC1, RC2, RC4,RC6
- International Data Encryption Algorithm (IDEA)
- Blowfish
Asymmetric Encryption Algorithm-এর ক্ষেত্রে দুইটা key ব্যবহার করা হয় যার একটা কে Public Key আর অন্যটাকে বলে Private Key | Recipient-এর Public Key দিয়ে sender তার পাঠানোকৃত ডাটাকে Encrypt করে আর Recipient তার Private Key দিয়ে sender-এর পাঠানো ডাটাকে Decrypt করে |এখানে একটা কথা বলে রাখা দরকার যে, sender যে algorithm ব্যবহার করে তার পাঠানোকৃত ডাটাকে Encrypt করবে, সেই একই algorithm ব্যবহার করে Recipient ওই ডাটাকে ডিক্রিপ্ট করতে হবে |
কিছু Asymmetric Encryption Algorithm-এর নাম-
- Rivest Shamir Adleman (RSA)
- Elliptic Curve Cryptography (ECC)
- Diffie-Hellman Key Agreement
- Digital Signature Algorithm (DSA)
Hash Algorithm-আমি একটা বাস্তব উদাহরণের মাধ্যমে বুঝানোর চেষ্টা করছি, আপনারা নিশ্চয় ATM কার্ডের মাধ্যমে ATM বুথ থেকে টাকা তুলেছেন ? সেখানে আসলে কি হয় ফার্স্ট আপনি বুথে ঢুকার পর ATM কার্ডটা টেলার মেশিনে ঢুকান then পিন নম্বরটা keypad-এ চাপ দেন তারপর আপনি আপনার চাহিদা মত টাকা তুলেন-তাই নয় কি? এখন প্রশ্ন হলো সে কিভাবে আপনাকে বা আপনার পিনটাকে authenticate করে এবং সেটা যদি আমরা বুঝতে পারি তাহলে Hash Algorithm টাও বুঝতে পারবো ইনশাহাল্লাহ | এবার আসি authentication টা কিভাবে হয় -
1. ব্যাঙ্ক থেকে সরবরাহকৃত পিনের Hash ভ্যালুটা store করা থাকে ATM কার্ডের ম্যাগনেটিক stripe-এ
2. টেলার মেশিনে কার্ডটা ঢুকিয়ে আপনার পিনটা দেয়ার সাথে সাথে টেলার মেশিন একটা Hash ভ্যালু তৈরি করে ওই পিনের জন্য
3. তারপর টেলার মেশিন দ্বারা জেনারেটকৃত Hash ভালুটা কার্ডে storeকৃত Hash ভ্যালুর সাথে compare করে যদি মিলে যায় তাহলে আপনি authenticated ঠিক নিচের চিত্রের মত-
তাহলে Hash Algorithm হলো একটা ট্রান্সফরমেশন ছাড়া আসলে কিছুই না, সে একটা ডাটাকে ইনপুট হিসেবে নেয় এবং ফিক্সড সাইজের alphanumeric ভ্যালু জেনারেট করে |
Hash Algorithm যেটাকে ইনপুট হিসেবে নেয় তাকে বলে-Message আর
যে আউটপুট বা ভ্যালু জেনারেট করে তাকে বলে-Message Digest or Digital Fingerprint or Checksum
Hash Algorithm-বৈশিষ্ট্য:
- Fixed Size - Hash Algorithm সব সময়ই ফিক্সড সাইজের Hash ভ্যালু (Message Digest) তৈরি করে ছোট-বড় যেকোন ইনপুটের জন্য | যেমন- 's' এবং 'I Love Bangladesh'-এর জন্য একই length-এর ভ্যালু জেনারেট করছে |
2. Unique - দুইটা ভিন্ন ধরনের ডাটার জন্য Hash ভ্যালু কখনোই একই হবে না |
3. Original - একটা plaintext কে Hash করার পর সেই Hash ভ্যালু থেকে original plaintext-এ ফিরে যাওয়া প্রায় অসম্ভব |
- Message Digest (MD5)
- Secure Hash Algorithm (SHA-1)
- Whirlpool

































