Thực Tập Chuyên Đề: Hệ Bảo Mật RSA
………… ……………… 2
1.1 Khái niệm mật mã…………………… ………………… ……2
1.2 Hệ thống mã hóa……………………………………… …… 3
1.3 Khái niệm mã hóa dữ liệu…………………………… … … 3
1.4 Hệ thống mã hóa qui ước…………………………… … ….…4
1.5 Hệ thống mã hóa khóa công cộng……………………… … 4
1.6 Kết hợp mã hóa qui ước và mã hóa khóa công cộng… …… 5
1.7 Hệ bảo mật khóa công khai và hệ bảo mật RSA………… … 5
………………………… …… 8
2.1 Mô tả sơ lược RSA……………………………………… ……8
2.2 Thuật toán RSA………………………………………… …….8
2.2.1 Sinh khóa………… ……… …………………… …….8
2.2.2 Mã hóa………………… … …………………… …….10
2.2.3 Giải mã …………………………… …………… ……12
2.2.4 Chuyển đổi văn bản rõ…………… … …… …… 14
2.2.5 Tạo chữ kí điện tử………………… ………… ………16
……………… …………… 17
3.1 Phương pháp RSA………………………………… ………… 17
3.2 Một số phương pháp tấn công bảo mật RSA……… ………… 18
3.2.1 Phương pháp sử dụng
φ
…………………… ……… 18
GVHD:Nguyễn Thị Loan SV:Nguyễn Hữu Thành
Thực Tập Chuyên Đề: Hệ Bảo Mật RSA
3.2.2 Bẻ khóa dựa trên tấn công lặp lại…………… ………….19
3.3 Sự che giấu thông tin trong hệ thống RSA……… …… 19
3.4 An ninh…………………………………………… ………… 21
… ………….23
4.1 Quá trình tạo khóa……………………………… ………………23
1.1 Khái niệm Mật mã
Mật mã học là ngành khoa học ứng dụng toán học vào việc biến đổi
thông tin thành một dạng khác với mục đích che dấu nội dung, ý nghĩa thông
tin cần mã hóa. Đây là một ngành quan trọng và có nhiều ứng dụng trong đời
sống xã hội
Ngày nay, các ứng dụng mã hóa và bảo mật thông tin đang được sử dụng
ngày càng phổ biến hơn trong các lĩnh vực khác nhau trên thế giới, từ các lĩnh
vực an ninh , quân sự, quốc phòng,…,cho đến lĩnh vực dân sự như thương
mại điện tự , ngân hàng…
Cùng với sự phát triển của khoa học máy tính và Internet, các nghiên cứu
và ứng dụng của khoa học kĩ thuật mã hóa ngày càng trở nên đa dạng hơn, mở
ra nhiều hướng nghiên cứu chuyên sâu vào từng lĩnh vực ứng dụng đặc thù
với những đặc trưng riêng . Ứng dụng của khoa khoa học mật mã khổng chỉ là
đơn thuần là mã hóa và giải mã thông tin mà còn bao gồm nhiều vấn đề khác
nhau cần được nghiên cứu và giải quyết: chứng thực nguồn gốc nội dung
thông tin (kĩ thuật chữ kí điễn tử) chứng nhận tính xác thực về người sở hữu
mã khóa( chứng nhận khóa công cộng), các quy trình giúp trao dổi thông tin
và thực hiện giao dịch điện tử an toàn trên mạng … Những kết quả nghiên
cứu về mật mã cũng đã được đưa vào trong các hệ thống phức tạp hơn, kết
hợp với các kĩ thuật khác để đáp ứng nhu cầu đa dạng của các hệ thống ứng
dụng khác nhau trong thực tế, ví dụ như hệ thống bỏ phiếu bầu cử qua mạng,
hệ thống đào tạo từ xa, hệ thống quản lí an ninh của các đơn vị với hướng tiếp
cận sinh trắc học , hệ thống cung câp dịch vụ multimedia trên mạng với nhu
cầu cung cấp dịch vụ và bảo vệ bản quyền sở hữu trí tuệ đối với thông tin
số…
GVHD:Nguyễn Thị Loan SV:Nguyễn Hữu Thành
Thực Tập Chuyên Đề: Hệ Bảo Mật RSA
1.2 Hệ thống Mã hóa
)*+*,+ /Hệ thống mã hóa (cryptosystem) là một bộ năm ( P, C, K , E, D)
Thỏa mãn điều kiện sau :
P
Tính chất 4 là tính chất chính và quan trọng của một hệ thống mã hóa. Tính
chất này đảm bảo một mấu tin x
∈
P được mã hóa bằng luật mã hóa e
k
∈
E có
thể được giải mã chính xác bằng luật d
k
∈
D
1.3 Khái niệm mã hóa dữ liệu
0+1.2345674895:*9;<*+=+>2?72345679+@9AB4.5*9>C9DE*,+ 48
=+7FG*2345679+@99+8*+234567H+I*,=1J*,+ +KL==1J*,+
H+M=C.NO52345679+@95:*9;<*+P1,Q548R0+1.A>*=;F95K*D!:9
S7T=U.95:*9;<*+,Q548VT*R0A=5B+>;9>C9DWX>*=;F95K*YPZ[=9\K
;.9WX=;FB9K,;.B+FYAR@9R0DC7?9B+M99W95:*,5\B=]CZ.
X!;FB9K^YA+>2?7DN89WX,;.B+5.YAN5:9D5:*9;<*+R0+1.234567
=19+:PZ[=9+_=+56*V`*,=M=++KM*N)2345679+@9+KL=9+.F9+:
=+a*,V`*,234567H+M=
Tiến trình ngược với tiến trình mã hóa tức là chuyển từ bản mã thành
dữ liệu ban đầu gọi là giải mã.
GVHD:Nguyễn Thị Loan SV:Nguyễn Hữu Thành
Thực Tập Chuyên Đề: Hệ Bảo Mật RSA
Mã hóa và giải mã là hai thành phần của mật mã học.
1.4 Hệ thống mã hóa qui ước (mã hóa đối xứng)
Trong hệ thống mã hóa qui ước , quá trình mã hóa và giải mã một thông điệp
sử dụng cũng một mã khóa gọi là khóa bí mật hay khóa đối xứng . Do đó, vấn
đề bảo mật thông tin đã mã hóa hoàn toàn phụ thuộc vào việc giữ bí mật nội
1.7 Hệ bảo mật khóa công khai và hệ bảo mật RSA
Một hệ f=<M, C, K> trong đó:
M là một tập các không gian bản rõ. C là tập các không gian bản rõ.
K là tập hợp các không gian khóa.
Được gọi là một hệ mã mật nếu thỏa mãn các tính chất sau:
- Với mỗi kẻ K cho ta hai ánh xạ Ek: M → C (gọi là ánh xạ mã
hóa với khóa k) và ánh xạ Dk: C → M được gọi là ánh xạ giải mã.
- Hai cặp ánh xạ trên thỏa mãn tính chất Dk (Ek(M)) = M.
Người ta chia các hệ mã làm hai loại chính là hệ mã cổ điển và hệ mã hiện
đại (hay hệ mã khóa công khai). Các hệ mã cổ điển thực hiện việc bảo mật
đều dựa trên cơ sở là có một khóa dùng chung cho cả việc lập mã và việc giải
mã.
Các hệ mã hóa công khai được nghiên cứu và phát triển từ những năm
1970. Ý tưởng cơ bản của các hệ mã này là xây dựng những hệ thống sao cho
mỗi người tham gia vào quá trình truyền tin (người nhận tin và người gửi tin)
sẽ có hai khóa khác nhau: Một khóa công khai dùng để lập mã và một khóa
GVHD:Nguyễn Thị Loan SV:Nguyễn Hữu Thành
Thực Tập Chuyên Đề: Hệ Bảo Mật RSA
bảo mật dùng để giải mã. Khóa công khai được công khai hóa cho mội người,
còn khóa bảo mật của mỗi người thì được giữ bí mật.
Thông tin trước khi được gửi đi được mã hóa bằng khóa công khai của
người nhận. Chỉ có người nhận mới có khả năng giải mã bản mã bằng khóa bí
mật của mình, bởi vì thời gian giải mã sẽ tốn hàng tỉ năm nếu chỉ biết khóa
công khai. Độ bảo mật của các hệ mã công khai được bảo đảm bằng độ phức
tạp tính toán rất cao của thao tác tìm số nguyên tố lớn nhất và phân tích một
số nguyên tố lớn thành tích các thừa số. Ta giả sử trong hệ mã mật khóa công
khai, khóa mã hóa là E và khóa giải mã là D, thông điệp cần gửi là M. Để hệ
thống mã hóa hoạt động được, các điều kiện sau đây phải được thõa mãn:
- Dk(Ek(M)) = M đối với mọi thông điệp M
- Tất cả các cặp (D,E) là phân biệt.
trình mã hóa và giải mã. Khóa công khai được công bố rộng rãi cho mọi người
và được dùng để mã hóa. Những thông tin được mã hóa bằng khóa công khai chỉ
có thể được giải mã bằng khóa bí mật tương ứng. Nói cách khác, mọi người đều
có thể mã hóa nhưng chỉ có người biết khóa cá nhân (bí mật) mới có thể giải mã
được.
Ta có thể mô phỏng trực quan một hệ mật mã khoá công khai như sau : A
muốn gửi cho B một thông tin mật mà A muốn duy nhất B có thể đọc được. Để
làm được điều này, B gửi cho A một chiếc hộp có khóa đã mở sẵn và giữ lại chìa
khóa. A nhận chiếc hộp, cho vào đó một tờ giấy viết thư bình thường và khóa lại
(như loại khoá thông thường chỉ cần sập chốt lại, sau khi sập chốt khóa ngay cả
A cũng không thể mở lại được - không đọc lại hay sửa thông tin trong thư được
nữa). Sau đó A gửi chiếc hộp lại cho B. B mở hộp với chìa khóa của mình và
GVHD:Nguyễn Thị Loan SV:Nguyễn Hữu Thành
Thực Tập Chuyên Đề: Hệ Bảo Mật RSA
đọc thông tin trong thư. Trong ví dụ này, chiếc hộp với khóa mở đóng vai trò
khóa công khai, chiếc chìa khóa chính là khóa bí mật.
## Thuật toán RSA:
##b Sinh khóa:
Giả sử A và B cần trao đổi thông tin bí mật thông qua một kênh không an
toàn (ví dụ như Internet). Với thuật toán RSA, B đầu tiên cần tạo ra cho mình
cặp khóa gồm khóa công khai và khóa bí mật theo các bước sau:
1. Chọn 2 số nguyên tố lớn: và với , lựa chọn ngẫu nhiên và
độc lập.
2. Tính: .
3. Tính giá trị hàm số Phi Ơle: .
4. Chọn một số tự nhiên e sao cho .
5. Tính: d sao cho .
Khóa công khai: e
Khóa bí mật: d
Một dạng khác của khóa bí mật bao gồm:
hóa gửi
đến B
Khóa bí
mật sẽ
mã hóa
Mã Hóa
Chứng nhận khóa
công cộng
Thực Tập Chuyên Đề: Hệ Bảo Mật RSA
Hình ảnh trên thể hiện qui trình mã hóa . Giả sử A muốn gửi một thông điệp
điện tử bí mật cho B và giả sử A đã có được khóa công cộng của B (có thể do
B trao đổi trực tiếp cho A hay thông qua chứng nhận khóa công cộng của B ).
5.5PK\*b: Mã hóa thông điệp bằng một phương pháp mã hóa đối
xứng an toàn : Máy tính của A sẽ phát sinh ngẫu nhiên khóa bí mật K
được sử dụng đề mã hóa toàn bộ thông điệp cần gửi đến cho B bằng
phương pháp mã hóa đối xứng an toàn đã được chọn.
5.5PK\*#: Mã hóa khóa bí mật K bằng một phương pháp mã hóa
bắt đối xứng sử dụng khóa công cộng của B.
2.2.3 Giải mã
GVHD:Nguyễn Thị Loan SV:Nguyễn Hữu Thành
Giải mã đối
xứng
Khóa bí mật
Giải mã bất
đối tượng
Dữ liệu
Mã Hóa
Mã Hóa
Mã hóa đối xứng
Dữ liệu cần
Ví dụ
Sau đây là một ví dụ với những số cụ thể. Ở đây chúng ta sử dụng
những số nhỏ để tiện tính toán còn trong thực tế phải dùng các số có giá trị đủ
lớn.
Lấy:
p = 61
— số nguyên tố thứ nhất (giữ bí mật hoặc hủy sau khi tạo
khóa)
q = 53
— số nguyên tố thứ hai (giữ bí mật hoặc hủy sau khi tạo
khóa)
n = pq = 3233 — môđun (công bố công khai)
e = 17 — số mũ công khai
d = 2753 — số mũ bí mật
Khóa công khai là cặp (e, n). Khóa bí mật là d. Hàm mã hóa là:
encrypt(m) = me mod n = m17 mod 3233
với m là văn bản rõ. Hàm giải mã là:
decrypt(c) = cd mod n = c2753 mod 3233
với c là văn bản mã.
Để mã hóa văn bản có giá trị 123, ta thực hiện phép tính:
encrypt(123) = 12317 mod 3233 = 855
Để giải mã văn bản có giá trị 855, ta thực hiện phép tính:
GVHD:Nguyễn Thị Loan SV:Nguyễn Hữu Thành
Thực Tập Chuyên Đề: Hệ Bảo Mật RSA
decrypt(855) = 8552753 mod 3233 = 123
Cả hai phép tính trên đều có thể được thực hiện hiệu quả nhờ giải thuật bình
phương và nhân.
2.2.4 Chuyển đổi văn bản rõ
Trước khi thực hiện mã hóa, ta phải thực hiện việc chuyển đổi văn bản rõ
(chuyển đổi từ M sang m) sao cho không có giá trị nào của M tạo ra văn bản
thêm bít vào M. Các phương pháp chuyển đổi cần được thiết kế cẩn thận để
tránh những dạng tấn công phức tạp tận dụng khả năng biết trước được cấu
trúc của bản rõ. Phiên bản ban đầu của PKCS dùng một phương pháp đặc ứng
(ad-hoc) mà về sau được biết là không an toàn trước tấn công lựa chọn bản rõ
thích ứng (adaptive chosen ciphertext attack). Các phương pháp chuyển đổi
hiện đại sử dụng các kỹ thuật như chuyển đổi mã hóa bất đối xứng tối ưu
(Optimal Asymmetric Encryption Padding - OAEP) để chống lại tấn công
dạng này. Tiêu chuẩn PKCS còn được bổ sung các tính năng khác để đảm bảo
an toàn cho chữ ký RSA (Probabilistic Signature Scheme for RSA - RSA-
PSS).
2.2.5 Tạo chữ ký điện tử
Một phương pháp chữ kí điện tử được định nghĩa là một bộ - năm (P,A, K,
S, V) thỏa mãn các điều kiện sau:
1. P là tập hữu hạn các thông điệp.
2. A là tập hợp hữu hạn các chữ kí có thể sử dụng.
3. Không gian khóa K là tập hợp hữu hạn các khóa có thể sử dụng được.
GVHD:Nguyễn Thị Loan SV:Nguyễn Hữu Thành
Thực Tập Chuyên Đề: Hệ Bảo Mật RSA
4. Với mỗi khóa k
∈
K tồn ttaij thuật toán chữ kí sig
k
∈
S và thuật toán
xác nhận chữ kí tương ứng ver
k
∈
V . Mỗi thuật toán sig
k
: P
+7@99KM* phương pháp mã hóa RSA
n = pq với p và q là hai số nguyên tố lẻ phân biệt
Cho P = C = Z
n
và định nghĩa.
K= {(( n, p, q, a, b): n= pq, p, q là hai số nguyên tố ab=1 (mod
φ
(n))}
Với mỗi K = (n, p, q, a, b)
∈
K định nghĩa:
sig
k
(x) = x
a
mod n và ver
k
(x,y) = true
⇔
x
≡
y
b
(mod n) với x, y
n
Z∈
Giá trị n và b được công bố, trong khi giá trị p, q, a được bí mật
GVHD:Nguyễn Thị Loan SV:Nguyễn Hữu Thành
Thực Tập Chuyên Đề: Hệ Bảo Mật RSA
Dựa trên định nghĩa phương pháp mã hóa RSA, việc áp ụng vào thực tế được
được đưa về việc giải hai phương trình sau:
GVHD:Nguyễn Thị Loan SV:Nguyễn Hữu Thành
Thực Tập Chuyên Đề: Hệ Bảo Mật RSA
n = p.q
φ
(n) = (p-1)(q-1) (1)
Thay q= n/p, ta được phương trình bậc hai :
p
2
-(n-
φ
(n)+1)p+n = 0 (2)
p, q chính là nghiệm của phương trình bậc hai này. Tuy nhiên vấn đề phát
hiện được giá trị
φ
(n) còn khó hơn việc xác định hai thừa số nguyên tố của n.
3.2.2 Bẻ khóa dựa trên tấn công lặp lại
Siimons và Norris đã chỉ ra rằng hệ thống RSA có thể bị tổn thương khi sử
dụng tấn công lặp liên tiếp. Đó là khi đối thủ biết cặp khóa công cộng {n,b}
và từ khóa C thì a ta có thể tính chuỗi vào các khóa sau:
C
1
= C
e
(mod n)
C
2
= C
(mod n)
C = M
e
(mod n)
Ví dụ: Giả sử anh ta biết {n, b, C}={35, 17, 3} anh ta sẽ tính :
C
1
= C
e
(mod n) = 3
17
( mod 35) = 33
C
2
= C
1
e
(mod n) = 33
17
( mod 35) = 3
GVHD:Nguyễn Thị Loan SV:Nguyễn Hữu Thành
Thực Tập Chuyên Đề: Hệ Bảo Mật RSA
Vì C
2
= C nên M = C
1
= 3
3.3 Sự che giấu thông tin trong hệ thống RSA
Hệ thống RSA có đặc điểm là thông tin không phải luôn được che dấu. Giả sử
người gửi có e = 17 , n = 35. Nếu anh ta muốn gửi bất cứ dữ liệu nào thuộc
Mấu chốt để có thể giải mã được thông tin là có được giá trị p và q taọ nên giá
trị n . Khi có được hai giá trị này, ta có thể dễ dàng tính ra được
φ
(n) = (p-1)
(q-1) với giá trị a = b
1−
mod
φ
(n) theo thuật toán Owclit mở rộng. Nếu số
nguyên n có thể được phân tích ra thừa số nguyên tố , tức là giá trị p và q có
thể được xác định thì xem như tính an toàn của phương pháp RSA dựa trên cơ
sở các máy tính tại thời điểm hiện tại chưa đủ khả năng giải quyết việc phân
tích các số nguyên rất lớn ra thừ số nguyên tố. Tuy nhiên với sự phát triển
ngày càng nhanh chóng của máy tính cũng như bước đột phá trong lĩnh vực
toán học , phương phap RSA sẽ gặp phải những khó khăn trong việc bảo mật
thông tin trong tương lai.
3.4 An ninh
Độ an toàn của hệ thống RSA dựa trên 2 vấn đề của toán học: bài toán
phân tích ra thừa số nguyên tố các số nguyên lớn và bài toán RSA. Nếu 2 bài
toán trên là khó (không tìm được thuật toán hiệu quả để giải chúng) thì không
thể thực hiện được việc phá mã toàn bộ đối với RSA. Phá mã một phần phải
được ngăn chặn bằng các phương pháp chuyển đổi bản rõ an toàn.
Bài toán RSA là bài toán tính căn bậc e môđun n (với n là hợp số): tìm số
m sao cho m
e
=c mod n, trong đó (e, n) chính là khóa công khai và c là bản
mã. Hiện nay phương pháp triển vọng nhất giải bài toán này là phân tích n ra
thừa số nguyên tố. Khi thực hiện được điều này, kẻ tấn công sẽ tìm ra số mũ
bí mật d từ khóa công khai và có thể giải mã theo đúng quy trình của thuật
toán. Nếu kẻ tấn công tìm được 2 số nguyên tố p và q sao cho: n = pq thì có
thừa số nguyên tố nhỏ thì n cũng có thể dễ dàng bị phân tích và vì thế p và q
cũng cần được thử để tránh khả năng này.
GVHD:Nguyễn Thị Loan SV:Nguyễn Hữu Thành
Thực Tập Chuyên Đề: Hệ Bảo Mật RSA
Bên cạnh đó, cần tránh sử dụng các phương pháp tìm số ngẫu nhiên mà kẻ
tấn công có thể lợi dụng để biết thêm thông tin về việc lựa chọn (cần dùng các
bộ tạo số ngẫu nhiên tốt). Yêu cầu ở đây là các số được lựa chọn cần đồng
thời ngẫu nhiên và không dự đoán được. Đây là các yêu cầu khác nhau: một
số có thể được lựa chọn ngẫu nhiên (không có kiểu mẫu trong kết quả) nhưng
nếu có thể dự đoán được dù chỉ một phần thì an ninh của thuật toán cũng
không được đảm bảo. Một ví dụ là bảng các số ngẫu nhiên do tập đoàn Rand
xuất bản vào những năm 1950 có thể rất thực sự ngẫu nhiên nhưng kẻ tấn
công cũng có bảng này. Nếu kẻ tấn công đoán được một nửa chữ số của p hay
q thì chúng có thể dễ dàng tìm ra nửa còn lại (theo nghiên cứu của Donald
Coppersmith vào năm 1997).
Một điểm nữa cần nhấn mạnh là khóa bí mật d phải đủ lớn. Năm 1990,
Wiener chỉ ra rằng nếu giá trị của p nằm trong khoảng q và 2q (khá phổ biến)
và d < n
1/4
/3 thì có thể tìm ra được d từ n và e.
Mặc dù e đã từng có giá trị là 3 nhưng hiện nay các số mũ nhỏ không còn
được sử dụng do có thể tạo nên những lỗ hổng (đã đề cập ở phần chuyển đổi
văn bản rõ). Giá trị thường dùng hiện nay là 65537 vì được xem là đủ lớn và
cũng không quá lớn ảnh hưởng tới việc thực hiện hàm mũ.
4.2 Tốc độ
RSA có tốc độ thực hiện chậm hơn đáng kể so với DES và các thuật toán
mã hóa đối xứng khác. Trên thực tế, Bob sử dụng một thuật toán mã hóa đối
xứng nào đó để mã hóa văn bản cần gửi và chỉ sử dụng RSA để mã hóa khóa
để giải mã (thông thường khóa ngắn hơn nhiều so với văn bản).
Phương thức này cũng tạo ra những vấn đề an ninh mới. Một ví dụ là cần
GVHD:Nguyễn Thị Loan SV:Nguyễn Hữu Thành
Thực Tập Chuyên Đề: Hệ Bảo Mật RSA
sử dụng một kỹ thuật gọi là che mắt. Kỹ thuật này dựa trên tính nhân của
RSA: thay vì tính c
d
mod n, Alice đầu tiên chọn một số ngẫu nhiên r và tính
(r
e
c)
d
mod n. Kết quả của phép tính này là rm mod n và tác động của r sẽ được
loại bỏ bằng cách nhân kết quả với nghịch đảo của r. Đỗi với mỗi văn bản mã,
người ta chọn một giá trị của r. Vì vậy, thời gian giải mã sẽ không còn phụ
thuộc vào giá trị của văn bản mã.
GVHD:Nguyễn Thị Loan SV:Nguyễn Hữu Thành