Thuật toán Pollig – Hellman

Một phần của tài liệu luận văn: nghiên cứu sự an toàn của một số hệ mật mã hiện đại (Trang 27)

Giả sử rằng 1 i k c i i n p  

ở đây các pi là các số nguyên tố khác nhau. Giá trị alog được xác định duy nhất theo modulo n. Trước hết ta nhận thấy, nếu ta có thể tính được mod ci

i

a p với mọi i thỏa mãn 1 i k , thì ta có thể tính a modn bằng cách áp dụng định lý phần dư Trung quốc.

Giả sử q là số nguyên tố thỏa mãn,

n≡0(modqc) và

n≠0(modqc+1). Chúng ta sẽ trình bày cách tính giá trị

x=a mod qc,

ở đây, 0≤x≤qc -1, chúng ta biểu diễn x theo cơ số q theo cách sau:

1 0 c i i i x a q    ,

ở đây 0≤ai≤q-1 với 0≤i≤c-1. Chúng ta có thể biểu diễn a theo cách như sau: a=x+sqc

với s nguyên nào đó. Bởi vậy, chúng ta có thể biểu diễn

1 0 . c i c i i a a q sq    

Bước đầu tiên của thuật toán là tính a0. Để tính a0 ta sử dụng nhận xét sau:

0 / / a n q n q

  (I.3.1)

Dùng hệ thức (I. 3. 1) ta có thể dễ dàng tính được a0 bằng cách như sau : Trước tiên tính

/ 2

, ,...

n q

  

cho đến khi tìm được

/

i n q

   ,

Với i≤q-1 nào đó. Khi điều này xảy ra, chúng ta biết ngay a0=i.

Như vậy, với c=1 ta đã làm xong. Bây giờ ta xét với c>1, chúng ta tiến hành xác định a1, a2, …, ac-1. Quá trình này tương tự như khi xác định a0. Đặt 0= và xác định

1 0 1 1 (a a q ... aj qj ) j        

với 1≤j≤c-1. Chúng ta sử dụng biểu thức nhận được từ việc tổng quát quát hóa hệ thức (I. 3. 1) như sau :

1 /

/ j a n qj

n q j

   (I. 3. 2)

Khi j=0 thì từ (I. 3. 2) trở thành (I. 3. 1).

Khi đã biết j, ta dễ dàng tính aj từ hệ thức (I. 3. 2).

Bằng công thức truy hồi khi biết aj và j ta có thể tính j+1 : 1 j j a q j j     (I. 3. 3) Do đó ta có thể tính a0,1, ,a1 2,...,c1,ac1 bằng cách áp dụng (I.3.1) và (I.3.2).

Sau đây là trình bày dưới dạng giả mã của thuật toán Pohlig – Hellman. Thuật toán Pohlig – Hellman(G, n, , , q, c)

j←0 j← While j≤c-1 1 / / 1 1 j j j n q j in q j a q j j find i suchthat do a i j j                          Reurn (a0, …, ac-1) Ví dụ

Cho số nguyên tố p = 8101, và phần tử sinh của Z8101 là a = 6. Chúng ta cần tìm x thỏa mãn ax = 7531 mod 8101.

Chúng ta dễ dàng phân tích p-1 = 8100 = (22)(34)(52), là các nhân tử nguyên tố nhỏ. Chúng ta sẽ xác định số x2 ≡ x mod (22), x3 ≡ x mod (34) and x5≡ x mod (52).

Xác định x2.

Do x2 là một số tính theo mod 4, nên ta có x2 = c0 + c1 (2), với các hệ số bằng 0 hoặc 1. Chúng ta xác định các hệ số này như sau.

7531(p-1)/2 = 75314050 = -1 và số này = ac0 (p-1)/2, chúng ta có c0 = 1. Bây giờ ta chia 7531 cho ac0 để nhận được

7531(a-1) = 7531(6751) = 8006 mod p.

8006(p-1)/4 = 80062025 = 1 và số này = ac1 (p-1)/2, từ đó c1 = 0. x2 = c0 + c1 (2) = 1 + 0(2) = 1.

Xác định x3

Do x3 tính theo mod 81, ta có x3 = c0 + c1 (3) + c2 (9) + c3 (27), với các hệ số bằng 0, 1 hoặc 2. Chúng có thể tính được a(p-1)/3 = 5883, and a2(p-1)/3 = 2217.

7531(p-1)/3 = 2217, vậy c0 = 2.

Bây giờ ta chia 7531 cho ac0 nhận được 7531(a-2) = 6735 mod p.

