1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

58 497 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 58
Dung lượng 86,05 KB

Nội dung

Đ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.. Nó cũng được sử dụng để kiểm tra tính nguyên tố củ

Trang 1

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC sư PHẠM HÀ NỘI 2

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

Trang 2

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

Trang 3

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ưong 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 ứa 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 hai 12

Trang 4

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

Trang 5

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ụngRSA 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

Trang 6

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 trê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- Hellraan 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

Trang 7

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 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ử

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

Trang 8

đó, 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 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 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

Trang 9

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

Trang 10

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

a=b mod N

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

toán sau :

Phép cộng: H+W=[J :+3’]

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

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

Z„={[0],[l], ,[iV-l]}

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

Trang 11

đươ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

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

raodulo 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 : a~ l mod N.

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

gcd(a,A0 = l.

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.

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=b e mod N

Phương pháp trực tiếp để tính c là ta tính toán b e 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:

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ó : (e m _ 1 ,e m _ 2 , ,e 1 ,e 0 ) 2 sao

m-Ị

Trang 12

2 If e¡ = 1 then c = cb mod N

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

Đị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 o N (a), là số nguyên dương k nhỏ nhất sao cho:

Đ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 Xsao cho:

X 2 = q mod n

1.1.2 Định lí Fermat nhỏ

a p l mod /7 = 1

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

Trang 13

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ỉ 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ó

27 1 mod 7 = 64 mod 7 = 1

35”1 mod 5 = 81 mod 5 = 1(-2)11“1 modi 1 = 210 modi 1 = 1024modi 1 = 1Kế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 Đị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:

f k \

Trong đó: M =M / m

C 1 = M i (M l1 modm i ) 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 ,M 2 -7 và 11^mod7 = 4 1 mod7 = 2, suy ra Cj

—11.2 — 22 7 1 modi 1 = 8, suy ra c 2 - 7.8 = 56 a } = 178 mod 7 = (17 mod7)8

mod 7 = 38 mod 7 = 2

Trang 14

a 2 = 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:

Cho n số nguyên a 1 ,a 2 , ,a n và Pi,p 2 ’ ’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:

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

Tính chất:

Trang 15

- 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ì ệ(mn) = ệ(m)ệ(n)

- Nếu n = p^pị 2 p kr trong đó Pj là các số nguyên tố phân biệt thì:

Đ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ó:

a ậ(n) =1 modn

nguyên tố cùng nhau với n Với 2 số phân biệt ỉ,j e {1,2, ,ộ(rìỶỊ, ta có: (m i ,rì) =

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ỏ

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

l Pl) l Plj l Pr)

Trang 16

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 = l 2 modn = 1

• nếu ừ modn = n -1, thì b 2i mod« = (n-1)2 modra = n 2

-2n + lmodn = l

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-ì = 2 k q

Khi đó để tính a n 1 , ta tính a q , 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 0n) is:

1 Find integers k, q, k > 0, q odd, so that (n -1) = 2 k q

2 Select a random integer a, 1< a <n— 1

3 if a q (moán) = lthen return (“maybe prime");

4 for j = 0 to k - 1 do

5 if(a 2iq modn = n-1)

then return(" 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 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ý

Trang 17

Ferma, tức là a n l mod n* 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 = 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 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:

Trang 18

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ổ

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 -P 2 1 —Pk k ’ trong đó Pilà các số nguyên tố đôi một khác nhau và 0 Cị>\.

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 nghĩ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 • —1 nếu a không là thặng dư bậc

2 theo mod p

Đinh nghĩa9: Ký hiệu Jacobi được định nghĩa như sau:

Trang 19

í a

Y'

a

Giả sử n > 0 là số tự nhiên lẻ và p® 1 P 2 2 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

w {pj \ K p 2 J VPk)

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 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 ^ ị mod p 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ố 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

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 Xsao 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 X 2 = a mod p và X 2 = 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 X 2

= 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 X 2 = a mod p

Trang 20

vói p là số nguyên tố Như vậy, bài toán tìm căn bậc hai theo

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 Xvới gcdịx, n)=l và tính a = X 2mod n Dùng thuật toán A cho a để tìm một căn bậchai 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 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

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ử

ß E Z* Tìm số nguyên Jt(0 < X < p - 2) sao cho a x = ß mod P.

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

Trang 21

Tóm tắt chương

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

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

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 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ố

Trang 22

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.

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

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

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

Trang 23

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

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

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à

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)

Trang 24

• Cách sử dụng định lý phần dư Trung Hoa để giải mã cho nhanh như sau: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 mod 41 =

106.33mod41 = 2Tính 411 modl7 = 7 1 modl7 = 5 suy ra q = 41.5 = 205 17 1

mod 41 = 29 suy ra c 2 - 29.17 = 493

Vậy M = (493.2 + 205.3) mod697 = 207

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

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ả thivớ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:

Bài toán phân tích

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

Trang 25

- Đượ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êngnế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ệ

- 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

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

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

Trang 26

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: x A <q.

• Tính khóa công khai y A của A: y A = a Xfí mod q.

• Mỗi ngưòi dùng thông báo công khai khóa y A 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

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 y A và y B 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à K AB

