Diffie-Hellman alqoritmində məlumatların şifrələnməsi necə həyata keçirilir?
sobes.tech Süni İntellekt
AI-dan cavab
Diffie-Hellman kimi şifrələmə öz-özlüyündə birbaşa funksiya deyil. Onun əsas məqsədi açıq kanalda kriptografik açarların təhlükəsiz mübadiləsidir. Daha sonra, bu ümumi sirli açar məlumatların simmetrik şifrələnməsi üçün istifadə oluna bilər.
Açar mübadiləsi prosesi aşağıdakı kimidir:
- Ümumi açıq parametrlərin seçimi: İki tərəf (Alisa və Bob) böyük bir sadə ədəd
pvə baza ədədig(silindrik qrupun generatoru) barədə razılaşır.gpmodulunda primitiv kök olmalıdır. - Sirli ədədlərin yaradılması: Hər tərəf özünün sirli təsadüfi ədədini yaradır. Alisa
a, Bob isəbseçir.avəbsirr saxlanılır. - Ümumi açarların hesablanması:
- Alisa
A = g^a mod phesablayır. - Bob
B = g^b mod phesablayır. AvəBaçıq açarlardır və təhlükəsiz şəkildə açıq kanalda göndərilə bilər.
- Alisa
- Ümumi sirli açarın hesablanması:
- Alisa
B-ni alır vəS = B^a mod phesablayır. - Bob
A-ni alır vəS = A^b mod phesablayır.
- Alisa
Riyazi olaraq, (g^b mod p)^a mod p = g^(b*a) mod p və (g^a mod p)^b mod p = g^(a*b) mod p. a*b = b*a olduğundan, hər iki tərəf eyni S dəyərini hesablayır və bu, onların ümumi sirli açarı olur.
# Python nümunəsi
import random
# 1. Ümumi açıq parametrlərin seçimi (praktikada çox böyük ədədlər istifadə olunur)
p = 23
g = 5
print(f"Ümumi parametrlər: p = {p}, g = {g}")
# 2. Sirli ədədlərin yaradılması
a = random.randint(2, p - 2) # Alisa üçün sirli ədəd
b = random.randint(2, p - 2) # Bob üçün sirli ədəd
print(f"Alisa'nın sirli ədədi: {a}")
print(f"Bob'un sirli ədədi: {b}")
# 3. Açarların hesablanması
A = pow(g, a, p) # Alisa'nın açıq açarı: g^a mod p
B = pow(g, b, p) # Bob'un açıq açarı: g^b mod p
print(f"Alisa'nın açıq açarı: {A}")
print(f"Bob'un açıq açarı: {B}")
# 4. Ümumi sirli açarın hesablanması
# Alisa B-ni alır və hesablayır: B^a mod p
shared_key_alice = pow(B, a, p)
# Bob A-ni alır və hesablayır: A^b mod p
shared_key_bob = pow(A, b, p)
print(f"Ümumi sirli açar (Alisa): {shared_key_alice}")
print(f"Ümumi sirli açar (Bob): {shared_key_bob}")
# Yoxlama: açarlar uyğun olmalıdır
print(f"Açarlar uyğun gəlirmi? {shared_key_alice == shared_key_bob}")
Uğurlu açar mübadiləsindən sonra, hər iki tərəf əldə edilən S dəyərini, daha sonra AES, DES kimi simmetrik şifrələmə alqoritmləri üçün açar kimi istifadə edə bilər, bu da mesajların şifrələnməsi və deşifrələnməsi üçün istifadə oluna bilər. Diffie-Hellman məlumatların şifrələnməsini həyata keçirmir. Bu, sonrakı simmetrik şifrələmə üçün təhlükəsiz açar mübadiləsini həll edir.