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

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

66 441 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 66
Dung lượng 0,98 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

NỘI DUNG Chương 1: TỒNG QUAN VÈ MẬT MÃ KHÓA CÔNG KHAIMậ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 k

Trang 2

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

Trang 3

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

Trang 4

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 a i 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

Trang 5

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

Trang 6

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

Trang 7

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

Trang 8

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

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

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

Đinh m hĩ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 :

Trang 11

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 a x—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

Trang 12

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

Độ 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ỏ

<zp_1 mod p = 1 ừ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ó

a p = a mod p

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í 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 = 64m od7 = 135“1 mod5 = 81mod5 = 1(-2 )11“1 m o d ll = 210 m o d ll = 1024m odl 1 = 1Kế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 = A m odm Sau đó sử dụng công thức:

Cị = M 1.{M11 mod rriị ) với 1 < ỉ < k

Ví du 2:Tính 178 m o á l l Áp dụng định lý phần dư Trung Hoa, ta coi

Trang 14

a2 = 178 m odi 1 = (17 m odi l)8 m odi 1 = 68 m odi 1 = 4

Vậy 178 m od77 = (2.22+ 4.56) m od77 =268 mod 77 =37

• Giải hệ phương trình modulo:

Cho n số nguyên a1,a2, ,an và p l,p 2, ,pn đôi một nguyên tố cùng

y 23 11 = lmcxi5 =^> y23 = lm od5 =^> y2 = 2

3>3.3.5 = 1 mod 11 => ;y3.4 = 1 mod 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.

Trang 15

(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) = r r ụ 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ỏ

Trang 16

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 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 («) 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

Trang 17

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:

Trang 18

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

Trang 19

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

( a r.V 1

Pi

( r. a Y2

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

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 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(0<JC< p - 2) sao cho a x = yỡ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ươ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

Trang 22

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

Trang 23

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 = <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à thu được:

c = m mod N (1)

Trang 24

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:

- 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 15697 modl7 = 397 modl7 = (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

Trang 25

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

- 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

Trang 26

- 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 Diffîe -Heilman

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à Hellman 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 ừong nhiều sản phẩm thương mại

Trao đổi khóa Diffie Heilman là sơ đồ ừao đổ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 để ừao đổ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 ừê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ễ

Trang 27

• Độ an toàn dựa trên độ khó của bài toán tính logadt 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 Diffie - Heilman

- 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ố XA làm khóa mật (số) của A: xA <q

• Tính khóa công khai y A của A: yA = a*A mod ợ

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

XA của mình

2.2.3 Trao đỗi khóa Diffie - Heilman

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ầ.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à

Trang 28

• 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ìm xA từ phương trình

y A = a*A mod q Đây là bài toán khó, nó là cơ sở an toàn cho thủ tục

ừao đổi khóa Diffie - Hellman

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

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

Chọn các khóa mật ngẫu nhiên:

A chọn XA = 97; B chọn XB = 233 Tính các khóa công khai của A và B:

yA = 397 mod353 = 40 (Alice)

= 3233 mod353 = 248 (Bob)Tính khóa phiên chung:

KAH = y BXA mod353 = 24897 = 160 (Alice)

KAB = yAXB mod353 = 40233 = 160(Bob).

- 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

Trang 29

- 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ứa cá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ời gian gửi và nội dung của mẩu tin.

2.3.2 Các hàm băm Hash

Mục đí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 trướ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

Trang 30

- Cho X không thể tìm được y sao c h o //(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 c h o //(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

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 u s 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 ừên thiết kế MD4 với một số khác biệt tạo nên giá ừị 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ó ừong 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 ừê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 ừên một mẩu tin tại một thòi điểm xá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;

Trang 31

• Đượ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ỗ ừợ người nhận kiểm tra chữ ký điện tử kèm vớ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ý.

• Cần sử dụng thông tin đặc trưng duy nhất đối với người gửi

Để chống cả giả mạo và từ chối

• Cần phải tương đối dễ dàng tạo ra

• Dễ dàng đoán nhận và kiểm chứng

• Không thể tính toán giả mạo được

- Với bản tin mới và chữ kí đã có

- Với chữ kí giả mạo cho một bản tin

• Có thể lưu trữ chữ kí điện tử

Chữ kí điện tử RSA: chẳng hạn khi A muốn tạo chữ ký RSA, A băm thôngđiệp, rồi mã hóa nó bằng khóa riêng của A và đính kèm với thông điệp gửicho B Người s muốn kiểm tra thông điệp có toàn vẹn không và có phải gửi

từ A không, sẽ băm thông điệp nhận được, đồng thời giải mã bản băm đính kèm với thông điệp bằng khóa công khai của A Và so sánh hai kết quả nhận được ở bước trước, nếu chứng trùng nhau, thì thông điệp không bị sửa và đứng là do A gửi

2.4.2 Chuẩn chữ kỉ điện tử (DSS)

• Chính phủ Mỹ ủng hộ sơ đồ chữ ký điện tử FIPS 186.

• Sử dụng thuật toán hash SHA

Trang 32

• DSS là chuẩn và DSA là thuật toán.

• Có phương án cải biên Elgamal và Schnorr

• Tạo 320 bit chữ ký và độ an toàn 512-1024 bit an toàn

• An toàn phụ thuộc vào độ khó của tính logarit rời rạc

Sinh khóa DSA

• Chia sẻ giá trị khóa công khai tổng thể (p , q,g):

- Số nguyên tố lớn P = 2L ở đó L = 512đến 1024 bit và là bội

của 64;

- Chọn q là số nguyên tố 160 bit và là ước của p — 1;

- Chọng = hip~l)'q, ở âỏh < p - l , h (p~l)/q m odp > 1;

• Người sử dụng chọn khóa riêng và tính khóa công khai

- Chọn khóa riêng: x < q

- Tính khóa công khai: y = g x m odp

Tạo chữ ký DSA

Để ký mẩu tin M người gửi trước hết cần:

• Sinh khóa chữ ký ngẫu nhiên k: k < p , k phải là số ngẫu nhiên, được

xóa sau khi dùng và không bao giờ dùng lại;

Trang 33

2.5 Tính an toàn của các Stf đồ khóa công khai

Cũng giống như khóa riêng việc tìm kiếm vét cạn luôn luôn có thể, tức

là khi biết một ừong hai khóa và thuật toán mã hóa về nguyên tắc ta có thể dò tìm khóa thứ hai bằng cách tính toán các giá trị liên quan Nói chung khối

Ngày đăng: 17/05/2016, 12:46

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w