Trang 27

• 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

đổi khóa Diffie - Hellman

Ví du 7: Hai người sử dụng Alice và Bob muốn trao đổi khóa phiên:

K AB = y B XA mod353 = 24897 = 160(Alice)

K AB = y A Xa 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

Xác thực mẩu tin (thông điệp) liên quan đến các khía cạnh sau, khi truyềntin 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 xưng tên gửi không hay một kẻ mạo danh nào khác gửi

- Không chối từ bản gốc: trong trường họp cần thiết, bản thân mẩu tin chứacác thông tin chứng tỏ chỉ có người xưng danh gửi, không một ai khác có thể làm điều đó Như vậy người gửi không thể từ chối hành động gửi, thờigian gửi và nội dung của mẩu tin

Trang 28

2.3.2 Các hàm băm Hash

Muc đích

- Nén mẩu tin bất kỳ về kích thước cố định Và giả thiết là hàm hash là công khai và không dùng khóa Hash chỉ phụ thuộc mẩu tin, còn MAC phụ thuộc thêm cả vào khóa

- Hash được sử dụng để phát hiện thay đổi của mẩu tin Hash có thể sử dụng nhiều cách khác nhau với mẩu tin, Hash thường được kết họp dùng

để tạo chữ ký trên mẩu tin

Tính chất

- Hàm Hash tạo nên dấu vân tay (tức là thông tin đặc trưng) của một tệp,

mẩu tin hay dữ liệu : h = H(M)

- Nén mẩu tin có kích thước tùy ý về dấu vân tay có kích thước cố định Hàm Hash được giả thiết là công khai, mọi người đều biết cách sử dụng

Yêu cầu

- Có thể áp dụng cho mọi mẩu tin có kích thước tùy ý Tuy nhiên phải tạo

đầu ra h có kích thước cố định, thường là 128 bit đến 1024 bit.

- Dễ tính h = H ( M ) cho mọi mẫu tin M, hàm H tính toán nhanh, hiệu quả

phụ thuộc chặt vào mẩu tin M và không tính toán ngược lại

- Cho truớc h rất khó tìm được* sao cho H ( x ) = h Tính chất này gọi là

tính chất một chiều, chiều tìm nghịch ảnh rất khó khăn, tuy chiều tìm ảnh lại dễ dàng

- Cho Xkhông thể tìm được y sao c h o H ( y ) = H ( x ) Đây là tính chất

chống đỡ va chạm yếu, không tìm được mẩu tin có cùng Hash với mẩu tin đã cho

- Và không thể tìm được X, y sao choH ( y ) = H ( x ) Đây gọi là tính

chất chống đỡ va chạm mạnh, đây là yêu cầu cao hơn tính chống đỡ va chạm yếu

Trang 29

Giói thiệu thuật toán Hash an toàn SHA ( Secure Hash Algorithm)

SHA có nguồn gốc từ Viện chuẩn công nghệ quốc gia Hoa Kỳ - NIST & NSA vào năm 1993, sau đó được nâng cấp vào 1995 theo chuẩn US và chuẩn là FIPS 180-1 1995 và Internet RFC3174, được nhắc đến như SHA-1 Nó được sử dụng với sơ đồ chữ ký điện tử DSA (Digital Signature Algorithm)

Thuật toán là SHA dựa trên thiết kế MD4 với một số khác biệt tạo nên giá trị Hash 160 bit Các kết quả nghiên cứu 2005 về an toàn của SHA-1 đề xuất

sử dụng nó trong tương lai

Viện chuẩn công nghệ quốc gia NIST xuất bản bản sửa FIPS 180-2 vào năm 2002, đề nghị bổ sung ba phiên bản mới của SHA: SHA-256, SHA-384, SHA-512 Các phiên bản trên được thiết kế tương thích với việc tăng độ an toàn được cung cấp bởi chuẩn mã nâng cao AES về cấu trúc và chi tiết giống SHA-

1, suy ra việc phân tích cũng tương tự, nhưng mức độ an toàn cao hơn nhiều so

với SHA-1 2.4 Chữ kí điện tử

Chữ ký điện tử của một người sử dụng trên một mẩu tin tại một thời điểmxác định được xem như nén mẩu tin về một kích thước cố định và được xác thực Nó cung cấp các khả năng để

• Kiểm chứng tác giả, ngày và giờ ký;

• Xác thực nội dung mẩu tin;

• Được kiểm chứng bởi bên thứ ba để chống từ chối

Vì vậy việc tạo chữ ký điện tử bao gồm việc sử dụng một hàm băm bản tin và một hàm xác thực có một số khả năng bổ sung như nhận bản băm, thông tin mật của người ký, một số thông tin ngẫu nhiên đặc trưng cho thời điểm ký đểtạo ra chữ ký điện tử đính kèm mẩu tin

Đồng thời thuật toán cũng hỗ trợ người nhận kiểm tra chữ ký điện tử kèmvới mẩu tin đó

2.4.1 Các tính chất của chữ kí điên tử

• Cần phải phụ thuộc vào nội dung ký

Ngày đăng: 17/05/2016, 22:48

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w