Một số ứng dụng của số học trong lý thuyết mật mã

48 1.6K 2
Tài liệu đã được kiểm tra trùng lặp
Một số ứng dụng của số học trong lý thuyết mật mã

Đ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

Một số ứng dụng của số học trong lý thuyết mật mã

Trang 1

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.Lrc-tnu.edu.vn

ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC KHOA HỌC

****************

VŨ THỊ THANH HẬU

MỘT SỐ ỨNG DỤNG CỦA SỐ HỌC TRONG LÝ THUYẾT MẬT MÃ

LUẬN VĂN THẠC SĨ TOÁN HỌC

Thái Nguyên, năm 2009

Trang 2

ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC KHOA HỌC

****************

VŨ THỊ THANH HẬU

MỘT SỐ ỨNG DỤNG CỦA SỐ HỌC TRONG LÝ THUYẾT MẬT MÃ

Chuyên ngành : Phương pháp toán sơ cấp

Mã số : 60.46.40

LUẬN VĂN THẠC SĨ KHOA HỌC TOÁN HỌC

Thái Nguyên, năm 2009

Trang 3

Mục lục

Lời nói đầu 2

1 Một số kiến thức cơ bản51.1 Thuật toán và độ phức tạp của thuật toán 5

1.1.1 Khái niệm: 5

1.1.2 Độ phức tạp của thuật toán 7

1.2 Phép tính đồng dư và các vấn đề liên quan 10

2.2.1 Hệ mã mũ của Pohligvà Hellman 26

2.2.2 Giao thức trao đổi chìa khoá của Diffie - Hellman 29

Trang 4

Lời cảm ơn

Luận văn này được hoàn thành dưới sự hướng dẫn tận tìnhvà nghiêm khắc của GS.TSKH Hà Huy Khoái 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 GS.TSKH.Hà Huy Khoái, người Thầy mẫu mực đã giành nhiều thời gianvà công sức để hướng dẫn tôi hoàn thành luận văn này.

Tôi xin chân thành cảm ơn Trung tâm Đào tạo sau đại học,Phòng Đại số, Trường Đại học Khoa học - Đại học Thái Nguyên,Sở Giáo dục và Đào tạo tỉnh Quảng Ninh, Trung tâm Hướngnghiệp và Giáo dục thường xuyên tỉnh Quảng Ninh, đã tạo điềukiện thuận lợi để tôi hoàn thành luận văn này.

Nhân dịp này, tôi xin bày tỏ lòng biết ơn tới các Giáo sư, Phógiáo sư, Tiến sĩ của Viện Toán học và Trường Đại học Khoa học- Đại học Thái Nguyên, những người thầy đã tận tình giảng dạyvà tạo mọi điều kiện thuận lợi cho tôi hoàn thành khoá học Tôicũng xin cảm ơn bạn bè và gia đình đã động viên và giúp đỡ tôitrong suốt quá trình học tập tại Trường Đại học Khoa học - Đạihọc Thái Nguyên.

Trang 5

Lời nói đầu

