Tải bản đầy đủ (.pdf) (66 trang)

Luận văn nghiên cứu một số kĩ thuật tấn công hệ mã công khai và ứng dụng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1001.54 KB, 66 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC s ư PHẠM HÀ NỘI 2

HOÀNG THỊmCẨM NGUYÊN

NGHIÊN CỨU MỘT SỐ KĨ THUẬT
TẤN CÔNG HỆ MÃ CÔNG KHẤT
VÀ ỨNG DỤNG
Chuyên ngành: Toán ứng dụng
Mã sổ: 60 46 01 12

LU Ẩ• N VĂN T H A• C SĨ TO Á N H O• C

Người hướng dẫn khoa học: TS. Trần Văn Dũng

Hà Nội, 2015


LỜI CẢM ƠN
Luận văn được hoàn thành tại trường Đại học Sư phạm Hà Nội 2 dưới
sự hướng dẫn của thầy giáo TS. Trần Văn Dũng. Sự giúp đỡ và hướng dẫn
tận tình, nghiêm túc của thầy trong suốt quá trình thực hiện luận văn đã giúp
tôi trưởng thành hơn rất nhiều trong cách tiếp cận một vấn đề mới. Tôi xin
bày tỏ lòng biết ơn, lòng kính ừọng sâu sắc nhất đối với thầy.
Tôi xin trân trọng cảm ơn Ban giám hiệu trường Đại học Sư phạm Hà
Nội 2, phòng sau đại học và các thầy cô giáo ừong nhà trường đã giúp đỡ tạo
điều kiện thuận lợi cho tôi trong suốt quá trình thực tập.
Tôi xin chân thành cảm ơn gia đình, bạn bè đã luôn giúp đỡ động viên
và tạo điều kiện thuận lợi để tôi hoàn thành khóa học Thạc sĩ cũng như hoàn
thành luận văn này.
Hà Nội, ngày 10 thảng 12 năm 2015


Tác giả

Hoàng Thị Cẩm Nguyên


LỜI CAM ĐOAN
Luận văn này được hoàn thành tại trường Đại học Sư phạm Hà Nội 2
dưới sự hướng dẫn của TS. Trần Văn Dũng.
Tôi xin cam đoan rằng số liệu và kết quả nghiên cứu trong luận văn này
là trung thực và không trùng lặp với các đề tài khác.
Trong quá trình nghiên cứu và hoàn thành luận văn tôi đã kế thừa
những thành quả khoa học của các nhà khoa học và đồng nghiệp với sự trân
trọng và biết ơn.
Tôi cũng xin cam đoan rằng mọi sự giúp đỡ cho việc thực hiện luận văn
này đã được cảm ơn và các thông tin ừích dẫn trong luận văn đã được chỉ rõ
nguồn gốc
Hà Nội, này 10 thảng 12 năm 2015
Tác giả

Hoàng Thị Cẩm Nguyên


MỤC LỤC
MỞ ĐẦU............................................................................................................1
1. Lí do chọn đề tài..........................................................................................1
2. Mục đích nghiên cứu.................................................................................. 2
3. Nhiệm vụ nghiên cứu................................................................................. 2
4. Đối tượng nghiên cứu................................................................................ 2
5. Phương pháp nghiên cứ u........................................................................... 2
6. Dự kiến đóng góp m ới............................................................................... 3

NỘI DUNG....................................................................................................... 4
Chương 1: TỒNG QUAN VỀ MẬT MÃ KHÓA CÔNG KHAI.................... 4
1.1 Cơ sở lí thuyết của mật mã khóa công khai............................................. 4
1.1.1 Số học Modulo................................................................................... 4
1.1.2 Định lí Fermat nhỏ............................................................................. 6
1.1.3 Định lí phần dư Trung Hoa................................................................ 7
1.1.4 Hàm ộ Euler...................................................................................... 8
1.1.5 Kiểm tra tính nguyên tố ..................................................................... 9
1.1.6 Phân số tiếp diễn...............................................................................11
1.2 Các bài toán khó liên quan đến hệ mật mã khóa công khai....................12
1.2.1 Bài toán phân tích số nguyên thành thừa số nguyên tố ....................12
1.2.2 Bài toán thặng dư bậc h ai.................................................................12
1.2.3 Bài toán tìm căn bậc hai mod n ........................................................13
1.2.4 Bài toán logarit rời rạc..................................................................... 14


