Tải bản đầy đủ (.docx) (58 trang)

Luận văn thạc sĩ 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 (471.77 KB, 58 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Ị CẨM NGUYÊN

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

LUẬN VĂN THẠC sĩ TOÁN HỌC

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

Hà Nội, 2015


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 trọ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 trong 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


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
trí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


Chương 2 : MỘT số THUẬT TOÁN CỦA HỆ MÃ KHÓA CÔNG KHAI 16
2.1
2.2...........................................................................................................................


5

2.3

MỞ ĐẦU

1. Lí do chon
đề tài *

2.4

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.
2.5

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ã.
2.6

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.
2.7

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 trong 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ử.
2.8

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


6

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
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.
2.9

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:
2.10 “NGHIÊN CỬU MỘT SÔ KĨ THUẬT TẤN CÔNG HỆ MÃ CÔNG
KHAI
2.11



ỦNG DỤNG” cho luận văn tốt nghiệp của
mình.

2. Mục đích nghiên cứu
2.12

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 tuợ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. Phuơ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.


7

6. Đóng góp mới
2.13

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.
2.14
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.


2.15 NỘI DUNG
2.16

Chương 1: TỔNG QUAN VÈ MẶT MÃ KHÓA CÔNG KHAI


2.17

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 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).
2.18

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 Cơ sở lí thuyết của mật mã khóa công khai
1.1.1
2.19

Số hocModulo

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. Định nghĩa 7: 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 = kN. Chúng ta
miêu tả mối quan hệ này bởi kí hiệu sau :
2.20 a=b mod N
2.21


Dễ dàng chứng minh được rằng quan hệ đồng dư là quan hệ tương

đương. Định nghĩa 2: Cho 2 lóp tương đương [JICJ và [y] theo modun N, ta định
nghĩa 2 phép toán sau :
2.22 Phép cộng: H+W=[J:+3’]
2.23
2.24

Phép nhân: [.*][)>] = [jty]