Trước những năm 70 của thế kỷ XX, Số học thường được xem là mộttrong những ngành toán học thuần tuý, chỉ có ý nghĩa lý thuyết Đối tượngnghiên cứu của Số học là các quy luật trong tập hợp số, giả thuyết lớn tồn tạitrong Số học là các giả thuyết số nguyên tố Thậm chí, có những nhà toánhọc cho rằng vẻ đẹp của Số học có được nhờ sự xa rời thực tiễn của nó! (theocâu nói của G.H Hardy, A Mathematician's Apology, 1940).

Ngày nay, thật khó đồng ý với Hardy, khi mà vẻ đẹp của Số học khôngchỉ thể hiện trong ý nghĩa "thuần tuý" của nó, mà cả trong những ứng dụngbất ngờ vào thực tiễn Cách đây khoảng 30 năm, khó có thể hình dung đượcrằng, một số kết quả lý thuyết số trong Số học lại làm nên một cuộc cáchmạng trong bảo mật thông tin Cơ sở của những ứng dụng đó lại chính là Sốhọc thuật toán, lĩnh vực nghiên cứu các thuật toán trong Số học.

Có thể nói, mật mã đã có từ thời cổ đại Người đầu tiên áp dụng mật mãmột cách có hệ thống để đảm bảo bí mật thông tin quân sự là nhà quân sựthiên tài của người La Mã cổ đại, Julius Caesar Hệ mã cổ nhất là hệ mãCeasar, thông qua phép mã thay thế mỗi ký tự thay bởi ký tự đứng ngay saunó 3 vị trí (hoặc k vị trí).

Vào những năm đầu thế kỷ XX hệ mã mới có tính bảo mật cao hơn đượcxuất hiện với sự ra đời của hệ mã British Playfair năm 1910, đó là mã khốithông qua phép thay thế theo chìa Song song với quá trình phát triển củalịch sử và nhu cầu về bảo mật thông tin trên nhiều lĩnh vực đã thúc đẩy cáchệ mã mới ra đời có tính bảo mật ngày càng cao, như hệ mã mũ của Pohligvà Hellman (năm 1978), tiếp theo là giao thức trao đổi chìa khoá của Diffie-Hellman, sau nữa là hệ mã ElGamal Một nét chung của hai hệ mã trên là

Trang 6

cho phép công bố công khai một phần thông tin cho việc lập mã gọi là mãhoá với khoá công khai, một mô hình hoàn hảo cho hệ mã kiểu này đượccông bố bởi Rivest, Shamir và Adleman vào năm 1978, mang tên RSA Hệmã RSA vẫn đang là một thách thức lớn đối với những nhà thám mã.

Mục đích của bản luận văn này nhằm trình bày cơ sở của việc áp dụng lýthuyết số vào mật mã, đặc biệt là mã hoá RSA và một số thuật toán phân tíchsố nguyên đang sử dụng trong thám mã Luận văn gồm hai chương ChươngI trình bày các kiến thức chuẩn bị phục vụ cho chương sau như các khái niệmvề thuật toán, độ phức tạp của thuật toán, các kiến thức về đồng dư và phânsố liên tục Chương II trình bày một số hệ mã đơn giản, hệ mã thông dụng,hệ mã RSA và ứng dụng của số học vào mật mã khoá công khai như phântích Fecmat, phân tích Fecmat mở rộng, phân tích sử dụng phân số liên tục,phân tích dùng phương pháp của Pollard.

Từ đó viết một số thủ tục phân tích số, thủ tục lập mã và giải mã chạytrên Maple.

Trang 7

Chương 1

Một số kiến thức cơ bản

Trong chương này chúng tôi trình bày một số kiến thức chuẩn bị Tiết 1.1nhắc lại các khái niệm về thuật toán và độ phức tạp của thuật toán Đồngthời để tiện theo dõi, chúng tôi trình bày trong tiết 1.2 một số kiến thức vềphép tính đồng dư và các vấn đề liên quan, trong tiết 1.3 là một số kiến thứcvề phân số liên tục.

1.1 Thuật toán và độ phức tạp của thuật toán

1.1.1 Khái niệm:

Có thể định nghĩa thuật toán theo nhiều cách khác nhau Trong luận văn này,chúng ta có thể hiểu khái niệm thuật toán theo cách thông thường nhất.Thuật toán là một qui tắc để với những dữ kiện ban đầu đã cho, tìm được lờigiải của bài toán được xét sau một khoảng thời gian hữu hạn.

Để minh họa cách ghi một thuật toán, cũng như tìm hiểu các yêu cầuđặt ra cho thuật toán, ta xét một ví dụ cụ thể sau: Cho n số tự nhiênX[1], X[2], , X[n] Tìm m và j sao cho j là số lớn nhất thoả mãn:

m = X[j] = max

Bài toán này cũng có nghĩa là tìm cực đại của các số đã cho và tìm chỉ sốlớn nhất trong các số đạt cực đại Vì cần tìm chỉ số lớn nhất trong các số

Trang 8

đạt cực đại, ta xuất phát từ giá trị X[n] Trong bước thứ nhất ta tạm thờixem m = X[n] và j = n Tiếp theo ta so sánh X[n] và X[n − 1] Trongtrường hợp n − 1 = 0, tức n = 1, thuật toán kết thúc Nếu X[n − 1] ≤ X[n],ta chuyển sang so sánh X[n] với X[n − 2] Trong trường hợp ngược lại,X[n − 1] chính là số cực đại trong hai số đã xét (hai số X[n] và X[n − 1]).Khi đó ta phải thay đổi m = X[n − 1] và j = n − 1 Với cách làm như trênta luôn nhận được số cực đại trong những số đã xét, và cũng nhận được chỉsố lớn nhất j trong các chỉ số của các số đạt cực đại đó Bước tiếp theo đó làso sánh nó với số đứng ngay trước những số đã xét, hoặc kết thúc thuật toántrong trường hợp không còn số nào đứng trước nó.

Bây giờ ta có thể ghi lại thuật toán trên như sau :Thuật toán tìm cực đại.

M1 (Bước xuất phát) Đặt j ←− n, k ←− n − 1, m ←− X[n].M2 (Đã kiểm tra xong?) Nếu k = 0, thuật toán kết thúc.M3 (So sánh) Nếu X[k] ≤ m, chuyển sang M5.

M4 (Thay đổi m) Đặt j ←− k, m ←− X[k] (ta hiểu m tạm thời đang làcực đại).

M5 (Giảm k) Đặt k ←− k − 1, quay về M2.

Trong bảng ghi trên đây, dấu ←− dùng để chỉ một phép toán quan trọng,đó là phép thay chỗ Trên đây ta đã ghi một thuật toán bằng ngôn ngữ thôngthường Trong trường hợp thuật toán được viết bằng ngôn ngữ làm việc củamáy tính, ta có một chương trình.

Trong thuật toán, có những số liệu ban đầu được cho trước khi thuật toánbắt đầu làm việc Ta gọi chúng là đầu vào (input) Chẳng hạn, trong thuậttoán tìm cực đại trên, đầu vào chính là các số X[1], X[2], , X[n].

Một thuật toán có thể có nhiều đầu ra (output) Trong thuật toán tìm cựcđại trên, đầu ra là các số m và j.

Có thể thấy rằng thuật toán tìm cực đại mô tả trên thoả mãn những yêucầu của một thuật toán nói chung, đó là tính hữu hạn và tính chính xác.

Trang 9

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 Khithuật toán ngừng làm việc, ta phải thu được câu trả lời cho vấn đề đặt ra.Thuật toán tìm cực đại mô tả trên đây rõ ràng thoả mãn điều kiện này vì ởmỗi bước ta chuyển được từ việc xét một số sang số đứng trước nó, và số cácsố cần xét là hữu hạn.

Tính xác định.Ơ mỗi bước, thuật toán cần phải xác định, nghĩa là chỉ rõviệc cần làm Thuật toán tìm cực đại ở trên chỉ ra rõ ràng những việc cầnlàm của mỗi bước.

Ngoài những yếu tố kể trên, ta còn phải xét đến tính hiệu quả của thuậttoán Có rất nhiều thuật toán về mặt lý thuyết là kết thúc sau một số hữuhạn bước, tuy nhiên thời gian làm việc đó lại vượt quá khả năng làm việccủa chúng ta Vì thế, ta còn phải chú ý đến cái gọi là độ phức tạp củathuậ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à đobằng thời gian, tức là thời gian máy tính làm việc Trong luận văn này, khinói đến độ phức tạp của thuật toán, ta luôn luôn hiểu là độ phức tạp thời gian.

1.1.2 Độ phức tạp của thuật toán

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 sử dụngđể chạy thuật toán đó Vì thế, để có một tiêu chuẩn chung, ta sẽ đo độ phứctạ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ậttoán Khi tiến hành cùng một thuật toán, số các phép tính phải làm khi thựchiện còn phụ thuộc vào cỡ của bài toán, tức là phụ thuộc vào độ lớn của đầuvào Vì thế độ phức tạp của thuật toán sẽ là một hàm số của độ lớn của đầuvào Trong những ứng dụng thực tiễn, chúng ta không cần biết chính xáchàm này, mà chỉ cần biết cỡ của chúng, tức là cần có một ước lượng đủ tốtcủa chúng.

Trang 10

Khi làm việc, máy tính thường ghi các chữ số bằng những bóng đèn sáng,tắt: bóng đèn sáng chỉ số 1, bóng đèn tắt chỉ số 0 Vì thế thuận tiện nhất làdùng hệ đếm cơ số 2, trong đó để biểu diễn một số, ta chỉ cần dùng hai kíhiệu 0 và 1 Một kí hiệu 0 và 1 được gọi là một bít Một số nguyên n biểudiễn bởi k chữ số 1 và chữ số 0 được gọi là số k-bít Trong mục này và cácmục tiếp theo ta sẽ thấy rằng số tự nhiên n sẽ là một số k-bít với k = [log2n](dấu [ ] là kí hiệu phần nguyên của một số).

Độ phức tạp của thuật toán được đo bằng số các phép tính bít.

Phép tính bít là một phép tính lôgic hay số học thực hiện trên các số một bít0 và 1

Để ước lượng độ phức tạp của thuật toán ta dùng khái niệm bậc O-lớn.Định nghĩa 1:

Giả sử f(n) và g(n) là hai hàm xác định trên tập hợp các số nguyêndươ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ặcf = O(g), nếu tồn tại một số C > 0, sao cho n đủ lớn, các hàm f(n) vàg(n) đều dương, đồng thời f(n) < C.g(n).

f (n)g(n)thì f(n) = O(g(n))

Định nghĩa 2:

Một thuật toán được gọi là có độ phức tạp đa thức hoặc có thời gian đathứ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áO(logdn), trong đó, n là độ lớn của đầu vào và d là số nguyên dương nào

Trang 11

Khi giải một bài toán, chúng ta không những cần tìm ra một thuật toánnào đó, mà còn muốn tìm ra thuật toán "tốt nhất" Đánh giá độ phức tạp củathuật toán là một trong những cách để so sánh, phân tích và tìm ra thuật toántối ưu Tuy nhiên độ phức tạp không phải là tiêu chuẩn duy nhất để đánhgiá thuật toán Có những thuật toán về mặt lý thuyết thì độ phức tạp cao hơnmột thuật toán khác, nhưng khi sử dụng lại có hiệu quả (gần đúng) nhanhhơn nhiều Điều này phụ thuộc vào những bài toán cụ thể, những mục tiêucụ thể, và cả kinh nghiệm của người sử dụng.

Thuật toán "xác suất" Chúng ta cần lưu ý thêm một điểm sau đây Mặcdù định nghĩa thuật toán mà chúng ta đưa ra chưa phải là chặt chẽ, nó vẫnquá "cứng nhắc" trong những ứng dụng thực tế Bởi vậy chúng ta còn cầnđến những thuật toán"xác suất", tức là những thuật toán phụ thuộc vào mộthay nhiều tham số ngẫu nhiên Những thuật toán này về nguyên tắc khôngđược gọi là thuật toán, vì chúng có thể, với xác suất rất bé, không bao giờkết thúc Tuy nhiên, thực nghiệm chỉ ra rằng, các thuật toán xác suất thườnghữu hiệu hơn các thuật toán tất định Thậm chí, trong rất nhiều trường hợp,chỉ có các thuật toán xác suất là sử dụng được Khi làm việc với các thuậttoán xác suất, ta thường hay phải sử dụng các số "ngẫu nhiên" Khái niệmchọn số nhẫu nhiên cũng cần được chính xác hoá Thường thì người ta sửdụng một "máy" sản suất số giả ngẫu nhiên nào đó Cũng cần lưu ý ngay

Trang 12

rằng, đối với các thuật toán xác suất, không thể nói đến thời gian tuyệt đốimà chỉ có thể nói đến thời gian hy vọng.

Để hình dung được phần nào "độ phức tạp" của các thuật toán (tất định vàxác suất) khi làm việc với những số lớn, ta xem bảng dưới đây cho khoảngthời gian cần thiết để phân tích một số nguyên n ra thừa số bằng thuật toánnhanh nhất được biết hiện nay (ta xem máy tính sử dụng vào việc này có tốcđộ một triệu phép tính trong 1 giây).

1.2 Phép tính đồng dư và các vấn đề liên quan

1.2.1 Số nguyên tố và định lý cơ bản của số họcSố nguyên tố.

Số nguyên tố là số nguyên lớn hơn 1, không chia hết cho số nguyên nàongoài 1 và chính nó Số nguyên lớn hơn 1 không phải là số nguyên tố đượcgọi là hợp số.

Trang 13

Định lý cơ bản của số học

Mọi số tự nhiên lớn hơn 1 đều phân tích được một cách duy nhất thànhtích các thừa số nguyên tố, trong đó các thừa số được viết theo thứ tự khônggiảm.

chứng minh

Giả sử tồn tại những số không viết được thành tích các số nguyên tố Gọin là số bé nhất trong các số đó Như vậy, n phải là hợp số, n = a.b với1 < a, b < n Do định nghĩa của n, các số a và b phân tích đưa thành tíchcủa các số nguyên tố, nghĩa là n cũng phân tích được Mâu thuẫn với giảthiết Vậy mọi số đều phân tích được thành tích của các số nguyên tố.

Chúng ta còn phải chứng minh phân tích là duy nhất Giả sử ta có:n = p1p2 ps = q1q2 qr,

trong đó p1, p2, , ps; q1, q2, , qr là các số nguyên tố Giản ước nhữngsố nguyên tố bằng nhau có mặt trong hai vế, ta được đẳng thức

pi1pi2 piu = qj1qj2 qjv, trong đó không có số nguyên tố nào cómặt cả ở hai vế Như vậy, vế trái chia hết cho qj1 và do đó phải tồn tại mộtthừa số của tích chia hết cho qj1 : điều đó vô lý, vì đây là tích của các sốnguyên tố khác với qj1 Ta gọi phân tích số nguyên ra thừa số nguyên tố làphân tích số nguyên.

1.2.2 Thuật toán Euclid và mở rộngThuật toán Euclid

M1 (Kết thúc?) Nếu b = 0, in ra a và kết thúc thuật toán.

M2 (Chia Euclid) Đặt r ←− a mod b, a ←− b, b ←− r, và quay về M1.Ví dụ: Ta tính gcd(345,1127) bằng thuật toán Euclid Ta có: d = (345,1127)= (92,345) = (69,92) = (69,23) =(0,23) = 23 Như vậy, gcd(345,1127) = 23Thuật toán Euclid mở rộng

Cho hai số nguyên không âm u, v tìm (u1, u2, u3) sao cho

Trang 14

M3 (Chia, trừ) Đặt q ←− [u3

v3], và sau đó đặt(t1, t2, t3) ←− (u1, u2, u3) − q(v1, v2, v3),

(u1, u2, u3) ←− (v1, v2, v3), (v1, v2, v3) ←− (t1, t2, t3)và quay về bước M2.

1.2.3 Phi - hàm EulerĐịnh nghĩa:

Với n ∈ N, số lượng các số tự nhiên bé hơn n và nguyên tố cùng nhauvới n được ký hiệu là ϕ(n)

Ví dụ:

ϕ(4) = 2 ; ϕ(5) = 4 ; ϕ(6) = 2 ; ϕ(7) = 6 ; ϕ(8) = 4Định lý

Nếu m, n là các số nguyên dương nguyên tố cùng nhau, thìϕ(m, n) = ϕ(m).ϕ(n)

Trang 15

Bây giờ giả sử r là một số nguyên không vượt quá m.

Giả sử (m, r) = d > 1 Khi đó, không số nào trong dòng thứ r nguyêntố cùng nhau với m.n, và mỗi phần tử của dòng đó đều có dạng km + r,1 ≤ k ≤ n − 1, d|(km + r) vì d|m, d|r.

Vậy, để tìm các số trong bảng mà nguyên tố cùng nhau với m.n, ta chỉcần xem dòng thứ r với (m, r) = 1 Ta xét một dòng như vậy, nó chứa cácsố r, m + r, , (n − 1)m + r Vì (r, m) = 1 nên mỗi số nguyên trong dòngđều nguyên tố cùng nhau với n.

Vậy, n số nguyên trong dòng lập thành hệ thặng dư đầy đủ modulo m.Do các số đó cũng nguyên tố cùng nhau với m nên chúng nguyên tố cùngnhau với m.n, nên ta suy ra ϕ(m, n) = ϕ(m).ϕ(n)

1.2.4 Phép tính đồng dư và phương trình đồng dưĐịnh nghĩa phép tính đồng dư :

Giả sử m là một số nguyên dương Ta nói, hai số nguyên a và b là đồngdư với nhau modulo m nếu m chia hết hiệu a − b

Để chỉ a đồng dư với b modulo m ta ký hiệu:a ≡ b (mod m) ( Gọi là đồng dư thức)

Như vậy, a ≡ b (mod m) khi và chỉ khi tồn tại số nguyên k,sao cho a = b + km

Trang 16

thì a ≡ c (mod m) (1.2.3.3)4 Nếu a ≡ b (mod m), c ≡ d (mod m)

thì a ± c ≡ b ± d (mod m), a.c ≡ b.d (mod m) (1.2.3.4)Phương trình đồng dư tuyến tính ax ≡ b (mod m)

Khi gcd(a, m) = 1 thì có ngay nghiệm x ≡ a−1b (mod m)Khi gcd(a, m) = g thì có hai khả năng xảy ra:

(1) Nếu g chia hết b, thì phương trình đã cho tương đương với phươngtrình (a/g)x ≡ (b/g) (mod m/g) và (a/g, m/g) = 1 (đã xét ở trên)

(2) Nếu g không chia hết b, thì phương trình vô nghiệm.

1.2.5 Định lý Fermat và các mở rộngĐịnh lý Fermat bé :

Nếu p là một số nguyên tố còn a là một số nguyên thì ap ≡ a (mod p)Nếu p không chia hết a thì ap−1 ≡ 1 (mod p)

và ri 6≡ rj (mod m) (i 6= j) → ari 6≡ arj (mod m)

Do đó thặng dư không âm bé nhất của hệ này sẽ là tập hợp {r1, , rϕ(m)},sắp xếp theo thứ tự nào đó Từ đó theo tính chất (1.2.3.4), ta có:

Trang 17

ar1.ar2 arϕ(m) ≡ r1.r2 rϕ(m) (mod m)Như vậy

1.2.6 Tính toán với đồng dư của luỹ thừa bậc lớn

Ngoài việc sử dụng hệ quả của Định lý Euler để tính toán người ta còn thườnghay sử dụng nhất là phương pháp bình phương liên tiếp sau đây Để hiểu rõphương pháp này chỉ cần xem ví dụ sau:

Ta có 23 = 1+2+4+16 = 20 + 21 + 22 + 247091 (mod 3137) = 709

7092 (mod 3137) = 761

7094 (mod 3137) = 7612 (mod 3137) = 19137098 (mod 3137) = 19132 (mod 3137) = 182770916 (mod 3137) = 18272 (mod 3137) = 161

Ta lấy tích các lũy thừa bậc 24, 22, 21, 20 ( rút gọn theo modulo 3137) và thu

Trang 18

được kết quả

70923 (mod 3137) = 709.761.1913.161 (mod 3137) = 907

1.2.7 Thặng dư bình phương và ký hiệu LegendreĐịnh nghĩa

Cho số nguyên tố p Số nguyên a ≤ p được gọi là thặng dư bình phương(mod p)nếu như tồn tại số nguyên x thoả mãn phương trình x2 ≡ a (mod p)Ta có nguyên lý thú vị sau:

0 nếu a chia hết cho p

1 nếu a là một thặng dư bình phương (mod p)−1 các trường hợp còn lại

Ta có thể mở rộng khái niệm ký hiệu trên cho trường hợp p không phảilà nguyên tố, nhưng chỉ xét những số a trong tập thặng dư rút gọn của p.Ký hiệu Jacobi:

Với số nguyên n = p1.p2 pk ; pi, i = 1, k là các số nguyên tố còna nằm trong tập thặng dư rút gọn của n, ta ký hiệu:

J (a, n) = L(a, p1)L(a, p2) L(a, pk)

Như vậy khi n là số nguyên tố thì J(a, n) = L(a, n)

Trang 19

rn−3 = rn−2an−1 + rn−1, (0 ≤ rn−1 < rn−2)rn−2 = rn−1an.

Như vậy, phân số a

b có thể viếta

b = a0 +r0

b = a0 +1br0

+ an−1+ 1anCách viết như trên được gọi là biểu diễn số hữu tỷ a

b dưới dạng phân số liêntục.

Để đơn giản, ta dùng cách viết a

b = [a0; a1, , an] Phân số liên tục[a0; a1, , an] được gọi là phân số liên tục hữu hạn.

Dùng thuật toán Euclid, có thể biểu diễn mọi số hữu tỷ dưới dạng phân sốliên tục hữu hạn Ngược lại, rõ ràng mỗi phân số liên tục hữu hạn là một sốhữu tỷ.

Giả sử x là một số thực tuỳ ý Đặt a0 = [x], phần nguyên của x, vàx0 = x − a0 là phần lẻ của x Tiếp theo đó ta đặt a1 = [ 1

x0], x1 =1

x0 − a1.Với mỗi i = 1, 2, , đặt ai = [ 1

xi−1], xi =1

xi−1 − ai Nếu ở bước thứ inào đó, xi = 0thì qúa trình kết thúc (Điều này xảy ra khi và chỉ khi x là sốhữu tỷ ) Ngược lại, ta có x biểu diễn dưới dạng phân số liên tục vô hạn:

Trang 20

x = a0 + 1

+ 1an +

Để thuận tiện, ta còn có thể dùng cách viết sau đây:x = a0 + 1

a1+ +1

a2+ + +1

an+ +

Các phân số liên tục định nghĩa như trên với các số ai nguyên gọi là cácphân số liên tục đơn giản Khi không đòi hỏi ai là các số nguyên, mà có thểlà số thực tuỳ ý, ta dùng cách viết

x = [a0; a1, , an] = a0 + 1a1+ +

a2+ + +1an.

Khi có một phân số liên tục x = [a0; a1, , an, ], ta gọi các số sau đâylà các phân số hội tụ riêng (thứ k) của x :

Ck = [a0; a1, , ak].

1.3.2 Tính chấtĐịnh lý 1.3.2.1

Giả sử a0, a1, , an, là các số thực, trong đó a1, , an > 0.Đặt b0 = a0, b1 = a1b0 + 1, q0 = 1, q1 = a và với mọi k ≥ 2,

bk = akbk−1 + bk−2, qk = akqk−1 + qk−2.Khi đó:

(i) Ck = [a0; a1, , ak] = bkqk

(ii) Với mỗi k ≥ 1, ta có bkqk+1 − bk+1qk = (−1)k+1.Định lý 1.3.2.2

Giả sử n là số tự nhiên không chính phương và bk

qk là các phân số hội tụriêng của √n Ta đặt α0 = √

n, và các số αk, Qk, Pk được định nghĩa nhưsau:

αk = Pk +√

n

Trang 21

Pk+1 = akQk − Pk, Qk+1 = n − P

Khi đó ta có b2

k = (−1)k+1Qk+1.Chứng minh:

Bằng quy nạp, ta chứng minh được Pk, Qk, ∈ Z∗, ∀k

Theo cách xác định của một phân số liên tục, ở đây lấy x = √n, ta sẽ cóαi = 1

xi−1, i ≥ 1 (1.3.2.1)Thật vậy, với i = 1 ta có:

1x0 =

1x − a0 =

n − a0 =

a0 +√n(n − a20) =

P1 +√n

xi−1 − ai

αi − ai =

1Pi +√nQi − ai

n − (aiQi − Pi)Qi

n − Pi+1)Qi

