ক্রিপ্টোলজি বা খাস বাংলায় বললে “তথ্য গুপ্তিকরন বিদ্যা” যা সহজ ভাষায় বললে কোন ইনফরমেশনকে কিছু নির্দিষ্ট নিয়ম মেনে বিকৃত বা রুপান্তর করার প্রক্রিয়া। যা ইনফরমেশনকে পড়ার অনুপযোগী করে ফেলে। যাতে কেউ যেন অনুমতি ব্যাতিত আরেকজনের ওই তথ্য দেখতে না পারে। আবার ওই বিকৃত ইনফরমেশনকে কিছু নির্দিষ্ট নিয়মে অবিকৃতও করা যায়।
বিকৃত করার এই প্রসেসটাকে টাকে আমরা বলি এনক্রিপশন আর বিকৃত করা ইনফরমেশনকে পূর্বের অবস্থায় নিয়ে আসার প্রসেসকে বলি ডেক্রিপশন।
//Encrypted by Caesar Cipher
encrypt("hello world")
//output : "khoor zruog"
dencrypt("khoor zruog")
//output : "hello world"
হাজার বছর ধরে নিরাপদে বিভিন্ন তথ্য আদান প্রদান এবং সংরক্ষন করার জন্যও বিভিন্ন ধরনের এনক্রিপশন কৌশল ব্যবহার ও চর্চা হয়ে আসছে। আমাদের বর্তমান সভ্যতা আধুনিক ক্রিপ্টগ্রাফির ওপর দাড়িয়ে আছে। শিক্ষা, চিকিৎসা, ব্যাংকিং, ডিজিটাল ট্রান্সেকশন থেকে শুরু করে মিলিটারি, ইন্টারনেট, অর্থনীতি সব কিছুতেই এর বিস্তৃত ব্যবহার আছে।
ক্লাসিক্যাল সাইফার বলতে সাধারনত ওইসব এনক্রিপশন অ্যালগরিদম বোঝানো হয় যা আধুনিক সাইফারের সেই গ্রিক রোমান জমানায় থেকে শুরু করে আরব, ইউরোপীয়দের হাত এই গত শতাব্দী আগেও ব্যবহার হতো।। এই ক্লাসিক্যাল এনক্রিপশন গুলো সাধারনত হাতে এনক্রিপ্ট ও ডেক্রিপ্টের কাজ করা হত । কিন্তু 1400 খ্রীস্টাব্দ এর পরে থেকে বিভিন্ন অটোমেটিক এনক্রিপশন যন্ত্রের ব্যবহার চালু হয়। যার মদ্ধে সবচেয়ে আলোচিত ইমপ্লেমেন্টেশনের নাম ছিল জার্মানীর এনিগমা যা ২য় বিশ্ব যুদ্ধে জার্মানদের প্রধান এনক্রিপশন মেশিন ছিল। সাধারনত এইসব এনক্রিপশন অ্যালগরিদম আধুনিক সাইফারের তুলনায় অনেক সহজ ও দুর্বল হয়। বর্তমান মোবাইল কম্পিউটিং পাওয়ার ব্যবহার করে এই এনক্রিপশন কয়েক মিনিট ভাঙ্গা সম্ভব। তাই বর্তমানে বিশ্বে এগুলো একেবারে অব্যবহৃত হয়ে আছে। একসময় এনক্রিপশন ছিল হাতে বা যন্ত্রে করা হত আধুনিক কম্পিউটার এর উন্নয়ন এর ফলে তা সফটওয়্যারের কাজ হয়ে যায়। কম্পিউটার বর্তমানে সেকেন্ডের ভেতর কোটি কোটি অপারেশন পারফর্ম করতে পারে। এই নতুন শক্তিকে কাজে লাগানোর জন্য নতুন নতুন এনক্রিপশন স্ট্যান্ডার্ড ডেভলপ করা হয়। কিন্তু এরাই বর্তমানের আধুনিক এনক্রিপশন স্ট্যান্ডার্ড এর ভিত্তি।
ক্লাসিক্যাল সাইফার কে সাধারনত দুই ভাগে বিভক্ত করা যায়।
- Substitution ciphers যেখানে কোন টেক্সটকে এনক্রিপটের করার জন্য এর কোন অক্ষরকে নির্ধারিত কিছু নিয়মে অন্যকোন অক্ষরের সাথে প্রতিস্থাপন করা হয়।
- Transposition cipher যেখানে কোন টেক্সটকে এনক্রিপটের করার জন্য অক্ষরগুলো যেই অর্ডারে আছে সেখান থেকে নির্ধারিত কিছু নিয়মে স্থানান্তর বা ভিন্ন অর্ডার এ সাজানো হয়।
ওপরের কোডে সিজার সাইফার টেকনিক ব্যবহার করে একটা টেক্সট এনক্রিপ্ট করে তারপর তা আবার ডেক্রিপ্ট করা হয়েছে। সিজার সাইফারে কোন অক্ষর এনক্রিপটের সময় তার পাশের নির্ধারিত কোন ঘরের অক্ষরের সাথে প্রতিস্থাপন করা হয়।
জুলিয়াস সিজার তার সেনাপতির সাথে বার্তা আদান প্রদানের সময় প্রতিটি অক্ষরকে ৩ ঘর পাশের অক্ষরের সাথে প্রতিস্থাপন করে দিত।
যেমনঃ
A → D
B → E
C → F
I julias the caeser → L mxoldv wkh fdhvhu
এটাই সিজার সাইফার বা শিফটিং খুবই সিম্পল এবং বহুলত প্রচলিত একটা এনক্রিপশন টেকনিক। প্রায় হাজার বছর ধরে বিভিন্ন ক্ষেত্রে এটা তথ্য নিরাপত্তা দিয়ে এসেছে।
সিজার সাইফার এনক্রিপশন ফাংশনের সি তে ইমপ্লিমেন্টেশন।
void caeser_encrypt(char text[], int shift)
{
for (size_t i = 0; i < strlen(text); i++)
{
if (is_this_a_letter(&text[i]))
{
text[i] = text[i] + shift;
}
}
}
এবং এর ডেক্রিপশন ফাংশনের সি তে ইমপ্লিমেন্টেশন।
void caeser_decrypt(char text[], int shift)
{
for (size_t i = 0; i < strlen(text); i++)
{
if (is_this_a_letter(&text[i]))
{
text[i] = text[i] - shift;
}
}
}
is_this_a_letter()
এই ফাংশন এর কাজ একটা variable কে as reference নিয়ে সেটা একটা অক্ষর কিনা চেক করবে। এবং যদি অক্ষর হয় তবে true return করবে নতুবা false return করবে। কোড
আল কিন্দী নামের এক আরব গনিতবিদ ৮০০ শতাব্দীতে এই এনক্রিপশন ভাংগার উপায় আবিষ্কার করেন। যার মাধ্যমে কত ঘর শিফট করে টেক্সটাকে এনক্রিপ্ট করে হয়েছে তা বের করা যেত। বর্তমানে যাকে এখন Frequency analysis বলে।
বর্তমান আধুনিক বিশ্বে তথ্য এনক্রিপ্ট করার জন্য এরকম সহজ এনক্রিপশন ফলো করা হয় না। কিন্তু Substitution & Transposition chiper technique আধুনিক প্রটোকলের ভিত্তি হিসেবে কাজ করে। যেমন Rijndael (AES) এ যেকোন ডাটা এনক্রিপ্ট করার জন্য ছোট ছোট ব্লকে ভাগ করে এর key ওপর বেস করে বিভিন্ন substitution, shifting, transposition, mixing সহ করে বিভিন্ন অপারেশন চালানো হয়।
এই হলো ক্ল্যাসিক ক্রিপ্টোগ্রাফি ও সিজার সাইফার। Transposition chipher এর একটা উদাহরন দরকার ছিল। হয়ত ভবিষ্যৎ দেয়া হবে।
সম্পূর্ন কোড , আগে কোড টা নিজে সম্পূর্ন করার চেস্টা করতে হবে।