ĐẠ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
ĐẠ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
LỜI CÁM ƠN
Để thực hiện hoàn thành luận văn “ Các phương pháp tấn công RSA” em đã
nhận được sự hướng dẫn và giúp đỡ nhiệt tình của nhiều tập thể và cá nhân
Trước hết, em xin bày tỏ lòng biết ơn chân thành đến ban lãnh đạo cùng quý
thầy cô trong khoa Công nghệ thông tin - Trường Đại học Công nghệ, Đại học quốc
gia Hà Nội đã tận tình dạy dỗ, truyền đạt kiến thức, kinh nghiệm quý báu và tạo điều
kiện thuận lợi cho em trong suốt thời gian học tập và thực hiện đề tài.
Đặ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
TÓ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
MỞ ĐẦ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.1 Giới thiệu về 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 MÃ THÁM.................9
2.1 Mã hoá khoá công khai.............................................................................9
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..........................................10
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...................................................................13
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
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.............................................................................. 19
3.1 Một số giả thiết ngầm định.......................................................................19
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
Modul chung..................................................................................... 20
Mù (Blinding).................................................................................. 21
3.4 Số mũ riêng bé (Low Private Exponnent)..............................................21
Độ lớn e............................................................................................ 22
Sử dụng CRT................................................................................... 22
3.5 Số mũ công khai bé (Low public Exponent)..........................................23
Hastad's Broadcast Attack............................................................... 23
Franklin-Reiter Related Message Attack.......................................... 24
3.6 Thành phần công khai bé.........................................................................24
Coppersmith's Short Pad Attack...................................................... 25
Tấn công bằng khóa riêng............................................................... 25
3.7 Cài đặt các tấn công................................................................................. 26
Tấn công dựa trên thời gian............................................................. 27
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
Tìm nhân tử lớn nhất thứ nhất
N................................................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
4.2.3 Trừ hai số lớn dương........................................................................36
4.2.4 Phép nhân hai số lớn........................................................................37
4.2.5 Phép chia hai số lớn dương..............................................................38
4.2.6 Lũy thừa...........................................................................................40
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.............................................................................................45
KẾT LUẬN.............................................................................................................48
MỞ ĐẦ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ố.
1
Chươ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, …
150
Hệ mật mã thường sử dụng các số nguyên tố ít nhất là lớn hơn 10 .
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 Ký hiệu: gcd (m, n) = 1.
Ví dụ: 9 và 14 là hai số nguyên tố cùng nhau.
Đồng dư thức
1.1.2
Cho a và b là các số nguyên n là số nguyên dương. Khi đó a được gọi là đồng dư với b
theo modulo n, ký hiệu là a b (mod n), nếu a, b chia cho n có cùng số dư. n được gọi là
modulo của đồng dư.
Kí hiệu: a b (mod n)
Ví dụ: 5 7 mod 2 vì: 5 mod 2 = 1 và 7 mod 2 = 1
Tính chất của đồng dư:
Cho a, a1, b, b1, c Z. Ta có các tính chất sau:
-
a b mod n nếu và chỉ nếu a và b có cùng số dư khi chia cho n
-
Tính phản xạ: a a mod n
-
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 a1 mod n, b b1 mod n
thì a + b (a1+b1) mod n và ab a1 b1 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.
Cho 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 Zn và Zn
*
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
n.
Tức
là:
Zn
=
{0,
1,
2,
…
n-1}.
Tất cả các phép toán trong Zn đều được thực hiện theo modulo n.
Ví dụ: Z11 = {0, 1, 2, 3, …, 10}
Trong Z11: 6 + 7 = 2, bởi vì 6 + 7 = 13 2 (mod 11).
*
Không gian Zn
Là tập hợp các số nguyên p Zn, nguyên tố cùng n.
Tức là: Z
*
n
= { p Zn | gcd (n, p) = 1}, Ф(n) là số phần tử của Z
Nếu n là một số nguyên tố thì: Z
Ví dụ: Z2 = {0, 1} thì Z
1.1.4
*
n
*
n
= { p Zn | 1 p n – 1}
*
2
= {1} vì gcd (1, 2) = 1.
Phần tử nghịch đảo
Định nghĩa:
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.
-1
Nghịch đảo của a ký hiệu là a .
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.
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.
-1
Ví dụ: 4 = 7 (mod 9) vì 4.7 1 (mod 9)
1.1.5
Khái niệm nhóm, nhóm con, nhóm Cyclic
Nhóm là bộ các phần tử (G, *) thỏa mãn các tính chất sau:
Tính chất kết hợp: ( x * y ) * z = x * s ( y * z )
Tính chất tồn tại phần tử trung gian e G: e * x = x * e = x , x G
Tính chất tồn tại phần tử nghịch đảo x’ G: x’ * x = x * x’ = e
Nhóm con là bộ các phần tử (S, *) là nhóm thỏa mãn các tính chất sau:
S G, phần tử trung gian e S
x, y S €x * y S
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à:
n
Với x G: n N mà g = 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.
Tính chất:
-
Nếu p là số nguyên tố thì Ф (n) = p - 1.
-
Hàm phi Euler là hàm có tính nhân:
-
Nếu (m, n) = 1 thì Ф (m*n) = Ф (m) Ф (n).
-
Nếu n = p1 p2 …pk là thừa số nguyên tố của n thì :
e1
e2
ek
1 1 1
Ф(n) = n 1 1 … 1
p
p
1
2
pn
1.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ì:
(a + b) mod n = a
if
a b n
a b n if
a b n
b
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) ;
Đặt x2 :=1; x1 :=0 ; y2 : =0 ; y1 : =1 ;
Khi b>0 thực hiện:
q: = [a/b]; r = a-qb; x: = x2-px1; y: = y2 - py1 ;
a : =b; r: =b; x1:=x2; x1:=x; y2:=y1; y1:=y ;
d:=a ; x:=x2 ; y:=y2 ; return(d, x, y) ;
1.1.8
Độ phức tạp tính toán
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
đó. 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ụ:
x
Tính y = f(x) = α mod p là dễ nhưng tính ngược lại x = logα y là bài toán “khó”
(bài toán logarit rời rạc)
Hàm một phía có cửa sập:
F(x) được gọi là hàm một phía có cửa sập nếu tính xuôi y = f (x) thì dễ nhưng tính
ngược x = f - 1(y) thì khó tuy nhiên nếu có “cửa sập” thì vấn đề tính ngược trở nên dễ
dàng. Cửa sập ở đây là một điều kiện nào đó giúp chúng ta dễ dàng tính ngược.
Ví dụ:
b
a
y = f (x) = x mod n tính xuôi thì dễ nhưng tính ngược x = y 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.
Hộ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ã là rất khó khăn do độ phức tạp tính toán lớn.
1.2.2 Hệ mã hóa
Hệ mã hóa là hệ bao gồm 5 thành phần (P, C, K, E, D) thỏa mã các tính chất sau:
P (Plaitext): là tập hợp hữu hạn các bản rõ có thể:
C (Ciphertext): là một tập hữu hạn các bản mã có thể.
K (Key): là một tập hữu hạn các khóa có thể.
E (Encrytion): là tập các hàm lập mã.
D (Decrytion): là tập các hàm giải mã.
Chúng ta đã biết một thông báo thường được xem là bản rõ. Người gửi sẽ có nhiệm vụ
mã hóa bản rõ đó, kết quả thu được gọi là bản mã. Và bản mã này sẽ được gửi đi trên
đường truyền tới người nhận. Người nhận giải mã bản mã để tìm hiểu nội dung của bản
rõ.
Vớ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.
Hệ 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
minh vào những năm 1970.
phát
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.
và
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
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.
Đặ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ư:
2.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
1
2
1
2
k
phân tích chính tắc của n = p . p ... p , trong đó pi là các số nguyên tố từng cặp
khác
nhau và các i 1.
k
Bài toán này có liên hệ mật thiết với các bài toán thử tính nguyên tố hay thử tính
hợp số của một số nguyên, nhưng với những gì mà ta biết đến nay, nó dường như khó
hơn nhiều so với hai bài toán thử tính nguyên tố và tính hợp số.
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
e
m c (mod 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 -1sao cho me 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
-1
(n) = (p -1)(q -1), và từ đó, do gcd(e, (n)) =1 sẽ tìm được d =e mod (n), và do đó sẽ
d
tìm được m =c 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 đó 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ư
2
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 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
2
phương trình x 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
2
theo modn cần tìm. Vì mỗi phương trình x 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
2
thời gian đa thức) giải phương trình x 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
2
một số x với gcd(x,n) =1, và tính a =x modn. 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ử
x
nguyên thuỷ của Z p ), và một phần tử Z p .Tìm số nguyên x (0x p - 2) sao cho
(modp).
Ta đã 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,
x
và một phần tử G. Tìm số nguyên x (0x n - 1) sao cho = .
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 F của
2
m
m
trường hữu hạn GF (2 ), nhóm nhân:
Zn a :0 a n 1, gcd(a, n) 1
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ử a mod
p
và b mod p .
Hãy tìm giá trị ab mod p .
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, ,a mod p và
b mod p ; trước hết dùng thuật toán cho (p, , a mod p ) ta tìm được a , và sau đó tính
được :
ab mod p (b )a mod p.
- Xem thêm -