Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 74 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
74
Dung lượng
1,08 MB
Nội dung
MỤC LỤC MỤC LỤC LỜI CẢM ƠN DANH MỤC HÌNH VẼ BẢNG CHỮ VIẾT TẮT MỞ ĐẦU Chương MỘT SỐ KHÁI NIỆM CƠ BẢN 1.1 MỘT SỐ KHÁI NIỆM TOÁN HỌC 1.1.1 Số nguyên tố nguyên tố 1.1.2 Đồng dƣ 1.1.3 Không gian Zn Zn* 10 1.1.4 Khái niệm nhóm, nhóm con, nhóm Cyclic 10 1.1.5 Hàm Euler 11 1.1.6 Phần tử nghịch đảo 11 1.1.8 Độ phức tạp thuật toán 12 1.1.9 Hàm phía hàm cửa sập phía 13 1.2 KHÁI NIỆM MÃ HÓA 14 1.2.1 Giới thiệu 14 1.2.2 Hệ mã hóa khóa đối xứng 15 1.2.3 Hệ mã hóa khóa bất đối xứng 16 1.3 KHÁI NIỆM CHỮ KÝ SỐ 17 1.3.1 Giới thiệu 17 1.3.2 Một số loại chữ ký số 18 1.3.2.1 Chữ ký RSA 18 1.3.2.2 Chữ ký Elgamal 19 1.3.2.3 Chữ ký Mù 20 1.4 VẤN ĐỀ VỀ AN TỒN THƠNG TIN 22 1.4.1 Bảo đảm bí mật (Bảo mật) 22 1.4.2 Bảo đảm toàn vẹn (Bảo toàn) 22 1.4.3 Bảo đảm xác thực (Chứng thực) 22 1.4.4 Bảo đảm sẵn sàng 22 1.5 VẤN ĐỀ BỎ PHIẾU ĐIỆN TỬ 23 1.5.1 Khái niệm bỏ phiếu điện tử 23 1.5.2 So sánh bỏ phiếu điện tử bỏ phiếu thông thƣờng 24 1.5.3 Các giai đoạn bỏ phiếu điện tử 25 Chương GIẢI QUYẾT MỘT SỐ BÀI TOÁN TRONG GIAI ĐOẠN ĐĂNG KÝ BỎ PHIẾU ĐIỆN TỬ 30 2.1 MỘT SỐ BÀI TOÁN TRONG GIAI ĐOẠN ĐĂNG KÝ BỎ PHIẾU 30 2.1.1 Bài toán xác thực cử tri bỏ phiếu 30 2.1.2 Bài toán ẩn danh phiếu 30 2.1.3 Bài tốn phịng tránh liên kết nhân viên Ban bầu cử Cử tri 31 2.2 GIẢI QUYẾT CÁC BÀI TOÁN TRÊN 32 2.2.1 Bài toán xác thực cử tri bỏ phiếu 32 2.2.2 Bài toán ẩn danh phiếu 33 2.2.3 Bài tốn phịng tránh liên kết nhân viên Ban bầu cử Cử tri 34 Chương THỬ NGHIỆM XÂY DỰNG HỆ THỐNG ĐĂNG KÝ BỎ PHIẾU 38 3.1 BÀI TOÁN 38 3.2 PHÂN TÍCH THIẾT KẾ HỆ THỐNG 40 3.2.1 Bảng phân tích 40 3.2.2 Biểu đồ ngữ cảnh 41 3.2.3 Biểu đồ phân rã chức 42 3.2.3 Các hồ sơ sử dụng 45 3.2.4 Ma trận thực thể chức 46 3.2.5 Biểu đồ luồng liệu mức 47 3.2.6 Biểu đồ liệu logic mức 48 3.2.7 Mơ hình quan hệ thực thể 51 3.2.8 Mơ hình quan hệ 54 Chương 4: THỬ NGHIỆM XÂY DỰNG CHƢƠNG TRÌNH ĐĂNG KÝ BỎ PHIẾU (RSA) 57 4.1 CẤU HÌNH HỆ THỐNG 57 4.1.1 Phần cứng 57 4.1.2 Phần mềm 57 4.2 CÁC THÀNH PHẦN CỦA CHƢƠNG TRÌNH 58 4.2.1 Phần kết nối 58 4.2.2 Phần giao diện 58 4.2.3 Phần thuật toán áp dụng 58 4.3 CHƢƠNG TRÌNH 59 4.3.1 Chức khách 59 4.3.2 Chức ngƣời sử dụng 59 4.4 HƢỚNG DẪN SỬ DỤNG CHƢƠNG TRÌNH 60 4.4.1 Hƣớng dẫn cài đặt chƣơng trình 60 4.4.2 Hƣớng dẫn chạy chƣơng trình 63 4.4.3 Hƣớng dẫn chức khách 64 4.4.3.1 Hướng dẫn trình làm mù 64 4.4.3.2 Hướng dẫn trình đăng ký 65 4.4.3.3 Hướng dẫn q trình xóa mù 66 4.4.3.4 Hướng dẫn trình kiểm tra chữ ký 67 4.4.4 Hƣớng dẫn chức ngƣời sử dụng 68 4.4.4.1 Hướng dẫn trình xác nhận ký 68 4.4.4.2 Hướng dẫn q trình chia sẻ khóa 69 4.4.4.3 Hướng dẫn trình thiết lập khóa 69 KẾT LUẬN 70 TÀI LIỆU THAM KHẢO 72 PHỤ LỤC 73 LỜI CẢM ƠN Trƣớc hết em xin đƣợc bày tỏ trân trọng lòng biết ơn thầy giáo PGS.TS Trịnh Nhật Tiến Trong suốt q trình làm khóa luận tốt nghiệp em, thầy dành nhiều thời gian quí báu đê tận tình bảo, hƣớng dân, định hƣớng cho em việc nghiên cứu Em xin chân thành cảm ơn dạy bảo giúp đỡ thầy giáo, cô giáo Khoa Công Nghệ Thông Tin – Trƣờng Đại Học Dân Lập Hải Phòng trang bị cho em kiến thức để em hồn thành tốt báo cáo tốt nghiệp DANH MỤC HÌNH VẼ Hình 1.1 Sơ đồ Quy trình bỏ phiếu điện tử 25 Hình 1.2 Sơ đồ giai đoạn đăng ký bỏ phiếu 27 Hình 1.3 Sơ đồ giai đoạn bỏ phiếu .28 Hình 1.4 Sơ đồ giai đoạn kiểm phiếu 29 Hình 3.1 Biểu đồ ngữ cảnh 41 Hình 3.2 Biểu đồ phân rã chức 42 Hình 3.3 Ma trận thực thể chức 46 Hình 3.4 Biểu đồ luồng liệu mức hệ thống bỏ phiếu 47 Hình 3.5 Biểu đồ luồng liệu mức tiến trình đăng ký bỏ phiếu 48 Hình 3.6 Biểu đồ luồng liệu mức tiến trình bỏ phiếu 49 Hình 3.7 Biểu đồ luồng liệu mức tiến trình kiểm phiếu 50 Hình 3.8 Biểu đồ ER hệ thống bỏ phiếu 53 Hình 4.1 Giao diện chương trình .58 Hình 4.2 Giao diện bắt đầu trình cài đặt .60 Hình 4.3 Thiết lập cài đặt .60 Hình 4.4 Gán (attach) sở liệu .61 Hình 4.5 Chọn đƣờng dẫn đến sở liệu .61 Hình 4.6 Tạo tài khoản SQL server 2005 62 Hình 4.7 Tạo tài khoản truy cập SQL server 2005 62 Hình 4.8 Đăng nhập .63 Hình 4.9 Các bƣớc làm mù định danh 64 Hình 4.10 Thao tác đăng ký bỏ phiếu 65 Hình 4.11 Thao tác nhận kết đăng ký 65 Hình 4.12 Thao tác xóa mù 66 Hình 4.13 Kiểm tra chữ ký 67 Hình 4.14 Quá trình xác nhận thông tin ký 68 Hình 4.15 Chia sẻ khóa ký cho thành viên 69 Hình 16 Thiết lập khóa cho hệ thống .69 BẢNG CHỮ VIẾT TẮT BDK: Ban đăng ký BKP: Ban kiểm phiếu CA: Certificate Authority – tổ chức chứng thực số CMT: Chứng minh thƣ CPU: Central Processing Unit – đơn vị xử lý trung tâm CT: cử tri GHz: Gigahertz – đơn vị đo tần số HDD: Hard Disk Driver – thiết bị lƣu trữ liệu MB: Megabyte – đơn vị đo dung lƣợng MHz: Megahertz - đơn vị đo tần số RAM: Random Access Memmory – Bộ nhớ truy cập ngẫu nhiên RSA: tên hệ mã hóa khóa cơng khai đƣợc đặt tên tên ngƣời sáng tạo hệ mã hóa Ron Rivest, Adi Shamir Len Adleman USB: Univeral Serial Bus – chuẩn kết nối máy tính với thiết bị ngoại vi MỞ ĐẦU Trong suốt nhiều kỉ qua giới, bầu cử giữ vai trò quan trọng việc xác lập thể chế trị quốc gia Và xu hƣớng phát triển khoa học công nghệ ngày nay, công nghệ thông tin ngày phổ biến đƣợc áp dụng lĩnh vực đời sống Các bầu cử ngoại lệ Ngƣời ta bỏ nhiều công sức để nghiên cứu cải tiến phƣơng thức bầu cử để ngày trở nên tốt tiện lợi Các phƣơng thức thay đổi theo thời kỳ, theo tiến xã hội Và với tiến xã hội ngày dự án phủ điện tử để giúp nhà nƣớc điều hành đất nƣớc điều tất yếu, kèm theo phát triển bỏ phiếu điện tử để thay cho bỏ phiếu thông thƣờng điều diễn tƣơng lai Nắm đƣợc tầm quan trọng tính tất yếu bỏ phiếu điện tử, nƣớc, tổ chức xây dựng giải pháp cho bỏ phiếu điện tử Khóa luận sâu tốn an tồn thơng tin bỏ phiếu điện tử, đặc biệt giai đoạn đăng ký bỏ phiếu Sau phân tích thiết kế thử nghiệm ứng dụng nhỏ bỏ phiếu điện tử Chương MỘT SỐ KHÁI NIỆM CƠ BẢN 1.1 MỘT SỐ KHÁI NIỆM TOÁN HỌC 1.1.1 Số nguyên tố nguyên tố 1/ Khái niệm + Số nguyên tố số chia hết cho + Hai số ngun tố m n đƣợc gọi nguyên tố ƣớc số chung lớn chúng Ký hiệu: UCLN(m, n) = Số nguyên tố thƣờng đƣợc sử dụng hệ mã hóa (thƣờng số lớn 10150) 2/ Ví dụ: + Các số 2, 3, số nguyên tố + Hai số 14 nguyên tố 1.1.2 Đồng dƣ 1/ Khái niệm Cho số nguyên a, b, n (n > 0), a đƣợc gọi đồng dƣ với b theo modulo n, chia a b cho n có số dƣ Số nguyên n đƣợc gọi modulo đồng dƣ Ký hiệu: a b (mod n) 2/ Ví dụ: ≡ mod mod = mod = 3/ Tính chất đồng dƣ: Cho a, a1, b, b1, c Z Ta có tính chất sau: + a ≡ b mod n nếu a b có số dƣ chia cho n + Tính phản xạ: a ≡ a mod n + Tính đối xứng: Nếu a ≡ b mod n b ≡ a mod n + Tính giao hốn: Nếu a ≡ b mod n b ≡ c mod n a ≡ c mod n + Nếu a ≡ a1 mod n, b ≡ b1 mod n a + b ≡ a1 + b1 mod n ab ≡ a1b1 mod n 1.1.3 Không gian Zn Zn* 1/ Khái niệm Không gian số nguyên theo modulo n: Z tập hợp số nguyên không âm nhỏ n Tức : Zn = {0, 1, 2, , n-1} Tất phép toán Zn đƣợc thực modulo n Không gian Zn* tập hợp số nguyên p thuộc Zn cho ƣớc chung lớn p n Tức Zn* = {p thuộc Zn | UCLN(n, p) = 1} 2/ Ví dụ: Z6 = {0, 1, 2, 3, 4, 5}, Z6* = {1, 5} 1.1.4 Khái niệm nhóm, nhóm con, nhóm Cyclic 1/ Khái niệm a) Nhóm phần tử (G, *) thỏa mãn tính chất sau: + Tính chất kết hợp: ( x * y ) * z = x * ( y * z ) + Tính chất tồn phần tử trung gian e G: e * x = x * e = x, x + Tính chất tồn phần tử nghịch đảo x’ b) Nhóm G tập S G, S G G: x’ * x = x * x’ = e , thỏa mãn tính chất sau: + Phần tử trung lập e G nằm S + S khép kín phép tính (*) trong, tức x * y S với x, y + S khép kín phép lấy nghịch đảo G, tức x-1 S với x S S c) Nhóm cyclic: (G, *) nhóm đƣợc sinh phần tử Tức có phần tử g G mà với a G, tồn số n N để gn = a Khi g phần tử sinh hay phần tử ngun thủy nhóm G 2/ Ví dụ: (Z+, *) gồm số nguyên dƣơng nhóm cyclic có phần tử sinh 10 4.4 HƢỚNG DẪN SỬ DỤNG CHƢƠNG TRÌNH 4.4.1 Hƣớng dẫn cài đặt chƣơng trình 1/ Cài đặt chƣơng trình Chạy tệp setup.exe để bắt đầu trình cài đặt Bấm [next] Hình 4.2 Giao diện bắt đầu trình cài đặt Sau lựa chọn đƣờng dẫn để cài chƣơng trình (hình 4.3) Bấm [next] Hình 4.3 Thiết lập cài đặt 60 2/ Gán sở liệu (attach database) + Khởi động SQL Management Studio Express Trong cửa sổ đối tƣợng (Object Explorer), nhấn chuột phải lên Database chọn Attach… Hình 4.4 Gán (attach) sở liệu + Trong cửa sổ Attach Database (hình 4.3), bấm [Add], chọn đƣờng dẫn (Evoting.mdf nằm thƣ mục Data chƣơng trình vừa cài đặt) Sau bấm [OK] để hồn tất trình Hình 4.5 Chọn đƣờng dẫn đến sở liệu 61 3/ Tạo tài khoản truy cập sở liệu + Trong cửa sổ đối tƣợng chuột phải lên Security, lựa chọn Login… Hình 4.6 Tạo tài khoản SQL server 2005 + Trong cửa sổ tạo mới(Login - New) nhập thông tin tên, mật thẻ General Sau chuyển sang thẻ User Mapping, lựa chọn sở liệu vừa gán bƣớc 1, chọn db_owner Rồi bấm OK Ví dụ: Tạo tài khoản tên test, mật 123 Hình 4.7 Tạo tài khoản truy cập SQL server 2005 62 4.4.2 Hƣớng dẫn chạy chƣơng trình + Khởi động tệp Evoting Register.exe để vào chƣơng trình + Nhập thơng tin kết nối sở liệu: tên máy chủ, tên sở liệu, tên ngƣời dùng mật vừa tạo Sau bấm [đăng nhập] Ví dụ: Tên SQL server máy chủ “HOANGTRUNG\SQLEXPRESS” (có thể xem cách mở SQL server managerment studio express), sở liệu “Evoting”, tên tài khoản tạo (mục 4.4.1) “test”, mật “123” Hình 4.8 Đăng nhập + Nếu đăng nhập thành công mở giao diện (Hình 4.1) Trong giao diện thơng tin bỏ phiếu, cặp khóa cơng khai chƣơng trình, nút chức 63 4.4.3 Hƣớng dẫn chức khách 4.4.3.1 Hướng dẫn trình làm mù Hình 4.9 Các bƣớc làm mù định danh + Bƣớc 1: Nhập định danh + Bƣớc 2: Chọn tham số làm mù, bấm [thực hiện] nhận đƣợc tham số xóa mù (yêu cầu tham số làm mù phải có nghịch đảo modulo n) Sau bấm [Tiếp] + Bƣớc 3: Bấm [thực hiện] để nhận bí danh Ví dụ : chọn định danh 5, tham số làm mù r Ta có Tham số xóa mù: r-1 = 17 * 17 = mod 33, bí danh: 5* 27 mod 33 = 13 64 4.4.3.2 Hướng dẫn q trình đăng ký + Nhập thơng tin đầy đủ để đăng ký( bƣớc yêu cầu cử tri phải có tên danh sách cử tri có quyền đăng ký) bấm [thực hiện] để đăng ký Hình 4.10 Thao tác đăng ký bỏ phiếu + Nhập số chứng minh thƣ điện tử, họ tên bấm [Tiếp] Chƣơng trình gửi trả bí danh sau ký cử tri nhƣ ban đăng ký ký Hình 4.11 Thao tác nhận kết đăng ký Ví dụ: số chứng minh thƣ “1234567” cử tri “Nguyễn Văn A” đƣợc chấp nhận cho phép đăng ký Sau thực trình ký (trình bày mục 4.4.4.1) ta đƣợc kết bí danh sau ký 133 mod 33 = 19 65 4.4.3.3 Hướng dẫn q trình xóa mù Nhập lại bí danh tham số bí mật nhận đƣợc làm mù để xóa mù nhận định danh sau xóa mù Hình 4.12 Thao tác xóa mù Ví dụ: Với bí danh nhận đƣợc = 19 (trong mục 4.4.3.2) tham số xóa mù = 17 (trong mục 4.4.3.1) Ta có định danh = 19 * 17 mod 33 = 26 66 4.4.3.4 Hướng dẫn trình kiểm tra chữ ký Nhập định danh, định danh sau ký để chƣơng trình kiểm tra chữ ký Nếu nhƣ chữ ký thông báo xác nhận chữ ký ban đăng ký (hình 4.11) Hình 4.13 Kiểm tra chữ ký Ví dụ: nhập định danh ban đầu (mục 4.4.3.1) định danh lấy đƣợc sau xóa mù (mục 4.4.3.3) Ta có hàm kiểm tra theo khóa cơng khai b Ver(x, y) = true = 267 mod 33 67 4.4.4 Hƣớng dẫn chức ngƣời sử dụng 4.4.4.1 Hướng dẫn trình xác nhận ký Khi đăng nhập, chƣơng trình kiểm tra quyền hạn ngƣời đăng nhập thành viên ban đăng ký, ngƣời xem đƣợc thông tin cử tri đăng ký, có quyền đồng ý khơng đồng ý cử tri (là trình xác nhận lại thông tin cử tri thành viên ban đăng ký) Thành viên phải chọn vào ô đồng ý ký, nhập mảnh khóa mình, bấm [thực hiện] Bấm [Ký] có đồng ý tất thành viên Hình 4.14 Quá trình xác nhận thơng tin ký Ví dụ: Hiện hệ thống có thành viên lần lƣợt có tên tài khoản “member1”, “member2”, “member3” (mật trùng với tên tài khoản) Trong ví dụ ta đăng nhập vào tài khoản xác nhận đồng ý Sau bấm [Ký] xác nhận tài khoản 68 4.4.4.2 Hướng dẫn q trình chia sẻ khóa Đăng nhập tài khoản “admin”, mật “admin” Vào phân phối khóa ( hình 4.15), bấm [Phân phối], hệ thống tự động kiểm tra số lƣợng thành viên ban đăng ký khóa bí mật đợt bỏ phiếu đƣợc thiết lập hệ thống để thực chia sẻ khóa Hình 4.15 Chia sẻ khóa ký cho thành viên 4.4.4.3 Hướng dẫn q trình thiết lập khóa Đăng nhập: tài khoản “admin”, mật “admin” Nhập số nguyên tố (p, q) lựa chọn khóa cơng khai b Sau bấm [thực hiện] chƣơng trình tính n khóa bí mật a Sau bấm [thiết lập] Hình 4.16 Thiết lập khóa cho hệ thống Ví dụ: p = 3, q = 11, b = n = p * q = 33, (n) = ( 11 – ) * ( – ) = 20, a = * = mod 20 69 KẾT LUẬN Khóa luận gồm hai kết : 1/ Tìm hiểu nghiên cứu qua tài liệu để hệ thống lại vấn đề sau: + Tổng quan bỏ phiếu điện tử, an toàn thơng tin Nhƣ trình bày trên, việc nghiên cứu xây dựng hệ thống bỏ phiếu điện tử để đáp ứng yêu cầu bỏ phiểu hƣớng nghiên cứu cần thiết Ƣu điểm bỏ phiếu điện tử cử tri tham gia bỏ phiếu nơi góp phần làm tăng số cử tri tham gia bỏ phiếu Nhờ đặc điểm này, bầu cử diễn thƣờng xuyên cho phép công dân chuyển nhanh ý kiến họ lúc Nhƣng bỏ phiếu điện tử có nhiều hạn chế, việc xây dựng hạ tầng sở cho việc bỏ phiếu vấn đề khó khăn đặc biệt vùng sâu vùng xa Bên cạnh đó, nay, chƣa có giải pháp hồn thiện đƣợc tìm thấy để đảm bảo tính an tồn tuyệt đối bỏ phiếu Ở phạm vi nhỏ, bỏ phiếu điện tử đơn giản lấy ý kiến bỏ qua số giai đoạn nhằm giảm phức tạp công việc triển khai Tuy nhiên, bầu cử có quy mơ lớn, đặc biệt bầu cử cấp quốc gia hệ thống bỏ phiếu cần phải đặt việc bảo mật lên hàng đầu bỏ qua đƣợc giai đoạn + Một số toán ATTT giai đoạn đăng ký Bỏ phiếu: Qua toán đăng ký bỏ phiếu, ta thấy đƣợc vấn đề mà hệ thống mắc phải thƣờng bảo mật, xác thực, + Phƣơng pháp giải tốn: Nhƣ trình bày khóa luận với vấn đề an tồn thơng tin có nhiều cách khắc phục, nhiên để tìm cách tồn vẹn cịn giai đoạn nghiên cứu Ta thấy đƣợc số cách sau : mã hóa, ký số, chia sẻ khóa bí mật, chứng thực số, hàm băm, 70 2/ Thử nghiệm xây dựng chƣơng trình đăng ký bỏ phiếu dựa hệ mã hóa RSA phạm vi nhỏ Chƣơng trình mơ bƣớc giai đoạn đăng ký bỏ phiếu giải đƣợc số tốn an tồn thơng tin ký mù, chia sẻ khóa, mã hóa RSA Bỏ phiếu điện tử cịn hình thức mẻ chƣa đƣợc áp dụng thực tế Việt Nam Nên trình nghiên cứu làm khóa luận này, khơng thể tránh khỏi thiếu sót Kính mong đƣợc bổ khuyết quý thầy cô ngƣời quan tâm, khóa luận trở nên hồn chỉnh 71 TÀI LIỆU THAM KHẢO Tiếng Việt [1] Trịnh Nhật Tiến, Trƣơng Thị Thu Hiền, “Về quy trình bỏ phiếu từ xa”, Đại học công nghệ, đại học quốc gia Hà Nội [2] PGS.TS Trịnh Nhật Tiến, “Giáo trình an tồn liệu”, Đại học công nghệ, đại học quốc gia Hà Nội Tiếng Anh [1] Ivan Damgard, Jens Groth and Gorm Salomonsen, “The theory and implenmentation of an Electronic Voting Sytem” 72 PHỤ LỤC Các phụ lục sau đƣợc bổ sung vào khóa luận : 1) Hàm tìm nghịch đảo thuật toán euclid mở rộng Đầu vào: số a, m Đầu ra: nghịch đảo a modulo m Protected Function euclidextend(ByVal a As Integer, ByVal m As Integer) Dim y0 = 0, y1 = 1, y = 0, m2 = m, a2 = a Dim r, q While a > r = m Mod a If r = Then Exit While End If q=m\a y = y0 - y1 * q m=a:a=r y0 = y1 : y1 = y End While If a > Then Return a2 & " không khả nghịch theo modulo " & m2 Else If y < Then y = m2 + y End If Return y End If End Function (Ngơn ngữ lập trình vb.net) 73 2) Hàm lấy ghép khóa ký phép khử gauss Sử dụng phép khử Gauss áp dụng ma trận mở rộng (Đã trình bày mục 2.2.3 tiểu mục “hợp khóa”) Đầu vào: ma trận mt(n-1, n) chứa giá tham số hệ phƣơng trình, với n số hệ phƣơng trình Đầu ra: khóa bí mật Protected Function gauss(ByVal mt(,) As Integer, ByVal n As Integer) Dim i, j, k, tg For k = To n - For i = k + To n - tg = mt(i, k) / mt(k, k) For j = k To n - mt(i, j) = mt(i, j) - tg * mt(k, j) Next mt(i, n) = mt(i, n) - tg * mt(k, n) Next Next Return mt(n - 1, n) End Function (Ngơn ngữ lập trình vb.net) 74