ক্রিপ্টোগ্রাফির আপাদমস্তক (A to Z)

ক্রিপ্টোগ্রাফির আপাদমস্তক (A to Z)

ক্রিপ্টোগ্রাফি | টেকনিসিয়াম

ক্রিপ্টোগ্রাফি কি? 

"Cryptography" শব্দটা এসেছে দুইটা গ্রিক শব্দ kryptós এবং graphein থেকে। kryptós থেকে এসেছে 'crypto', যার অর্থ হচ্ছে লুকানো এবং graphein থেকে এসেছে 'graphy', যার অর্থ হচ্ছে লেখা। ক্রিপটোগ্রাফি সম্পর্কে বলা হয় – the practice and study of techniques for secure communicaton in the presence of third parties. অর্থাৎ সহজ ভাষায়, তথ্য লুকানো এবং পুনরায় এটাকে রিকভার করার জন্য যে পদ্ধতি ব্যবহার করা হয় তাকে ক্রিপটোগ্রাফি বলে। এটা আসলে হ্যাকারদের জীবনের সব থেকে ভয়ঙ্কর দুঃস্বপ্ন বলে আমি মনে করি। তাই এই বিষয়ে তোমাদের ধারণা থাকতে হবে যা সাইবার সিকিউরিটির অন্তর্ভুক্ত। এটার ক্ষেত্র আসলে সুবিশাল এবং একজন সার্থক ক্রিপটোগ্রাফার হতে কয়েক বছর পর্যন্ত সময় লেগে যায়। ক্রিপটোগ্রাফির উপরে মাস্টার্স এবং পি.এইচ.ডি ডিগ্রী ও দেয়া হয়। তাই এক লেখাতে ক্রিপ্টোগ্রাফি সম্পর্কে লিখে শেষ করা না গেলেও আমি তোমাদেরকে সর্বোচ্চ বুঝানোর চেষ্টা করছি।

এনক্রিপশন এবং ডিক্রিপশন 


আগের কালের ডিকশনারিতে ক্রিপটোগ্রাফিকে বলা হত - The art of writing and solving codes. এখানে ‘writing’ শব্দটা দ্বারা আসলে বোঝানো হয়েছে তথ্যকে লুকানো, যাকে ক্রিপটোগ্রাফির ভাষায় বলা হয় এনক্রিপটিং। আর যে প্রক্রিয়ায় এনক্রিপটিং করা হয় তাকে বলে এনক্রিপশন।

অনুরূপভাবে, ‘solving codes’ দ্বারা বোঝানো হয়েছে লুকানো ডেটাকে পুনরুদ্ধার করা যাকে ক্রিপটোগ্রাফির ভাষায় বলা হয় ডিক্রেপ্টিং। আর যে প্রক্রিয়ায় ডিক্রেপ্টিং করা হয় তাকে বলে ডিক্রেপশন। অর্থাৎ এনক্রিপটেড ডেটাকে আবার plain text-এ পরিবর্তন করার প্রক্রিয়া হলো ডিক্রিপশন।

ক্রিপ্টোগ্রাফি কত প্রকার ও কি কি?