Chương 2 : MỘT SỐ THUẬT TOÁN CỦA HỆ MÃ KHÓA CÔNG KHAI 16
2.1 Hệ mật mã RSA......................................................................................16
2.1.1 Định nghĩa hệ mật mã RSA..............................................................16
2.1.2 Khởi tạo khóa RSA........................................................................... 17
2.1.3 Sử dụng RSA....................................................................................17
2.1.4 An toàn của RSA..............................................................................19
2.2 Trao đổi khóa Diffie -Heilman...............................................................20
2.2.1 Yêu cầu............................................................................................ 20
2.2.2 Khởi tạo Diffie - Heilman................................................................21
2.2.3 Trao đổi khóa Diffie - Heilman........................................................ 21
2.3 Xác thực mẩu tin.................................................................................... 22
2.3.1 Xác thực mẩu tin.............................................................................. 22
2.3.2 Các hàm băm Hash...........................................................................23
2.4. Chữ kí điện tà...................................................................................... 24

2.4.1 Các tính chất của chữ kí điện t ử .......................................................25
2.4.2 Chuẩn chữ kí điện tà (DSS)..............................................................25
2.5 Tính an toàn của các sơ đồ khóa công khai............................................27
Chương 3: MỘT SỐ KỸ THUẬT TẤN CÔNG TRÊN MẬT MÃ KHÓA
CÔNG KHAI................................................................................................... 29
3.1 Thuật toán xén ngọn p ..........................................................................29
3.2 Phân tích ra thừa số................................................................................. 30
3.2.1 Phân tích thừa số Fermat.................................................................. 31
3.2.2 Phân tích cơ sở..................................................................................32


3.2.3 Phân tích phân số tiếp diễn.............................................................. 34
3.2.4 Trường số......................................................................................... 35
3.2.5 Sàng trường số học.......................................................................... 38
3.3 Giải quyết bài toán logarit ừên trường hữu hạn.....................................41
3.3.1 Định lí phần dư Trung Hoa.............................................................. 41
3.3.2 Thuật toán Pohlig- Hellman............................................................. 42
Chương 4: ỨNG DỤNG AN TOÀN CÁC THUẬT TOÁN MÃ KHÓA..... 47
CÔNG KHAI................................................................................................... 47
4.1 Một số sai lầm trong sử dụng RSA........................................................ 47
4.2 Phục hồi bản mã được mã hóa với số mũ công khai nhỏ...................... 50
4.2.1 Tấn công tin nhắn rập khuôn........................................................... 50
4.2.2 Tấn công thông điệp liên quan..........................................................51
4.2.3 Tấn công đệm ngẫu nhiên................................................................ 53
4.2.4 Thông tin bị rò rỉ.............................................................................. 54
4.3 Nhân tà của các RSA modulus với số mũ riêng nhỏ d ...........................55
4.3.1 Tấn công phân số tiếp diễn Wiener................................................. 56
4.4 Một số kiến nghị trong sử dụng mật mã khóa công khai........................58
KẾT LUẬN..................................................................................................... 60
TÀI LIỆU THAM KHẢO............................................................................... 61



1

MỞ ĐẦU
1. Lí do chon đề tài
Bảo mật là nhu cầu đã xuất hiện từ rất lâu trong đời sống của con
ngưòi. Dưới nhu cầu cần thiết này “ Mật mã học” đã ra đời và phát triển ngày
càng mạnh mẽ. Mật mã học là một lĩnh vực liên quan với các kĩ thuật ngôn
ngữ và toán học để đảm bảo an ninh an toàn thông tin. Mật mã học là một lĩnh
vực liên ngành, được tạo ra từ một số lĩnh vực khác. Các dạng cổ nhất của
mật mã há chủ yếu liên quan đến ngôn ngữ. gần đây thì tầm quan trọng đã
thay đổi mật mã hóa sử dụng và gắn liền nhiều hơn tới toán học cụ thể là toán
rời rạc bao gồm các vấn đề liên quan đến lý thuyết số, lý thuyết thông tin, độ
phức tạp tính toán, thống kê và tổ hợp.
Mã hóa và thám mã là hai mặt của một vấn đề và luôn phát triển song
hành. Cùng với sự phát triển của mật mã, các phương pháp thám mã ngày
càng tinh vi hiệu quả và luôn là thách thức lớn đối với các nhà mật mã.
Mục tiêu của thám 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.
Cuối thế kỉ XX hệ mật mã khóa công khai được ra đời, nó được coi như
tiến triển làm thay đổi nền tảng cơ bản trong cách làm việc của hệ thống mật
mã hóa. Hệ thống mật mã khóa công khai được phát triển và ứng dụng rộng
rãi ừong thương mại điện tà, tạo khóa và xác thực của mail, xác thực, truy cập
từ xa, và đặc biệt là hệ thống chữ kí điện tà.
Chính vì lí do được sử dụng rộng rãi trong thương mại điện tử nên luôn
có rất nhiều sự tấn công nhằm phá vỡ sự an toàn của hệ mật mã này. Thêm
vào đó, chưa có một chứng minh nào khẳng định được nền tảng toán học của

mật mã dùng khóa công khai là “không thể bẻ gãy”, cho nên tiến triển của


2