6735(p-1)/9 = 1, vậy c1 = 0. Ta chia 6735 cho a3c1 nhận được 6735(a0) = 6735 mod p.

6735(p-1)/27 = 2217, vậy c2 = 2. Chia 6735 cho a9c2 nhận được 6735(a-18) = 6992 mod p.

x3 = 2 + 0(3) + 2(9) + 1(27) = 47.

Xác định x5

Do x5 được tính theo mod 25, x5 = c0 + c1 (5), với các hệ số bằng 0, 1, 2, 3 hoặc 4. Chúng ta cần phải tính a(p-1)/5 = 3547, a2(p-1)/5 = 356, a3(p-1)/5 = 7077, a4(p- 1)/5 = 5221.

7531(p-1)/5 = 5221, vậy c0 = 4. Ta chia 7531 cho ac0 đi đến 7531(a-4) = 7613 mod p.

7613(p-1)/25 = 356, vậy c1 = 2. x5 = 4 + 2(5) = 14.

Xác định x.

Chúng ta sử dụng định lý phần dư Trung quốc để tìm nghiệm của hệ phương trình đồng dư sau, x ≡ 1 mod 4 x ≡ 47 mod 81 x ≡ 14 mod 25. M1 = 8100/(4) = 2025 y1 = M1-1 mod 4, y1 = 1. M2 = 8100/81 = 100 y2 = M2-1 mod 81, y2 = 64. M3 = 8100/25 = 324 y3 = M3-1 mod 25, y3 = 24.

CHƯƠNG 2: NGHIÊN CỨU SỰ AN TOÀN CỦA MỘT SỐ HỆ MẬT MÃ HIỆN ĐẠI Các hệ mật RSA, Elgamal và hệ mật trên đường cong Elliptic hiện đang là ba hệ mật hiện đại được sử dụng rộng rãi trong thực tế. Trên thế giới, đã có nhiều công trình nghiên cứu về sự an toàn của ba hệ mật này. Trong đó phải kể đến các công trình nghiên cứu về thám mã từ đó đưa ra các giải pháp nhằm nâng cao việc bảo mật khi sử dụng các hệ mật trên.

Đối với RSA, sự an toàn của nó phụ thuộc vào độ khó của bài toán phân tích n thành thừa số nguyên tố p, q. Hiện nay có nhiều thuật toán để giải bài toán này. Trong đó chạy nhanh nhất phải kế đến thuật toán sàng trường số của Pollard. Như vậy phải luôn cải tiến song song với việc đánh giá sự an toàn của RSA để đảm bảo an toàn cho việc sử dụng dữ liệu của mình.

Đối với mật mã Elgamal và mật mã trên đường cong Elliptic, tuy còn non trẻ so với RSA nhưng đang ngày càng có nhiều ứng dụng thực tiễn vì kích thước khóa nhỏ hơn rất nhiều so với RSA khi có cùng mức độ an toàn. Sự an toàn của hai hệ mật mã này phụ thuộc vào bài toán logarit rời rạc. Bài toán Logarit rời rạc hiện là đối tượng trong nhiều công trình nghiên cứu và được xem là bài toán khó nếu p được chọn cẩn thận. Hiện nay không có thuật toán thời gian đa thức nào để giải bài toán logarit rời rạcViệc lựa chọn các tham số phù hợp sao cho bài toán logarit rời rạc trở nên khó giải đã đảm bảo an toàn cho các hệ mật mã này.

Ở Việt Nam các hệ mật mã RSA, Elgamal và mật mã trên đường cong Elliptic đã được sử dụng trong nhiều ứng dụng bảo mật trên máy tính. Tuy nhiên chưa có nhiều công trình nghiên cứu được công bố về sự an toàn của ba hệ mật mã này. Do vậy đánh giá sự an toàn của ba hệ mật này là vấn đề cần thiết. Việc nghiên cứu các vấn đề liên quan đến sự an toàn của các hệ mật trên có bài báo: “Sai phạm trong sử dụng mật mã khóa công khai” đăng trên tạp chí an toàn thông tin 4/2012. Trong Bài báo này giới thiệu những số liệu khảo sát liên quan tới các modulus RSA là yếu tố ảnh hưởng nhiều tới tính an toàn của các khóa công khai.

II.1 Mật mã RSA

Một phần của tài liệu luận văn: nghiên cứu sự an toàn của một số hệ mật mã hiện đại (Trang 27)

Tải bản đầy đủ (PDF)

(84 trang)