= Pi+1 +√

n(n − Pi+12 )

= Pi+1 +√

Qk+1 , ta được:√

n = (Pk+1 +√

n)bk + Qk+1bk−1

(Pk+1 +√

n)qk + Qk+1qk−1Như vậy nqk + (Pk+1qk + Qk+1qk−1)√

n = (Pk+1bk+ Qk+1bk−1) + bk√n.Từ đó suy ra

nqk = Pk+1bk + Qk+1bk−1,bk = Pk+1qk + Qk+1qk−1,

Trang 22

Nhân đẳng thức thứ nhất với qk, đẳng thức thứ hai với bk và trừ hai đẳngthức thứ hai cho đẳng thức thứ nhất, ta được.

b2k − nq2

k = (−1)k+1Qk+1 (Định lý được chứng minh).Hệ quả

Giả sử n là số tự nhiên không chính phương Gọi bk

qk là các phân số hội tụriêng của √n Thế thì, đồng dư b2

k (mod n) lấy theo thặng dư tuyệt đối bénhất, có giá trị tuyệt đối bé hơn 2√n.

Chứng minh :

Trước hết, ta chứng minh bằng quy nạp Pk < √

n, Qk > 0, ∀k ∈ N.Thật vậy, từ các biểu thức trong định lý (1.3.2.2), ta suy ra:

P0 = 0 < √

n, Q0 = 1 > 0; P1 = a0 < √

n, Q1 = n − a20 > 0.Giả sử, Pk < √

n, Qk > 0, với k ≥ 1, khi đó:

Qk = n − P

Nên từ đẳng thức trên ta suy ra Pk+1 < √

n và Qk+1− n − P

> 0.Như vậy Pk < √

n, Qk > 0, ∀k ∈ N.Hơn nữa từ công thức αk =

n + Pk

Qk , Ta suy ra.Qk < αk.Qk = √

n + Pk < √

n = 2√

n, ∀k ∈ NBây giờ ta sử dụng đồng dư thức

Nhận xét: Hệ quả này là cơ sở cho phân tích Fermat suy rộng nhờ phân sốliên tục sẽ nói trong phần thám mã ở chương II.

Trang 23

Chương 2

Một số ứng dụng của số học trong lýthuyết mật mã

2.1 Nguyên tắc chung và một số hệ mã đơn giản

Trong mục này các thuật ngữ được hiểu như sau:.Văn bản là thông báo gốc cần chuyển, ký hiệu là P.Mã hoá là việc chuyển thông báo đó thành dạng mật mã Văn bản mật là bản đã mã hóa của văn bản ký hiệu là C Chìa khoá là bí quyết giải và lập mã.