Trong luận văn này tôi sẽ kí hiệu lóp tương đương [JICJ 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.
2.25

Đinh nghĩa 3: Cho số nguyên N > 0 , modulo vòng ZN là tập :
2.26 Z„={[0],[l],...,[iV-l]}

2.27

cùng vói các phép toán trên modulo đã được định nghĩa ở hê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 (raod
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.
2.28

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.
2.29

Đỉnh nghĩa 4: Cho a là một phần tử của ZN. Phần tử nghịch đảo của a

theo raodulo N là số nguyên X thỏa mãn:
2.30 ax = 1 mod N
2.31

phần tử nghịch đảo của a kí hiệu : a~l mod N.

2.32

Điều quan trọng cần lưu ý ở đây là ứf1 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:
2.33 gcd(a,A0 = l.
2.34

Thật vậy, theo thuật toán Euclid mở rộng thì ta có (a, N)=l 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 = 1
mod N <=> ax-l = kN <=> ax-kN = 1 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
moảN.
2.35

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:
2.36
2.37

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 khả thi cho các giá trị e lớn. Sau đây, tôi xin giới thiệu một phưong pháp
khác, hiệu quả hon:
2.38

Thuật toán 1: 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
2.39 m-Ị
2.40 cho: e = y]e¿2‘
2.41

i=0

2. Đặt c = 1
3. form ỉ = m -1 to i = 0
1. c = c2 mod N
2. If e¡ = 1 then c = cb mod N
2.42


Độ phức tạp của thuật toán là 0(m) = ơ(log(e)).

2.43

Định 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:
2.44 ak = 1 mod N
2.45

Đinh nghĩ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:
2.46 X2 = q mod n
1.1.2

Định lí Fermat nhỏ
2.47 ap l mod /7 = 1

2.48

trong đó, 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(ữ, 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ó
2.49 ap =a mod p



2.50

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.
2.51

Vỉ dụl: 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ó

2.55

2.52

27 1 mod 7 = 64 mod 7 = 1

2.53

35”1 mod 5 = 81 mod 5 = 1

2.54

(-2)11“1 modi 1 = 210 modi 1 = 1024modi 1 = 1

Kết quả trê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 tra xem có tính chất nêu trên không, kết luận là p
nguyên tố càng thuyết phục nếu phép thử trên đúng với nhiều lần chọn ngẫu

nhiên các số a.
1.1.3
2.56

Định lí phần dư Trung Hoa • Tính toán theo moduỉo số lớn:
Đe 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ả dị = Amoáníị. Sau đó sử dụng công thức:
2.57 f k \
2.58 A = atct modM
2.59

Trong đó: M =M / m
2.60

2.61

C1 = Mi.(Ml 1 modmi) với \ < i < k

Vỉ du 2.'Tính 178 mod77 . Áp dụng định lý phần dư Trung Hoa, ta coi A =

1718,mj =7,m2 =11 . Khi đó M1 -11 ,M2 -7 và 11^mod7 = 4 1 mod7 = 2, suy ra Cj
—11.2 — 22 7 1 modi 1 = 8, suy ra c2 - 7.8 = 56 a} = 178 mod 7 = (17 mod7)8
mod 7 = 38 mod 7 = 2


2.62

a2 = 178 modl 1 = (17modl l)8 modl 1 = 68 modl 1 = 4 Vậy 178


moáll = (2.22+4.56) mod77 =268mod77 =37 • Giải hệ phương trình
modulo:
2.63
2.64

Cho n số nguyên a1,a2,...,an và Pi,p2’--’Pn đôi một nguyên tố cùng

nhau. Đặt M = Pị và với i= 1, ...,n xác định y(. ,sao cho:
2.65
Ỉ=1
2.66 M
2.67
2.68 Vi

2.69

-1 m°d Vi

Khi đó hệ phương trình
2.70 x = ax
mod Pị x = a2
mod p2
2.71
<
2.72

2.73

Có một nghiệm:
2.75


2.77

x = an mod pn
2.74

M

i= 1

Pi

2>* 0

=
2.76

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

JC = JC0 modM

2.79

Ví dụ 3: Cho X = 2mod3, jc = 3mod5, JC = 9modll

2.80

Ta có: ^.5.11 = lmod3 =^> yv 1 = lmod3 =^> yỉ = 1
2.81 y2.3.11 = lmod5 =^> y2.3 = lmod5 =^> y2 =2

y3.3.5 = lmodll^> y3.4 = lmodll^> y3 =3

1.1.4
2.82

Vì vậy JC = 2(5.11)1+3(3.11)2 +9(3.5)3 =713 =63modl65
Hàm ỘEuler

Đinh nghĩa 7: Cho n >1. ệ(n) đượ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.


2.83

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:
2.84

Nếu (m, n)=l thì ệ(mn) = ệ(m)ệ(n)

- Nếu n = p^pị2....pkr trong đó Pj là các số nguyên tố phân biệt thì:
2.2
2.3
2.5
2.1
2.4
2.9

í,
0
(
,
1>
L 0 2.10
2.6
2.7
2.8
2.12
2.13
2.15
2.11
2.14
l Pl)
l Pr)
2.16 l Plj
2.85
2.86

Đinh lí Euler: Cho n là số nguyên dương, và a là số nguyên tố cùng nhau

với n, thì ta có:
2.87 aậ(n) =1 modn
2.88

Chứng minh: Gọi là các số nguyên dương

nhỏ hơn n và
2.89


nguyên tố cùng nhau với n. Với 2 số phân biệt ỉ,j e

{1,2,...,ộ(rìỶỊ, ta có: (mi,rì) = (mj,rì) = 1 => (ami,n) = (amj,rì) = 1 Mà mUị
*maj mod n, do đó amỊ,am2,...,amip(n) là một hoán vị theo raodn của

Suy ra:

2.90 amlam2...am^n) = mlm2..m^nl mod«
omlm2...mậ{n)aậ{n) =mlm2...mậ{n)moán
2.91

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ố

2.92

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ỏ.


2.93


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 trê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 đó.
2.94

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ỏ hon nó an l mod« = 1 . Như vậy, lấy ngẫu nhiên số a và kiểm tra xem nó có
tính chất trên không. Nếu có thì n có thể là số nguyên tố, nếu cần độ tin cậy lớn
hon, thì ta kiểm tra 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 ừ modn = 1, thì b2i modn = l2 modn = 1
• nếu ừ modn = n -1, thì b2i mod« = (n-1)2 modra = n2
-2n + lmodn = l
2.95

Kiểm tra số n có là số nguyên tố không, ta chỉ cần xét n là lẻ, khi

đó « — 1 là chẵn và biểu diễn nó dạng: n-ì = 2k.q
2.96

Khi đó để tính an 1 , 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.

2.97

* Thuật toán Miller -

Rabin Thuật toán như sau:
2.98 TEST 0n) is:
1. Find integers k, q, k > 0, q odd, so that (n -1) = 2k.q
2. Select a random integer a, 1< a 3. if aq(moán) = lthen return (“maybe prime");
4. for j = 0 to k - 1 do
5. if(a2iq modn = n-1)
2.99

then return(" maybe prime ")


6. return ("composite")
2.100 Các xem xét về mặt xác suất.
2.101

Nếu thuật toán Miller - Rabin trả về số “composite” thì số đó chắc

chắn không là số nguyên tố, vì khi đó số n và so a < n không thoả mãn định lý
Ferma, tức là an l mod n* 1.
2.102

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ốaxá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
2.103 Vỉ du 4\ Sau 10 bước, t = 10, 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
2.104

Phân số tiếp diễn
Sự khai hiể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:
2.105
1
2.106-------------------x = aữ-ị- ị
a
2.107
i+ ị
2.108
a2+ —Ị

2.109 vói hệ số aQ là số nguyên không âm và các hệ số Op...,ữ n,...là nguyên
dương. Neu X là số hữu tỉ thì số các hệ số dị là hữu hạn.


2.110 Ví du 5: — = 0 + —= 0 + —^ = 0 + —^ = 0 + —^— = 0 + —-— = 0 +
—-—
2.111
99 g 2 + i 2 + ị 2 + j^ 2 + ^r 2 + ^
1-r
A-r
2.112

31
31
31
10+ì
2.113 Và được viết ngắn gọn là [0; 2,1,10,3].
2.114 Đinh lí h Choe,N,t,d là số nguyên với gcd(e,N) = 1, gcd(t,d) =1 và
2.115 e t 1
~N~~d <2Ai
2.116 Phân số tối giản J là một ttong những hội tụ của khai hiển liên phân số
của ỷ
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ổ
2.117 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\l -P2 1 —Pkk ’ trong đó Pi là các số
nguyên tố đôi một khác nhau và 0 Cị>\.
2.118 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

2.119 Đinh nghĩa8: Ký hiệu Legendre được định nghĩa như sau:
2.120 Nếu p là số nguyên tố lẻ và a là một số tự nhiên thì kí hiệu là:
Legendre
• 0 nếu p chia hết cho a;
• 1 nếu a là thặng dư bậc hai theo mod p • —1 nếu a không là thặng dư bậc
2 theo mod p
2.121 Đinh nghĩa9: Ký hiệu Jacobi được định nghĩa như sau:



2.122

Giả sử n > 0 là số tự

nhiên lẻ và p®1 P2 2

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

ía
Y'

(aT

„ Y‘
a

2.123 chuẩn của n. Với số nguyên a bất kì, kí hiệu Jacobi
2.124 w {pj \Kp2J VPk)
2.125 trong đó tất cả các kí hiệu bên vế bên phải là kí hiệu Legendre.
2.126 Cho một số nguyên n lẻ là họp số và một số nguyên a e 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 eJn, 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 ữ(/>-i)/2 ^ ị

mo


d p. Như vậy,

trong trường hợp này bài toán thặng dư bậc hai
2.127 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 úm căn bậc hai mod n

2.128 Cho một số nguyên lẻ n là họp số Blum và một số a e 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 X2 = a mod n.


2.129 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 X2 = a mod pvó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 so 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ì n 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à Vi, 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

2.130 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*,tức là bậc của a theo p bằng p-1) và một phần tử
2.131 ß E Z*. Tìm số nguyên Jt(0 < X < p - 2) sao cho ax = ß mod P.
2.132 Ta 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.


2.133 Tóm tắt chương
2.134 Trong chưong 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.
2.135 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
2.136 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
2.137 Chương 2 : MỘT SỐ THUẬT TOÁN CỦA HỆ MÃ KHÓA
2.138 CÔNG KHAI
2.139 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 • •
2.140 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 trên các phép toán lũy thừa trong 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 trê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 tra 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.
2.141 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ó.
2.142 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.143 2.1.1. Định nghĩa hệ mật mã RSA

2.144 Ta xem xét hệ mật mã RSA là một bộ < N, M, c, K, E, D >ở đó:
2.145 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
2.146 c tập các bản mã. c = ZN.
2.147 K- là một bộ < p, q, e, d >ở đó (d,ệ(N)) =1 và ed = 1 mod ệ(N)
2.148 Kr =<e, N > là khóa công
khai Kp =< p, q, d, N > là khóa bí
mật
2.149 E - hàm lập mã: E:M —>c, c = E(m\Kr) = me mod N D - hàm giải
mã: D:C —» M, m = E(cịKp) = cd mod N
2.150

e\ầ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

2.151 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 = pqvầ ệ(N) = (p-1 )(q -1).
3. Chọn e: (e,ệ(N)) = 1 và tính d = e~l mod Ộ(N). Để chọn được ethỏa mã
điều kiện đó thì ta chỉ cần chọn một số nguyên tố e ' > max {p, q}.
2.152

Chú ý: vai trò của evàdcó thể thay đổi cho nhau, tức là có thể lẩy


e làm khóa mật, khi đó 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 = < p, q, d, N >.
2.1.3

Sử dụng RSA

2.153 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:
2.154
2.155

c = me mod N (1)

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:
2.156 m' = cd=med=m mod N (2)
2.157

Bản rõ thu được như nhau là kết quả của định ly Euler :
2.158

med = m1+k^N) = m(m^(N> )k = ml* = 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.
2.159 Ví du 6: Bob chọn p = 11,q = 41. Ta tính được N = pq = 17.41 = 697 và

ậ(N) = (p -l)(q -1) = 16.40 = 640. Anh ấy chọn e = 33 có (33,640) = 1 . Sau đó
Bob tính d = e“1(mod^(A0) = 33“1mod640 = 97. Bob công bố « = 697 \àe = 33.
2.160 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 = 207e mod n = 20733 mod 697 = 156

2.161 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.
2.162 Bob nhận được số 156 và tính M = 156d mod« = 15697 mod697 = 207.
2.163

• Cách sử dụng định lý phần dư Trung Hoa để giải mã cho nhanh

như sau:
2.164 Tính 15697 mod 17 = 397 modl7 = (38)12.3modl7 = (-l)12.3modl7 = 3
15697 mod 41 = 3397 mod41 = (334)24.33mod41 = (-4)24.3 3

2.165

mod 41 = 106.33mod41 = 2
2.166 Tính 411 modl7 = 7 1 modl7 = 5 suy ra q = 41.5 = 205
17 1 mod 41 = 29 suy ra c2 - 29.17 = 493
2.167 Vậy M = (493.2 + 205.3) mod697 = 207 .

2.1.4
2.168

An toàn của RSA
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:
2.169

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 ^(iV)bằ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 trong 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:
2.170 Bài toán phân tích
2.171 Tấn công toán học có 3 dạng:
-

Phân tích N = p.q, sau đó tính ệ(N)wầ d ;
Tìm n trực tiếp ệ(N) và tính d.;

-

Tìm d trực tiếp.



2.172 Hiện tại tin rằng tất cả các bài toán trê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.

2.173 Tấn công thời gian:
-

Được phát triể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.

-

Tấn công thời gian không chỉ áp dụng cho RSA, mà cả với các hệ mã
công khai khác.

-

Tấn công thời gian giống như kẻ cưóp đoán số điện thoại bằng cách quan
sát một người nào đó trong bao lâu chuyển quay điện thoại từ số này sang
số khác.


-

Tấn công bản mã chọn trước

-

RSA có điểm yếu với tấn công bản mã chọn trước;

-

Kẻ tấn công chọn bản mã và đoán bản rõ được giải mã;

-

Chọn bản mã cho việc khám phá RSA, cung cấp thông tin để thám mã;

2.2 Trao đổi khóa Diffie -Heỉỉman
2.2.1

Yêu cầu

2.174 Trao đổi khóa Diffie Heilman là sơ đồ khóa công khai đầu tiên
được đề xuất bởi Diffie và Heilman năm 1976 cùng với khái niệm khóa công
khai. Sau này được biết đến bởi James Ellis (Anh), người đã đề xuất bí mật năm
1970 mô hình tương tự. Đây là phương pháp thực tế trao đổi công khai các khóa
mật đối xứng. Nó thúc đẩy việc nghiên cứu tìm ra các mã khóa công khai. Sơ đồ
được sử dụng trong nhiều sản phẩm thương mại.
2.175 Trao đổi khóa Diffie Heilman là sơ đồ trao đổi khóa mật đối xứng
dùng khóa công khai có các đặc trưng sau:



• Không thể dùng để trao đổi mẩu tin bất kỳ.
• Tuy nhiên nó có thể thiết lập khóa chung.
• Chỉ có hai đối tác biết đến.
• Giá khóa phụ thuộc vào các đối tác (và các thông tin về khóa công khai
và khóa riêng của họ).
• Dựa trên phép toán lũy thừa trong trường hữu hạn (chẳng hạn, modulo
theo số nguyên tố) là bài toán dễ.
• Độ an toàn dựa trên độ khó của bài toán tính logarit rời rạc (giống bài
toán phân tích ra thừa số) là bài toán khó.
2.2.2
-

Khởi tạo Dỉffie - Hellman

Mọi người dùng thỏa thuận tham số chung:

• Số nguyên tố rất lớn p.
• a là căn nguyên thủy của mod q.
-

Mỗi người dùng ( A chẳng hạn) tạo khóa riêng của mình:

• Chọn một số X A làm khóa mật (số) của A: xA• Tính khóa công khai yA của A: yA = aXfí mod q.
• Mỗi ngưòi dùng thông báo công khai khóa yA và giữ bí mật khóa riêng X A
của mình.
2.2.3
Trao đỗi khóa Dịffỉe - Hellman

2.176 Sau bước khỏi tạo khóa, giả sử hai ngưòi sử dụng A và B đã thông
bào công khai cho nhau biết khóa công khai yA và yB. Khi đó mỗi ngưòi sử dụng
A và B có thể tự tính được khóa phiên dùng chung như sau:
• Khóa phiên dùng chung cho hai người sử dụng A, B là KAB
2.177 KAB = aXA'XB mod q
2.178 = yAB modợ (mà B có thể tính)
2.179 = yBA modợ (mà A có thể tính)


• KAB được sử dụng như khóa phiên để mã hóa và giải mã thông điệp trao
đổi giữa A và B.
• A, B lần lượt trao đổi vói nhau, họ có khóa chung KAB cho đến khi họ
chọn khóa mói.
2.180

• Kẻ thám mã cần biết khóa riêng của một trong hai người sử

dụng, do đó phải giải bài toán logarit rời rạc, tìmj[:A từ phương trình
2.181 yA = a*A modợ. Đây là bài toán khó, nó là cơ sở an toàn cho thủ
tục trao đổi khóa Diffie - Hellman.
2.182 Ví du 7: Hai người sử dụng Alice và Bob muốn trao đổi khóa phiên:
2.183

Đồng ý chọn số nguyên tố: q = 353

và a = 3 Chọn các khóa mật ngẫu nhiên:
2.184 A chọn X A = 97; B chọn X B = 233
Tính các khóa công khai của A và B: yA = 397
mod353 = 40 (Alice)
2.185 yB = 3233 mod353 = 248 (Bob)

2.186

Tính khóa phiên chung:

2.187 KAB = yBXA mod353 = 24897 = 160(Alice)
2.188 KAB = yAXa mod353 = 40233 =160(Bob).
2.3 Xác thưc mẩu tin
2.3.1

Xác thưc

mẩu tin Các khái
niệm
2.189 Xác thực mẩu tin (thông điệp) liên quan đến các khía cạnh sau, khi
truyền tin trên mạng:
-

Bảo vệ tính toàn vẹn của mẩu tin: bảo vệ mẩu tin không bị thay đổi hoặc
có các biện pháp phát hiện nếu mẩu tin bị thay đổi trên đường truyền.

-

Kiểm chứng danh tính và nguồn gốc: xem xét mẩu tin có đúng do người


×