So sánh độ an toàn giữa hệ mật mã Rabin với RSA

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu, so sánh và đánh giá độ an toàn của hệ mật mã rabin và RSA (Trang 53)

3.2.1. Khái niệm độ an toàn của thuật toán

Nguyên tắc số 1 trong giải mã là: “Thuật toán nào cũng có thể bị phá vỡ!”. Các thuật toán khác nhau cung cấp mức độ an toàn khác nhau, nó phụ thuộc vào độ khó để phá vỡ chúng. Tại một thời điểm, độ an toàn của một thuật toán phụ thuộc vào các yếu tố:

– Nếu chi phí, phí tổn cần thiết để phá vỡ một thuật toán lớn hơn giá trị của thông tin đã mã hóa thì thuật toán đó tạm thời được coi là an toàn.

– Nếu thời gian cần thiết dùng để phá vỡ một thuật toán là quá lâu thì thuật toán đó tạm thời được coi là an toàn.

– Nếu lượng dữ liệu cần thiết để phá vỡ một thuật toán quá lớn so với lượng dữ liệu đã được mã hóa thì thuật toán đó tạm thời được coi là an toàn.

Từ tạm thời ở đây có nghĩa là độ an toàn của thuật toán đó chỉ đúng trong một thời điểm nhất định nào đó, luôn luôn có những khả năng cho phép những

người phá mã tìm ra cách để phá vỡ thuật toán. Điều này chỉ phụ thuộc vào thời gian, công sức, lòng đam mê cũng như tính kiên trì bền bỉ. Như các bạn thấy, càng ngày tốc độ CPU càng cao, máy tính ngày càng mạnh do đó tốc độ tính toán càng nhanh, cho nên không ai dám khẳng định chắc chắn một điều rằng thuật toán mà mình xây dựng nên sẽ an toàn mãi mãi. Trong thế giới Networking luôn luôn tồn tại hai phe đối lập nhau những người chuyên đi tấn công, khai thác hệ thống và những người chuyên phòng thủ, xây dựng các qui trình bảo vệ hệ thống.

Theo [4] (Alfred J.Menezes, Paul C.van Oorschot Scott A.Vanstone: Handbook o Applied Cryptography. CRC press; Boca Raton, New York, London, Tokyo, 1999) thì nói chung độ an toàn của cả hai hệ mật mã trên đều phu thuộc việc phân tích số n thành các nhân tử nguyên tố ([4], pp.116-118). Tuy nhiên, trong thực tế chúng có sự khác nhau.

3.2.2. Hệ mật mã RSA.

Độ an toàn của RSA là giải bài toán được đặt ra như sau:

Cho trước số nguyên dương n, với n = p.q trong đó p, q là 2 số nguyên tố

đủ lớn, khác nhau và e là một số nguyên dương cho trước sao cho:

