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

Áp dụng của số học vào mật mã

48 319 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 48
Dung lượng 320,56 KB

Nội dung

ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC KHOA HỌC LƯƠNG THỊ CHUNG ÁP DỤNG CỦA SỐ HỌC VÀO MẬT MÃ LUẬN VĂN THẠC SĨ TOÁN HỌC Thái Nguyên - 2016 ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC KHOA HỌC LƯƠNG THỊ CHUNG ÁP DỤNG CỦA SỐ HỌC VÀO MẬT MÃ LUẬN VĂN THẠC SĨ TOÁN HỌC Chuyên ngành: Phương pháp Toán sơ cấp Mã số: 60 46 01 13 NGƯỜI HƯỚNG DẪN KHOA HỌC TS NGUYỄN VĂN HOÀNG Thái Nguyên - 2016 i Mục lục Mở đầu Chương Kiến thức chuẩn bị 1.1 Đồng dư thức 1.2 Phương trình hệ phương trình đồng dư 3 Chương Mật mã Affin, mật mã Hill, mật mã lũy 2.1 Một số khái niệm mật mã giải mã 2.2 Mật mã Affin 2.2.1 Mật mã Caesar 2.2.2 Mật mã dịch chuyển 2.2.3 Mật mã Affin 2.2.4 Mật mã Vigenère 2.3 Mật mã Hill 2.4 Mật mã lũy thừa thừa Chương Hệ thống mật mã RSA mật mã ba lô 3.1 Hệ thống mật mã RSA 3.1.1 Sự hình thành phát triển hệ thống mật mã RSA 3.1.2 Phương pháp tạo hệ thống mật mã RSA 3.1.3 Phương pháp giải mã hệ thống mật mã RSA 3.2 Mật mã ba lô 3.2.1 Khái niệm mật mã ba lô 3.2.2 Thuật toán tạo mật mã ba lô 3.2.3 Cách giải mã thuật toán ba lô 7 8 10 13 16 18 24 30 30 30 31 32 35 35 37 40 Kết luận 44 Tài liệu tham khảo 45 Mở đầu Trong sách Godfrey H Hardy (một nhà nghiên cứu toán học người Anh) có tiêu đề “Lời xin lỗi nhà toán học”, ông có vô hạn số nguyên tố, có ứng dụng thực tiễn Không đồng tình với quan điểm Godfrey H Hardy, năm qua nhà toán học phát nhiều ứng dụng thực tế thú vị hữu ích lý thuyết số, qua thấy sáng tạo người biến khía cạnh kiến thức toán học vào số ứng dụng thực tiễn Một ứng dụng thú vị lý thuyết số mật mã, nghiên cứu hệ thống bí mật, chúng xuất từ thời Ai cập cổ xưa Trong nhiều kỷ, mật mã trở thành công cụ mạnh mẽ quân đội ngoại giao, chúng trở thành thứ thiếu trao đổi thương mại Bởi phủ thường giữ bí mật định sách thời điểm thích hợp; tập đoàn đa quốc gia muốn bảo vệ nghiên cứu sáng chế độc quyền phát triển chiến lược tiếp thị Năm 1917, đỉnh cao chiến tranh giới thứ nhất, Đức ngầm kết nối thông tin mật kêu gọi phủ Mexicô tham gia vào trục nước chống lại Mỹ có lời hứa cắt bang Arizona, NewMexico Texas sát nhập vào nước Mexicô, trường hợp Mỹ tham chiến Tuy nhiên mạch thông tin bị gián đoạn, mật mã thông tin bị kiểm soát thông minh người Anh, thông tin chuyển đến tổng thống W Wilson, phần kết lại ta biết lịch sử Ngày nay, ngân hàng điện tử liệu máy tính thường xuyên sử dụng mã hóa để bảo mật an ninh Với mong muốn tìm hiểu số mật mã cách tạo mật mã đơn giản, cách giải mật mã, vai trò lý thuyết số việc tạo mật mã nào, chọn đề tài “Áp dụng số học vào mật mã” làm đề tài nghiên cứu cho luận văn Nội dung luận văn gồm chương Chương 1: Trình bày số kiến thức chung đồng dư thức, phương trình hệ phương trình đồng dư Chương 2: Trình bày khái niệm mật mã, giải mã Cách tạo mật mã Affin, mật mã Hill, mật mã lũy thừa cách giải mã chúng Chương 3: Trình bày phát triển hệ thống mật mã RSA, cách tạo hệ thống mật mã RSA cách giải mã hệ thống Trong chương trình bày cách tạo mật mã ba lô cách giải mật mã ba lô Luận văn hoàn thành trường Đại học Khoa học, Đại học Thái Nguyên hướng dẫn tận tình Tiến sĩ Nguyễn Văn Hoàng Tôi xin bày tỏ lòng biết ơn chân thành sâu sắc tận tâm nhiệt tình thầy suốt trình tác giả thực luận văn Trong trình học tập làm luận văn, từ giảng giáo sư, tiến sĩ công tác Viện toán học, Trường Đại học khoa học - Đại học Thái Nguyên, trau dồi thêm nhiều kiến thức để nâng cao trình độ Từ đáy lòng mình, xin bày tỏ lòng cảm ơn sâu sắc tới tất thầy, cô Tôi xin chân thành cám ơn Ban Giám hiệu, phòng Đào tạo Khoa học Quan hệ quốc tế, Khoa Toán - Tin trường Đại học Khoa học, Đại học Thái Nguyên quan tâm giúp đỡ suốt thời gian học tập trường Nhân dịp xin chân thành cảm ơn đồng nghiệp, bạn bè gia đình tạo điều kiện giúp đỡ, động viên để hoàn thành luận văn Thái Nguyên, tháng năm 2016 Tác giả Lương Thị Chung Chương Kiến thức chuẩn bị 1.1 Đồng dư thức Trong chương này, ta quy ước tất chữ a, b, c, x, y, z biểu thị số nguyên tất môđun m, n, số nguyên dương Định nghĩa 1.1.1 (Đồng dư thức) Cho m số nguyên dương Số nguyên a đồng dư với số nguyên b theo môđun m m|(a − b) Kí hiệu a ≡ b (mod m) Trường hợp ngược lại ta kí hiệu a ≡ b (mod m) Tiếp theo ta nhắc lại số tính chất đồng dư thức Tính chất 1.1.2 (i) a ≡ b (mod m) tồn k ∈ Z để a = b + km (ii) a ≡ b (mod m) a b chia cho m số dư (iii) a ≡ a (mod m) (tính chất phản xạ) (iv) Nếu a ≡ b (mod m), b ≡ a (mod m) (tính chất đối xứng) (v) Nếu a ≡ b (mod m) b ≡ c (mod m) a ≡ c (mod m) (tính chất bắc cầu) Tính chất 1.1.3 Nếu a ≡ b (mod m) c ≡ d (mod m) a+c≡b+d (mod m) ac ≡ bd (mod m) Hệ 1.1.4 (i) Nếu a ≡ b (mod m) c ≡ d (mod m) a − c ≡ b − d (mod m) (ii) Nếu a ≡ b (mod m) c số nguyên bất kỳ, a + c ≡ b + c (mod m) a−c≡b−c (mod m) ac ≡ bc (mod m) a2 ≡ b2 (mod m) (iii) Nếu a ≡ b (mod m), an ≡ bn (mod m) với n số nguyên dương Tính chất 1.1.5 (i) Nếu ac ≡ bc (mod m) (c, m) = 1, a ≡ b (mod m) (ii) Nếu ac ≡ bc (mod m) (c, m) = d, a ≡ b (mod m d ) Chứng minh: (ii) Giả sử ac ≡ bc (mod m), có (c, m) = d Ta có m|(ac− bc), ac − bc = km (k ∈ Z) nên c(a − b) = km Chia hai vế cho d ta dc (a − b) = k md Biết ( dc , md ) = 1, md |(a − b) Vậy a ≡ b (mod m) Tính chất 1.1.6 Nếu a ≡ b (mod m1 ), a ≡ b (mod m2 ), , a ≡ b (mod mk ), a ≡ b (mod [m1 , m2 , , mk ]) Hệ 1.1.7 Nếu a ≡ b (mod m1 ), a ≡ b (mod m2 ), , a ≡ b (mod mk ), với m1 , m2 , , mk đôi nguyên tố Khi a ≡ b (mod m1 m2 mk ) Định nghĩa 1.1.8 (Định lí Femat nhỏ) Cho p số nguyên tố a số nguyên ap ≡ a mod p Chứng minh: Nếu p| a rõ ràng ap a chia hết cho p, nên chúng đồng dư theo môđun p Bây giả sử p không chia hết cho a Chúng ta thấy 0a, 1a, 2a, , (p − 1)a tạo thành hệ đầy đủ thặng dư môđun p (thật vậy, với ≤ i < j ≤ p − 1, ta thấy < j − i < p nên j − i không chia hết cho p Suy (j − i)a không chia hết cho p, tức ja ≡ ia (mod p)) Từ ta thấy hai tập {a (mod p), 2a (mod p), , (p − 1)a (mod p)} {1 (mod p), (mod p), , p − (mod p)} Vì lấy tích phần tử hai họ theo môđun p ta đồng dư ap−1 (p − 1)! ≡ (p − 1)! (mod p) Lưu ý (p − 1)! không chia hết cho p Do đẳng thức cho ta đồng dư thức ap−1 ≡ (mod p) Sau ta nhân hai vế với a ta ap ≡ a (mod p) Mệnh đề 1.1.9 Giả sử d = gcd(a, b) Khi d số nguyên dương nhỏ biểu diễn dạng d = am + bn m, n ∈ Z Chứng minh: Giả sử d số nguyên dương nhỏ có dạng d = am + bn Bằng phép chia Euclid ta a = dq + r với ≤ r < d, a = (am + bn)q + r Vậy r = (1 − mq)a − qnb = xa + yb tổ hợp tuyến tính a b Nếu r > trái giả thiết d nhỏ Do r = 0, tức a = dq chia hết cho d Tương tự ta suy b chia hết cho d Vì d ước chung a b Giả sử d ước chung tùy ý a b Do d = am + bn nên d chia hết cho d Vậy d ước chung lớn a b Ngược lại, giả sử d ước chung lớn a b Theo thuật toán Euclid d = rn = rn−2 −qn−1 rn−1 , ta suy d tổ hợp tuyến tính rn−2 , rn−1 có rn−3 = rn−2 qn−2 +rn−1 nên rn tổ hợp tuyến tính rn−2 , rn−3 Tiếp tục trình ta suy d tổ hợp tuyến tính r0 , r1 tức a b Hệ 1.1.10 Giả sử a b nguyên tố tức gcd(a, b) = Khi tồn m, n ∈ Z cho ma + nb = Từ đó, ta suy gcd(a, b) = a, b dương tồn nghịch đảo a−1 (mod b) b−1 (mod a) Định nghĩa 1.1.11 (Phi - hàm Euler) Cho n số tự nhiên khác 0, ϕ(n) hàm số học có giá trị n số số tự nhiên nhỏ n nguyên tố với n Từ định nghĩa có hệ trực tiếp: Số p nguyên tố ϕ(p) = p − 1.2 Phương trình hệ phương trình đồng dư Định nghĩa 1.2.1 Phương trình đồng dư bậc phương trình có dạng ax ≡ b (mod m) a, b ∈ Z a ≡ (mod m) Nếu gcd(a, m) = phương trình có nghiệm Chứng minh: Khi x chạy khắp qua hệ thặng dư đầy đủ theo modulo m ax chạy khắp qua hệ thặng dư đầy đủ theo modulo m Do có giá trị x hệ thặng dư đầy đủ theo modulo m để ax ≡ b (mod m) Vậy phương trình cho có nghiệm Định lý 1.2.2 Cho hệ phương trình đồng dư ax + by ≡ r cx + dy ≡ s (mod m) (mod m) Đặt ∆ = ad − bc (mod m) Khi gcd(∆, m) = hệ phương trình xét tồn nghiệm môđun m cho công thức sau x ≡ ∆−1 (dr − bs) (mod m) y ≡ ∆−1 (as − cr) (mod m) ∆−1 nghịch đảo ∆ môđun m Chương Mật mã Affin, mật mã Hill, mật mã lũy thừa 2.1 Một số khái niệm mật mã giải mã Mật mã có nguồn gốc từ Hy Lạp "kryptos" có nghĩa ẩn, "graphein” có nghĩa để viết Mật mã nghệ thuật khoa học, giấu toàn ý nghĩa thông tin mật ngoại trừ người nhận dự định trước Ta quy ước số tên gọi sau: • Văn túy (ban đầu): thông tin gốc, thông tin ban đầu (thường kí hiệu (P)); • Việc chuyển văn túy thành dạng mật mã gọi mã hóa; • Văn mã hóa: văn túy ban đầu mã hóa (thường kí hiệu (C); • Chìa khoá: công thức, bí để giải mã lập mã; • Công cụ mã hóa việc giải mã thuật toán người máy tính thực • Sự giải mã: phương pháp sử dụng để phục hồi thông tin gốc, có nghĩa chuyển văn mã hóa thành văn túy ban đầu; • Hệ thống mật mã: hệ thống cho phép mã hoá văn túy đến văn viết thành mật mã có dùng chìa khoá 31 thông tin M ta có M = E(D(M )) = D(E(M )) Vì thuật toán E D ngược • Thứ hai: Với người sử dụng dự định trước tính toán dễ dàng để tính khóa E D • Thứ ba: Đối với người sử dụng trái phép, khó tính toán để tìm khóa giải mã D xuất phát từ khóa lập mã E , điều đảm bảo tính bảo mật hệ thống Trước hết ta nói sơ qua nguyên tắc hoạt động hệ thống mật mã khóa công khai: Giả sử hệ thống có n người cần trao đổi thông tin Người thứ i chọn cho công thức mã hóa Ei với ≤ i ≤ n Đối với người i muốn gửi tin nhắn P cho người j người có công thức mã hóa người j Sau văn P mã hoá khoá lập mã Ej gửi dạng C = Ej (P ) Để giải mã thông báo C này, người j cần dùng khoá giải mã Dj (mà mình biết) để phục hồi văn ban đầu P Dj (C) = Dj (Ej (P )) = P Các cá nhân k khác hệ thống phá vỡ tin C từ Dk (C) = Dk (Ej (P )) = P với k = j Vào năm 1978, Ronald L Rivest, Adi Shamir, Leonard Adelman Viện Công nghệ Massachusetts phát triển phương pháp thực cụ thể đề xuất Diffie Hellman, thường gọi hệ thống mật mã RSA, hệ thống khóa công khai hệ thống mật mã lũy thừa dựa lũy thừa modul định lý Euler (RSA từ viết tắt cho Rivest, Shamir, Adelman.) 3.1.2 Phương pháp tạo hệ thống mật mã RSA Trong hệ thống mật mã RSA, khóa lập mã cặp số nguyên dương e n, n tích hai số nguyên tố phân biệt lớn p q , số khoảng 100 chữ số, thỏa mãn (e, ϕ(n)) = Để mã hoá thông tin văn ban đầu giống hệ thống mật mã lũy thừa, nhóm mã gốc vào thành khối có độ dài 2m Sau chuyển đổi khối số văn ban đầu P thành khối số văn mã hóa C cách sử dụng mã hóa đồng dư C = E(P ) ≡ P e (mod n) (3.1) 32 ≤ C, P < n Ví dụ sau minh họa thuật toán Ví dụ 3.1.1 Sử dụng mật mã RSA modul n = 2773 khóa lập mã e = 21, mã hóa tin nhắn SILENCE IS GOLDEN Lời giải Sử dụng bảng 2.1, văn ban đầu ứng với chuỗi số 18 08 11 04 13 02 04 08 18 06 14 11 03 04 13 Vì 2525 < 2773 < 252525, chọn m = nhóm số thành khối có độ dài bốn: 1808 1104 1302 0408 1806 1411 0304 13 Khối cuối đệm 23 (mã gốc chữ X) cuối để làm cho tất khối có chiều dài 1808 1104 1302 0408 1806 1411 0304 1323 Bây giờ, sử dụng lũy thừa modul công thức (3.1), chuyển đổi khối số văn ban đầu P thành khối số văn mã hóa C : C ≡ P e ≡ P 21 (mod 2773) Chẳng hạn với P = 1808, ta có C ≡ 180821 ≡ 180816+4+1 ≡ 1511.666.1808 ≡ 0010 (mod 2773) Như khối số tương ứng với văn ban đầu 0010 Các khối khác tính tương tự ta kết là: 0010 0325 2015 2693 2113 2398 2031 1857 3.1.3 Phương pháp giải mã hệ thống mật mã RSA Để giải mã mã C tạo hệ thống RSA, cần phải tính phần tử nghịch đảo d e theo modul ϕ(n), với ϕ(n) = (p − 1)(q − 1) p, q số nguyên tố lớn (e, ϕ(n))=1 Vì de ≡ (mod ϕ(n)) nên tồn số nguyên k thỏa mãn de = + kϕ(n) Biết số mũ giải mã d, chúng 33 ta khôi phục lại văn ban đầu P , cách lũy thừa hai vế đồng dư (3.1) với số mũ d modulo n: C d ≡ (P e )d = P ed = P 1+kϕ(n) = P.[P ϕ(n) ]k ≡ P.1k = P (mod n) theo định lý Euler, P ϕ(n) ≡ (mod n), (P, n) = Cặp (d, n) chìa khóa giải mã Như công thức giải mã là: P ≡ Cd (mod n) (3.2) Thậm chí trường hợp (P, n) = thuật toán RSA hoạt động Thật vậy, giả sử n = pq ta có (P, n) = p, q pq Vì P < n, (P, n) = n Khi (P, n) = p, (P, q) = 1; theo định lý Fermat nhỏ ta có P q−1 ≡ (mod q) Vì d.e ≡ (mod (p − 1)(q − 1)) nên tồn k cho d.e = + k(p − 1)(q − 1) Do P de = P.(P q−1 )k(p−1) ≡ P.1k(p−1) ≡ P (mod q) Cd ≡ P (mod q) Khi (P, n) = p, C d ≡ P ed ≡ ≡ P (mod p) Như vậy, C d ≡ P (mod p) C d ≡ P (mod q) nên C d ≡ P (mod n) Các trường hợp (P, n) = q xét tương tự Ví dụ, p q số nguyên tố có khoảng 100 chữ số, xác suất xảy tình (P, n) = nhỏ, cụ thể 2.10−99 Ví dụ 3.1.2 Giải mã thông điệp văn mã hóa 0010 0325 2015 2693 2113 2398 2031 1857 tạo cách sử dụng hệ thống RSA, cặp khóa lập mã (e, n) = (21, 2773), với n = 47 × 59 Lời giải Ta có ϕ(n) = ϕ(2773) = ϕ(47.59) = 46.58 = 2668 Ta dùng thuật toán Euclid mở rộng để tìm 21−1 Tìm 21−1 (mod 2668) có nghĩa tìm m n cho 21m + 2668n = Đặt (u1 = 1, u2 = 0, u3 = 2668) (v1 = 0, v2 = 1, v3 = 21) q=[ u3 2668 ]=[ ] = 127 v3 21 34 Đặt (t1 , t2 , t3 ) (t1 , t2 , t3 ) thỏa mãn t1 = u1 − q.v1 t2 = u2 − q.v2 ⇔ t3 = u3 − q.v3 t1 = t2 = −127 t3 = Khi (u1 = 0, u2 = 1, u3 = 21) (v1 = 1, v2 = −127, v3 = 1) q=[ 21 u3 ] = [ ] = 21 v3 Đặt (t1 , t2 , t3 ) (t1 , t2 , t3 ) thỏa mãn t1 = u1 − q.v1 t2 = u2 − q.v2 ⇔ t3 = u3 − q.v3 t1 = −21 t2 = 2668 t3 = Khi (u1 = 1, u2 = −127, u3 = 1) (v1 = −21, v2 = 2668, v3 = 0) Ta có 21.(−127) + 2668.1 = Vậy 21−1 (mod 2668) ≡ −127 (mod 2668) hay 21−1 (mod 2668) ≡ 2541 (mod 2668) số mũ giải mã d = 2541 Công thức giải mã P ≡ C 2541 (mod 2773) Với C = 0010 ta có 102541 (mod 2773) ≡ 102048+256+128+64+32+8+4+1 (mod 2773) ≡ 102048 10256 10128 1064 1032 108 104 10 (mod 2773) ≡ 1024.2431.2500.1366.2127.74.1681.10 (mod 2773)) ≡ 1808 (mod 2773) Như khối số tương ứng với văn ban đầu 1808 Các khối khác tính tương tự ta kết là: 1808 1104 1302 0408 1806 1411 0304 1323 Thay số chữ tương ứng ta thu SI LE NC EI SG OL DE N Phân tách lại chữ thành từ có ý nghĩa Ta thu thông báo ban đầu là: SILENCE IS GOLDEN 35 Nhận xét Người ta công khai khoá lập mã (e, n), mà hoàn toàn yên tâm khóa giải mã (d, n) không bị phát Bởi để có khoá giải mã, ta phải tìm d, nghịch đảo e theo modulo ϕ(n) Tuy nhiên muốn tìm hàm ϕ(n), ta phải phân tích n thừa số nguyên tố (n = p.q) Giả sử ta chọn hai số p, q cỡ 100 chữ số để phân tích n ta cần vài tỷ năm Sự xuất hệ mã RSA xem "cách mạng" bảo mật thông tin 3.2 Mật mã ba lô 3.2.1 Khái niệm mật mã ba lô Năm 1978, Ralph Merkle C Martin E Hellman hai kỹ sư điện Đại học Stanford, phát triển hệ thống mật mã khóa công khai dựa toán ba lô, toán tiếng tổ hợp Nó phát biểu sau: Cho ba lô tích S n vật khác tích tương ứng a1 , a2 , , an Hỏi vật xếp vào ba lô ? Nói cách khác cho số nguyên dương a1 , a2 , , an số gọi trọng, số nguyên dương S , giải phương trình tuyến tính sau với nghiệm nguyên S = a1 x1 + a2 x2 + + an xn (3.3) x = x = (chú ý S tích vô hướng vectơ (a1 , a2 , , an ) (x1 , x2 , , xn ) Các toán ba lô vô nghiệm, có nghiệm, có nghiệm Ví dụ toán ba lô 3x1 + 5x2 + 9x3 + 19x4 + 37x5 = 45 có nghiệm (1, 1, 0, 0, 1) + + + + 37 = 45 Mặt khác toán ba lô 3x1 + 5x2 + 8x3 + 13x4 + 21x5 = 34 có hai nghiệm (0, 0, 0, 1, 1) (0, 1, 1, 0, 1) + + + 13 + 21 = 34 = + + + + 21 Nhưng toán 3x1 + 14x2 + 15x3 + 27x4 + 11x5 = 23 vô nghiệm Việc giải toán ba lô thường nhiệm vụ khó khăn Bởi ta phải kiểm tra 2n khả cho (x1 , x2 , , xn ) xi = 1, tìm nghiệm xét tất trường hợp Thậm chí phương pháp tốt biết đến để giải toán cần đến 36 2n/2 phép tính toán, chẳng hạn cho n = 100 kể máy tính khó thực Tuy nhiên, phương trình (3.3) giải dễ dàng trọng có tính chất đặc biệt Chẳng hạn, = 2i−1 S = x1 + 2x2 + + 2n−1 xn có nghiệm (x1 , x2 , , xn ) (xn , , x2 , x1 )2 = S Nó dễ dàng để giải j−1 i=1 < aj với ≤ j ≤ n Một dãy (a1 , a2 , , an ) với tính chất gọi tăng mạnh Ví dụ xét dãy 3, 5, 9, 19, 37 Vì < 5, + < 9, + + < 19, + + + 19 < 37 nên dãy cho tăng mạnh Xét dãy 3, 5, 10, 19, 36 Ta có < 5, + < 10, + + 10 < 19, + + 10 + 19 ≮ 36 Vậy dãy cho không tăng mạnh Ví dụ sau cho ta lời giải toán ba lô ứng với dãy tăng mạnh Ví dụ 3.2.1 Giải toán ba lô sau 3x1 + 5x2 + 9x3 + 19x4 + 37x5 = 45 Lời giải Như ví dụ ta biết dãy 3, 5, 9, 19, 37 dãy tăng mạnh + + + 19 < 37 < 45, nên x5 = Do 3x1 + 5x2 + 9x3 + 19x4 = 19 > > 8, nên x4 = x3 = phương trình cho tương đương với 3x1 + 5x2 = nên x1 = x2 = Điều cho ta nghiệm (1, 1, 0, 0, 1) Thuật toán giải toán ba lô với trọng dãy tăng mạnh Thuật toán khái quát để tìm nghiệm cho phương trình (3.3) với trọng dãy tăng mạnh, thuật toán sau: xn = S≥ an với trường hợp lại Một xn xác định, thành phần lại xn−1 , , x2 , x1 tính công thức xj = S - ni=j+1 xi ≥ aj với trường hợp lại j = n − 1, n − 2, , Theo ví dụ minh họa công thức nêu trên, để tìm nghiệm phải tiến hành từ phải sang trái Thật vậy, giả sử xn = S ≥ an , nên ta có S = ni=1 xi ≤ n−1 i=1 < an trái với giả thiết Do xn = S ≥ an 37 Bây ta chứng minh công thức với ≤ j ≤ n − Giả sử xj = S − ni=j+1 xi ≥ aj Thật vậy, ta có S − ni=j+1 xi = j j−1 j−1 i=1 xi = i=1 xi ≤ i=1 < aj trái với giả thiết Ví dụ sau minh họa thuật toán Ví dụ 3.2.2 Giải toán ba lô sau 2x1 + 3x2 + 7x3 + 13x4 + 27x5 = 39 Lời giải Đầu tiên nhận thấy trọng dãy tăng mạnh Ở S =39 (a1 , a2 , a3 , a4 , a5 ) =(2, 3, 7, 13, 27) Vì S ≥ a5 nên x5 = Khi ta có 2x1 +3x2 +7x3 +13x4 = 12 < 13 nên x4 = 2x1 + 3x2 + 7x3 = 12 > nên x3 = Suy 2x1 + 3x2 = > 3, x1 = x2 = Vậy nghiệm phương trình (1,1,1,0,1) 3.2.2 Thuật toán tạo mật mã ba lô Chúng ta xây dựng hệ khoá công cộng dựa toán ba lô với trọng dãy tăng mạnh a1 , a2 , , an Đầu tiên ta chọn số nguyên dương m > 2an số nguyên dương w, cho nguyên tố với m Tiếp theo ta lập dãy b1 , b2 , , bn , bi ≡ w.ai (mod m), ≤ bi < m Dãy không thiết dãy tăng mạnh Người dùng hệ thống mật mã ba lô công bố cho người biết dãy mã hóa b1 , b2 , , bn , giữ bí mật dãy trọng a1 , a2 , , an modul mã hóa m, bội số w Trước mã hoá ta chuyển đổi văn túy thành chuỗi bit 0, quy ước cho bảng 3.1 (mỗi chữ tương ứng với chuỗi nhị phân gồm chữ số) Sau chuỗi phân chia thành khối P có độ dài n, n số phần tử dãy mã hóa Nếu khối cuối thiếu ta thêm số vào cho đủ độ dài n Bây biến đổi khối văn số (x1 , x2 , , xn ) thành tổng S = b1 x1 + b2 x2 + + bn xn Do tổng tạo thành văn mã hóa (3.4) 38 Chữ Nhị phân tương tương Chữ Nhị phân tương tương A 00000 N 01101 B 00001 O 01110 C 00010 P 01111 D 00011 Q 10000 E 00100 R 10001 F 00101 S 10010 G 00110 T 10011 H 00111 U 10100 I 01000 V 10101 J 01001 W 10110 K 01010 X 10111 L 01011 Y 11000 M 01100 Z 11001 Bảng3.1 Ví dụ sau minh họa phương pháp Ví dụ 3.2.3 Sử dụng thuật toán mã hóa ba lô với trọng dãy tăng mạnh 6, 8, 15, 31, modul m = 65, bội số w = 12, mã hóa tin nhắn ON SALE Lời giải Đầu tiên, nhận thấy dãy 6, 8, 15, 31 có n = giá trị, có m > 2a4 , (m, w) = (65, 12) = Bước 1: Nhân phần tử chuỗi với 12 giảm phần tử với modul 65 6.12 ≡ (mod 65) 8.12 ≡ 31 (mod 65) 15.12 ≡ 50 (mod 65) 31.12 ≡ 47 (mod 65) Trình tự mã hóa kết 7, 31, 50, 47 Bước 2: Sử dụng Bảng 3.1, dịch chữ thành nhị phân tương ứng Chữ O N S A L E Nhị phân tương tương 01110 01101 10010 00000 01011 00100 Như ta nhận chuỗi 01110 01101 10010 00000 01011 00100 39 sau nhóm bit thành khối có độ dài Thêm khối cuối với 11 để khối có chiều dài Kết khối 0111 0011 0110 0100 0000 0101 1001 0011 Bước 3: Tìm văn mã hóa : Tính giá trị khối cách nhân bit với yếu tố 7, 31, 50, 47 dãy mã hóa 0.7 + 1.31 + 1.50 + 1.47 = 128 0.7 + 0.31 + 1.50 + 1.47 = 97 0.7 + 1.31 + 1.50 + 0.47 = 81 0.7 + 1.31 + 0.50 + 0.47 = 31 0.7 + 0.31 + 0.50 + 0.47 = 0.7 + 1.31 + 0.50 + 1.47 = 78 1.7 + 0.31 + 0.50 + 1.47 = 54 0.7 + 0.31 + 1.50 + 1.47 = 97 Như vậy, văn mã hóa 128 97 81 31 78 54 97 Ví dụ 3.2.4 Sử dụng thuật toán mã hóa ba lô dựa với trọng dãy tăng mạnh 2, 3, 7, 13, 29 modul m = 63 bội số w = 25 mã hóa tin nhắn SELL ALL Lời giải Đầu tiên, nhận thấy dãy 2, 3, 7, 13, 29 có n = giá trị, m > 2a5 , (m, w) = (63, 25) = Bước 1: Nhân phần tử dãy với 25 giảm phần tử với modul 63 2.25 ≡ 50 (mod 63) 3.25 ≡ 12 (mod 63) 7.25 ≡ 49 (mod 63) 13.25 ≡ 10 (mod 63) 29.25 ≡ 32 (mod 63) 40 Trình tự mã hóa kết 50, 12, 49, 10, 32 Bước 2: Sử dụng Bảng 3.1, dịch chữ thành nhị phân tương đương Chữ S E L L A L L Nhị phân 10010 00100 01011 01011 00000 01011 01011 tương tương Sau nhóm bit thành khối có độ dài Kết 10010 00100 01011 01011 00000 01011 01011 Bước 3: Tìm văn mã hóa : Tính giá trị khối cách nhân bit với yếu tố 50, 12, 49, 10, 32 dãy mã hóa 1.50 + 0.12 + 0.49 + 1.10 + 0.32 = 60 0.50 + 0.12 + 1.49 + 0.10 + 0.32 = 49 0.50 + 1.12 + 0.49 + 1.10 + 1.32 = 54 0.50 + 1.12 + 0.49 + 1.10 + 1.32 = 54 0.50 + 0.12 + 0.49 + 0.10 + 0.32 = 0.50 + 1.12 + 0.49 + 1.10 + 1.32 = 54 0.50 + 1.12 + 0.49 + 1.10 + 1.32 = 54 Như vậy, văn mã hóa 60 49 54 54 00 54 54 3.2.3 Cách giải mã thuật toán ba lô Giải mã văn mã hóa thuật toán mã hóa ba lô thực sự dễ dàng Thật nhân phương trình (3.4) với w−1 modulo m ta có n −1 w−1 bi xi w S ≡ (mod m) i=1 n (w−1 bi )xi ≡ (mod m) i=1 n ≡ xi i=1 (mod m) 41 n n −1 Vì m > 2an 2an > i=1 xi nên m > i=1 xi Đặt S ≡ w S (mod m) với ≤ S < m Khi S = ni=1 xi Bài toán ba lô giải trọng số a1 , a2 , , an dãy tăng mạnh Nghiệm (x1 , x2 , , xn ) cho ta khối x1 x2 xn Sau tìm tất khối, việc cần làm nhóm bit lại thành khối bit sau thay chữ tương ứng với khối Ví dụ sau minh họa thuật toán Ví dụ 3.2.5 Giải mã văn mã hóa thuật toán mã hóa ba lô 128 97 81 31 78 54 97 tạo với modul m = 65, bội số w = 12, chuỗi mã hóa 7, 31, 50, 47 Lời giải Bước 1: Tìm w−1 Để tìm w−1 ta dùng thuật toán Euclid mở rộng Tìm 12−1 (mod 65) có nghĩa tìm m n cho 12m + 65n = Đặt (u1 = 1, u2 = 0, u3 = 65) (v1 = 0, v2 = 1, v3 = 12) q=[ u3 65 ]=[ ]=5 v3 12 Đặt (t1 , t2 , t3 ) (t1 , t2 , t3 ) thỏa mãn t1 = u1 − q.v1 t2 = u2 − q.v2 ⇔ t3 = u3 − q.v3 t1 = t2 = −5 t3 = Khi (u1 = 0, u2 = 1, u3 = 12) (v1 = 1, v2 = −5, v3 = 5) q=[ u3 12 ]=[ ]=2 v3 Đặt (t1 , t2 , t3 ) (t1 , t2 , t3 ) thỏa mãn t1 = u1 − q.v1 t2 = u2 − q.v2 ⇔ t3 = u3 − q.v3 t1 = −2 t2 = 11 t3 = Khi (u1 = 1, u2 = −5, u3 = 5) (v1 = −2, v2 = 11, v3 = 2) q=[ u3 ]=[ ]=2 v3 42 Đặt (t1 , t2 , t3 ) (t1 , t2 , t3 ) thỏa mãn t1 = u1 − q.v1 t2 = u2 − q.v2 ⇔ t3 = u3 − q.v3 t1 = t2 = −27 t3 = Khi (u1 = −2, u2 = 11, u3 = 2) (v1 = 5, v2 = −27, v3 = 1) q=[ u3 ]=[ ]=2 v3 Đặt (t1 , t2 , t3 ) (t1 , t2 , t3 ) thỏa mãn t1 = u1 − q.v1 t2 = u2 − q.v2 ⇔ t3 = u3 − q.v3 t1 = −12 t2 = 65 t3 = Khi (u1 = 5, u2 = −27, u3 = 1) (v1 = −12, v2 = 65, v3 = 0) Ta có 65.5 + 12.(−27) = Vậy w−1 ≡ −27 (mod 65) hay w−1 ≡ 38 (mod 65) Bước 2: Xây dựng toán ba lô cho khối mã hóa giải S = b1 x1 + b2 x2 + b3 x3 + b4 x4 S = 7x1 + 31x2 + 50x3 + 47x4 Với S = 128 128 = 7x1 + 31x2 + 50x3 + 47x4 Nhân hai vế với w−1 ≡ 38 modulo 65 38.128 ≡ 38.7x1 + 38.31x2 + 38.50x3 + 38.47x4 (mod 65) Ta toán ba lô 54 = 6x1 + 8x2 + 15x3 + 31x4 Giải toán ba lô ta nghiệm (0, 1, 1, 1) ta có khối x1 x2 x3 x4 = 0111 Tương tự ta chuỗi khối bit 0011 0110 0100 0000 0101 1001 0011 Bước 3: Khôi phục lại văn cách nhóm bit lại thành khối có độ dài ta 01110 01101 10010 00000 01011 00100 sau thay khối chữ tương ứng, phân tách thành từ có ý nghĩa điều mang lại tin nhắn ban đầu ON SALE 43 Ví dụ 3.2.6 Giải mã văn mã hóa thuật toán mã hóa ba lô 38 54 00 32 27 33 49 16 38 tạo với modulus m = 53, bội số w = 23, chuỗi mã hóa 16, 32, 11, 22 Lời giải Bước : Tìm w−1 Tìm 23−1 (mod 53) có nghĩa tìm m n cho 23m + 53n = Mặt khác ta có 53.10 + 23.(−23) = Vậy w−1 ≡ −23 (mod 53) hay w−1 ≡ 30 (mod 53) Bước 2: Xây dựng toán ba lô cho khối văn mã hóa giải S = 16x1 + 32x2 + 11x3 + 22x4 Với S = 38 38 = 16x1 + 32x2 + 11x3 + 22x4 Nhân hai vế với w−1 ≡ 30 modulo 53 ta 38.30 ≡ 30.16x1 + 30.32x2 + 30.11x3 + 30.22x4 (mod 53) Ta toán ba lô 27 = 3x1 + 6x2 + 12x3 + 24x4 giải phương trình ta nghiệm (1, 0, 0, 1) ta có khối x1 x2 x3 x4 = 1001 Tương tự ta chuỗi khối bit 0101 0000 0100 1010 0011 1011 1000 1001 Bước 3: Khôi phục văn ban đầu, cách tập hợp lại bit thành khối có độ dài ta 10010 10100 00010 01010 00111 01110 00100 sau đó, thay khối chữ tương ứng, phân tách thành từ có ý nghĩa Điều mang lại tin nhắn ban đầu SUC KHOE 44 Kết luận Luận văn trình bày nội dung sau: Một số kiến thức cần thiết đồng dư thức, định lý bổ đề có liên quan, vài áp dụng đồng dư thức số học Luận văn trình bày áp dụng số học số mật mã Cách tạo số mật mã Mật mã Casear, Mật mã Afin, mật mã dịch chuyển, mật mã lũy thừa Mật mã Hill, hệ thống mật mã RSA, mật mã ba lô cách giải mật mã Tác giả luận văn hy vọng có dịp tìm hiểu sâu nội dung, ý nghĩa thực tiễn đồng dư thức vào toán học sống 45 Tài liệu tham khảo [A] Tiếng Việt [1] Hà Huy Khoái Phạm Huy Điển 2002, Số học thuật toán, nhà xuất Đại học Quốc gia, Hà Nội [2] Đồng Thị Huyền Trang 2012, Phương trình đồng dư, luận văn thạc sỹ, Đại học Khoa học - Đại học Thái Nguyên [3] Vũ Thị Thanh Hậu 2009, Một số ứng dụng số học lý thuyết mật mã, luận văn thạc sỹ Đại học Khoa học - Đại học Thái Nguyên [B] Tiếng Anh [4] Thomas Kosky, 2007, Elementary Number Theory with Applications, 2nd edition, Academic Press is an imprint of Elsevier (Chương 9) [5] Zihao Jiang, Applications of number theory in cryptography, http://www.math.uchicago.edu/may/VIGRE/VIGRE2011/REUPapers/Jiang.pd ... mã hóa để bảo mật an ninh Với mong muốn tìm hiểu số mật mã cách tạo mật mã đơn giản, cách giải mật mã, vai trò lý thuyết số việc tạo mật mã nào, chọn đề tài Áp dụng số học vào mật mã làm đề tài... 3 Chương Mật mã Affin, mật mã Hill, mật mã lũy 2.1 Một số khái niệm mật mã giải mã 2.2 Mật mã Affin 2.2.1 Mật mã Caesar 2.2.2 Mật mã dịch chuyển ... HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC KHOA HỌC LƯƠNG THỊ CHUNG ÁP DỤNG CỦA SỐ HỌC VÀO MẬT MÃ LUẬN VĂN THẠC SĨ TOÁN HỌC Chuyên ngành: Phương pháp Toán sơ cấp Mã số: 60 46 01 13 NGƯỜI HƯỚNG DẪN KHOA HỌC

Ngày đăng: 14/12/2016, 09:21

TỪ KHÓA LIÊN QUAN

w