Hệ mật khóa công khai RSA

Một phần của tài liệu (LUẬN văn THẠC sĩ) bảo mật thông tin (Trang 74 - 78)

CHƯƠNG 1 BẢO MẬT THÔNG TIN

2.6. Hệ mật khóa công khai RSA

Ký hiệu Ee và Dd lần lượt là phép mã hóa với khóa e và phép giải mã với khóa d. Xét cặp (Ee, Dd) thỏa mãn giữa e và d tồn tại một quan hệ, nhưng lại rất khó ñể tìm d từ e. Giả sử A muốn gửi cho B bản tin m. Ban ñầu, B chọn cặp khóa (e, d), rồi gửi e (khóa công khai) cho A, ñồng thời giữ bí mật d (khóa riêng). A mã hóa m bằng khóa e nhận ñược, Ee(m) = c, sau ñó gửi c cho B. B sẽ thực hiện phép giải mã Dd(c) = m ñể thu ñược bản rõ. Hệ mật hoạt ñộng theo nguyên lý như vậy ñược gọi là hệ mật khóa công khai, hay hệ mật bất ñối xứng.

Sinh khóa

Giải mã Dd(c) = m

m c

Kênh truyền công cộng

Kênh truyền công cộng

Mã hóa Ee(m) = c m d e A B

Hình 2.30. Hệ mật khóa công khai

Hệ mật loại này xây dựng trên cơ sở các vấn ñề toán học phức tạp, nên nhìn chung, ñòi hỏi yêu cầu tính toán nhiều hơn so với hệ mật ñối xứng. Do ñó, chúng không sử dụng trong việc mật mã các tài liệu lớn, mà thường ứng dụng trong nhận thực, toàn vẹn dữ liệu, và mật mã các dữ liệu nhỏ như số thẻ tín dụng, số Pin, hay khóa của hệ mật ñối xứng.

Năm 1976, ý tưởng ñầu tiên về hệ mật khóa công khai ñược W. Diffie và M. Hellman trình bày qua bản báo cáo mang tên “New Directions in Cryptography” tại hội nghị thường niên của Hiệp hội xử lý thông tin Hoa Kỳ (American Federation of Information Processing Societies – AFIPS). Phương thức mật mã mới mẻ

W. Diffie và M. Hellman trình bày ñã thu hút sự quan tâm lớn của các học giả. Một năm sau, R.L. Rivest, A. Shamir, L. Adleman công bố hệ mật RSA dựa trên ñộ khó của bài toán phân tích số nguyên thành thừa số nguyên tố.

Giả sử A cần gửi bản tin ñến B một cách bí mật. Đầu tiên, B sinh khóa công khai (n, e) và khóa riêng d tương ứng bằng các bước:

- Chọn ngẫu nhiên 2 số nguyên tố lớn p và q khác nhau - Tính n = pq và φ = (p – 1)(q – 1)

- Chọn ngẫu nhiên số nguyên e thỏa mãn 1 < e < φ và gcd(e, φ) = 1 - Tìm số nguyên d thỏa mãn 1 < d < φ và ed ≡ 1 (mod φ)

(sử dụng thuật toán Euclide mở rộng)

Chú ý rằng, λ = lcm(p – 1, q – 1) có thểñược sử dụng thay cho φ = (p – 1)(q – 1) ñể khóa riêng d nhỏ hơn, giúp giải mã nhanh hơn. Ngoài ra, các thành phần p, q, φ, λ phải ñược hủy ngay khi thực hiện xong quá trình sinh khóa, bởi lẽ chúng sẽ cho phép tính khóa riêng d khi biết e.

Sau khi nhận ñược khóa công khai (n, e), A biểu diễn bản tin bởi số nguyên m thuộc ñoạn [0, n – 1] theo một quy tắc khả nghịch. Bản mã c là kết quả của phép tính c = me mod n sẽñược gửi ñến B. B sử dụng khóa riêng d tính m qua công thức giải mã m = cd mod n ñể suy ra bản tin ban ñầu.

Ví dụ: B chọn 2 số nguyên tố p = 2357, q = 2551, n = pq = 6012707, φ = (p – 1)(q – 1) = 6007800, chọn e = 3674911, và sử dụng thuật toán Euclide mở rộng tìm d = 422191 thỏa mãn ed ≡ 1 (mod φ). Khóa công khai là (n, e) = (6012707, 3674911), khóa riêng là d = 422191. A thực hiện mã hóa bản tin ñược biểu diễn bởi m = 5234673: [5]

c = me mod n