toán học trong tương lai có thể sẽ làm cho những hệ thống phụ thuộc vào
chúng trở nên mất an toàn.
Qua tìm hiểu và nắm bắt được vấn đề, tôi cảm thấy hứng thú với chủ đề
về phương pháp tấn công các mã khóa công khai và được sự đồng ý hướng
dẫn luận văn từ TS. Trần Văn Dũng nên tôi đã lựa chọn đề tài:
“NGHIÊN CỬU MỘT SỎ K Ĩ THUẬT TẨN CÔNG HỆ MÃ CÔNG KHAI


»



VÀ ÚNG DỤNG”
cho luận văn tốt nghiệp của mình.
2. Mục đích nghiên cứu
Tổng hợp lại các phương pháp thám mã các mật mã khóa công khai, từ
đó mong muốn người sử dụng sẽ tránh được các lỗi dẫn đến việc mất an toàn
của loại mật mã này.
3. Nhiệm vụ nghiên cứu
- Nghiên cứu về lý thuyết mật mã.
- Nghiên cứu các thuật toán mã hóa và thám mã.
- Nghiên cứu một số phương pháp thám mã và ứng dụng.
4. Đổi tượng nghiên cứu
- Các khái niệm cơ bản về mật mã.
- Cơ sở toán học của mã hóa và thám mã.

5. Phương pháp nghiên cứu
- Sử dụng phương pháp thu thập thông tin, tài liệu liên quan đến nội
dung đề tài.
- Phân tích tổng hợp và hệ thống các phương pháp thám mã mật mã
khóa công khai.


3

6. Đóng góp mói
Luận văn này là một tài liệu hệ thống khá đầy đủ về mật mã và một số
kỹ thuật tấn công thám mã phổ biến.
Luận văn được trình bày theo hướng đi từ cơ sở lý thuyết toán học đến
thực tiễn, vì vậy hy vọng luận văn sẽ là một tài liệu dễ hiểu đối với ngưòi đọc
và áp dụng được vào trong thực tiễn.


4

NỘI DUNG
Chương 1: TỒNG QUAN VÈ MẬT MÃ KHÓA CÔNG KHAI
Mật mã khóa công khai là một chuyên ngành mật mã học cho phép
người sử dụng ừao đổi các thông tin mật mà không cần phải ừao đổ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ật mã học khóa công khai, 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.

1.1 Ctf sở lí thuyết của mật mã khóa công khai
1.1.1 Số học Modulo
SỐ học modulo là cơ sở cơ bản cho mật mã học nói chung và RSA nói riêng.
Đinh nưhĩa h Cho số nguyên dương N. Chúng ta nói hai số nguyên a và b
đồng dư theo modun N nếu tồn tại số nguyên k sao cho a - b = k N . Chúng ta
miêu tả mối quan hệ này bởi kí hiệu sau :
a= b

mod N

