Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 41 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
41
Dung lượng
0,92 MB
Nội dung
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC VINH PHÙNG MINH ĐỨC MỤC LỤC MỞ ĐẦU ……………………………………………………… .… 3 CHƯƠNG 1 Một số kiến thức cơ sở…………………………5 1.1. Thuật toán và độ phức tạp của thuật toán…………………… 5 1.2. Phép tính đồng dư và các vấn đề có liên quan…………….… 7 1.3. Liên phân số……………………………………………….…13 CHƯƠNG 2 Một sốứngdụngcủasốhọctronglýthuyếtmậtmã 14 2.1. Nguyên tắc chung và một số hệ mã đơn giản . 14 2.2. Một số hệ mã mũ thông dụng 21 2.3. Phân tích ra thừa số nguyên tố . 29 KẾT LUẬN 1 TÀI LIỆU THAM KHẢO 2 MỞ ĐẦU Cho đến những năm 70 của thế kỷ XX, Sốhọc vẫn được xem là một trong những ngành lýthuyết thuần túy nhất của toán học. Thậm chí, có nhà toán học cho rằng vẻ đẹp củaSốhọc có được là nhờ sự xa rời thực tiễn của nó (G. H. Hardy, A Mathematician's Apology, Cambridge University Press, 1940). Nhưng ngày nay, quan niệm đó đã thay đổi, sau khi Sốhọc được áp dụng để xây dựng những hệ mậtmã khóa công khai. Mậtmã đã tồn tại từ hàng nghìn năm nhưng nó đã thường được coi là một môn nghệ thuật hơn là một ngành khoa học. Bước ngoặt mới chỉ đến từ hơn 30 năm nay, từ khi khái niệm ban đầu về mã hóa khóa công khai được Diffie- Helmann đề xuất năm 1976. Liên tiếp sau đó, những công cụ ngày càng mạnh củalýthuyếtsố đã dần thâm nhập vào mậtmã và góp phần đưa mậtmã trở thành một ngành khoa học. Học viện Công nghệ Massachusetts (Massachusetts Institute of Technology), viết tắt là MIT là học viện nghiên cứu và giáo dục ở thành phố Cambridge, Massachusetts, Hoa Kỳ. Trong các lĩnh vực tiềm năng nhất của MIT là thực hành trí tuệ nhân tạo và khoa học máy tính. Năm 1978, ba nhà khoa họccủa MIT là Rivest, Shamir và Adleman đề xuất một hệ mã, mà nay được gọi là RSA. Độ an toàn của hệ mã này được dựa trên độ khó của việc phân tích một số nguyên đủ lớn ra thừa số nguyên tố. Liên tiếp sau đó, các bài toán củalýthuyếtsố như bài toán lôgarít rời rạc và tìm thặng dư cấp 2 cũng đã được sử dụng để xây dựng các hệ mã Elgamal và Rabin. Ngược lại, với sự sử dụng rộng rãi hệ mã RSA, Elgamal trong thực tế, việc nghiên cứu các lời giải hiệu quả cho các bài toán phân tích thành thừa số nguyên tố và lôgarit rời rạc trở nên rất được quan tâm tronglýthuyết số. Nhờ đó, các lýthuyết mới củaSố học, đặc biệt là Sốhọc thuật toán, tìm thấy những ứngdụng trực tiếp vào thực tiễn. 3 Như vậy, lýthuyếtsố đã hiện hữu trong các hoạt động thực tiễn: trao đổi trực tuyến giữa các ngân hàng, thanh toán qua thẻ ATM, truyền phát tín hiệu vệ tinh, xem phim tự chọn trên truyền hình . Bên cạnh đó, với cây cầu bắc tới lýthuyết số, từ những phát kiến ban đầu, mậtmã trở thành một ngành khoa học mới. Ngành khoa họcmậtmã không chỉ nghiên cứu sự bảo mậtcủa các sơ đồ mã hóa, mà còn mở rộng đến những ứngdụng thực tiễn như chữ ký điện tử, sơ đồ định danh . rồi dần dần đưa đến những khái niệm quan trọngcủa ngành khoa học máy tính và rộng hơn là của Toán học như khái niệm về các chứng minh tương tác (interactives proofs), chứng minh không để lộ tri thức (zero-knowledge proofs) và gần đây là các chứng minh kiểm tra được một cách xác suất bằng cách chỉ kiểm thử một hằng số các bít thông tin trên bản chứng minh (probabilistic checkable proofs). Mục đích của bản luận văn này là nhằm trình bày cơ sởcủa việc áp dụnglýthuyếtsố vào mật mã, đặc biệt là mã hóa RSA và một số thuật toán phân tích số nguyên đang sử dụngtrong thám 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ậtmã hóa). Luận văn gồm hai chương. Chương 1 trình bày các kiến thức về: thuật toán, độ phức tạp của thuật toán, đồng dư và liên phân số. Chương 2 trình bày một số hệ mã đơn giản, hệ mã thông dụng, hệ mã RSA và ứngdụngcủaSốhọc vào các hệ mã khóa công khai như phân tích Fermat, phân tích sử dụng liên phân số, phương pháp phân tích của Pollard. Từ đó viết một số thủ tục lập mã và giải mã trên Maple. Luận văn này được hoàn thành dưới sự hướng dẫn tận tình và chu đáo của PGS.TS. Nguyễn Thành Quang. Nhân dịp này tôi xin bày tỏ lòng kính trọng và biết ơn sâu sắc tới thầy giáo hướng dẫn khoa học, người đã dành nhiều thời gian và công sức cho tôi để hoàn thành luận văn này. 4 Nhân dịp này tôi xin bày tỏ lòng biết ơn và gửi lời cảm ơn đến các thầy cô giáo thuộc chuyên ngành Đại số và Lýthuyết số, Khoa Toán, Phòng Đào tạo Sau Đại học – Trường Đại học Vinh, những người đã tận tình giảng dạy và tạo mọi điều kiện thuận lợi cho tôi hoàn thành khóa học. Tôi cũng xin trân trọng cảm ơn tới Trường Đại học Sài Gòn đã tạo mọi điều kiện tổ chức cho chúng tôi hoàn thành khóa học. Tôi xin chân thành cảm ơn bạn bè, đồng nghiệp, gia đình đã động viên và giúp đỡ tôi trong suốt khóa học. Tôi xin gửi lời cảm ơn đến Ban giám hiệu Trường Trung học Cơ sở Lạc Hồng, và các thầy cô đồng nghiệp, Phòng Giáo dục - Đào tạo Quận 10, TP. Hồ Chí Minh đã tạo điều kiện thuận lợi để tôi hoàn thành nhiệm vụ học tập. Luận văn còn nhiều thiếu sót, tác giả mong nhận được sự đóng góp của thầy cô giáo và các đồng nghiệp. TÁC GIẢ 5 CHƯƠNG 1 MỘT SỐ KIẾN THỨC CƠ SỞ 1.1 Thuật toán và độ phức tạp của thuật toán 1.1.1 Khái niệm thuật toán Có thể định nghĩa thuật toán theo nhiều cách khác nhau, ở đây chúng tôi không trình bày chặt chẽ về thuật toán, mà sẽ hiểu khái niệm thuật toán theo một cách thông thường nhất. - Thuật toán là một quy tắc để với những dữ liệu ban đầu đã cho, ta tìm được lời giải sau một thời gian hữu hạn. Có thể nói rằng, một thuật toán cần phải thỏa mãn các yêu cầu sau đây: - Tính hữu hạn. Thuật toán cần phải kết thúc sau một số hữu hạn bước. Khi thuật toán ngừng làm việc, ta phải thu được câu trả lời cho vấn đề đặt ra. - Tính xác định. Tại mỗi bước, thuật toán cần phải xác định nghĩa là chỉ rõ ra việc cần làm. Ngoài ra, ta còn phải xét đến tính hiệu quả của thuật toán. Có rất nhiều thuật toán, về mặt lí thuyết là kết thúc sau hữu hạn bước, tuy nhiên thời gian "hữu hạn" đó vượt quá khả năng làm việc của chúng ta. Những thuật toán như vậy sẽ không được xét ở đây vì chúng tôi chỉ quan tâm những thuật toán có thể sử dụng thật sự trên máy tính. Cũng do mục tiêu nói trên, chúng ta cần phải chú ý đến độ phức tạp của thuật toán. Độ phức tạp của thuật toán có thể đo bằng không gian, tức là dung lượng bộ nhớ của máy tính cần thiết để thực hiện thuật toán, và bằng thời gian, tức là thời gian máy tính thực hiện thuật toán này. Trong luận văn này, khi nói đến độ phức tạp của thuật toán, chúng ta luôn hiểu độ phức tạp thời gian. Dĩ nhiên, thời gian làm việc của máy tính khi chạy một thuật toán nào đó không chỉ phụ thuộc vào thuật toán mà còn phụ thuộc vào máy tính đang được 6 sử dụng. Vì thế, để có một tiêu chuẩn chung, ta sẽ đo độ phức tạp của một thuật toán bằng số các phép tính phải làm khi thực hiện thuật toán. Nhưng điều này lại phụ thuộc vào độ lớn của dữ kiện đầu vào. Trong những ứngdụng thực tiễn, ta chỉ cần ước lượng thật tốt độ phức tạp này. Để làm điều đó, ta dùng khái niệm bậc O-lớn. 1.1.2. Độ phức tạp của thuật toán. Giả sử f(n) và g(n) là hai hàm xác định trên tập hợp các số nguyên dương. Ta nói, f(n) có bậc O-lớn của g(n) và viết f(n) = O(g(n)) hoặc là f = O(g), nếu tồn tại một hằng số C > 0 sao cho với n đủ lớn, các hàm f(n) và g(n) đều dương đồng thời thỏa mãn: f(n) < Cg(n). Ví dụ: Cho hai đa thức 0 ( ) ,( 0, 1,2, .) k i i k i f n a n a k = = > = ∑ và ( ) k g n n= xác định trên tập số nguyên dương. Khi đó, ( )f O g = vì tồn tại số dương 1 k i i C a = = ∑ để với n đủ lớn thì ( ), ( )f n g n đều dương và ( ) . ( )f n C g n < . 1.1.3. Tính chất của bậc O-lớn. Ta có những tính chất sau đây: 1) Nếu 1 ( )f O g = và 2 ( )f O g = thì 1 2 ( )f f O g+ = . 2) Nếu 1 1 ( )f O g = và 2 2 ( )f O g = thì 1 2 1 2 ( )f f O g g = . 3) Nếu tồn tại giới hạn hữu hạn ( ) lim ( ) n f n g n →∞ thì ( )f O g = . 4) Với mọi 0 > ò , ta luôn có ( )logn O n = ò . 1.1.4. Định nghĩa. Một thuật toán được gọi là có độ phức tạp đa thức nếu số các phép tính cần thiết khi thực hiện thuật toán đó không vượt quá ( ) d O log n , trong đó n là độ lớn của đầu vào và d là số nguyên dương nào đó. Nói cách khác, nếu đầu vào là các số k-bit thì thời gian thực hiện thuật toán là ( ) d O k , tức là tương đương với một đa thức của k. 7 1.2 Phép tính đồng dư và các vấn đề liên quan 1.2.1. Định nghĩa. Số nguyên tố là số nguyên lớn hơn 1, không chia hết cho số nguyên dương nào ngoài 1 và chính nó. Số nguyên lớn hơn 1 không phải là số nguyên tố được gọi là hợp số. Định lý sau đây củaSốhọc là một cơ sở quan trọngcủa thuật toán tìm các số nguyên tố không vượt quá một số tự nhiên cho trước. 1.2.2. Định lí. Mọi hợp số n đều có ước nguyên tố nhỏ hơn n . Chứng minh. Thật vậy, vì n là hợp số nên ta gọi a và b là các ước thật sự của n. Khi đó n ab = , trong đó 1 .a b n < ≤ < Rõ ràng ta phải có a hoặc b không vượt quá ,n giả sử đó là a. Khi đó, ước nguyên tố của a cũng đồng thời là ước nguyên tố của n. Từ Định lí 1.2.1.2, ta có thuật toán tìm ra các số nguyên tố nhỏ hơn hoặc bằng số nguyên dương n cho trước. 1.2.3. Thuật toán sàng các số nguyên tố của Eratosthenes. Trước tiên, ta viết dãy các số tự nhiên từ 1 đến n. Trong dãy đó, ta gạch bỏ số 1 vì nó không phải là số nguyên tố. Số nguyên tố đầu tiên của dãy là số 2. Tiếp theo đó ta gạch khỏi dãy số tất cả những số chia hết cho 2. Số đầu tiên không chia hết cho 2 là 3: đó chính là số nguyên tố. Ta lại gạch khỏi dãy số còn lại những số nào không chia hết cho 3. Ta thu được số nguyên tố tiếp theo là 5. Tiếp tục như thế, ta gạch khỏi dãy những số chia hết cho mọi số nguyên tố bé hơn n . Sàng Eratosthenes mặc dù cho ta thuật toán xác định mọi số nguyên tố không vượt quá một số cho trước nhưng lại rất ít được sử dụng để xác định xem một số đã cho có phải là số nguyên tố hay không. Nguyên nhân là vì thuật toán có độ phức tạp khá lớn: để kiểm tra n, ta phải thực hiện phép chia cho tất cả các số nguyên tố không vượt quá n . 8 1.2.4. Định lí cơ bản củaSố học. Mọi số nguyên lớn hơn 1 đều phân tích được một cách duy nhất thành tích các số nguyên tố, trong đó các thừa số được viết với thứ tự không giảm. Chứng minh. Ta chứng minh mọi số có thể viết dưới dạng tích của một hoặc nhiều số nguyên tố. Trước hết, mỗi số nguyên tố là tích của một thừa số là chính nó. Giả sử rằng có các số nguyên dương lớn hơn 1 không biểu diễn được thành tích các số nguyên tố. Khi đó gọi n là số nhỏ nhất trong các số đó. Số n ≠1 và là hợp số. Do đó n = ab, trong đó cả a và b là các số nguyên dương nhỏ hơn n. Vì n là số nhỏ nhất không thể phân tích thành tích các số nguyên tố nên cả a và b phân tích được thành tích các số nguyên tố. Nhưng khi đó n = ab lại phân tích được. Điều này mâu thuẫn với giả thiết. Ta giả sử rằng tồn tại số nguyên lớn hơn 1 mà có hai cách biểu diễn dưới dạng tích các thừa số nguyên tố. Khi đó giả sử s là số nhỏ nhất trong các số như vậy, tức là s = p 1 p 2 .p m = q 1 q 2 .q n với p i ,q j là các số nguyên tố. Do p 1 chia hết q 1 q 2 .q n suy ra tồn tại q j mà p 1 chia hết q j . Từ đó ta có p i = q j , bỏ hai số nguyên tố ra khỏi đẳng thức ta được hai vế là hai khai triển khác nhau củasố s chia cho p 1 , mà theo giả thuyết s là số nhỏ nhất như vậy, mâu thuẩn này chứng tỏ giả thiết là sai. vậy mỗi số nguyên lớn hơn một chỉ có một biểu diễn duy nhất dưới dạng tích thừa số nguyên tố (không kể đến thứ tự các thừa số). ▄ 1.2.5. Thuật toán Euclid. Thuật toán cho phép xác định ước chung lớn nhất của hai số nguyên nguyên dương (ƯCLN). Ta xét 3 trường hợp sau: a) Nếu b là ước của a thì (a, b) = b. b) Nếu a = bq + r thì (a, b) = (b, r). c) Trường hợp tổng quát với a, b là các số nguyên dương (giả thiết a > b): Ta thực hiện liên tiếp các phép chia sau đây và vì bất đẳng thức sau xảy ra cho nên thuật chia là dừng lại sau hữu hạn bước (không quá a bước): 0 1 1 1 0 m m m a b r r r r r − + > > > > > > > =L . 9 − − − − + + = + < ≤ − = + < ≤ − = + < ≤ − = + < ≤ − = = M 0 0 0 0 1 1 1 0 0 1 2 2 2 1 2 1 1 1 1 1 , 0 1 , 0 1 , 0 1 , 0 1 , 0. m m m m k k m m m m a bq r r b b r q r r r r r q r r r r r q r r r r r q r Ta có UCLN của a, b là m d r= . 1.2.6. Thuật toán Euclide mở rộng. Thuật toán này sử dụng để giải phương trình vô định nguyên ax + by = c, trong đó a, b,c là các hệ số nguyên, x, y là các ẩn nhận giá trị nguyên. Điều kiện cần và đủ để phương trình này có nghiệm (nguyên) là UCLN của a và b là ước của c. Khẳng định này dựa trên một mệnh đề sau: Nếu d = (a, b) thì tồn tại các số nguyên x, y sao cho ax + by = d . Giải thuật Euclid mở rộng kết hợp quá trình tìm ƯCLN cua a, b trong thuật toán Euclid với việc tìm một cặp số x, y thoả mãn phương trình Diophante. Giả sử cho hai số tự nhiên a, b, ngoài ra a > b > 0. Đặt r o = a,r 1 = b, chia r 0 cho r 1 được số dư r 2 . Nếu r 2 = 0 thì dừng, nếu r 2 khác không, chia r 1 cho r 2 được số dư r 3 , .Vì dãy các r i là giảm thực sự nên sau hữu hạn bước ta được số dư r m = 0. r o = q 1 r 1 + r 2 ,0 < r 2 < r 1 ; r 1 = q 2 r 2 + r 3 ,0 < r 3 < r 2 ; r m − 1 = q m r m + r m + 1 0 < r m + 1 < r m r m = q m + 1 r m + 1 Trong đó số dư cuối cùng khác 0 là r m + 1 = d. Bài toán đặt ra là tìm x, y sao cho ax + by = r m + 1 = d. Để làm điều này, ta tìm x, y theo công thức truy hồi, nghĩa là sẽ tìm x i và y i sao cho a x i + b y i = r i với i = 0,1, Ta có a.1 + b.0 = a = r o và a.0 + b.1 = b = r 1 , nghĩa là : x o = 1, x 1 = 0 và y o = 0, y 1 = 1. (1) 10