ক্রিপ্টোগ্রাফি মূলত তিন প্রকার। এগুলো হলো:

  1. Symmetric (Secret) Key Cryptography : এই প্রক্রিয়ায় প্রেরক (sender) যে key/ruleset/password ব্যবহার করে ডেটা এনক্রিপ্ট করে গ্রাহকের (receiver) কাছে পাঠায়, গ্রাহক সেই একই key/ruleset/password ব্যবহার করে এনক্রিপ্টেড ডেটাকে ডিক্রেপ্ট করে plain text-এ পরিণত করে। অর্থাৎ, সেন্ডার এবং রিসিভারের কাছে একটা মাত্র গোপন key থাকে যেটা দুজনেই ব্যবহার করে ডেটা এনক্রিপ্ট এবং ডিক্রেপ্ট করে। এটা একটা সাধারণ এবং দ্রুততর প্রক্রিয়া। উভয় ফাংশনের জন্যেই মাত্র একটা key ব্যবহার হয় বলে। Secret Key Cryptography-কে Symmetric encryption ও বলা হয়। কয়েকটা পরিচিত Symmetric algorithms হচ্ছে- Data Encryption standard(DES), 3DES, DESX, Advanced Encryption Standard (AES), CAST 128/256, International Data Encryption Algorithm (IDEA), Rivest Ciphers (RC) 4, Blowfish, Twofish, Camellia, Secure And Fast Encryption Routine (SAFER), MISTY1, KASUMI, SEED, ARIA ইত্যাদি।

  2. Asymmetric (Public) Key Cryptography : এই প্রক্রিয়ায় ডেটা এনক্রিপ্ট এবং ডিক্রেপ্ট করার জন্যে একটা public key এবং একটা private key ব্যবহার করা হয়। অর্থাৎ প্রেরক পার্টি এবং গ্রাহক পার্টি ডেটা এনক্রিপ্ট-ডিক্রেপ্ট করার জন্যে দুটো আলাদা শবু ব্যবহার করে। দুই পার্টির দুটো আলাদা key মিলিত হয়ে একটা combine key বা key pair তৈরি হয়, আর তখনি ডেটা এনক্রিপ্ট বা ডিক্রেপ্ট করা যায়। অর্থাৎ যদি Mr. X নিজের private key ব্যবহার করে কোন ডেটা এনক্রিপ্ট করে তাহলে Mr. Y কে ঐ ডেটা ডিক্রেপ্ট করার জন্যে Mr. X এর public key ব্যবহার করতে হবে। কয়েকটা পরিচিত Asymmetric algorithms হচ্ছে – Diffie Hellman, RSA (Rivest, Shamir, and Adleman), Public Key Infrastructure (PKI), Elliptical curve Cryptography (ECC) ইত্যাদি।

  3. Hash Functions : এটা হচ্ছে এক ধরনের one-way encryption method যেটা আন-এনক্রিপ্ট বা ডিক্রেপ্ট করা যায় না। এই প্রক্রিয়ায় plain text-কে mathematical transformation দ্বারা এনক্রিপ্ট করে hash value-তে পরিণত করে যেটা থেকে আর কোনভাবেই মূল ডেটাকে (plain text) রিকভার করা যায় না। এখন আপনার মনে হতে পারে, যদি কোনো ডেটা এনক্রিপ্ট করার পর আর রিকভার নাই করা যায় তাহলে সেটা এনক্রিপ্ট করে কি লাভ? আসলে কিছু ক্ষেত্রে জানার দরকার পড়ে না যে অরিজিনাল ডেটা কি ছিল। শুধু যাচাই করে দেখতে হয় যেই টেক্সট ইনপুট করা হয়েছে সেটা একই hash value তৈরি করছে কিনা। এ কারণেই আমাদের কম্পিউটারের পাসওয়ার্ড সংরক্ষণ করার জন্যে hash ব্যবহার করা হয়। যখন আমরা কম্পিউটারে পাসওয়ার্ড এন্টার করে লগ-ইন করতে যাই, তখন সিস্টেম এই পাসওয়ার্ডের hash value আর আগে সেভ করে রাখা পাসওয়ার্ডের hash value মিলেয়ে দেখে, যদি দুটো মিলে যায় তাহলেই আমরা নিজের কম্পিউটারে প্রবেশ করতে পারি। কয়েক ধরনের হ্যাস হচ্ছে MD4, MD5, SHA-1, Sha-2, RIPEMD, HAsh of VAriable Length (HAVAL), Whirlpool, Tiger ইত্যাদি। এছাড়া Wireless Cryptography নামে আরেকটা ছোটখাটো ক্ষেত্র আছে যার মধ্যে Wired Equivalent Privacy (WEP), Wi-Fi Protected Access (WPA), WPA2- Pre-Shared Key (PSK), WPA2-Enterprise এগুলোকে অন্তর্ভুক্ত করা হয়েছে।

সাইফার কি?


যে algorithm ব্যবহার করে কোনো ডেটাকে এনক্রিপ্ট এবং ডিক্রেপ্ট করা হয় তাকে সাইফার বলে। অন্যভাবে বলতে গেলে, এনক্রিপশন এবং ডিক্রেপশন সম্পন্ন করার জন্যে কয়েকটা ধাপের সমাহারকেই সাইফার বলে। কোনো ডেটা এনক্রিপ্ট করার পর সেটা ciphertext এ পরিণত হয়। গাণিতিক দিক থেকে হিসেব করলে সাইফার-এর সূচনা অনেক আগে থেকেই। নবম শতকের দিকে আরবীয় বিজ্ঞানী ইব্রাহিম আল-কাদি এই সিদ্ধান্তে উপনীত হন যে, আরবি শব্দ sifr (صفر) থেকে cipher বা cypher এর উৎপত্তি। sifr অর্থ হচ্ছে শূন্য। যুক্তি-সাপেক্ষে বলা যায় যে, ক্রিপটোগ্রাফির ভিত্তি-প্রস্তর হচ্ছে সাইফার। আধুনিক প্রযুক্তির উপর সাইফারের গুরুত্বপূর্ণ প্রভাব রয়েছে। কারণ, আধুনিক যোগাযোগ ব্যবস্থার প্রায় সবকিছুই যেমন- ইন্টারনেট, মোবাইল ফোন, টেলিভিশন, এমনকি ATM-গুলো পর্যন্ত নিরাপত্তা এবং গোপনীয়তার জন্যে সাইফারের উপর নির্ভর করে।

কয়েক ধরনের সাইফার হচ্ছে Atbash Cipher, ROT 13 Cipher, Beaufort Cipher, Hill Cipher, Playfair Cipher, ADFGVX Cipher ইত্যাদি।

কিভাবে এনক্রিপশন ও ডিক্রিপশন করতে হয়?


কোনো plain text-কে এনক্রিপ্ট করা খুবই মজার কাজ। টেক্সট এনক্রিপ্ট এবং ডিক্রেপ্ট করার জন্যে অনেক ওয়েবসাইট আছে। কয়েকটার লিংক দিলাম।



