46.El-Gamal algoritmi El-Gamal shifrlash algoritmi. Ushbu ochiq kalitli shifrlash algoritmi diskert logarifmlash muammosiga asoslangan bo‘lib, kalitlar uzunligi teng bo‘lgan holda bardoshligi RSA algoritmi algoritmi bardoshligiga teng.
Kalit generatori. El-Gamal algoritmida kalit generatori quyidagi bosqichlardan iborat:
maxfiy kalit sifatida a
shartni qanoatlantiruvchi butun son tanlanadi;
ochiq kalit sifatida hisoblanadi;
ochiq kalitlar jufti (y,g,p)ma’lumotni shifrlovchi tomonlarga yoki ixtiyoriy odamlarga tarqatiladi.
Ochiq matnni shifrlash. Shifrlanishi kerak bo‘lgan M ochiq matn va ochiq kalitlar juftiga egi foydalanuvchi quyidagi ketma – ketlikdagi amallarni bajaradi:
r sonidan kichik bo‘lgan va EKUB(k, p-1)=1shartni bajaruvchi k -sonini tanlab olinadi;
ochiq matnning har bir belgisi uchun tenglikni hisoblash orqali shifrmatn olinadi;
shifrlash amalga oshirilgach, k son o‘chirib tashlanadi va qabul qiluvchiga (r, c)juftlik yuboriladi.
Shifrmatnni deshifrlash. Shifrmatn va maxfiy kalitga ega foydalanuvchi quyidagi ketma – ketliklarni bajarish orqali ochiq matnga ega bo‘ladi:
qabul qilingan ma’lumotlar asosida ochiq matn hisoblanadi.
Ushbu algoritm asosida sodda misol quyida keltirilgan:
A tomon o‘zining maxfiy kaliti asosida ochiq kalit juftini hosil qiladi va uni B tomonda yuboradi. Olingan qiymatlar quyidagilar:
g=3; p=31; a=4; =(3^4)mod31=19. Bu yerda (p,g,y) – ochiq kalitlar jufti va a maxfiy kalit.
Shifrlash. Bu bosqich A tomonning ochiq kalitlariga esa B tomondan amalga oshiriladi. Ochiq ma’lumot sifatida M=CDEF (2,3,4,5 –alfavitdani o‘rni) olinib, EKUB( , ) =1 shartni qanoatlantiruvchi k=7 tanlandi. Shundan so‘ng quyidagilar hisoblanadi:
=(3^7)mod31=17;
C1= =2*(19^7)mod31=14;
C2= =3*(19^7)mod31=21;
C3= =4*(19^7)mod31=28;
C4= =5*(19^7)mod31=4;
Shundan so‘ng C1,C2,C3,C4 lardan iborat S va r A tomonga yuboriladi.
Deshifrlash.Bu jarayon maxfiy kalitga ega bo‘lgan A tomondan amalga oshiriladi va ochiq matn olinadi:
M1= =14*17^(31-1-4)mod31=2;
M2= =21*17^(31-1-4)mod31=3;
M3= =28*17^(31-1-4)mod31=4;
M4= =4*17^(31-1-4)mod31=5.
Bu yerda diskert logarifmlash muammosi sifatida ochiq kalitlar jufti berilganda tenglamadan a maxfiy kalitni topish bo‘lib, hozirda ushbu muammoning optimal usuli mavjud emas.