Tài liệu tham khảo công nghệ thông tin Các phương pháp tấn công rsa
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
-<> -Bùi Tuấn Anh
CÁC PHƯƠNG PHÁP TẤN CÔNG RSA
KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành : Công Nghệ Thông Tin
HÀ NỘI – 2009
Trang 3ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
-<> -Bùi Tuấn Anh
CÁC PHƯƠNG PHÁP TẤN CÔNG RSA
KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành : Công Nghệ Thông Tin
Cán bộ hướng dẫn: TS Hồ Văn Canh
HÀ NỘI – 2009
Trang 4Đặc biệt, em xin bày tỏ lòng biết ơn sâu sắc đến thầy hướng dẫn TS Hồ Văn Canh, người đã tận tình hướng dẫn, giúp đỡ em trong suốt quá trình thực hiện đề tài.
Xin trân trọng gửi đến gia đình, bạn bè và người thân những tình cảm tốt đẹp nhất đã giúp đỡ động viên em trong suốt quá trình học tập cũng như thực hiện và hoàn thành luận văn.
Hà Nội, ngày 15/05/2009 Sinh viên
Bùi Tuấn Anh
Trang 5TÓM TẮT NỘI DUNG
Hệ mật RSA được phát minh bởi Ron Rivest, Adi Shamir, và Len Adleman, công bố lần đầu vào tháng 8 năm 1977 Hệ mật sử dụng trong lĩnh vực đảm bảo tính riêng tư và cung cấp cơ chế xác thực của dữ liệu số Ngày nay, RSA đã được phát triển ứng dụng rộng rãi trong thương mại điện tử và đặc biệt nó là hạt nhân của hệ thống thanh toán điện tử
Ngay từ khi được công bố lần đầu, hệ RSA đã được phân tích hệ số an toàn bởi nhiều nhà nghiên cứu Mặc dù đã trải qua nhiều năm nghiên cứu và đã có một số cuộc tấn công ấn tượng nhưng không mang lại kết quả là phá huỷ Đa phần họ mới chỉ ra được những mối nguy hiểm tiềm ẩn của RSA mà khi sử dụng RSA người dùng cần cải thiện
Thực tế vấn đề thám mã đối với hệ mật RSA hiện tại đang được các nhà nghiên cứu tập trung khai thác các sơ hở của RSA như: tấn công vào số mũ công khai hoặc số
mũ bí mật thấp, tấn công vào các tham số nguyên tố p, q bé hoặc cách xa nhau lớn, hoặc tập trung vào việc phân tích nhân tử số n(modul của RSA)
Luận văn của em sẽ trình bày các phương pháp tấn công RSA trong vòng 20 năm trở lại đây và lựa chọn môt phương pháp tấn công phổ biến để demo
Mục lục
Trang 6MỞ ĐẦU 1
Chương 1 - CÁC KHÁI NIỆM CƠ BẢN 2
1.1 Một số khái niệm toán học 2
1.1.1 Số nguyên tố và nguyên tố cùng nhau 2
1.1.2 Đồng dư thức 2
1.1.3 Không gian Zn và Zn* 3
1.1.4 Phần tử nghịch đảo 3
1.1.5 Khái niệm nhóm, nhóm con, nhóm Cyclic 4
1.1.6 Hàm Ф Euler 4
1.1.7 Các phép toán cơ bản trong không gian modulo 5
1.1.8 Độ phức tạp tính toán 5
1.1.9 Hàm một phía và hàm một phía có cửa sập 6
1.2 Vấn đề mã hóa 7
1.2.2 Hệ mã hóa 7
1.2.3 Những tính năng của hệ mã hóa 8
Chương 2 - TỔNG QUAN VỀ MÃ HOÁ CÔNG KHAI VÀ MÃ THÁM 8
2.1 Mã hoá khoá công khai 8
2.1.1 Đặc điểm của Hệ mã khoá công khai 9
2.1.2 Nơi sử dụng Hệ mã hóa khoá công khai 9
2.2 Các bài toán liên quan đến hệ mã hoá khoá công khai 10
2.2.1 Bài toán phân tích số nguyên thành thừa số nguyên tố 11
2.2.2 Bài toán RSA (Rivest-Shamir-Adleman) 11
2.2.3 Bài toán thặng dư bậc hai 11
2.2.4 Bài toán tìm căn bậc hai mod n 12
2.2.5 Bài toán lôgarit rời rạc 12
2.2.6 Bài toán lôgarit rời rạc suy rộng 13
2.2.7 Bài toán Diffie-Hellman 13
2.2.8 Bài toán giải mã đối với mã tuyến tính 14
2.3 Vấn đề thám mã 16
Trang 7Chương 3 - TỔNG KẾT NHỮNG KẾT QUẢ TẤN CÔNG VÀO HỆ MẬT RSA
TRONG NHỮNG NĂM QUA 18
3.1 Một số giả thiết ngầm định 18
3.2 Phân tích các số nguyên lớn 19
3.3 Các tấn công cơ bản 20
3.3.1 Modul chung 20
3.3.2 Mù (Blinding) 21
3.4 Số mũ riêng bé (Low Private Exponnent) 21
3.4.1 Độ lớn e 22
3.4.2 Sử dụng CRT 22
3.5 Số mũ công khai bé (Low public Exponent) 23
3.5.1 Hastad's Broadcast Attack 23
3.5.2 Franklin-Reiter Related Message Attack 24
3.6 Thành phần công khai bé 24
3.6.1 Coppersmith's Short Pad Attack 25
3.6.2 Tấn công bằng khóa riêng 25
3.7 Cài đặt các tấn công 26
3.7.1 Tấn công dựa trên thời gian 27
3.7.2 Tấn công dựa trên các lỗi ngẫu nhiên 28
3.8 Một số tấn công bằng nhân tử hóa số N với số N lớn 29
3.8.1 Tìm nhân tử lớn nhất thứ nhất 29
3.8 2 Phân tích thứ hai 30
3.8.3 Phân tích thứ ba 31
3.8.4 Thuật toán Pollard (p-1) 32
3.9 Kết luận 33
Chương 4 - THƯ VIỆN TÍNH TOÁN SỐ LỚN 34
4.1 Biểu diễn số lớn 34
4.2 Các phép toán trong số lớn 35
4.2.1 So sánh hai số 35
4.2.2 Cộng hai số lớn dương 36
Trang 84.2.3 Trừ hai số lớn dương 37
4.2.4 Phép nhân hai số lớn 37
4.2.5 Phép chia hai số lớn dương 39
4.2.6 Lũy thừa 41
4.2.7 Ước chung lớn nhất 41
4.2.8 Phép nhân theo module p 42
4.2.9 Tìm phần từ nghịch đảo theo module p 42
4.2.10 Phép cộng có dấu 43
4.2.11 Phép trừ có dấu 44
4.3.12 Phép nhân có dấu 44
Chương 5 - PHƯƠNG PHÁP TẤN CÔNG BẰNG 45
NHÂN TỬ HOÁ SỐ N SỬ DỤNG ĐỊNH LÝ FERMAT 45
5.1 Bổ đề 1 45
5.2 Định lý Fermat 46
KẾT LUẬN 48
Trang 9MỞ ĐẦU
Hệ mật mã khoá công khai RSA được sử dụng phổ biến trong lĩnh vực đảm bảo tính riêng tư và cung cấp cơ chế xác thực của dữ liệu số Ngày nay RSA được phát triển và ứng dụng rộng rãi trong thương mại điện tử, được sử dụng trong việc tạo khoá và xác thực của mail, trong truy cập từ xa, và đặc biệt nó là hạt nhân của hệ thống thanh toán điện tử RSA được ứng dụng rộng rãi trong các lĩnh vực nơi mà an ninh an toàn thông tin được đòi hỏi
Chính vì lý do được sử dụng rộng rãi trong thương mại điện tử cũng như có độ an toàn cao mà đã có rất nhiều sự nhòm ngó cũng như các cuộc tấn công nhằm phá vỡ sự an toàn của hệ mật RSA Ngay từ khi được công bố lần đầu, hệ RSA đã được phân tích hệ số
an toàn bởi nhiều nhà nghiên cứu Mặc dù trải qua nhiều năm nghiên cứu và đã có một số cuộc tấn công ấn tượng nhưng không mang lại kết quả là phá huỷ Đa phần họ mới chỉ ra được những mối nguy hiểm tiềm ẩn của RSA
Để phục vụ cho việc phân tích các tính chật của hệ mật RSA, em đã trình bày các khái niệm cơ bản liên quan đến toán học, mật mã và thám mã , trình bày tổng quan về hệ mã hoá khoá công khai, các bài toán liên quan đến hệ mã hoá khoá công khai
Trên cơ sở hiểu các khái niệm cơ bản, các cơ sở toán học, để có cái nhìn tổng quan
về vấn đề thám mã đối với hệ mật RSA trong những năm qua, em đã tổng kết lại các phương pháp tấn công vào hệ mật RSA và kết quả thu được trong những năm qua Trong chương này em đã trình bày chi tiết các thuật toán tấn công vào hệ mật RSA như: các tấn công cơ bản - modul chung, mù, tấn công vào số mũ công khai hoặc số mũ bí mật thấp, tấn công dựa trên thời gian hay dựa vào các lỗi ngẫu nhiên Ngoài ra, em cũng trình bày các thuật toán tấn công RSA bằng nhân tử hoá số N với số N lớn như thuật toán Pollard, tuy nhiên các thuật toán được giới thiệu ở đây mới chỉ giải quyết cho modul N của RSA có
độ dài hạn chế, còn mudul N có độ dài lớn thì cho đến nay chưa có phương pháp khả thi nào được công bố
Trang 10Chương 1 - CÁC KHÁI NIỆM CƠ BẢN 1.1 Một số khái niệm toán học
1.1.1 Số nguyên tố và nguyên tố cùng nhau
Số nguyên tố là số nguyên dương chỉ chia hết cho 1 và chính nó
Ví dụ: 2, 3, 5, 7, 11, 17, …
Hệ mật mã thường sử dụng các số nguyên tố ít nhất là lớn hơn 10150
Hai số m và n được gọi là nguyên tố cùng nhau, nếu ước số chung lớn nhất của chúng bằng
- Tính đối xứng: Nếu a ≡ b mod n thì b ≡ a mod n
- Tính giao hoán: Nếu a ≡ b mod n và b ≡ c mod n thì a ≡ c mod n
- Nếu a ≡ a 1 mod n, b ≡ b 1 mod n
thì a + b ≡ (a 1 +b 1 ) mod n và ab ≡ a 1 b 1 mod n
Lớp tương đương:
Lớp tương đương của số nguyên a là tập hợp các số nguyên đồng dư với a theo modulo n
Trang 11Cho n cố định đồng dư với n trong không gian Z vào các lớp tương đương Nếu a = qn + r, trong đó 0 ≤ r ≤ n thì a ≡ r mod n Vì vậy mỗi số nguyên a là đồng dư theo modulo n
với duy nhất một số nguyên trong khoảng từ 0 đến n-1 và được gọi là thặng dư nhỏ nhất
của a theo modulo n Cũng vì vậy, a và r cùng thuộc một lớp tương đương Do đó r có thể đơn giản được sử dụng để thể hiện lớp tương đương
1.1.3 Không gian Z n và Z n *
Không gian Zn (các số nguyên theo modulo n)
Không gian các số nguyên theo modulo n: Zn là tập hợp các số nguyên không âm nhỏ hơn
Cho a ∈ Zn Nghịch đảo của a theo modulo n là số nguyên x ∈ Zn sao cho ax ≡ 1(mod n)
Nếu x tồn tại thì đó là giá trị duy nhất, và a được gọi là khả nghịch
Nghịch đảo của a ký hiệu là a-1
Tính chất:
• Cho a, b ∈ Zn Phép chia a cho b theo modulo n là tích của a và b theo modulo n,
và chỉ được xác định khi b có nghịch đảo theo modulo n
• Cho a ∈ Zn, a là khả nghịch khi và chỉ khi gcd (a, n) = 1
Trang 12• Giả sử d = gcd (a, n) Phương trình đồng dư ax = b mod n có nghiệm x nếu và chỉ nếu d chia hết cho b, trong trường hợp các nghiệm d nằm trong khoảng 0 đến
n – 1 thì các nghiệm đồng dư theo modulo n/d
Nhóm Cyclic: Là nhóm mà mọi phần tử x của nó được sinh ra từ một phần tử đặc biệt g
∈ G Phần tử này được gọi là phần tử nguyên thủy, tức là:
Với ∀ x ∈ G: ∃ n ∈ N mà gn = x
Ví dụ: (Z+, *) là một nhóm cyclic có phần tử sinh là 1
1.1.6 Hàm Ф Euler
Định nghĩa: Cho n ≥ 1 Ф (n) được định nghĩa là các số nguyên trong khoảng từ [1, n]
nguyên tố cùng nhau với n Hàm Ф được gọi là hàm phi Euler
p − 2
11
p … − p n
11
Trang 131.1.7 Các phép toán cơ bản trong không gian modulo
Cho n là số nguyên dương Như trước, các phần tử trong Zn được thể hiện bởi các số nguyên {0, 1, 2,…, n - 1} Nhận xét rằng: nếu a, b ∈ Zn thì:
−+
<
++
n b a if n b a
n b a if b a
Vì vậy, phép cộng modulo (và phép trừ modulo) có thể được thực hiện mà không cần thực hiện các phép chia dài
Phép nhân modulo của a và b được thực hiện bằng phép nhân thông thường a với b như các
số nguyên bình thường, sau đó lấy phần dư của kết quả sau khi chia cho n
Phép tính nghịch đảo trong Zn có thể được thực hiện nhờ sử dụng thuật toán Euclidean mở rộng như mô tả sau:
Nếu b=0 thì đặt d: =a; x: =1; y: =0; return (d; x; y) ;
Lý thuyết thuật toán và các hàm tính được ra đời từ những năm 30 của thế kỉ 20 đã
đặt nền móng cho việc nghiên cứu các vấn đề “tính được”, “giải được” trong toán học
Tuy nhiên từ cái “tính được” đến việc tính toán thực tế là một khoảng cách rất lớn Có rất nhiều vấn đề được chứng minh là có thể “tính được” nhưng không tính được trong thực tế cho dù có sự hỗ trợ của máy tính Vào những năm 1960, lý thuyết độ phức tạp tính toán được hình thành và phát triển một cách nhanh chóng, cung cấp nhiều hiểu biết sâu sắc về bản chất phức tạp của các thuật toán và các bài toán, từ những bài toán thuần túy lý thuyết đến những bài toán thường gặp trong thực tế
Độ phức tạp tính toán (về không gian hay thời gian) của một tiến trình tính toán là
số ô nhớ được dùng hay số các phép toán sơ cấp được thực hiện trong tiến trình tính toán
Trang 14đó Dữ liệu đầu vào đối với một thuật toán thường được biểu diễn qua các từ trong một bảng ký tự nào đó Độ dài của một từ là số ký tự trong từ đó
Cho một thuật toán A trên bảng ký tự Z (tức là có các đầu vào là các từ trong Z) Độ phức tạp tính toán của thuật toán A được hiểu như một hàm số fa(n) sao cho với mỗi số n thì fa(n) là số ô nhớ, hay số phép toán sơ cấp tối đa mà A cần để thực hiện tiến trình tính toán của mình trên các dữ liệu vào có độ dài nhỏ hơn hoặc bằng n Ta nói: thuật toán A có
độ phức tạp thời gian đa thức, nếu có một đa thức P(n) sao cho với mọi n đủ lớn ta có:
fa(n) ≤ p(n), trong đó fa(n) là độ phức tạp tính toán theo thời gian của A
Bài toán P được gọi là “giải được” nếu tồn tại thuật toán để giải nó, tức là thuật toán làm việc có kết thúc trên mọi dữ liệu đầu vào của bài toán Bài toán P được gọi là
“giải được trong thời gian đa thức” nếu có thuật toán giải nó với độ phức tạp thời gian đa thức
1.1.9 Hàm một phía và hàm một phía có cửa sập
Hàm một phía:
Một hàm một phía là hàm mà dễ dàng tính toán ra quan hệ một chiều nhưng rất khó
để tính ngược lại Ví như : Biết giả thiết x thì có thể dễ dàng tính ra f(x), nhưng nếu biết f(x) thì rất khó tính ra được x Trong trường hợp này “khó” có nghĩa là để tính ra được kết quả thì phải mất rất nhiều thời gian để tính toán
Ví dụ:
y = f (x) = xb mod n tính xuôi thì dễ nhưng tính ngược x = ya mod n thì khó vì phải biết a với a * b ≡ 1 (mod (Ф (n)) trong đó Ф(n) = (p-1)(q-1) Nhưng nếu biết cửa sập p, q thì việc
tính n = p * q và tính a trở nên dễ dàng
Trang 15Hộp thư là một ví dụ khác về hàm một phía có cửa sập Bất kỳ ai cũng có thể bỏ thư vào thùng Bỏ thư vào thùng là một hành động công cộng Mở thùng thư không phải là hành động công cộng Nó là khó khăn, bạn sẽ cần đến mỏ hàn để phá hoặc những công cụ khác Tuy nhiên, nếu bạn có “cửa sập” (trong trường hợp này là chìa khóa của hòm thư) thì công việc mở hòm thư thật dễ dàng.
1.2 Vấn đề mã hóa
1.2.1 Giới thiệu về mã hóa
Chúng ta biết rằng thông tin truyền đi trên mạng rất dễ bị trộm cắp Để đảm bảo việc truyền tin an toàn, người ta thường mã hóa thông tin trước khi truyền đi Việc mã hóa cần theo quy tắc nhất định gọi là hệ mật mã Hiện nay có hai loại mật mã: hệ mật mã khóa bí mật và hệ mật mã khóa công khai Hệ mật mã khóa bí mật (còn gọi là hệ mật mã đối xứng hay hệ mật mã cổ điển) dễ hiểu, dễ thực thi nhưng độ an toàn không cao Vì giới hạn tính toán chỉ thực hiện trong phạm vi bảng chữ cái sử dụng văn bản cần mã hóa (ví dụ Z26 nếu dùng các chữ cái tiếng anh, Z256 nếu dùng chữ cái ASCII…) Với các hệ mã khóa bí mật, nếu biết khóa lập mã hay thuật toán lập mã, người ta có thể tìm thấy ngay được bản rõ Ngược lại, các hệ mật mã khóa công khai (còn gọi là hệ mật mã phi đối xứng) cho biết khóa lập mã K và hàm lập mã ek, thì cũng rất khó tìm được cách giải mã Và việc thám mã
Trang 16Với mỗi k ∈ K, có một hàm lập mã ek ∈ E, ek : P C , và một hàm giải mã
dk ∈D, dk : C P sao cho: dx(ek(x)) = x, ∀x∈P
1.2.3 Những tính năng của hệ mã hóa
- Cung cấp một mức cao về tính toán bảo mật, toàn vẹn, chống chối bỏ và xác thực
- Tính bảo mật: Bảo đảm bí mật cho các thông báo và dữ liệu bằng việc che giấu
thông tin nhờ các kỹ thuật mã hóa
- Tính toàn vẹn: Bảo đảm với các bên rằng bản tin không bị thay đổi trên đường
truyền tin
- Chống chối bỏ: Có thể xác nhận rằng tài liệu đã đến từ ai đó, ngay cả khi họ cố
gắng từ chối nó
- Tính xác thực: Cung cấp hai dịch vụ:
o Nhận dạng nguồn gốc của một thông báo, đảm bảo rằng nó là đúng sự thực
o Kiểm tra định danh của người đang đăng nhập hệ thống, tiếp tục kiểm tra đặc điểm của họ trong trường hợp ai đó cố gắng kết nối và giả danh là người sử dụng hợp
pháp
Chương 2 - TỔNG QUAN VỀ MÃ HOÁ CÔNG KHAI VÀ MÃ THÁM
2.1 Mã hoá khoá công khai
Hệ mã hóa khóa bất đối xứng( hệ mã hoá khoá công khai) là Hệ mã hóa có khóa lập
mã và khóa giải mã khác nhau (ke ≠kd), biết được khóa này cũng “khó” tính được khóa kia
Trang 17Hệ mã hóa này còn được gọi là Hệ mã hoá khóa công khai, vì:
Khoá lập mã cho công khai, gọi là khoá công khai (Public key)
Khóa giải mã giữ bí mật, còn gọi là khóa riêng (Private key) hay khóa bí mật.
Một người bất kỳ có thể dùng khoá công khai để mã hoá bản tin, nhưng chỉ người nào có đúng khoá giải mã thì mới có khả năng đọc được bản rõ
Hệ mã hóa khoá công khai hay Hệ mã hó bất đối xứng do Diffie và Hellman phát
minh vào những năm 1970
2.1.1 Đặc điểm của Hệ mã khoá công khai
Ưu điểm:
1) Hệ mã hóa khóa công khai có ưu điểm chủ yếu sau:
Thuật toán được viết một lần, công khai cho nhiều lần dùng, cho nhiều người dùng,
họ chỉ cần giữ bí mật khóa riêng của mình
2) Khi biết các tham số ban đầu của hệ mã hóa, việc tính ra cặp khoá công khai và
bí mật phải là “dễ”, tức là trong thời gian đa thức
Người gửi có bản rõ P và khoá công khai, thì “dễ” tạo ra bản mã C
Người nhận có bản mã C và khoá bí mật, thì “dễ” giải được thành bản rõ P
3) Người mã hoá dùng khóa công khai, người giải mã giữ khóa bí mật Khả năng
lộ khóa bí mật khó hơn vì chỉ có một người giữ gìn
Nếu thám mã biết khoá công khai, cố gắng tìm khoá bí mật, thì chúng phải đương đầu với bài toán “khó”
4) Nếu thám mã biết khoá công khai và bản mã C, thì việc tìm ra bản rõ P cũng
là bài toán “khó”, số phép thử là vô cùng lớn, không khả thi
Hạn chế:
Hệ mã hóa khóa công khai: mã hóa và giải mã chậm hơn hệ mã hóa khóa đối xứng.
2.1.2 Nơi sử dụng Hệ mã hóa khoá công khai
Hệ mã hóa khóa công khai thường được sử dụng chủ yếu trên các mạng công khai như Internet, khi mà việc trao chuyển khoá bí mật tương đối khó khăn
Trang 18Đặc trưng nổi bật của hệ mã hoá công khai là khoá công khai (public key) và bản
mã (ciphertext) đều có thể gửi đi trên một kênh truyền tin không an toàn.
Có biết cả khóa công khai và bản mã, thì thám mã cũng không dễ khám phá được bản rõ
Nhưng vì có tốc độ mã hóa và giải mã chậm, nên hệ mã hóa khóa công khai chỉ
dùng để mã hóa những bản tin ngắn, ví dụ như mã hóa khóa bí mật gửi đi
Hệ mã hóa khóa công khai thường được sử dụng cho cặp người dùng thỏa thuận khóa bí mật của Hệ mã hóa khóa riêng
2.2 Các bài toán liên quan đến hệ mã hoá khoá công khai
Sự ra đời của khái niệm hệ mã bất đối xứng là một tiến bộ có tính chất bước ngoặt trong lịch sử mật mã nói chung, gắn liền với sự phát triển của khoa học tính toán hiện đại Mã hóa bất đối xứng là một dạng mật mã hóa cho phép người sử dụng trao đổi các thông tin mật mà không cần phải trao đổi các khóa chung bí mật trước đó Điều này được thực hiện bằng cách sử dụng một cặp khóa có quan hệ toán học với nhau là khóa công khai và khóa
cá nhân (hay khóa bí mật) Trong mã bất đối xứng, khóa cá nhân phải được giữ bí mật trong khi khóa công khai được phổ biến công khai Trong 2 khóa, một dùng để mã hóa và khóa còn lại dùng để giải mã Điều quan trọng đối với hệ thống là không thể tìm ra khóa bí mật nếu chỉ biết khóa công khai Hệ thống mã bất đối xứng có thể sử dụng với các mục đích như:
• Mã hóa: giữ bí mật thông tin và chỉ có người có khóa bí mật mới giải mã được
• Tạo chữ ký số: cho phép kiểm tra một văn bản có phải đã được tạo với một khóa bí mật nào đó hay không
• Thỏa thuận khóa: cho phép thiết lập khóa dùng để trao đổi thông tin mật giữa 2 bên.Các kỹ thuật mã bất đối xứng đòi hỏi khối lượng tính toán nhiều hơn các kỹ thuật mã hóa khóa đối xứng nhưng những lợi điểm mà chúng mang lại khiến cho chúng được áp dụng
trong nhiều ứng dụng Các hệ mã bất đối xứng dựa trên tính chất của các bài toán cơ bản
như:
Trang 192.2.1 Bài toán phân tích số nguyên thành thừa số nguyên tố
Cho số nguyên dương n , tìm tất cả các ước số nguyên tố của nó, hay là tìm dạng phân tích chính tắc của n = 1 2
2.2.2 Bài toán RSA (Rivest-Shamir-Adleman)
Cho số nguyên dương n là tích của hai số nguyên tố lẻ khác nhau, một số nguyên dương e sao cho gcd(e,φ (n)) =1, và một số nguyên c ; tìm một số nguyên m sao cho
(mod )
e
m ≡c n
Điều kiện gcd(e,φ (n)) =1 bảo đảm cho việc với mỗi số nguyên c ∈ {0,1, ,n -1}
có đúng một số m ∈{0,1, ,n -1} sao cho m e≡ c(mod )n
Dễ thấy rằng nếu biết hai thừa số nguyên tố của n, tức là biết n =p.q thì sẽ biết φ
(n) = (p -1)(q -1), và từ đó, do gcd(e,φ (n)) =1 sẽ tìm được d =e -1modφ (n), và do đó sẽ tìm được m =c d modn Như vậy, bài toán RSA có thể qui dẫn trong thời gian đa thức về bài toán phân tích số nguyên
2.2.3 Bài toán thặng dư bậc hai
Cho một số nguyên lẻ n là hợp số, và một số nguyên a ∈Jn , tập tất cả các số a có
ký hiệu Jacobi Hãy quyết định xem a có là thặng dư bậc hai theo modn hay không?
Trong lý thuyết mật mã, bài toán này cũng thường được xét với trường hợp n là số nguyên Blum, tức n là tích của hai số nguyên tố p và q , n =p.q Ta chú ý rằng trong trường hợp này, nếu a ∈Jn , thì a là thặng dư bậc hai theo modn, điều này có thể thử được dễ
dàng vì nó tương đương với điều kiện a (p -1)/2≡ 1 (modp) Như vậy, trong trường hợp này, bài toán thặng dư bậc hai có thể qui dẫn trong thời gian đa thức về bài toán phân tích số
nguyên Mặt khác, nếu không biết cách phân tích n thành thừa số nguyên tố thì cho đến
nay, không có cách nào giải được bài toán thặng dư bậc hai trong thời gian đa thức Điều
Trang 20đó củng cố thêm niềm tin rằng bài toán thặng dư bậc hai và bài toán phân tích số nguyên là
có độ khó tương đương nhau
2.2.4 Bài toán tìm căn bậc hai mod n
Cho một số nguyên lẻ n là hợp số Blum, và một số a ∈Qn , tức a là một thặng dư
bậc hai theo modn Hãy tìm một căn bậc hai của a theo modn, tức tìm x sao cho x 2≡ a
(modn)
Nếu biết phân tích n thành thừa số nguyên tố, n =p.q , thì bằng cách giải các phương trình x 2≡ a theo các modp và modq, rồi sau đó kết hợp các nghiệm của chúng lại theo định lý số dư Trung quốc ta sẽ được nghiệm theo modn , tức là căn bậc hai của a theo modn cần tìm Vì mỗi phương trình x 2≡ a theo modp và modq có hai nghiệm (tương ứng theo modp và modq ), nên kết hợp lại ta được bốn nghiệm, tức bốn căn bậc hai của a theo modn Người ta đã tìm được một số thuật toán tương đối đơn giản (trong thời gian đa thức) giải phương trình x 2≡ a (modp) với p là số nguyên tố Như vậy, bài toán tìm căn bậc hai
modn có thể qui dẫn trong thời gian đa thức về bài toán phân tích số nguyên Ngược lại, nếu có thuật toán Α giải bài toán tìm căn bậc hai modn thì cũng có thể xây dựng một thuật
toán giải bài toán phân tích số nguyên như sau: Chọn ngẫu nhiên một số x với gcd(x,n) =1,
và tính a =x2modn Dùng thuật toán Α cho a để tìm một căn bậc hai modn của a Gọi căn bậc hai tìm được đó là y Nếu y ≡±x (modn), thì phép thử coi như thất bại, và ta phải chọn
tiếp một số x khác còn nếu y !≡±x (modn), thì gcd(x-y, n) chắc chắn là một ước số không
tầm thường của n, cụ thể là p hay là q Vì n có 4 căn bậc hai modn nên xác suất của thành
công ở mỗi lần thử là 1/2, và do đó số trung bình (kỳ vọng toán học) các phép thử để thu
được một thừa số p hayq của n là 2, từ đó ta thu được một thuật toán giải bài toán phân tích
số nguyên (Blum) với thời gian trung bình đa thức Tóm lại, theo một nghĩa không chặt chẽ lắm, ta có thể xem hai bài toán phân tích số nguyên và tìm căn bậc hai modn là khó tương đương nhau
2.2.5 Bài toán lôgarit rời rạc
Cho số nguyên tố p, một phần tử nguyên thuỷ α theo modp (hay α là phần tử
nguyên thuỷ của Z∗p), và một phần tử β∈Z∗p Tìm số nguyên x (0≤ x ≤ p - 2) sao cho α x ≡
β (modp)
Trang 21Ta đã biết rằng trong trường hợp chung, cho đến nay chưa có một thuật toán nào giải bài toán này trong thời gian đa thức Bài toán này cũng được suy rộng cho các nhóm cyclic hữu hạn như sau:
2.2.6 Bài toán lôgarit rời rạc suy rộng
Cho một nhóm cyclic hữu hạn G cấp n, một phần tử sinh (nguyên thuỷ) α của G,
và một phần tử β∈G Tìm số nguyên x (0≤ x ≤ n - 1) sao cho α x = β
Các nhóm được quan tâm nhiều nhất trong lý thuyết mật mã là: nhóm nhân của
trường hữu hạn GF (p) - đẳng cấu với nhóm Z p∗
của trường Zp ,nhóm nhân F2∗m của trường
hữu hạn GF (2 m), nhóm nhân:
n
Z∗ = a ≤ ≤ −a n a n =
của trường Zn với n là hợp số, nhóm gồm các điểm trên một đường cong elliptic xác định
trên một trường hữu hạn, v.v
2.2.7 Bài toán Diffie-Hellman
Cho số nguyên tố p, một phần tử nguyên thuỷ α theo modp (tức phần tử sinh của Z p∗
), và các phần tử αamodp và αbmodp
Hãy tìm giá trị αabmodp
Có thể chứng minh được rằng bài toán Diffie-Hellman qui dẫn được về bài toán lôgarit rời rạc trong thời gian đa thức Thực vậy, giả sử có thuật toán Α giải bài toán lôgarit rời rạc
Khi đó, cho một bộ dữ liệu vào của bài toán Diffie-Hellman gồm p, α ,αamodp và
Người ta cũng chứng minh được hai bài toán lôgarit rời rạc và Diffie-Hellman là tương
đương về mặt tính toán trong một số trường hợp, ví dụ p -1 là B-mịn với B = O ((lnp) c ),c
là hằng số
Tương tự như với bài toán lôgarit rời rạc, ta cũng có thể định nghĩa các bài toán Hellman suy rộng cho các nhóm cyclic hữu hạn khác
Trang 22Diffie-2.2.8 Bài toán giải mã đối với mã tuyến tính
Mã tuyến tính là một lớp mã truyền tin có tính chất tự sửa sai được sử dụng trong
kỹ thuật truyền tin số hoá Ta phát biểu bài toán giải mã đối với mã tuyến tính như sau:
Cho một ma trận cấp n xm A=(aij) gồm các thành phần là 0 hoặc 1, một vectơ y
=(y1,y2, ,ym) các giá trị 0 và 1, và một số nguyên dương K Hỏi: có hay không một vectơ x
=(x1,x2, ,xn) gồm các số 0 hoặc 1 và có không nhiều hơn K số 1 sao cho với mọi j (1≤ j ≤
Tilborg năm 1978 đã chứng minh nó thuộc lớp các bài toán Np đầy đủ !
Dựa trên các bài toán số học nêu trên, nhiều hệ mã bất đối xứng đã ra đời, trong khuôn khổ luận văn này chúng ta đi sâu nghiên cứu hệ mật RSA Hệ mật RSA được phát minh bởi Ron Rivest, Adi Shamir, và Len Adleman [18], được đưa ra công khai lần đầu tiên vào tháng 8 năm 1977 trên tạp chí khoa học Mỹ Hệ mật thường sử dụng cho việc cung cấp sự riêng tư và bảo đảm tính xác thực của dữ liệu số Sơ đồ chung của hệ mã khoá công khai được cho bởi :
S = (P , C , K , E , D )
trong đó P là tập ký tự bản rõ, C là tập ký tự bản mã, K là tập các khoá K , mỗi khoá K gồm có hai phần K =(K’,K''), K' là khoá công khai dành cho việc lập mật mã, còn K'' là khoá bí mật dành cho việc giải mã Với mỗi ký tự bản rõ x∈P , thuật toán lập mã E cho ta
ký tự mã tương ứng y =E (K', x) ∈ C , và với ký tự mã y thuật toán giải mã D sẽ cho ta lại
ký tự bản rõ x : D (K'', y) = D (K'', E (K', x)) =x.
Để xây dựng một hệ mã khoá công khai RSA, ta chọn trước một số nguyên n =p.q
là tích của hai số nguyên tố lớn, chọn một số e sao cho gcd(e, φ (n)) =1, và tính số d sao
cho
e.d ≡ 1(modφ (n)).
Trang 23Mỗi cặp K =(K’,K''), với K' =(n,e) và K'' = d sẽ là một cặp khoá của một hệ mật mã RSA
cụ thể cho một người tham gia
Như vậy, sơ đồ chung của hệ mật mã RSA được định nghĩa bởi danh sách (1), trong đó:
P = C = Zn , trong đó n là một số nguyên Blum, tức là tích của hai số
nguyên tố;
K = {K =(K’,K''): K' =(n,e) và K'' = d, gcd(e, φ (n)) =1,
e.d ≡ 1(modφ (n))};
E và D được xác định bởi:
E (K', x) = xe modn, với mọi x ∈P ,
D (K'', y) = yd modn, với mọi y ∈C
Để chứng tỏ định nghĩa trên là hợp thức, ta phải chứng minh rằng với mọi cặp khoá K =(K' ,K'' ), và mọi x ∈P , ta đều có
(mod ),(mod );
+ +
≡
≡
từ đó suy ra x t nφ( ) 1 + ≡x(mod ),n tức D (K'', E (K', x)) =x.
Tính bảo mật của RSA có độ khó tương đương với bài toán phân tích số
nguyên (Blum) thành thừa số nguyên tố Do đó, giữ tuyệt mật khoá bí mật d, hay giữ tuyệt mật các thừa số p,q , là có ý nghĩa rất quyết định đến việc bảo vệ tính an toàn của hệ mật
mã RSA
Trang 242.3 Vấn đề thám mã
Mục tiêu của thám mã (phá mã) là tìm những điểm yếu hoặc không an toàn trong phương thức mật mã hóa Thám mã có thể được thực hiện bởi những kẻ tấn công ác ý, nhằm làm hỏng hệ thống; hoặc bởi những người thiết kế ra hệ thống (hoặc những người khác) với ý định đánh giá độ an toàn của hệ thống Có rất nhiều loại hình tấn công thám
mã, và chúng có thể được phân loại theo nhiều cách khác nhau Một trong những đặc điểm liên quan là những người tấn công có thể biết và làm những gì để hiểu được thông tin bí mật Ví dụ, những người thám mã chỉ truy cập được bản mã hay không? hay anh ta có biết hay đoán được một phần nào đó của bản rõ? hoặc thậm chí: Anh ta có chọn lựa các bản rõ ngẫu nhiên để mật mã hóa? Các kịch bản này tương ứng với tấn công bản mã, tấn công biết bản rõ và tấn công chọn lựa bản rõ
Trong khi công việc thám mã thuần túy sử dụng các điểm yếu trong các thuật toán
mật mã hóa, những cuộc tấn công khác lại dựa trên sự thi hành, được biết đến như là các
tấn công side-channel Nếu người thám mã biết lượng thời gian mà thuật toán cần để mã
hóa một lượng bản rõ nào đó, anh ta có thể sử dụng phương thức tấn công thời gian để phá mật mã Người tấn công cũng có thể nghiên cứu các mẫu và độ dài của thông điệp để rút ra
các thông tin hữu ích cho việc phá mã; điều này được biết đến như là thám mã lưu thông
Nếu như hệ thống mã sử dụng khóa xuất phát từ mật khẩu, chúng có nguy cơ bị
tấn công kiểu duyệt toàn bộ (brute force), vì kích thước không đủ lớn cũng như thiếu tính
ngẫu nhiên của các mật khẩu Thám mã tuyến tính và Thám mã vi phân là các phương pháp chung cho mã hóa khóa đối xứng Khi mã hóa dựa vào các vấn đề toán học như độ khó NP, giống như trong trường hợp của thuật toán khóa bất đối xứng, các thuật toán như phân tích ra thừa số nguyên tố trở thành công cụ tiềm năng cho thám mã Ở luận văn này,
ta tập trung nghiên cứu vấn đề thám mã với RSA Từ khi được công bố lần đầu, hệ RSA đã được phân tích hệ số an toàn bởi nhiều nhà nghiên cứu Mặc dầu với nhiều năm nghiên cứu và đã có một số cuộc tấn công ấn tượng nhưng không mang lai kết quả (phá hủy) Chúng ta chỉ ra những mối nguy hiểm của người sử dụng RSA cần cải thiện Mục đích của chúng ta là nghiên cứu, cài đặt tấn công và mô tả các công cụ toán học mà chúng ta sử dụng
Quá trình nghiên cứu của chúng ta tuân theo chuẩn ngầm định và sử dụng Alice và Bob để biểu thị cho hai phía muốn truyền thông lẫn nhau Chúng ta coi Marvin là kẻ gian
Trang 25muốn tấn công nghe lén hay lấy trộm trộm thông tin giữa Alice và Bob Ta bắt đầu mô tả một phiên bản được đơn giản hóa của hệ mật RSA: Giả sử N=pq là tích của hai số nguyên
tố lớn cùng kích thước (mỗi số n/2 bít) Số N với kích thức 1024 bit, nghĩa là 309 số thập
phân Mỗi một nhân tử là 512 bit Giả sử e, d là hai số nguyên thỏa mãn ed = 1 mod ϕ(N)
với điều kiện ϕ(N) = (p − 1)(q − 1) là cấp của nhóm nhân trên Z*
N Chúng ta gọi N là modul RSA, e là số mũ mã hóa và d là số mũ giải mã Cặp (N,e) là khóa công khai Cặp (N,d) được gọi là khóa bí mật hay còn gọi là khóa riêng và chỉ có người nhận mới được biết Khóa bí mật dùng để giải mã bản mã
Một thông điệp (message) là một số nguyên M ∈ Z*
N Để mã hóa M, một phép tính C=Me mod N Để giải mã bản mã, cần tính Cd mod N Tức là:
Cd = Med = M (mod N)
Ở đây phương trình cuối cùng được chỉ ra bởi định lý Euler Người ta xác định (hay định nghĩa) hàm RSA là một ánh xạ f: x xe mod N Nếu d cho trước, hàm đó có thể dễ dàng nghịch đảo được bằng cách dùng phương trình trên Chúng ta coi d như là một cửa sập (trapdoor) để nghịch đảo hàm f Bản chất của việc tấn công là nghiên cứu độ khó của hàm ngược (nghịch đảo) RSA khi không cho trước của sập d Nói chính xác hơn, cho trước bộ 3 (N,e,C), chúng ta muốn biết được độ khó của việc tìm căn bậc e của C theo mod
N (N = p.q) như thế nào khi chưa biết nhân tử của N Vì ZN* là một tập hợp hữu hạn nên người ta có thể liệt kê (đếm) được tất cả các phần tử của Z*
N cho đến khi tìm được đúng số nguyên (bức thông điệp) M cần tìm Rất tiếc là thời gian thực hiện của thuật toán để tìm được đúng số M có cấp N, nghĩa là kích cỡ đầu vào có cấp số mũ thì thời gian chạy có cấp log2N Chúng ta quan tâm đến thuật toán có thời gian bé hơn, tính bậc của nc điều kiện n=log2N và c là một hằng số nhỏ (bé hơn 5), thực tế thuật toán tốt hay không phụ thuộc vào kích thước đầu vào Trong luận văn này chúng ta quan tâm đến thuật toán được coi là có hiệu quả Chúng ta tập trung chủ yếu vào nghiên cứu hàm ngược của RSA để tấn công vào RSA Việc khó khăn của tính hàm ngược RSA chính là từ đầu vào ngẫu nhiên, được cho bởi (N,e,C), một kẻ tấn công không thể tìm ra bản rõ M Nếu cho trước (N,e,C), rất khó để tìm ra thông tin về M Điều này được biết trong lý thuyết an ninh an toàn Chúng ta chỉ ra rằng RSA được mô tả ở trên là không an toàn: nếu cho (N,e,C), chúng ta có thể dẽ dàng suy diễn ra một vài thông tin của bản rõ M (ví dụ, ký tự Jacobi của M trên N được dễ dàng suy ra từ C) RSA có thể được an toàn ngữ nghĩa bằng việc thêm các bít ngẫu nhiên vào
Trang 26quá trình xử lý mã hóa Hàm RSA x q xe mod N là một ví dụ về hàm của sập một chiều (trapdoor one-way function) Nó có thể được tính toán dẽ dàng, nhưng như chúng ta đã biết không thể tính ngược hiệu quả nếu không có (cửa sập) d ngoại trừ một vài trường hợp đặc biệt.
Chương 3 - TỔNG KẾT NHỮNG KẾT QUẢ TẤN CÔNG VÀO HỆ MẬT RSA
TRONG NHỮNG NĂM QUA 3.1 Một số giả thiết ngầm định
1) N – RSA modulus 2) e – số mũ mã hóa (encryption exponent) 3) d – số mũ giải mã (decryption exponent)
Trang 274) M – Thông điệp số nguyên (message integer), M ∈ Z*
7) Chúng ta nghiên cứu độ khó của hàm ngược (nghịch đảo) RSA khi không cho trước của sập d và nghiên cứu phương pháp tấn công RSA trong trường hợp này
8) Chúng ta quan tấm đến thuật toán hữu hiệu có thời gian bé, tính bậc của nc
điều kiện n=log2N và c là một hằng số nhỏ (bé hơn 5)
9) Về mặt lý thuyết, nếu cho trước (N,e,C), rất khó để tìm ra thông tin về M.10) Tấn công vét cạn (brute-force attack) bằng cách phân tích các modulus, thời gian chạy với số nguyên n-bít là exp((c + o(1))n1/3log2/3n) trong đó c < 2
3.2 Phân tích các số nguyên lớn
Vấn đề phân tích một số nguyên tố lớn thành tích các số nguyên tố khác nhau là bài toán rất hấp dẫn và đã được nhiều nhà toán học quan tâm nghiên cứu; chẳng hạn [1], [2], [3] tuy nhiên trong phạm vi của một luận văn cao học, em chỉ tập trung nghiên cứu trong trường hợp N là tích của hai số nguyên tố phân biệt sau đây là một số mệnh đề quan trọng phục vụ việc tấn công cơ bản:
Trang 28Chứng minh:
Thật vậy, rõ ràng N không phải là số nguyên tố vì nếu N là số nguyên tố thì ϕ(N)
= N-1, trái với giả thiết Do giả thiết N không phải là bình phương của một số nguyên tố Như vậy nếu N không phải là tích của 2 số nguyên tố phân biệt thì nó phải là tích của nhiều hơn 2 số nguyên tố (không cần phân biệt) Giả sử p là số nguyên tố nhỏ nhất của tích; Khi
N, người ta có thể khôi phục được d một cách có hiệu quả
Từ các mệnh đề ở trên người ta đã đưa ra một số tấn công vào RSA sau đây:
3.3 Các tấn công cơ bản
3.3.1 Modul chung
Để tránh việc phân tích modul N = pq khác nhau cho các người dùng khác nhau, chúng ta lấy N chung cho tất cả Cùng một N được sử dung cho tất cả người sử dụng Trung tâm xác thực có thể cung cấp cho người sử dụng i với một cặp ei, di và người sử dụng i có một khóa công khai là (N,ei) và khóa riêng là (N,di)
Ban đầu chúng ta có: một bản mã C = Mea mod N cung cấp cho Alice không được
mã hóa bởi Bob, vì Bob không có da Tuy nhiên điều này là nhầm lẫn và kết quả là hệ thống không an toàn Bằng mệnh đề 1 (ở trên) Bob có thể sử dụng các thành phần eb và db
của mình để nhân tử hóa N N bị nhân tử hóa bởi Bob có thể lấy được khóa riêng da của Alice từ khóa công khai ea của cô ấy Với cách tiếp cận này, theo Simmons chỉ ra rằng một modul RSA không nên sử dụng quá một thực thể
Trang 293.3.2 Mù (Blinding)
Marvin chọn ngẫu nhiên một số r ∈ Z*
N và đặt M’ = re M mod N Sau đó anh ta nhờ Bob ký lên M’ Bob có thể cung cấp chứ ký của mình là S’ lên M’ Nhưng từ cách tính S’= (M’)d mod N, Marvin có thể đơn giản tính S = S’/r mod N để có được chữ ký của Bob là S trên M
Se = (S’)e/re = (M’)ed/re = M’/re = M/(mod N)
3.4 Số mũ riêng bé (Low Private Exponnent)
Trong thực tế, để giải mã nhanh đòi hỏi số d nhỏ và điều này để lộ lỗ hổng mà kẻ tấn công
có thể thực hiện như sau Trước hết ta nghiên cứu định lý Wiener
Định lý 1 (M Wiener): Cho N = pq với q < p< 2q Giả sử d < 1/3N 1/4 Cho trước (N,e) với ed = 1 mod ϕ(N), Marvin có thể tìm được d hiệu quả.
Việc chứng minh định lý trên dựa trên xấp xỉ hóa phân số liên tục như sau:
Khi ed = 1 mod ϕ(N), tồn tại một số k thỏa mãn ed - kϕ(N) = 1
Vì thế:
)(
1)
k N
k N
e − = − ϕ( )− + ϕ( )
=
N d
k Nd
N k Nd
N N
k( ( )) 3 31
=
≤
−