Dễ dàng chứng minh được rằng quan hệ đồng dư là quan hệ tương đương.
Đinh mhĩa 2: Cho 2 lớp tương đương [x] và [ý] theo modun N, ta định nghĩa
2 phép toán sau :
Phép cộng: [xị + [ỹị = [x + ỹị
Phép nhân: [jc][y] = [xy]
Trong luận văn này tôi sẽ kí hiệu lớp tương đương

[x]

một cách đơn giản là X,

nếu có điều gì thay đổi sẽ được chú thích rõ ràng.
Đinh nghĩa 3: Cho số nguyên N > 0 , modulo vòng ZN là tập :


5

Z„={[0],[l],...,[iV-l]}
cùng với các phép toán trên modulo đã được định nghĩa ở trên tạo thành một
vành giao hoán. Phép chia là phần mở rộng của phép nhân: để chia lớp tương

đương X cho lớp tương đương y, ta nhân X với nghịch đảo của y (mod AO,
trong đó lớp nghịch đảo của y (nếu có) là lớp mà tích của nó với y bằng lớp
tương đương 1.
Trong ZN, ta rất dễ dàng xác định được phần tò nghịch đảo, điều đó rất cần
thiết cho các thuật toán mã công khai.
Đinh nghĩa 4: Cho a là một phần tử của ZN. Phần tử nghịch đảo của a theo
modulo N là số nguyên X thỏa mãn:
ax = 1 mod N
phần tà nghịch đảo của a kí hiệu : ứ 1 mod N .
Điều quan trọng cần lưu ý ở đây là ứ 1 mod N tồn tại khi và chỉ khi a và
N nguyên tố cùng nhau, tức là ước chung lớn nhất của chúng bằng 1:
gcd(ứ,iV) = l.
Thật vậy, theo thuật toán Euclid mở rộng thì ta có (a, N)=ì khi và chỉ khi
tồn tại các giá trị nguyên X, y sao cho: xa + yN = 1. Do đó ta có :
ax = ì mod N

a x—ì = kN

ax—kN = ì

Nếu (a,N) ^ 1 thì sẽ không có nghiệm nguyên X, k cho phương trình này,
do đó không có nghịch đảo của a theo mocL/V.
Một thủ tục rất quan trọng cho các thuật toán mã công khai về đồng dư là
modulo lũy thừa. Cho các số nguyên b, e, N giả sử ta muốn tính số nguyên c
thỏa mãn:
c = be mod N
Phương pháp trực tiếp để tính c là ta tính toán be và sau đó là tính phần dư
theo mod N. Độ phức tạp của thuật toán này là 0(e), vì vậy nó không có tính



6

khả thi cho các giá trị e lớn. Sau đây, tôi xin giới thiệu một phương pháp
khác, hiệu quả hơn:
Thuât toán 7: Cho các số nguyên b, e, N để tính modulo lũy thừa
c = be (mod N) ta tiến hành như sau:
1. Viết e dưới dạng biểu diễn nhị phân của nó : (em_1,em_2,...,e1,e0)2 sao
cho: í = 5 ^ 2
i=0
2. Đặt c = 1
3. form i = m —1 to i = 0
1. C -C 2mod N
2. If ẽị = 1 then c = cb mod N
Độ phức tạp của thuật toán là ỡ(m ) = ỡ (log(ể)).
Đinh nghĩa 5: Cho số nguyên a và số nguyên N sao cho (a, N) = 1, bậc của a
theo modulo N, được kí hiệu oN(a) , là số nguyên dương k nhỏ nhất sao cho:
ak = 1 mod N
Đinh nữhĩa 6: Cho số nguyên q và số nguyên n, ta nói q là đồng dư bậc 2 theo
modulo n , nếu tồn tại số nguyên X sao cho:
X =q

mod

n

1.1.2 Định lí Fermat nhỏ
ừong đó, p là số nguyên tố và a là số nguyên bất kỳ khác bội của p, tức là
gcd(a, p ) = 1 , hay với mọi số nguyên tố p và số nguyên a không là bội của
p , ta luôn có

ap = a mod p


7

Công thức trên luôn đúng, nếu p là số nguyên tố, còn a là số nguyên
dương nhỏ hơn p.
Ví dul: Vì 5 và 7 là các số nguyên tố. Và 2 và 3 không là bội tương ứng của 7
và 5, nên theo định lý Ferma ta có
27-1 mod7 = 64mod7 = 1
35“1mod5 = 81mod5 = 1
(-2 )11“1m o d ll = 210m o d ll = 1024m odl 1 = 1
Kết quả ừên được dùng trong mã khoá công khai. Nó cũng được sử
dụng để kiểm tra tính nguyên tố của một số nguyên p nào đó, bằng cách lấy
ngẫu nhiên các số a và kiểm ừa xem có tính chất nêu ừên không, kết luận là p
nguyên tố càng thuyết phục nếu phép thử ừên đứng với nhiều lần chọn ngẫu
nhiên các số a.
1.1.3 Định tí phần dư Trung Hoa
• Tính toán theo modulo sổ lớn:
Để tính A mod M, với M khá lớn và A là biểu thức số học nào đó. Trước
hết ta cần tính tất cả a. = Am odm .. Sau đó sử dụng công thức:
( k

\

A = Z ữ.c. mod M
Vi=i
Trong đó: M ị= M / níị
Cị = M 1.{M11mod rriị ) với 1 < ỉ < k
Ví du 2:Tính 178 m o á ll . Áp dụng định lý phần dư Trung Hoa, ta coi

A = 1718,m1 = 7 ,m 2 = 11 . Khi đó M x =11,M 2 =1 và
l l -1mod7 = 4_1mod7 = 2, suy ra Cị =11.2 = 22
7-1 m odl 1 = 8 , suy ra c2 = 7.8 = 56
<21 = 178mod7 = (17 m od7)8 mod7 = 38mod7 = 2


8

a2 = 178m odi 1 = (17 m odi l)8 m odi 1 = 68 m odi 1 = 4
Vậy 178m od77 = (2.22+4.56) mod77 =268 mod 77 =37
• Giải hệ phương trình modulo:
Cho n số nguyên a1,a2,...,an và pl,p 2,...,pn đôi một nguyên tố cùng
n

nhau. Đặt M = Ị | Pị và với i= 1, ...,n xác định yi ,sao cho:
ỉ= \

% — = 1 mod Pị
Pỉ

Khi đó hệ phương trình
X = ax mod Pị
x = a2 mod p 2
x = an mod p n
Có một nghiệm:
V- . M
^ = 2 /^
Ỉ=1

Pi


Bất kì nghiệm nguyên X nào khác của hệ phương trình đều thỏa mãn:
X = XQ

Ví du 3: Cho

X =

2 mod 3,

mod M

= 3m od5, X = 9 mod 11

Ta có: 3^5.11 = lm od3 => y r \ = lm od3 ^ y l = 1
y23 .11 = lmcxi5 =^> y23 = lm od5 =^> y2 = 2
3>3.3.5 = 1mod 11 => ;y3.4 = 1mod 11 =>

=3

Vì vậy x = 2(5.11)1 +3(3.11)2+9(3.5)3 =713 =ổ3modl65
1.1.4 Hàm Ộ Euừr
Đinh nghĩa 7: Cho n >1. ệ{n)ẩuợc định nghĩa là số các số nguyên nhỏ hơn n
và nguyên tố cùng nhau với n. hàm ệ(n) được gọi là hàm phi Euler.


9

Tính chất:
- Nếu p là số nguyên tố thì ệ(p) - p -1

- Hàm ộ Euler là hàm có tính chất nhân:
Nếu(m, n)=l thì ệ(mrì) - ệ(m)ệ(rì)
- Nếu n =

....pkr ừong đó p là các số nguyên tố phân biệt thì:

í, 0 1 - —0 í,1 - —0
l
l l

n 1- —

(,

•••

Pr)

Pl)

Pl)

Đinh lí Euler: Cho n là số nguyên dương, và a là số nguyên tố cùng nhau với
«, thì ta có:
aộ(n) =1 modrc
Chứng minh: Gọi

} là các số nguyên dương nhỏ hơn n và

nguyên tố cùng nhau với n. Với 2 số phân biệt ỉ, j e {l, 2,...,ệ(n)}, ta có:

(mi,n) = (mj ,n) = 1

(ami,n) = (amj ,n) = 1

Mà mai ^ mữj mod n, do đó am1,am2,...,am^){n) là một hoán vị theo modn
của mị,m2,...,mệ(n). Suy ra:
arrụim'2...amệ(n) = mlm2.. Jnệ{tC) mod n
m1m2...m^(n)ữ^(n) = rrụ n ^.m ^ mod n
Giản ước đồng dư thức ta được: aệ(n) = 1 modn đccm.
1.1.5 Kiểm tra tính nguyên tổ
Giả sử cần phải tìm một số nguyên tố rất lớn. Lấy ngẫu nhiên một số đủ
lớn, ta cần phải kiểm tra xem số đó có phải là số nguyên tố không. Phương
pháp truyền thống là thử bằng phép chia như sau:
• Chia cho tất cả các số (chỉ cần nguyên tố) nhỏ hơn hoặc bằng căn bậc
hai của số đó. Nếu nó không chia hết cho số nào, thì đó là số nguyên tố.
• Chỉ hiệu quả khi xét các số nhỏ.


10

Có phương pháp khác, mà ta sẽ xét ở đây, sử dụng các phép kiểm tra tính
nguyên tố thống kê dựa ừên các tính chất:
• Mà mọi số nguyên tố phải thỏa mãn;
• Nhưng có một số số không nguyên tố, gọi là giả nguyên tố cũng thoả
mãn tính chất đó.
Cụ thể là phép kiểm tra dựa trên định lý Ferma như sau: nếu số n cần kiểm
tra là số nguyên tố, thì nó sẽ thỏa mãn định lý Ferma đối vói mọi số a nhỏ
hơn nó ứ"-1 mod ft —1 . Như vậy, lấy ngẫu nhiên số a và kiểm ừa xem nó có
tính chất ừên không. Nếu có thì n có thể là số nguyên tố, nếu cần độ tin cậy
lớn hơn, thì ta kiểm ừa liên tiếp nhiều lần như vậy với các số ngẫu nhiên a

được chọn. Sau mỗi lần qua được phép thử, xác suất để n là số nguyên tố lại
tăng lên. Chú ý rằng
• nếu ừ m od« = 1, thì b2i modft = Ÿ modft = 1
• nếu bl modft = n - 1, thì b2i m odn = (n -1 )2 m odn
= n2 - 2 n + \ mod ft -1
Kiểm ừa số n có là số nguyên tố không, ta chỉ cần xét n là lẻ, khi đó ft —1
là chẵn và biểu diễn nó dạng: n —ì = 2k.q
Khi đó để tính an~l , ta tính aq, sau đó bình phương liên tiếp k lần. Cụ thể
thuật toán thể hiện ở phần sau.
* Thuât toán Miller - Rabin


Thuật toán như sau:
TEST («) is:
1. Find integers k, q, k > 0, q odd, so that (n —1) = 2k.q
2. Select a random integer a, l < a < n —l
3. if ag(m odn) = lthen return (“maybe prime");
4. for j = 0 to k - 1 do


11

5. if {a21q mod 71= 71—1)
then retum(" maybe prime ")
6. return ("composite")
Các xem xét về mặt xác suất.
Nếu thuật toán Miller - Rabin ừả về số “composite” thì số đó chắc chắn
không là số nguyên tố, vì khi đó số n và số a < n không thoả mãn định lý
Ferma, tức là ứ"-1 mod ft ^ 1.
Ngược lại số đó có thể là số nguyên tố hoặc giả nguyên tố theo nghĩa nó

thoả mãn định lý Ferma với số a < n . Người ta chứng minh được rằng xác
suất để số giả nguyên tố đó không là số nguyên tố là là 1/4. Suy ra nếu lặp t
phép thử với các lựa chọn ngẫu nhiên khác nhau của số a, thì khi đó xác suất
để số n sau t phép thử là số nguyên tố là: 1- { \y
Ví du 4: Sau 10 bước, t = 7ớ, mà số đã cho n đều có thể là nguyên tố, thì xác
suất để n là số nguyên tố là 1 —( ị) 10 > 0,99999.
1.1.6 Phân sổ tiếp diễn
Sự khai triển phân số tiếp diễn của số nguyên X là phép biểu diễn như bộ
, sao cho phương trình sau đây được thỏa mãn:
1

x = a 0 + --------- ị ------------------------

aì +

^
a2+

^
ãn + h

với hệ số aữlà sốnguyên không âm

và các hệ số aì,...,an,..Ảầ. nguyên

dương. Nếu X làsố hữu tỉ thì số các hệsố a,ị là hữu hạn.


12


Ví dụ 5:
3 4 = 0 + 4 = 0 + — *— = 0 + —*— = 0+
— =0+
— =0+
1
99
2
+
l

2
+
A
2
+
^r2
+
^
2+
1
yy
34
^ ^ 34
M
^^ 1
1+A
^ ^ 11+J_
^ ^ 1+_L_
31
T31

T33Ỉ
1ÍU3Ỉ
Và được viết ngắn gọn là [0; 2,1,10,3].
£)m/i /í 1: Ch0 Ế,iV,/,J là số nguyên với gcd(e,iV) = l, gcd(/,d) = l và
<

1
2d2

Phân số tối giản J là một trong những hội tụ của khai triển liên phân số của^r
1.2 Các bài toán khó liên quan đến hệ mật mã khóa công khai
1.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 = p ^x.p^2■■■■Pỵk, trong đó pị là các số
nguyên tố đôi một khác nhau và ũCịầil.
Bài toán này có liên hệ mật thiết với các bài toán kiểm tra tính nguyên
tố 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 bài toán kiểm tra tính nguyên tố.
1.2.2 Bài toán thặng dư bậc hai
Đinh Ĩiữhĩa8: Ký hiệu Legendre được định nghĩa như sau:
Nếu p là số nguyên tố lẻ và a là một số tự nhiên thì kí hiệu Legendre
• 0 nếu p chia hết cho a\
• 1 nếu a là thặng dư bậc hai theo mod p
• —ì nếu a không là thặng dư bậc 2 theo mod p
Đinh nshĩa9: Ký hiệu Jacobi được định nghĩa như sau:

là:


13


Giả sử ra > 0 là số tự nhiên lẻ và P i1P 2 2 —Pkk

là dạng phân tích tiêu

chuẩn của n. Với số nguyên a bất kì, kí hiệu Jacobi
( ar. V 1( ar.
Pi

Y2

yP l;

Pk

trong đó tất cả các kí hiệu bên vế bên phải là kí hiệu Legendre.
Cho một số nguyên n lẻ 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ỏi a có thặng dư bậc hai theo mod. n 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 2 số nguyên tố p và q. Ta chú ý
rằng trong trường hợp này, nếu a 6 Jn, thì a là thặng dư bậc hai theo mod n,
đ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 ^ ị mocj p Như y ậ y 5 trong trường hợp này bài toánthặ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ố 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 tố là có độ khó tương đương nhau.
1.2.3 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 6 Qn, tức a là một
thặng dư bậc hai theo mod n. Hãy tìm một căn bậc hai của a theo mod n, tức là
tìm X sao cho

X 2 =a

mod n .

Nếu phân tích được n thành thừa số nguyên tố n=pq, thì bằng cách giải
các phương trình X2 = a mod p và X2 = a mod q , rồi sau đó kết hợp nghiệm
của chúng lại theo định lý số dư Trung Hoa ta sẽ được nghiệm của phương
trình X2 = a mod n . Người ta đã tìm được một số thuật toán tương đối đơn
giản (giải thuật trong thời gian đa thức) để giải phương trình X1 = a mod p


14

với p là số nguyên tố. Như vậy, bài toán tìm căn bậc hai theo mod n có thể
quy 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 A giải bài toán tìm căn bậc hai theo mod. n 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)=l và tính a = X2 mod n . Dùng thuật

toán A cho a để tìm một căn bậc hai mod n của a. Gọi căn bậc hai tìm được là
y. nếu y = ±x mod n thì phép thử coi như thất bại, còn nếu ngược lại, 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 q.

Vì и có 4 căn bậc hai mod n, nên xác xuất thành công ở mỗi lần thử là Vì, do
đó số trung bình các phép thử để thu được một số p hay q 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, ta có thể xem hai bài toán phân tích số nguyên và
tìm căn bậc hai mod n là khó tương đương.
1.2.4 Bài toán logarit rời rạc
Cho số nguyên tố p, một phần tử nguyên thủy a theo mod p (a là phần
tử nguyên thủy của z*p,tức là bậc của a theo p bằng p - 1) và một phần tử
ß e Z * . Tìm số nguyên JC(0Ta biết rằng cho đến nay chưa có một thuật toán thời gian đa thức nào
cho bài toàn logarit rời rạc.


15

Tóm tắt chương
Trong chương này tôi đã trình bày các vấn đề về cơ sở toán học của
mật mã khóa công khai và một số bài toán khó có liên quan đến mật mã khóa
công khai.
Trong phần cơ sở toán học đã trình bày các vấn đề sau:
- Số học modulo
- Định lí Fermat nhỏ
- Định lí phần dư Trung Hoa
- Hàm ệ Euler
- Kiểm tra tính nguyên tố
- Phân số tiếp diễn
Trong mục các bài toán khó liên quan đến hệ mật mã khóa công khai
tôi đã trình bày các bài toán sau:
- Bài toán phân tích số nguyên thành thừa số nguyên tố
- Bài toán thặng dư bậc hai

- Bài toán tìm căn bậc hai mod n
- Bài toán logarit rời rạc


16

Chương 2 : MỘT SỐ THUẬT TOÁN CỦA HỆ MẪ KHÓA
CÔNG KHAI
Thuật toán mật mã hóa công khai được thiết kế đầu tiên vào những năm
1970 và phát triển rất mạnh mẽ đến ngày nay. Có rất nhiều thuật toán đã được
phát triển và đánh giá cao như RSA, Diffie -Heilman, xác thực và chữ kí điện
tử.
2.1 Hệ mật mã RSA
RSA là mã công khai được sáng tạo bỏi Rivest, Shamir & Adleman ở
MIT (Trường Đại học Công nghệ Massachusetts) vào năm 1977. RSA là mã
công khai được biết đến nhiều nhất và sử dụng rộng rãi nhất hiện nay. Nó dựa
ừên các phép toán lũy thừa ừong trường hữu hạn các số nguyên theo modulo
nguyên tố. Cụ thể, mã hóa hay giải mã là các phép toán luỹ thừa theo modulo
số rất lớn. Việc thám mã, tức là tìm khóa riêng khi biết khóa công khai, dựa
ừên bài toán khó là phân tích một số rất lớn đó ra thừa số nguyên tố. Nếu
không có thông tin gì, thì ta phải lần lượt kiểm ừa tính chia hết của số đó cho
tất cả các số nguyên tố nhỏ hơn căn của nó. Đây là việc làm không khả thi.
Người ta chứng minh được rằng, phép lũy thừa cần 0((log n)3) phép
toán, nên có thể coi lũy thừa là bài toán dễ. cần chú ý rằng ở đây ta sử dụng
các số rất lớn khoảng 1024 bit, tức là cỡ 10350. Tính an toàn dựa vào độ khó
của bài toán phân tích ra thừa số các số lớn. Bài toán phân tích ra thừa số yêu
cầu 0(e l°ỗ n l°ể l°ể n) phép toán, đây là bài toán khó.
Mã công khai RSA gồm hai giai đoạn: khởi tạo khóa RSA và giai đoạn
mã hóa/giải mã.
2.1.1. Đinh

ã nghĩa
0 hê• mất
■ mã RSA
Ta xem xét hệ mật mã RSA là một bộ < N, M,

c, K, E, D >ờ đó:

N = pq- modun công khai, kết quả của hai số nguyên tố khác nhau p, q
M - tập các bản rõ. M =ZN


17

С - tập các bản mã. с = ZN.
K - là một bộ < p, q, e, d >ở đó (d ,ệ (N )) = 1 và ed = 1 mod ậ(N)
Kr =<e, N > là khóa công khai
К =< p, q, d ,N > là khóa bí mật
E - hàm lập mã: E :M ^> c, С - E(m\Kr) = me mod N
D - hàm giải mã: D :C

m = Е (с\кр) = cd mod N

e v ầ d được gọi tương ứng là số mũ công khai và số mũ bí mật. số mũ này
thỏa mãn phương trình ed -1 = kậ (N ), do đó nó được gọi là phương trình
khóa.
2.1.2 Khởi tao khóa RSA
»

Mỗi người sử dụng A tạo một cặp khóa công khai - riêng như sau:
1. Đưa ra hai số nguyên tố lớn p,q.

2. Tính N = p q \ầ ệ{N) = ( p - 1)(q - 1).
3. Chọn e: (e,ệ(N)) = l và tính d = e~l mod ệ(N ). Để chọn được ểthỏa
mã điều kiện đó thì ta chỉ cần chọn một số nguyên tố ế' > max{p,q}.
Chú ý: vai trò của e v à d có thể thay đắỉ cho nhau, tức là cố thể lấy e làm
khóa mật-, khỉ đỏ tỉnh d nghịch đảo của e làm khóa công khai.
4. Mọi người đều có khóa công khai: KU = < e, N > và hoàn toàn giữ bí
mật khóa riêng: KR = .
2.1.3 Sử dụng RSA
Việc truyền tải thông tin được mô tả như sau: giả sử Alice muốn gửi một bản
tin rõ m E M cho Bob. Alice mã hóa m sử dụng khóa công khai của Bob
< e, N > và thu được:
c =m

mod N

(1)


18

Sau đó, cô ấy gửi c cho Bob thông qua một kênh mở. Bod nhận được c và
giải mã nó bằng biệc sử dụng khóa riêng < d, N> của anh ấy:
m' = cd = med = m mod N (2)
Bản rõ thu được như nhau là kết quả của định ly Euler :
med = m1+k(^(N) = m(mfw ỷ = m\k = m mod N
Hệ thống mật mã này dễ dàng để thực hiện, đó là một trong số những lí do
tại sao hệ mã này lại rất phổ biến.
Ví du 6: Bob chọn p -1 1 , q - 41. Ta tính được N - pq = 17.41 = 697 và
ệ( N) = ( p - 1)(q -1 ) = 16.40 = 6 4 0 . Anh ấy chọn 6 = 33 có (33,640) = 1 .


Sau đó Bob tính d = e~l (moáậ(N)) = 33”1mod640 = 97. Bob công bố
« = 697 vàe = 33.
Alice muốn sử dụng khóa công khai của Bob để mã hóa thông điệp gửi cho
Bob:
- Cho mẩu tin M = 207 ( thỏa mãn điều kiện 207 < 697)
- Mã c - 201e mod n = 20733 mod 697 = 156
Alice gửi số 156 cho Bob. Từ số 156 là rất khó để cho bất kì ai xác định được
số 207.
Bob nhận được số 156 và tính M = 156d m odn = 15697 mod 697 = 207.
• Cách sử dụng định lý phần dư Trung Hoa để giải mã cho nhanh như
sau:

Tính 15697modl7 = 397modl7 = (38)12.3modl7 = (-l)12.3modl7 = 3
15697 mod 41 = 3397 mod41 = (334)24.33 mod 41 = (-4 )34.33 mod 41
= 106.33mod41 = 2
Tính 41-1 m odl7 = 7-1 m odl7 = 5 suy ra Cị = 41.5 = 205
17-1 mod 41 = 29 suy ra c2 = 29.17 = 493


19

Vậy M = (493.2 +205.3)m od697 = 207 .
2.1.4 An toàn của RSẢ
Trên thực tế có nhiều cách tấn công khác nhau đối vói mã công khai
RSA như sau:
Tìm kiếm khóa bằng phương pháp vét cạn, phương pháp này không khả
thi vói kích thước đủ lớn của các số hoặc tấn công bằng toán học dựa vào độ
khó việc tính

AObằng cách phân tích N thành hai số nguyên tố p và q hoặc


tìm cách tính trực tiếp ậ ( N ) . Trong quá trình nghiên cứu việc thám mã ngưòi
ta đề xuất kiểu tấn công thời gian ừong khi giải mã, tức là căn cứ vào tốc độ
mã hóa và giải mã các mẩu tin cho trước mà phán đoán các thông tin về khóa.
Cuối cùng có những nghiên cứu tấn công RSA với điều kiện biết trước bản
mã cho trước. Cụ thể như sau:
Bài toán phân tích
Tấn công toán học có 3 dạng:
- Phân tích N = p . q , sau đó tính ệ( N) và d

;

- Tìm n trực tiếp ệ(N)vầ. tính d\
- Tìm d trực tiếp.
Hiện tại tin rằng tất cả các bài toán ừên đều tương đương với bài toán phân
tích một số ra thừa số.
- Có các bước tiến chậm theo thời gian;
- Hiện tại cho rằng RSA 1024 hoặc 2048 là an toàn.
Tấn công thời gian:
- Được phát ừiển vào giữa năm 1990;
- Paul Kocher chỉ ra rằng kẻ thám mã có thể xác định được khóa
riêng nếu theo dõi thời gian máy tính cần để giải mã các bản tin.


×