ElGamal একটি asymmetric key encryption অ্যালগরিদম, যা তাহের এলগামেল ১৯৮৫ সালে উদ্ভাবন করেন। এই ক্রিপটোসিস্টেমের ৩টি পর্যায় আছে-
১. Key Generation
২. Encryption
৩. Decryption
Key Generation
আমরা জানি, যেকোনো অ্যাসিমেট্রিক এনক্রিপশনে আমাদের দুটো কী প্রয়োজন হয়, একটি পাবলিক,অপরটি প্রাইভেট। ধরি বব, অ্যালিসের কাছে একটি বার্তা পাঠাতে চায়, ববের বার্তাটি হলো প্লেইনটেক্সট , PT = 13 ।
ববের কাছে একটি প্রাইভেট কী ও একটি পাবলিক কী আছে। পাবলিক কী এর ৩টি অংশ, P = একটি বড় মৌলিক সংখ্যা, e1 ও e2 যথাক্রমে ২য় ও ৩য় অংশ, আর আছে প্রাইভেট কী, D । আমরা সাধারণত e1 এর সাহায্যে e2 এর মান নির্ধারণ করি।
ধরি, P = 23 (বাস্তবে আরো বড় প্রাইম সংখ্যা ব্যবহার করা হয়, উদাহরণে হিসেবের সুবিধার জন্য 23 ধরে নিলাম) , e1= 5, D = 7 (D এর মান অবশ্যই (P-1) এর চেয়ে ছোট হতে হবে) ।
অতএব e2= (e1^D) mod P = (5^7) mod 23 = 17 ।
তাহলে আমাদের পাবলিক কী হলো – K(P,e1,e2) = K(23,5,17), প্রাইভেট কী D = 7 ।
Encryption
প্রয়োজনীয় কী জেনারেশনের পর বব এবার প্লেইনটেক্সট ১৩ কে সাইফারটেক্সটে রূপান্তর করতে চায়। আমরা ববকে জানিয়ে দেব, সাইফারটেক্সটের একটা নয় বরং দুটো অংশ থাকে, এদেরকে আমরা যথাক্রমে C1 ও C2 নাম দিলাম। তবে এনক্রিপশনে যাওয়ার আগে আমরা আরো একটা র্যান্ডম সংখ্যা r = 3 ধরে নেব ।
এখন, C1= ((e1)^r) mod P = 5^3 mod 23 = 10
এবং C2 = (PT * (e2)^r) mod 23 = (13*17^3) mod 23= 21 ।
তাহলে বব, অ্যালিসের কাছে যে সাইফারটেক্সটটা পাঠাবে, তা হলো C(C1,C2) = C(10,21)।
Decryption
ডিক্রিপশনের জন্য রিসিপেন্ট অর্থাৎ অ্যালিসের হাতে আছে প্রাইভেট কী D=7, প্রাইম নাম্বার P= 23 আর সাইফারটেক্সট C(C1, C2) . এখন অ্যালিস নিচের সূত্র ব্যবহার করে ডিসাইফার করবে:
PT= (C2* (C1^D)^(-1) ) mod P
সূত্রে যথাযথ মান বসালে পাওয়া যায়,
PT= (21* (10^7)^(-1) ) mod 23
= (21 * 5) mod 23 [ (10^7)^(-1) mod 23 ≡ (10^7)x ≡ 1( mod 23) , এখান থেকে x এর
= 13 মান পাওয়া যায় 5 ]
এভাবে অ্যালিস, ববের পাঠানো বার্তাটি ডিক্রিপ্ট করে ফেলবে।
Pros and Cons
সাধারণ এক ঘাতের পূর্ণসংখ্যার বদলে এই অ্যালগরিদম সূচকীয় সংখ্যার মডুলার এরিথমেটিক ব্যবহার করে, যার ফলে অ্যাটাকারের পক্ষে সংখ্যাটি অনুমান করা বেশ কষ্টকর, যা ডেটাকে পর্যাপ্ত নিরাপত্তা দেয়। তাছাড়া এটি সিমেনটিক নিরাপত্তাও বিধান করে, অর্থাৎ যদি অ্যাটাকার এমনকি একই প্লেইনটেক্সটের একাধিক সাইফারটেক্সট ভেদ করেও ফেলে, কোনো অর্থবহ তথ্য সেখান থেকে সংগ্রহ করা সম্ভব হবে না।
ElGamal বেশ ধীর গতির, বিশেষ করে কী সাইজ যথেষ্ট বড় হলে এই সমস্যা প্রকট হয়। যেহেতু এই অ্যালগরিদমের কার্যকারিতা এর প্যারামিটারগুলোর ওপর নির্ভরশীল, প্যারামিটার নির্বাচনে তাই সতর্ক থাকা উচিত।
Leave a Reply