= 52346733674911 mod 6012707 = 3650502

m = cd mod n

= 3650502422191 mod 6012707 = 5234673

Công thức giải mã m = cd mod n ñược chứng minh như sau. Trong thuật toán sinh khóa, ed ≡ 1 (mod φ) nên tồn tại một số nguyên k thỏa mãn ed = 1 + kφ. Nếu gcd(m, p) = 1, theo ñịnh lý Fermat:

mp−1 ≡ 1 (mod p)

Biến ñổi 2 vế, nâng lũy thừa k(q – 1) rồi nhân với m, thu ñược:

m1+ k(p−1)(q−1) ≡ m (mod p)

Nếu gcd(m, p) = p, hay m là bội của p, quan hệ này vẫn ñúng. Vậy trong mọi trường hợp, ta ñều có:

med ≡ m (mod p)

Hoàn toàn tương tự:

med ≡ m (mod q)

Lại có gcd(p, q) = 1, nên suy ra:

med ≡ m (mod n)

m = med mod n (do m ∈ [0, n – 1]) m = cd mod n

Ở ñây, phương thức chuyển ñổi bản tin về số nguyên m và ngược lại phải ñược giữ bí mật và ngẫu nhiên hóa ñể tránh việc thám bằng từñiển. Giá trị m cần thỏa mãn các ñiều kiện:

- m ≠ 0 và m ≠ 1 (vì m = 0 ⇔ c = 0, m = 1 ⇔ c = 1)

- m ñủ lớn (vì nếu m quá nhỏ, me ≤ n, phép module không có tác dụng, và m có thể tìm ra bằng cách khai căn bậc e của c)

Việc thám mã chính là việc giải quyết một trong hai vấn ñề toán học có ñộ khó tương ñương:

- Phân tích số nguyên n ra thừa số nguyên tố (tìm p, q thỏa mãn n = p.q) - Tìm m thỏa mãn me≡ c (mod n)

Vào năm 1999, các máy tính kết nối mạng ñã phân tích ñược số n có ñộ dài 512 bits ra thừa số nguyên tố. Hiện nay một máy tính cá nhân có thể phân tích ñược số n dài 256 bits sau vài giờ, trong tương lai, máy tính lượng tử còn mang ñến tốc ñộ tính toán nhanh hơn nữa. Vì vậy, hệ mật RSA ñược khuyến cáo sử dụng ñộ dài khóa tối thiểu 2048 bits, cặp p, q cần chọn không quá gần nhau và p – 1, q – 1 thì không có thừa số nguyên tố nhỏ, ñể hạn chế khả năng phân tích n.

Bên cạnh các phương pháp phân tích n, tìm d, hay dò m, RSA cũng phải ñối mặt với một vài cách tấn công khác. Ví dụ một cách tấn công mà các hệ mật khóa công khai nói chung phải ñối mặt là tấn công mạo danh. Ở cách tấn công này, C chặn bắt các thông tin A, B gửi cho nhau. C gửi cho A khóa công khai của mình, nhưng A lại tin rằng ñó là khóa công khai của B. Như vậy, bản tin A mã hóa sẽñược C giải mã dễ dàng. Sau ñó, C lại mã hóa với khóa công khai của B, rồi gửi cho B. Cả A, và B ñều không biết sự can thiệp này của C. Để ñối phó với cách tấn công như vậy, hệ mật khóa công khai cần ñến chứng thực số và hạ tầng khóa công khai (Public key Infrastructure – PKI). Ngoài ra, RSA cũng từng bị thám bởi những phương pháp phức tạp dựa trên thông tin về phần cứng, thời gian giải mã ñối với một số bản mã lựa chọn.

Ứng dụng thường gặp của RSA là tạo chữ ký số cho văn bản. Giả sử B muốn gửi A một văn bản có chữ ký của mình. B sẽ tạo một giá trị “hash” của văn bản cần ký và tính giá trị mũ d mod n của nó, giống như khi thực hiện giải mã. Giá trị cuối chính là chữ ký ñiện tử của B trên văn bản ñó. Khi nhận ñược văn bản cùng với chữ ký ñiện tử của B, A tính giá trị mũ e mod n của chữ ký và của giá trị “hash” của văn bản. Kết quả giống nhau sẽ chứng tỏ người tạo chữ ký phải biết khóa bí mật của B, và văn bản không bị thay ñổi sau khi ký.

Một phần của tài liệu (LUẬN văn THẠC sĩ) bảo mật thông tin (Trang 74 - 78)

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

(88 trang)