Có một điều hết sức thú vị là những hệ mã hiện đại cũng có thể được xemlà sự cải tiến hệ mã của Caesar! Vì thế chúng tôi bắt đầu việc trình bày hệmã Ceasar !

2.1.1 Hệ mã CeasarNguyên lý thực hiện

Ceasar đã chuyển thông báo mật bằng cách sau đây Trước tiên lập phéptương ứng mỗi chữ cái với một số Nhờ bảng tương ứng đó ta có thể chuyểnmột văn bản thành dạng chữ số Sau đó ta cộng thêm 3 vào mỗi chữ số nhậnđược, lại nhờ bảng tương ứng giữa chữ và số, ta biến bảng chữ số mới nàyvề dạng chữ viết Như vậy ta nhận được một văn bản mật cần chuyển Đây

Trang 24

là quá trình mã hóa.

Khi nhận được văn bản mật, ta giải mã bằng cách biến nó thành dạng chữsố nhờ bảng tương ứng giữa chữ và số, sau đó trừ đi 3 ở mỗi chữ số và lạichuyển nó về dạng chữ để lại có văn bản ban đầu.

Chú ý: Khi cộng hoặc trừ đi 3 đưa ta vượt quá giới hạn của bảng tương ứng,ta thay số đó bằng thặng dư dương bé nhất modulo số các phần tử của bảngtương ứng giữa chữ và số (Trong bảng chữ cái tiếng Anh thì số này là 26)Sau đây ta xét ví dụ cụ thể với các chữ cái trong tiếng Việt.

Trước hết ta lập tương ứng các chữ cái với các chữ số theo bảng sau:

Số 3 trong công thức (2.1.1a) gọi là chìa khoá của mã CeasarChẳng hạn muốn chuyển văn bản

Em kinh chao cac thây cô a

Trước hết nhằm nâng cao tính bảo mật, ta tách thông báo thành nhóm 5 chữcái Như vậy thông báo cần mã hoá là:

emkin hchao cacth âycôaTa chuyển thông báo sang dạng chữ số:

8 15 13 12 16 11 5 11 1 17 5 1 5 24 11 3 29 5 18 1áp dụng (2.1.1a) Dãy chữ số trên được chuyển thành:

11 18 16 15 19 14 8 14 4 20 8 4 8 27 14 6 3 8 21 4Ta lại chuyển về dạng chữ cái, ta có văn bản mật.

hônmơ lelbp ebevl dâeqb

Ngày đăng: 07/11/2012, 11:03

Tài liệu cùng người dùng

Tài liệu liên quan