Cryptography এর আদ্যোপান্ত!
19 জুলাই 2022
- শুরুতে Cryptography নিয়ে কিছু কথা?
- Cryptography নিয়ে ইতিহাস?
- Cryptography কাজ?
- Cryptography কে ভালো করে বুঝতে হলে প্রথমে আমাদের Cryptography সাথে সম্পর্কিত কিছু Basic Terms জানতে হবে।
- এবার চলেন Cryptography প্রকারভেদ সম্পর্কে জেনে নেই। সাধারন ভাবে Cryptography কে তিন ভাগে ভাগ করা হয়।
- Breaking Encryption?
- আমার দেখা Cryptography নিয়ে তৈরি করা দুটি চমৎকার মুভি হচ্ছে।
শুরুতে Cryptography নিয়ে কিছু কথা?
Cryptography হচ্ছে Cyber Security একটি অপরিহার্য অংশ। এই পদ্ধতিতে কোন ডেটা কে এমন ভাবে লুকানো হয় যে, যাকে এই ডেটা পাঠানো হবে সেই ব্যাক্তি ছাড়া অন্য কেও এটি বুঝতে পারে না। তাই Cryptography মাধ্যমে ডেটা কে নিরাপদ ভাবে সংরক্ষন এবং প্রেরণ করা হয় থাকে। বর্তমান ডিজিটাল যুগে Networking, Online Banking, E-commerce Transaction থেকে শুরু করে প্রায় সব কিছু তেই অনলাইন নিরাপত্তার জন্য Cryptography ব্যবহার হচ্ছে। অর্থাৎ আপনি যদি Ethical Hacking এবং Cyber Security নিয়ে আগ্রহ হয়ে থাকেন তাহলে অবশ্য-ই আপনাকে Cryptography সম্পর্কে ভালো ধারনা রাখতে হবে।
Cryptography নিয়ে ইতিহাস?
ইংরেজি Cryptography শব্দটি এসেছে Greek শব্দ Krypto's থেকে যার অর্থ হচ্ছে লুকানো। অর্থাৎ Cryptography কে আমরা বাংলাই বলতে পারি তথ্য গুপ্তিকরণ বিদ্যা। এই বিদ্যার প্রথম প্রচলন শুরু হয়েছিলো মিশরে, আজ থেকে প্রায় ৪ হাজার বছর আগে চিত্র লিখন পদ্ধতি হায়ারোগ্লিফিকের হাত ধরে। তবে আধুনিক Cryptography প্রথম ব্যবহার করেছিলেন রোম সম্রাট জুলিয়াস সিজার(Julius Caesar), তাও প্রায় ২ হাজার বছর আগের কথা তিনি তার গভর্নর এবং অফিসারদের সাথে যোগাযোগ করার সময় তার বার্তা বাহকদের কে বিশ্বাস করেননি। তাই তিনি এমন পদ্ধতি তৈরি করেছিলেন যাতে তার চিঠি গুলোর প্রতিটি অক্ষর কে রোমান বর্ণমালা অনুসারে ঐ অক্ষরের থেকে পিছনের তিন নাম্বার অক্ষর দিয়ে প্রতিস্থাপন করার মাধ্যমে। এই সূত্র টি কেবল সম্রাট এবং গভর্নররা জানতেন। গভর্নররা এই সাংকেতিক চিঠির গোপন অর্থ বের করার জন্য আবার প্রতিটি অক্ষর কে রোমান বর্ণমালা অনুসারে ঐ অক্ষরের পরের তিন নাম্বার অক্ষর দিয়ে প্রতিস্থাপন করে নিতেন। এইভাবে তারা বুঝতে পারলেও সূত্র না জানার কারনে চিঠির রহস্য বের করা বার্তা বাহকদের কাছে ছিলো অসম্ভব। পরবর্তীতে ইতিহাসে অসংখ্য বার Cryptography পদ্ধতি ব্যবহার করা হয়েছে। ১৯২০ থেকে ২০০০ সাল পর্যন্ত Cryptography ব্যাপক প্রচলন ঘটে, বিশেষ করে দ্বিতীয় বিশ্বযুদ্ধে এর প্রচুর ব্যবহার দেখা যায়, এরপর সময়ের সাথে সাথে এটি হয়ে উঠেছে আরো উন্নত এবং জটিল। বর্তমানে Cyber Security, Computer Science, Mathematics, Electronic Engineering এ Cryptography ব্যাপক ভাবে ব্যবহার করা হচ্ছে।
Cryptography কাজ?
Cryptography বা Cryptology হচ্ছে এমন একটি নিরাপদ যোগাযোগ মাধ্যম যেখানে Send করা বার্তার বিষয় বস্তু কেবল Sender এবং ঐ সুনির্দিষ্ট Receiver মাঝে-ই গোপন থাকে। এই পদ্ধতিতে একটি বোধগম্য Plain Text কে Encryption Algorithm ব্যবহার করে Sypher(Cipher) Text পরিণত করা হয় এবং সেটা Receiver কাছে পাঠানো হয়। Receiver বার্তাটি পাওয়ার পর আবার সেই Sypher Text কে Decryption Algorithm ব্যবহার করে Plain Text এ Convert করে সেই গোপন বার্তাটি সম্পর্কে জানতে পারে। Cryptography এর মাধ্যমে মাঝপথে Data কে চুরি, পরিবর্তন, Unauthorized Access এবং Hacking থেকে রক্ষা করা হয়।
Cryptography কে ভালো করে বুঝতে হলে প্রথমে আমাদের Cryptography সাথে সম্পর্কিত কিছু Basic Terms জানতে হবে।
যেমনঃ
-
Plain Text
-
Encryption
-
Cypher Text
-
Decryption
-
Algorithm
-
Key
উপরের Basic Terms গুলো ধাপে ধাপে নিচে আলোচনা করা হলোঃ
1. Plain Text: Sender যে তথ্য Receiver এর কাছে পাঠাতে চাই সেই বোধগম্য মূল বার্তাটি হচ্ছে Plain Text। যেমন দরুনঃ Sender, Receiver কাছে যে বার্তাটি পাঠাবে সেটা হলো-"I Love You", তাই এই Sentence হচ্ছে আমাদের Plain Text। এখন এই মেসেজটি কে আমাদের কে Encrypt করতে হবে।
2. Encryption: কোন Plain Text কে এমন ভাবে পরি বর্তন হয় যা মানুষ পড়তে এবং বুঝতে পারে না আর এই এমন রূপ দেওয়ার পদ্ধতি কে Encryption বলা হয়। Encryption প্রক্রিয়ায় Plain Text কে এমন ভাবে পালটে দেওয়া হয় যে নির্দিষ্ট Receiver ছাড়া তৃতীয় কোন ব্যক্তি ঐ বার্তা টি পেয়ে গেলেও মূল বার্তার অর্থ বুঝতে পারে না।
3. Cypher Text: Encryption প্রক্রিয়ায় Plain Text কে এমন ভাবে পরিবর্তন করা হয় যা মানুষ পড়তে এবং বুঝতে পারে না আর এই এমন বার্তা কে Cypher Text বলে অর্থাৎ Encrypted মেসেজটি হচ্ছে Cypher Text। যেমনঃ আমাদের Plan Text ->"I Love You" কে যদি Cypher Text এ পরিণত করি তাহলে হবে->"J Mpwf Zpv"।
4. Decryption: মানুষ পড়তে এবং বুঝতে পারে না এমন Cypher Text কে Receiver এর বোদগম্য ভাষা, মানে Plain Text পরিণত করার জন্য ব্যবহার করা হয় Decryption।
5. Algorithm: যে Mathematics পদ্ধতি ব্যবহার করে Plain Text কে Cypher Text অথবা Cypher Text কে Plain Text রূপান্তর করা হয় যেই মাধ্যমে সেটাকে বলা হয় Algorithm। কাজের উপর ভিত্তি করে অনেক ধরনের Algorithm রয়েছে।
6. Key: Encryption ও Decryption সময় একটি গোপন সংকেত বা পদ্ধতি ব্যবহার করা হয় যা শুধু মাত্র বার্তা Sender এবং Receiver জেনে থাকে। এটি কে বলা হয় Key অর্থাৎ Secret Key। সঠিক Key ছাড়া মূল বার্তার অর্থ পড়া এবং বুঝা অসম্ভব।
Algorithm কাজ করে একটি Key এর সাথে এই Key হতে পারে একটি শব্দ বা সংখ্যা বা শব্দগুচ্ছ। একই Plain Text বিভিন্ন Key এর সাহায্যে আলাদা আলাদা Cypher Text এ রূপান্তরিত হবে। যেমনঃ আমাদের Plain Text বা মূল বার্তা->"I Love You" কে Encrypt করার জন্য যে Algorithm Key ব্যবহার করেছি তা হলো ইংরেজি Alphabet এর ক্রমে প্রতিটি Letter কে আমরা তার পারবর্তী Letter দিয়ে Replace করেছি যেমন-"J Mpwf Zpv"। এইবার আমরা যেই ব্যক্তি কে এই Cypher Text পাঠাবো তাকে এটি Decrypt করার জন্য এর Algorithm ও Key জানতে হবে এবং সে যদি ইংরেজি Alphabet ক্রম অনুসারে এই Cypher Text কে প্রতিটি Letter কে তার আগের Letter দিয়ে যদি Replace করে দেওয়া হলে তখন মূল বার্তাটি সে পেয়ে যাবে। এটি একটি সরল সিজার সাইফারের উদাহরণ। Encrypt ডেটার নিরাপত্তা নির্ভর করে দুটি জিনিসের মধ্যে প্রথমটি Cryptography Algorithm এর শক্তি এবং অন্যটি Secret Key নিরাপত্তার মাধ্যমে।
বি দ্রঃ এখানে একটি বিষয় ক্লিয়ার করা প্রয়োজন Sender এবং Receiver যে বার্তা আদান-প্রদান করে এই বার্তা বলতে কেবল Text Message বুঝায় না বরং যে কোন ধরনের File হতে পারে যেমনঃ Image, Audio, Video, Document ইত্যাদি সবকিছু কেই আমরা বার্তা বলে বিবেচনা করব।
এবার চলেন Cryptography প্রকারভেদ সম্পর্কে জেনে নেই। সাধারন ভাবে Cryptography কে তিন ভাগে ভাগ করা হয়।
যেমনঃ
-
Symmetric Key Cryptography
-
Asymmetric Key Cryptography
-
Hash Functions
উপরের Classification গুলো ধাপে ধাপে নিচে আলোচনা করা হলোঃ
1. Symmetric Key Cryptography: Encryption আর Decryption সময় ব্যবহিত গোপন সংকেত বা Secret Key যদি একই হয় তখন তাকে বলা হয় Symmetric Key Cryptography। অর্থাৎ এটি এমন একটি পদ্ধতি যেখানে গোপন বার্তা Encryption ও Decryption করার জন্য Sender এবং Receiver একটি Single Common Key ব্যবহার করে থাকেন। Symmetric Key Cryptography সহজ এবং বেশ Fast কাজ করে কিন্তু এর সমস্যা হলো Sender এবং Receiver কে যেকোন নিরাপদ উপায়ে তাদের ঐ Single Common Key টি বিনিময় করতে হয়। Symmetric Algorithm এর ক্ষেত্রে Sender এবং Receiver দুইজন একই Secret Key ব্যবহার করে বলে এদের কে Share Secret Key বলা হয়।
সবচেয়ে জনপ্রিয় Symmetric Algorithm:
Symmetric Key Cryptography দুই ধরনের হয়ে থাকে এক হচ্ছে Block Algorithm এবং দুই Stream Algorithm।
-
Data Encryption Standard(DES)
-
Advanced Encryption Standard (AES)
-
3DES
2. Asymmetric Key Cryptography: Encryption আর Decryption সময় যদি ভিন্ন দুটি গোপন সংকেত বা Secret Key ব্যবহার করা হয় তখন তাকে বলা হয় Asymmetric Key Cryptography। এখানে বার্তা Sender, Encryption জন্য যে Key ব্যবহার করেন তাকে বলা হয় Public Key এবং বার্তা Receiver, Decryption জন্য যে Key ব্যবহার করে তাকে বলা হয় Private Key। অর্থাৎ Public Key এবং Private Key সম্পূর্ন ভিন্ন হয়, তাই Public Key তৃতীয় কোন ব্যক্তি জেনে গেলেও সে ঐ Cypher Text কে Decryption করতে পারে না। কারন নির্দিষ্ট Receiver কাছে কেবল Public Key টি থাকে আর এজন্য Asymmetric Key Cryptography কে Public Key Cryptography বলা হয়।
জনপ্রিয় কিছু Asymmetric Algorithm হচ্ছেঃ
-
Rivest Shamir Adleman(RSA)
-
Elliptical curve Cryptography (ECC)
-
Diffie Hellman
3. Hash Functions: এই ধরনের Algorithm কোনো গোপন সংকেত বা Secret Key ব্যবহার করা হয় না বলে এটি এমন একটা প্রক্রিয়া যেখানে মূল বার্তার আকার যাই হোক না কেনো তার উপর একটি গাণিতিক পদ্ধতি ব্যবহার করার ফলে হিসাবে পূর্ব নির্ধারিত সাইজের একসেট সংখ্যা বের করা হয়। আর এই একসেট সংখ্যা কে বলা হয় ঐ মূল বার্তার Hash Value। তবে গাণিতিক পদ্ধতিটা এমন হবে যাতে নতুন নতুন বার্তার জন্য প্রতিবার-ই তার Hash Value বদলে যায়। অর্থাৎ দুটি ভিন্ন বার্তার Hash Value সবসময়-ই আলাদা হবে, তবে Hash Value আকার বা Bit সাইজ অপরিবর্তিত থাকবে। Hash Value ব্যবহারের কারনে Unauthorized কোন ব্যক্তির জন্য ঐ মূল বার্তা অর্থ পড়া অসম্ভব হয়। এখন প্রায় অনেক Operating System এ Password Encryption জন্য Hash Functions ব্যবহার করে থাকেন।
জনপ্রিয় কিছু Hashing Algorithm হচ্ছেঃ
-
SHA-1, MD5 অনেক প্রচলিত হলেও তাদের সাইজের কারনে বেশ দূর্বল প্রমাণিত হয়েছে যা হ্যাকাররা এইগুলো সহজে Break করতে পারে।
-
তাই ইদানীং SHA-2 খুব ব্যবহৃত হচ্ছে।
Encryption এর ব্যবহারঃ Email আদান-প্রদান এবং File ডাউনলোড জন্য Hash Functions ব্যবহার করা হয়, এরফলে মাঝপথে কেও বার্তা বদলে দিয়েছে কিনা তা যাচাই করা যায়। ইদানীং Database এ Password এবং বিভিন্ন Sensitive Personal Information যেমনঃ NID Card, Credit Card, Passport Number, Fingerprint ইত্যাদি সরাসরি সংরক্ষন না করে বরং এইগুলোর Hash Value আকারে সংরক্ষন করা হয়। অথবা Encrypt লাইনের শেষে কিছু Character বা Random Value যোগ করে দেওয়া হয় যাকে SALT/SALTING বলে। তারপর Hash Value বের করে Database এ রাখা হয় পরবর্তীতে User এর দেওয়া Input থেকে Hash Value বের করে Server এ থাকা Hash Value সাথে মিলিয়ে দেখা হয়। যারফলে Database কখনো Hacker এর নিয়ন্ত্রে চলে গেলেও মূল তথ্য গোপন থেকে যায়। SALTING করা যেকোন ডেটা Hacker এর পক্ষে Decrypt করা অসম্ভব হয়ে যায়।
Breaking Encryption?
তবে Cryptography যে সবসময় শতভাগ সুরক্ষিত তা কিন্তু নয়। Crypto Analysis করে Cryptography Break করা সম্ভব যদিও অধিকাংশ ক্ষেত্রে এটি বে-আয়নি কিন্তু Black Hat Hacker তো আর বসে থাকার পাত্র নয়। প্রচলিত যেসব Tools বা Software দিয়ে Encryption করা হয় অধিকাংশ হ্যাকাররা তার Vulnerability খোজে বের করে তার মাধ্যমে Cypher Text কে Break করে মূল বার্তা উদ্ধারের চেষ্টা চালাই। Secret Key ছোট হলে হ্যাকাররা Dictionary Attack, Birthday Attack বা উন্নত হ্যাকিং Tools ব্যবহার করে অনবরত চেষ্টার মাধ্যমে একসময় Secret Key বের করে ফেলে। তাই বর্তমানে Symmetric Algorithm ক্ষেত্রে 1024 বা 2048 Bit সাইজের Key ব্যবহার করা হয়, এতো বড় সাইজের Key Break করা অসম্ভব না হলেও একজন Hacker এর এই কাজটি করতে কয়েক মাস থেকে কয়েক বছর সময় লেগে যাবে।
আমার দেখা Cryptography নিয়ে তৈরি করা দুটি চমৎকার মুভি হচ্ছে।
-
The Imitation Game
-
The Da Vinci Code