Hər hansı “M” məlumatı aşağıdakı şəkildə şifrlənir
Sessiya açarı seçilir - Elə təsadüfi k ədədi seçilir ki, 1
“a=gk mod p” və b=ykM mod p hesablanır
(a,b) ədədlər cütü şifrlənmiş mətindir
Asanlıqla görmək mümkündür ki, şifrlənmiş mətnin uzunluğu daxil edilmiş M mətnindən iki dəfə çoxdur.Digər tərəfdən k-nı göstərilən intervalda deyildə 1-ə və ya p-1-ə bərabər götürsək onda verilmiş məlumatın deşifrlənməsi ilk addımda baş verər ki, buda çox göndərilən məlumat üçün çox təhlükəlidir.
Deşifrləmə alqoritmi
x qapalı açarını bilməklə (a,b) şifrlənmiş mətnindən qəbul edilən mətni aşağıdakı düstur vasitəsi ilə əldə etmək olar:
M=b(ax)-1 mod p
Asanlıqla görmək olar ki, (ax)-1 ≡ g –kx (mod p)
bu səbəbdən b(ax)-1 ≡ (ykM)g-xk ≡(gxkM) g-xk ≡ M (mod p) hesablamaq olar.
Praktiki hesablamaq üçün aşağıdakı düsturdan istifadə edilir:
M≡b(ax)-1 mod p= b*a (p-1-x) mod p
El-Qamal sxeminə aid aşağıdakı misala baxaq:
Fərz edək ki, M=5 məlumatını şifrləmək tələb olunur. Xüsusi açarın generasiya edək: Fər edək ki, p=11, g=2, x=8 y=gx mod p = 28 mod 11 =3
Göründüyü kimi, burada (p,g,y) üçlüyü (11,2,3) qapalı açar x isə 8-ə bərabərdir. Məlumatın şifrlənməsi üçün k=9 götürək. a=gk mod p=29 mod 11=512 mod 11=6 hesablanır.
b=ykM mod p =395 mod 11=19683*5 mod 11=9 Nəticədə alırıq ki, (a,b)=(6,9) şifrlənmiş məlumatdır.
(a,b)=(6,9) şifrlənmiş məlumatından və x=8 qapalı açarından M=5 məlumatını almaq tələb olunur
M≡b(ax)-1 mod p= b*a (x) -1 mod p = 9 (68)-1 mod 11=5
Alırıq ki, ilkin mətn M=5-dir.
k-nın təsadüfi seçilməsi səbəbi ilə El-Qamal sxeminə ehtimal şifrləməsi və ya təsadüfi şifrləmədə deyilir.El-Qamal sxemi ilə şifrləmə zamanı çatışmayan əsas xüsusiyyət onun sonda alınan mətnin uzunluğunun daxil edilmiş mətindən iki dəfə uzun olmasıdır.
Elgamal Şifrələmə, şifrələmə üçün istifadə olunan bir növ asimmetrik açar alqoritmdir. Açıq açar kriptoqrafiya üçün istifadə olunur və Diffie-Hellman açar mübadiləsinə əsaslanır.
Bu asimmetrik açar şifrələmə kriptoqrafiyası, g ^ a və g ^ k-ləri bildiyimiz, g ^ ak hesabladığımız mənasını verən tsiklik qrupda diskret loqarifma tapmaq çətinliyinə əsaslanır.
Hibrid kriptosistemlər də həmçinin bu alqoritmdən istifadə edir.
Alqoritm:
Elgamal Şifrələmə Alqoritmi üç hissədən ibarətdir
Əsas generator
Şifrələmə alqoritmi
Şifrəni açma alqoritmi.
İctimai Parametr: Etibarlı bir üçüncü tərəf çox sayda p və bir generator generatorunu nəşr edir.
Aşağıda, Elgamal Şifrələmə Alqoritmi üçün Python'a giriş, istifadə, alqoritm və kodu daxil edək.
import random
from math import pow
a=random.randint(2,10)
#To fing gcd of two numbers
def gcd(a,b):
if a
return gcd(b,a)
elif a%b==0:
return b
else:
return gcd(b,a%b)
#For key generation i.e. large random number
def gen_key(q):
key= random.randint(pow(10,20),q)
while gcd(q,key)!=1:
key=random.randint(pow(10,20),q)
return key
def power(a,b,c):
x=1
y=a
while b>0:
if b%2==0:
x=(x*y)%c;
y=(y*y)%c
b=int(b/2)
return x%c
#For asymetric encryption
def encryption(msg,q,h,g):
ct=[]
k=gen_key(q)
s=power(h,k,q)
p=power(g,k,q)
for i in range(0,len(msg)):
ct.append(msg[i])
print("g^k used= ",p)
print("g^ak used= ",s)
for i in range(0,len(ct)):
ct[i]=s*ord(ct[i])
return ct,p
#For decryption
def decryption(ct,p,key,q):
pt=[]
h=power(p,key,q)
for i in range(0,len(ct)):
pt.append(chr(int(ct[i]/h)))
return pt
msg=input("Enter message.")
q=random.randint(pow(10,20),pow(10,50))
g=random.randint(2,q)
key=gen_key(q)
h=power(g,key,q)
print("g used=",g)
print("g^a used=",h)
ct,p=encryption(msg,q,h,g)
print("Original Message=",msg)
print("Encrypted Maessage=",ct)
pt=decryption(ct,p,key,q)
d_msg=''.join(pt)
print("Decryted Message=",d_msg)
Input= CodeSpeedy
Output:
Enter message.CodeSpeedy
g used= 60635310250822910920670085797255424040413892864017
g^a used= 43614735900565768923384780647044097770719380284049
g^k used= 41675490433882378107772354864700362515626473012377
g^ak used= 17548756165231195763385969811276881943441214592545
Original Message= CodeSpeedy
Encrypted Maessage= [1175766663070490116146859977355551090210561377700515, 1947911934340662729735842649051733895721974819772495, 1754875616523119576338596981127688194344121459254500, 1772424372688350772101982950938965076287562673847045, 1456546761714189248361035494335981201305620811181235, 1965460690505893925499228618863010777665416034365040, 1772424372688350772101982950938965076287562673847045, 1772424372688350772101982950938965076287562673847045, 1754875616523119576338596981127688194344121459254500, 2123399495992974687369702347164502715156386965697945]
Decryted Message= CodeSpeedy
Bu alqoritmdə kimsə mesajınızı yalnız a dəyərini biləndə bilə bilər.
Ədəbiyyat siyahısı:
İNFORMASİYA TƏHLÜKƏSİZLİYİ, Dərslik, Bakı, “İQTİSAD UNİVERSİTETİ“ nəşriyyatı, şəkilli, 2016 - 384 səh.
https://az.wikipedia.org
Əliquliyev R.M., İmamverdiyev Y.N. Rəqəm imzası texnologiyası, Bakı, Elm, 2003. – 132 с.
Taher ElGamal (1985). "A Public-Key Cryptosystem and a Signature Scheme Based on Discrete Logarithms"