1/. Trường hợp 1: Sử dụng modul p nhỏ
Khi sử dụng số nguyên tố p nhỏ, thì tập Z*p nhỏ, do đó việc tìm được phần tử sinh α ∈Z*p cũng không khó khăn lắm. Khi biết được α và biết được giá trị αa từ khóa công khai thám mã sẽ tính được khóa bí mật a.
→ Giải pháp phòng tránh:
Chọn modul p là số nguyên tố sao cho p – 1 có ít nhất một ước số nguyên tố lớn. Điều đó là thực hiện được nếu số nguyên tố p được chọn là số nguyên tố Sophie Germain (tức có dạng 2q+1, với q cũng là số nguyên tố lớn).
2/. Trường hợp 2: Bị lộ số k được dùng
Do cẩu thả trong việc sử dụng số ngẫu nhiên k, đặc biệt là khi để lộ số k được dùng. Thì khóa bí mật a được tính ra ngay theo công thức:
) 1 mod( ) ( 1 1 2 − − = x k − p a y y .
Như vậy, một kẻ thám mã có khả năng tấn công theo kiểu “biết cả bản rõ”, có thể phát hiện ra khóa bí mật a nếu biết k.
Cẩn thận trong việc sử dụng số ngẫu nhiên k, không để lộ số k được dùng.
2.2.2.2. Tấn công dạng 2: Tìm cách xác định bản rõ
Dùng cùng một số k cho nhiều lần lập mã: Giả sử dùng cùng một số ngẫu
nhiên k cho hai lần lập mã, một lần cho x1, một lần cho x2, và được các bản mã tương ứng (y1, y2) và (z1, z2). Vì dùng cùng một số k nên y1 = z1. Và do đó theo công thức lập mã ta có: z2/y2 = x2/x1, tức là x2 = x1.z2/y2. Như vậy, một người thám mã, một lần biết cả bản rõ dễ dàng phát hiện được bản rõ trong các lần sau.
→ Giải pháp phòng tránh:
Mỗi lần lập mã thì sử dụng một số k khác nhau.