আমি cryptii.com এ ঢুকব কারণ এটাই সব থেকে বেশি আপডেটেড বলে আমি মনে করি। একেবারে কমনভাবে আলোচনা করছি, ধরুন আমি একটা plain text-কে এনক্রিপ্ট করব।
Technology is Fun
এটাকে BASE-64 দ্বারা এনক্রিপ্ট করলে পাওয়া যাবে-
 VkdWamFHNXZiRzluZVNCcGN5QkdkVzQ9
এরকমভাবে তুমি আরো কয়েকটা স্টেপে ডেটা এনক্রিপ্ট করতে পারে। তবে এনক্রিপ্টেড ডেটা ডিক্রেপ্ট করা একটু কঠিন। কারণ, কোনো এনক্রিপ্টেড ডেটাকে ডিক্রেপ্ট করার জন্যে সঠিক Key অথবা encryption sequence এর দরকার হয়। যেমন আমরা কেবল যে ডেটা এনক্রিপ্ট করলাম তার Key হচ্ছে BASE-64 > MEGAN-35 > GILA-7. এখন আমাদের এই ডেটাকে ডিক্রেপ্ট করে পুনরায় আগের আবস্থায় ফিরিয়ে আনতে গেলে Key ব্যবহার করে উল্টো দিক থেকে শুরু করতে হবে। অর্থাৎ প্রথমে সর্বশেষ এনক্রিপ্টেড ডেটাকে GILA-7 দিয়ে ডিক্রেপ্ট করতে হবে। তারপর প্রাপ্ত ডেটাকে MEGAN-35 দিয়ে ডিক্রেপ্ট করতে হবে। MEGAN-35 দিয়ে ডিক্রেপ্ট করার পর অবশেষে প্রাপ্ত ডিক্রেপ্টেড ডেটাকে আবার BASE-64 দ্বারা ডিক্রেপ্ট করলেই কাজ শেষ। আবার আমরা আগের ‘We hack to protect’ লেখাটা পেয়ে যাব। প্রক্রিয়া একটু জটিল হলেও বিষয়টা কিন্তু খুবই সাধারণ। মূল বিষয় হচ্ছে কোনো এনক্রিপ্টেড ডেটাকে ডিক্রেপ্ট করার জন্যে Key এর প্রয়োজন। যদি এটা জানা না থাকে তাহলে কাজটা করতে পারার সম্ভাবনা প্রায় শূন্যের কাছাকাছি চলে যায়।

আপনি যদি ফাইল অথবা পার্সোনাল ডেটা এনক্রিপ্ট এবং ডিক্রেপ্ট করার জন্যে সফটওয়্যার ব্যবহার করতে চান তাহলে এই লিংকগুলোকে কাজে লাগাতে পারেন।


Collisions


আমি আগেই বলেছি যে, Hash Functions মেথড দিয়ে ডেটাকে এনক্রিপ্ট করলে সেটা থেকে আর মূল ডেটা (plain text) ফিরে পাওয়া যায় না। সিস্টেম শুধু দুইটা hash value যাচাই করে দেখে এবং দুটো hash value একই হলে ইউজারকে অ্যাক্সেস দেয়া হয়। কিন্তু অনেক সময় এ রকম হয় যে, দুইটা আলাদা plain text এর hash value ûeû একই হয়। যেমন মনে করুন দুইটা ভিন্ন শব্দ X এবং Y।
কিন্তু এদের উভয়েরই hash value হল :-

61a0f01599f0464e92cc9b6c37a276bd

যখন দুটো ডেটারই হ্যাস ভ্যালু হুবহু একই রকম হয় তখন সিস্টেম বিভ্রান্তিতে পড়ে হ্যাকারকে অ্যাক্সেস দিয়ে দেয়। আর একই হ্যাস ভ্যালুর দুইটা ইনপুট খুঁজে বের করে সেটা দিয়ে কোন কিছুতে অ্যাক্সেস পাওয়ার প্রক্রিয়াকে Collision Attack বলা হয়।

SALTING : যেকোনো এনক্রিপ্টেড ডেটাকে আরো সুরক্ষিত করার জন্যে এর শেষে আরো কয়েকটা ক্যারেক্টার যোগ করা হয় যাকে SALTING বলে। বেশির ভাগ গুরুত্বপূর্ণ সার্ভারে আজকাল নিরাপত্তা সুনিশ্চিতকরণের উদ্দেশ্য SALT ব্যবহার করা হচ্ছে। যেমন :- 464e92cc9b6c হচ্ছে একটা এনক্রিপ্টেড ডেটা। এর শেষে যদি আরো তিন-চারটা ক্যারেক্টার sli7 যোগ করে দেয়া হয় তাহলে এটাকে ডিক্রেপ্ট করা কোনোভাবেই সম্ভব না। Dictionary Attack, Brute Force Attack, Rainbow Table Attack এবং SQL Injecktion Attack-কে বাধা দেয়ার জন্যে SALTING-এর প্রভাব অনেক বেশি। এ কারণেই SALTING হচ্ছে হ্যাকারদের জন্য অভিশাপস্বরূপ।

Post a comment

0 Comments