Протокол Диффи-Хеллмана почему у меня Ева подбирает ключ (Python3)? Привет! решил разобраться с Протоколом Диффи-Хеллмана и попутно накидал его на Пайтоне.
Только вот загвоздка, почему у меня в качестве шпиёна Евы получается подобрать ключ ну например Алисы?g = 3
p = 7334832323
a = 15
b = 30
# функция для получения AB
def crypt_dh(g,p,ab):
result = g**ab % p
return result
A = crypt_dh(g,p,a)
B = crypt_dh(g,p,b)
# секретные ключиАлисы и Боба
k_Alice = B**a % p
k_Bob = A**b % p
print('Alice Key: ', k_Alice)
print('Bob Key: ', k_Bob)
# Ева знает g,p,A,B
def encrypt(g,p,AB,k_Name):
encryption = 'Fail'
for key in range(1000):
result = AB**key % p
if result == k_Name:
encryption = A**key % p
return encryption
# Результат шпиона
k_Eva = encrypt(g,p,A,k_Alice)
print('Eva Key: ', k_Eva)
Результат:
Alice Key: 5283143412
Bob Key: 5283143412
Eva Key 5283143412

21 Авг 2019 в 07:10
194 +1
0
Ответы
1

Проблема состоит в том, что функция encrypt, которую вы написали, подбирает ключ, используя перебор значений от 0 до 999.

Если мы посмотрим на логику вашей функции encrypt, вы верно проверяете, что AB возводится в степень key по модулю p равно ключу k_Name, и затем используете это значение для вычисления ключа A по степени key по модулю p.

Однако, когда вы позволяете key перебирать значения от 0 до 999, это дает возможность Еве найти точно такой же ключ, как у Алисы или Боба, что и видно в вашем случае.

Чтобы сделать протокол безопасным от таких атак, стоит использовать большие значения для параметров p и g, а также выбирать абсолютно случайные значения для секретных ключей a и b.

Также цикл в вашей функции encrypt можно модифицировать, чтобы сканировать весь возможный диапазон значений, а не только от 0 до 999.

В целом, Протокол Диффи-Хеллмана является открытым ключевым алгоритмом и может быть уязвим к атакам, если не выполнять соответствующие меры безопасности.

20 Апр 2024 в 13:06
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир