Trong DH không xác thực, kẻ đứng giữa (MITM) có thể thay giá trị công khai trao đổi. Alice có bí mật a, Bob có bí mật b. Do có thể bị can thiệp, giá trị Bob NHẬN được (A') và giá trị Alice NHẬN được (B') là dữ liệu vào.
shared_alice = B'^a mod pshared_bob = A'^b mod pNếu hai khóa bằng nhau → không bị can thiệp: in SECURE và khóa chung. Nếu khác nhau → in MITM_DETECTED và hai khóa (cách nhau bởi dấu cách).
Ví dụ: nếu A'=g^a và B'=g^b (không đổi) thì hai khóa bằng nhau → SECURE.
6 dòng: p, g, a, b, A' (Bob nhận), B' (Alice nhận).
2 < p < 10^9, 1 < g < p, 1 ≤ a,b < p, 0 ≤ A',B' < p.
Dòng 1: SECURE hoặc MITM_DETECTED. Dòng 2: khóa chung (nếu SECURE) hoặc hai khóa cách nhau bởi dấu cách (nếu MITM).
Ví dụ:
Đầu vào:
23
5
6
15
8
19
Đầu ra:
SECURE
2
Giải thích:
Đang tải editor...