ƯSCLN (e,ϕ(n) = 1, trong đó ϕ(n) = (p-1)(q-1) và một số nguyên c. Hãy xác định số nguyên m sao cho: mec mod n

Từ các tham số n, e và số nguyên c ∈ {0, 1, 2, … , n-1} sẽ tồn tại duy nhất

1 số m ∈ {0, 1, 2, … , n-1} sao cho: mec mod n.

Bài toán nêu trên được gọi là bài toán RSA. Đã có nhiều nghiên cứu về bài toán này (xem [4]). Sau đây tôi xin trình bày một số phương pháp giải:

Việc đánh giá độ an toàn của bài toán RSA là phân tích nhân tử. Khi phân

tích được modulon, tức là tìm được p và q sao cho n = p.q, thì người ta tìm được

hàm ϕ(n) = (p-1)(q-1). Từ đó có thể dễ dàng tìm được số mũ bí mật d nhờ thuật

toán Euclide mở rộng: e.d ≡ 1 mod ϕ(n)

Mỗi khi số mũ bí mật d bị phát hiện, coi như hệ mật mã RSA bị lộ hoàn toàn.

3.2.2.2. Tấn công vào RSA nhờ số mũ công khai e quá nhỏ

Để giúp việc mã hóa được nhanh chóng, người ta thường chọn số mũ e quá bé, chẳng hạn e = 3.

Gỉa sử thực thể A có thông báo x ∈Zn cần gửi cho các đối tác khác là: A1, A2, A3.

A mã hóa: (1) {

𝐶1 ≡ 𝑥3 𝑚𝑜𝑑 𝑛1 𝐶2 ≡ 𝑥3 𝑚𝑜𝑑 𝑛2 𝐶3 ≡ 𝑥3 𝑚𝑜𝑑 𝑛3

Trong đó, khóa công khai của Ai lần lượt là (e, ni) i = 1, 2, 3. A gửi Ci cho Ai, i = 1, 2, 3.

Lúc đó Hacker có thể nhận được C1, C2, C3 và các cặp khóa công khai (e,

ni) của Ai, i = 1, 2, 3.

Vì x3 < n1 n2 n3 , do đó theo định lý đồng dư Trung Hoa, Hacker sẽ thực hiện:

Bước 1: Chuyển (1) về (2): (2) {

𝑥3 ≡ 𝐶1𝑚𝑜𝑑 𝑛1 𝑥3 ≡ 𝐶2𝑚𝑜𝑑 𝑛2 𝑥3 ≡ 𝐶3𝑚𝑜𝑑 𝑛3

Bước 2: Áp dụng định lý Đồng dư Trung Hoa, người ta xác định được x2. Từ đó, x = 3√𝑥3 . Đó chính là bản rõ.

3.2.2.3. Tấn công vào bức thông điệp bé.

Trong trường hợp này, không gian bản thông báo sẽ bé, do đó Hacker có thể thử và sai để tìm ra bản thông báo một cách nhanh chóng.

3.2.2.4. Tấn công vào số mũ bí mật d nhỏ.

Cũng giống như trường hợp số mũ công khai e bé, trường hợp số d bé, Hacker cũng có thể thử và sai để tìm ra bản thông báo. Do đó, người ta khuyên chọn các số mũ công khai e không quá bé và số bí mật d cũng không quá bé để đảm bảo an toàn cho RSA.

3.2.2.5. Tấn công nhờ tính chất “nhân” của RSA

Cho m1, m2 là hai thông báo rõ và C1, C2 là 2 bản mã RSA tương ứng với m1, m2. Ta thấy rằng: (m1m2)em1e m2eC1.C2 mod n

Từ đó bản mã tương ứng với bản thông báo m = m1.m2 mod nC = C1C2

mod n

Kết quả này chứng tỏ tính đồng cấu (homomorphic) của RSA. Từ đó, kẻ tấn công lợi dụng tính chất này để tấn công vào RSA như sau:

Giả sử kẻ tấn công muốn giải bản mã C = me mod n được gửi đi từ A. Giả

sử rằng A sẽ giải mọi bản mã tùy ý gửi đến cho mình.

Ví dụ bản mã 𝐶̅ = 𝑐𝑥2mod 𝑛 được gửi từ kẻ tấn công đến cho A.

Khi đó bản rõ: 𝑚̅ = (𝐶̅)𝑑 𝑚𝑜𝑑 𝑛 = cd (xe)d mod n = mx mod n

3.2.2.6. Tấn công bởi dùng modulus chung.

Giả sử các thực thể A1 có khóa công khai là (e1, n) và khóa bí mật là (d1, n) và A2 có khóa công khai là (e2, n) và khóa bí mật là (d2, n).

Bây giờ, giả sử thực thể A có thông báo m cần gửi bí mật cho A1 và A2. A

tính:

C1= me1mod n và gửi cho A1

C2= me2 mod n và gửi cho A2

Khi đó Hacker sau khi trộm được C1, C2 cùng với các cặp khóa công khai

sẽ tính:

Input: (n, e1), (n, e2), C1, C2

Output: Bản thông điệp m Bước 1: Tính f1 = e1-1 mod e2

Bước 2: Tính f2 = (f2.e1-1 )/ e2

Bước 2: Tính m1= c1f1 (c2f2)-1 mod n

Khi đó, m1 = m là bản thông điệp cần tìm.

Qua trình bày ở trên, ta thấy các lỗ hổng 2, 3, 4, 6 là những lỗ hổng

do quá trình ứng dụng hệ mật RSA sinh ra; còn lỗ hổng thứ 1 có thể khắc phục

được nếu chọn 2 số p và q khác nhau và đủ lớn.Ta qui định số n phải lớn hơn 10300

và 2 nhân tử nguyên tố không được quá gần nhau và cũng không quá cách xa nhau về độ lớn.

3.2.3.Độ an toàn của hệ mật Rabin

- Một người tấn công bị đô ̣ng cần phục hồi bản rõ m từ bản mã c. Đây chính là giải toán căn bậc 2 ở trên. Vấn đề phân tích ra thừa số n và tính căn bă ̣c 2 theo module n là tương đương về mă ̣t tính toán. Vì vậy giải sử viê ̣c phân tích ra thừa số số n là khó về mă ̣t tính toán thì lược đồ mã hóa công khai Rabin được chứng minh là an toàn đối với mô ̣t người tấn công bị đô ̣ng.

- Trong khi được chứng minh là an toàn đối với mô ̣t người tấn công bị đô ̣ng. Tuy nhiên độ mật của Rabin thì cần được xem xét kỹ hơn. Thật vậy:

Giả sử một thực thể A (chẳng hạn Bộ Ngoại giao hoặc Tổng Công ty nào đó) cần gửi bản thông điệp m cho một nhóm 3 đối tác là B1, B2, B3, và giả sử các đối tác này sử dụng mật mã Rabin với các khóa công khai khác nhau lần lượt là: n1, n2, n3.

Rõ ràng, trong trường hợp này (ni, nj) = 1 với i j. Nếu trái lại, chẳng hạn (n1, n2) = d >1. Khi đó d = p là 1 số nguyên tố chung và vì n1 và n2 đều là tích của 2 số nguyên tố phân biệt, do đó: q=𝑛1

𝑝 =𝑛2

𝑝

Thành thử n1=n2 =p.q

Điều này trái với giả thiết: n1n2. A thực hiện như sau:

Tính Ci= m2 mod ni , i =1, 2, 3.

Bây giờ, giả sử có một đối tượng D nào đó đã chặn bắt được các bản mã C1, C2, C3 và đương nhiên D cũng biết được các tham số công khai n1, n2, n3 của B1, B2, B3.

D sẽ tấn công bảng mã như sau:

Giải hệ phương trình đồng dư tuyến tính sau đây:

(I) {

𝑥 ≡ 𝐶1𝑚𝑜𝑑 𝑛1 𝑥 ≡ 𝐶2𝑚𝑜𝑑 𝑛2 𝑥 ≡ 𝐶3𝑚𝑜𝑑 𝑛3 Vì (ni, nj) = 1; i ≠ j;

Áp dụng định lý đồng dư trung hoa ta nhận được nghiệm duy nhất trong khoảng [0, n] với n = n1.n2.n3.

yi= (n/ni)-1 mod ni (bằng áp dụng thuật toán Euclide mở rộng)

Do 0 ≤ m < ni (i = 1, 2, 3); 0 ≤ x < n và tính duy nhất của nghiệm trong hệ phương trình ( I ) nên x = m2.

Từ đó D có thể khôi phục được bản thông báo m.

- Trong mật mã Rabin việc bổ sung tham số b không làm tăng thêm độ an toàn cho mật mã vì số b được công khao hóa.

Bây giờ ta xét hệ thức: c = m2mod n (1)

Trong đó, m là bản rõ, c là bản mã, n là khóa công khai.

Ta biết rằng n = p.q là tích của 2 số nguyên tố lẻ. Do đó n phải là số nguyên dương lẻ. Vì vậy ƯSCLN (2, n) = 1 và do đó có tồn tại nghịch đảo của 2 theo modulo n mà ta ký hiệu là: d = 2-1 mod n

Sau khi nhận được bản mã c và khóa công khai n, Hacker có thể dễ dàng tính được: d = 2-1 mod n bằng thuật toán Euclide mở rộng. Do đó sẽ tính được:

cd mod n = m mod n = m

- Mặt khác, việc lặp lại một số bít cuối cùng của bản rõ m chỉ để nơi nhận có chủ đích biết được đâu là bản rõ trong số 4 nghiệm tìm được một cách thuận lợi mà không tăng độ an toàn cho mật mã. Hơn nữa, một trong những ưu điểm cơ bản của hệ mật mã khóa công khai là ứng dụng vào việc xác thực thông điệp và ký số. Trong hệ mật Rabin, việc xác thực và ký số gặp nhiều khó khăn hơn so với hệ mật mã RSA.

3.2.4. Kết luận

Ta không nên dùng mật mã khóa công khai Rabin trong bảo mật và xác thực thong tin. Hệ mật RSA chỉ có một lỗ hổng (được nêu ở 3.2.2.5), nhưng người ta đã có cách khắc phục bản mã 𝐶̅ = c.x2mod n là không thể giải được. Như vậy, cho đến nay RSA được cho là an toàn theo chuẩn quốc tế (trong tiêu chuẩn quốc tế X.509 không có mật mã Rabin mà chỉ có mật mã RSA và ELGAMAL).

3.3. Chương trình thực nghiệm 3.3.1. Chuẩn bị dữ liệu thử nghiệm 3.3.1. Chuẩn bị dữ liệu thử nghiệm

Dữ liệu thử nghiệm của chương trình là các tệp văn bản Tiếng Việt được lưu trữ dưới dạng tệp txt và định dạng unicode. Để kiểm tra tốc độ thực hiện của thuật toán, tác giả chuẩn bị 5 bộ dữ liệu mẫu như sau:

 Data1.txt: 1783 kí tự

 Data2.txt: 3568 kí tự

 Data4.txt: 14278 kí tự

 Data5.txt: 28558 kí tự

3.3.2. Thử nghiệm chương trình

Giao diện chương trình chính như sau:

- Vùng 1: đây là vùng nhập các tham số tùy chọn cho thuật toán hoạt động. Tham số thứ nhất là kích thước của giá trị p và q tương ứng với độ lớn kích thước của số hai số nguyên tố do chương trình tự sinh, giá trị nhập vào là số nguyên lớn hơn 0. Tham số thứ hai là đường dẫn của tệp dữ liệu như đã mô tả trong mục 3.4.1. - Vùng 2: hiển thị kết quả thực hiện mã hóa và giải mã theo thuật toán RSA. Các thông tin hiển thị bao gồm giá trị số nguyên tố P, số nguyên tố Q, cặp khóa công khai để mã hóa (n, e), cặp khóa bí mật để giải mã (d, e), nội dung bản mã và thời gian chạy thuật toán tính bằng mili giây.

- Vùng 3: hiển thị kết quả thực hiện mã hóa và giải mã theo thuật toán Rabin. Các thông tin hiển thị bao gồm giá trị số nguyên tố P, số nguyên tố Q, nội dung bản mã và thời gian chạy thuật toán tính bằng mili giây.

Để chạy thử nghiệm thuật toán, tại giao diện chương trình cần nhập giá trị kích thước p,q và chọn đến tệp dữ liệu cần mã hóa. Sau đó nhấn nút “THỰC HIỆN THUẬT TOÁN”, kết quả chương trình sẽ hiển thị ở vùng 2 và 3.

Dưới đây là ví dụ với kích thước p, q là 15 kí tự, kết quả thực hiện thuật toán như sau:

3.3.3. Thử nghiệm hiệu năng

Kịch bản 1: Cố định kích thước p và q bằng 20, thay đổi tệp dữ liệu đầu vào (từ data1.txt đến data5.txt, các tệp dữ liệu sau có kích thước gấp đôi tệp

dữ liệu trước) để theo dõi ảnh hưởng của độ lớn văn bản đầu vào đến tốc độ thực hiện thuật toán. Với mỗi bộ dữ liệu sẽ đo 5 lần và ghi giá trị trung bình, lặp lại với các bộ dữ liệu còn lại. Kết quả thực hiện được ghi lại trong bảng dưới đây:

Bảng 3.1. Bảng thử nghiệm hiệu năng ( kịch bản 1)

STT Bộ dữ liệu Thời gian chạy RSA

(mili giây)

Thời gian chạy Rabin (mili giây) 1 data1.txt 1008.057 105.9998 2 data2.txt 2041.117 210.0003 3 data3.txt 4108.1266 322.9935 4 data4.txt 8704.4984 655.0034 5 data5.txt 16075.9172 1197.0063

Qua kết quả thử nghiệm có thể thấy tốc độ thực hiện của thuật toán Rabin nhanh hơn nhiều so với thuật toán RSA và mức độ tăng của Rabin cũng ít hơn.

Kịch bản 2: Cố định tệp dữ liệu đầu vào (sử dụng tệp data5.txt), thay đổi kích thước p và q để theo dõi ảnh hưởng của kích thước số p, q đến tốc độ thực hiện thuật toán. Với mỗi bộ dữ liệu sẽ đo 5 lần và ghi giá trị trung bình, lặp lại với các thử nghiệm còn lại. Kết quả thực hiện được ghi lại trong bảng dưới đây:

Bảng 3.2. Bảng thử nghiệm hiệu năng ( kịch bản 2)

0 2000 4000 6000 8000 10000 12000 14000 16000 18000 1 2 3 4 5

STT Kích thước P,Q Thời gian chạy RSA (mili giây)

Thời gian chạy Rabin (mili giây)

1 5 179.916 70.365

2 10 229.013 89.268

3 20 1002.065 105.306

4 40 5088.291 356.254

5 80 34567.91 1536.325

Kết quả thử nghiệm chỉ ra rằng tốc độ của thuật toán Rabin bị ảnh hưởng ít hơn nhiều so với thuật toán RSA.

0 5000 10000 15000 20000 25000 30000 35000 40000 1 2 3 4 5

KẾT LUẬN

Trong luận văn này em đã tiến hành nghiên cứu về tổng quan hệ mật mã; lý thuyết số; tìm hiểu, phân tích, nhận xét và so sánh, đánh giá độ an toàn của hệ mật mã Rabin và RSA. Hệ mật mã RSA có độ phức tạp lớn hơn so với hệ mật mã Rabin vì vậy về tốc độ mã hóa thì mật mã Rabin nhanh hơn mật mã RSA nhiều. Nhưng trong việc ứng dụng ký số và xác thực thì hệ mật mã RSA tỏ ra ưu việt hơn hẳn so với hệ mật mã Rabin. Còn về mặt an toàn thì mật mã Rabin có nhiều lỗ

hổng hơn RSA. Ta không nên dùng mật mã khóa công khai Rabin trong bảo mật

và xác thực thông tin. Hệ mật RSA chỉ có một lỗ hổng (được nêu ở 3.2.2.5), nhưng người ta đã có cách khắc phục bản mã 𝐶̅ = c.x2mod n là không thể giải được. Như vậy, cho đến nay RSA được cho là an toàn theo chuẩn quốc tế (trong tiêu chuẩn quốc tế X.509 không có mật mã Rabin mà chỉ có mật mã RSA và ELGAMAL).

Mặc dù có rất nhiều cố gắng trong nghiên cứu thực hiện luận văn, được sự chỉ bảo nhiệt tình của thầy giáo hướng dẫn, Tiến sỹ Hồ Văn Canh, và sự động viên giúp đỡ của bạn bè, đồng nghiệp nhưng luận văn không thể tránh khỏi những thiếu sót do thời gian và kiến thức của người thực hiện còn hạn chế.

Trong quá trình làm luận văn, em đã nhận được sự giúp đỡ của các thầy cô trong trường Đại học Công nghệ thông tin và Truyền thông nói chung cũng như các thầy cô trong Phòng đào tạo sau đại học nói riêng. Em xin chân thành cảm ơn toàn thể các thầy cô giáo trong Bộ phận quản lý Đào tạo sau đại học. Đặc biệt, em xin gửi lời cảm ơn sâu sắc đến thầy TS. Hồ Văn Canh - Giáo viên trực tiếp hướng

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu, so sánh và đánh giá độ an toàn của hệ mật mã rabin và RSA (Trang 53)

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

(67 trang)