3.3.1. Giao thức phân phối khoá Blom.
1). Ý tưởng chính
Giả thiết có một mạng gồm n người dùng.
Giả sử rằng các khoá được chọn trên trường hữu hạn Zp (số nguyên tố p ≥ n). Chọn số nguyên k, (1 < k < n-2), giá trị k để hạn chế kích thước lớn nhất, mà sơ đồ vẫn duy trì được độ mật.
Trung tâm được uỷ quyền (TT) phải thiết kế một sơ đồ phân phối khóa để thực hiện được các yêu cầu sau:
- Truyền đi (k+1) phần tử của Zp , cho mỗi người dùng trên kênh an toàn (Theo phương pháp phân phối thông thường, TT phải truyền đi n-1 phần tử).
- Mỗi cặp người dùng U và V phải có khả năng tính được khoá chung Ku, v = Kv, u
- Bảo đảm điều kiện an toàn sau: Tập bất kỳ gồm nhiều nhất k người dùng không liên kết với U hay V, thì “khó” thể xác định được bất kì thông tin nào về Ku,v
2). Ứng dụng số nguyên tố.
3.3.2. Giao thức phân phối khoá Diffie-Hellman.
1). Sơ đồ.
a/. Chọn số nguyên tố p sao cho bài toán logarit rời rạc trong Zp là “khó” giải.
Chọn là phần tử nguyên thuỷ của Zp * .
Giá trị p và là công khai (Người dùng hoặc TT chọn).
Mỗi người dùng U chọn số mũ bí mật au (0 ≤ au ≤ p - 2) và tính giá trị công khai tương ứng: b u = au mod p.
Mỗi người dùng U có dấu xác nhận của TT về ID(U) và bu: C(U) = (ID(U), bu, sigTT (ID(U), bu)) .
b/. Để có khoá chung với V, người dùng U (có au) tính:
Ku, v = bau p
v mod = auav mod p
c/. Để có khoá chung với U, người dùng V (có av) tính:
Kv, u = b av p
u mod = auav mod p
R ràng 2 khoá là như nhau và bằng auav mod p
2). Ứng dụng số nguyên tố.
Sơ đồ này “an toàn” về mặt tính toán, vì nó liên quan đến chọn số nguyên tố p để bài toán logarit rời rạc “khó ” giải. Cụ thể là “khó” tính được au từ phần tử công khai b u = aumod p.
3.3.3. Giao thức thoả thuận khoá Diffie-Hellman.
1). Sơ đồ
Người dùng chọn số nguyên tố p rất lớn sao cho bài toán logarit rời rạc trong Zp* là “khó” giải; chọn là phần tử nguyên thuỷ Zp * . Phần tử p, là công khai.
a/. Người dùng U chọn au ngẫu nhiên, bí mật (0 ≤ au ≤ p – 2).
Tính b u = au mod p và gửi nó đến V.
b/. Người dùng V chọn av ngẫu nhiên, bí mật (0 ≤ av ≤ p – 2).
Tính b v = av mod p và gửi nó đến U.
c/. U tính khoá chung Ku, v = (av)au mod p.
d/. V tính khoá chung Kv, u = (au)av mod p.
Hai giá trị khoá đó là bằng nhau!
2). Ứng dụng số nguyên tố.
Sơ đồ này “an toàn” về mặt tính toán, vì nó liên quan đến chọn số nguyên tố p để bài toán logarit rời rạc “khó ” giải.
3.3.4. Giao thức thoả thuận khoá “Trạm tới Trạm”.
Giao thức thoả thuận khoá “Trạm tới Trạm” (STS) là cải tiến của giao thức phân phối khoá Diffie-Hellman, trong đó bổ sung phần xác thực danh tính của người dùng. STS được gọi là giao thức thoả thuận khoá có xác thực, nhờ trung tâm tin cậy TT.
1). Sơ đồ
Trung tâm tin cậy TT chọn số nguyên tố p rất lớn sao cho bài toán logarit rời rạc trong Zp * là “khó” giải. Chọn là phần tử nguyên thuỷ trong Zp * .
Giá trị p, công khai, có dấu xác nhận của TT.
Mỗi người dùng U có chữ ký với thuật toán xác minh veru. TT có chữ ký với thuật toán xác minh verTT .
Mỗi người dùng U có dấu xác nhận định danh ID(U) là: C(U) = (ID(U), veru , sigTT (ID(U), veru)).
a/. U chọn au ngẫu nhiên, bí mật (0 ≤ au ≤ p – 2), tính aumod p, gửi tới V.
b/. V chọn av ngẫu nhiên, bí mật (0 ≤ av ≤ p – 2).
Tính av mod p, yv = sig v (av, au) . Gửi (C(V), avmod p, yv) tới U.
V tính khóa chung Kv, u = (au)av mod p
c/. U tính khóa chung Ku, v = (av)au mod p
Dùng verv để xác minh yv và xác minh C(V) nhờ verTT. Tính yu = sig u(au, av). Gửi (C(U), yu) tới V.
d/. Dùng veru để xác minh yu và xác minh C(U) nhờ verTT.
2). Ứng dụng số nguyên tố.
Sơ đồ này “an toàn” về mặt tính toán, vì nó liên quan đến chọn số nguyên tố p để bài toán logarit rời rạc “khó ” giải.
3.3.5. Giao thức thoả thuận khoá MTI.
Matsumoto, Takashima và Imai (MTI) đã xây dựng giao thức thoả thuận khoá bằng cách cải biên giao thức trao đổi khoá STS. Giao thức không đòi hỏi U và V phải tính bất kỳ chữ ký nào. Đó là giao thức “2 lần”, vì chỉ có 2 lần truyền tin riêng biệt (một từ U đến V và một từ V đến U).
1). Sơ đồ
Chọn số nguyên tố p rất lớn sao cho bài toán logarit rời rạc trong Zp * là “khó” giải. Chọn là phần tử nguyên thuỷ Zp *.
Mỗi người dùng U có số mũ bí mật au (0 ≤ au ≤ p -2) và giá trị công khai tương ứng: bu = au mod p.
TT có sơ đồ chữ ký với thuật toán ký bí mật sigTT và thuật toán xác minh verTT. Mỗi người dùng U có định danh ID(U) và dấu xác nhận của TT:
C(U) = (ID(U), bu , sig TT (ID(U), bu)).
a/. U chọn ngẫu nhiên bí mật ru , 0 ≤ ru ≤ p – 2, tính su = ru mod p và gửi
(C(U), su) đến V.
b/. V chọn ngẫu nhiên bí mật rv , 0 ≤ rv ≤ p – 2, tính sv = rv mod p và gửi
(C(V), sv) đến U. c/. U tính khoá K = u vru a v b s * mod p, trong đó bv nhận từ C(V). d/. V tính khoá K = v urv a u b
s * mod p, trong đó bu nhận từ C(U).
Cuối giao thức, U và V đều tính được cùng một khoá K = ru*avrv*au mod p.
2). Ứng dụng số nguyên tố.
Sơ đồ này “an toàn” về mặt tính toán, vì nó liên quan đến chọn số nguyên tố p để bài toán logarit rời rạc “khó ” giải.
3.4. THỬ NGHIỆM CHƯƠNG TRÌNH 3.4.1. Cấu hình hệ thống. 3.4.1. Cấu hình hệ thống.
- Yêu cầu phần cứng: Phần cứng tối thiểu đề nghị cho tất cả máy dự cài đặt và sử dụng chương trình Demo
+ Tối thiểu là Pentium III.
+ Dung lượng RAM đề nghị 256.
+ Dung lượng cần để cài đặt chương trình 10MB.
- Yêu cầu phần mềm : Chương trình chạy trên nền tảng hệ điều hành Windows, cần cài đặt Dotnet Framework 4.0 trở lên. (Có gửi kèm bộ cài đặt này trong thư mục tài liệu báo cáo).
3.4.2. Chức năng chính.
Chương trình cho phép thực hiện các chức năng sau : - Kiểm tra số nguyên tố lớn bằng phương pháp Fermat. - Kiểm tra số nguyên tố lớn bằng phương pháp Miller-Rabin.
3.4.3. Chương trình
1). Giao diện chương trình.
2). Chức năng kiểm tra số nguyên tố lớn bằng phương pháp Fermat.
Modul kiểm tra một số có phải là số nguyên tố không theo thuật toán Fermat
3). Chức năng kiểm tra số nguyên tố lớn bằng phương pháp Miller-Rabin.
Modul kiểm tra một số có phải là số nguyên tố không theo thuật toán Miller – Rabin
Modul đưa ra một số nguyên tố tiếp theo số vừa nhập
KẾT LUẬN
Như vậy để kiểm tra một số nguyên có là số nguyên tố hay không, theo suy nghĩ trực quan của tất cả các lập trình viên hay thậm chí một người không hiểu biết gì về thuật toán thì chúng ta cần kiểm tra xem số đó có ước số nào khác 1 và chính nó hay không, nếu có thì đó là hợp số (combine number) còn nếu không có số nào thì đó chính là một số nguyên tố.
Tùy thuộc theo từng lĩnh vực sử dụng và kiểm tra các số nguyên tố mà ta áp dụng các thuật toán cho phù hợp. Đối với việc kiểm tra các số nguyên nhỏ ta có thể áp dụng phương pháp cổ điển để kiểm tra, song việc kiểm tra các số nguyên lớn thì số phép toán thực hiện là rất lớn. Khi đó, việc áp dụng các thuật toán theo phương pháp xác suất là khả thi hơn rất nhiều và chờ đợi có thể không mất nhiều thời gian.
Luận văn đã đạt được các kết quả chính sau:
1). Nghiên cứu lý thuyết và thực tế để hệ thống lại các vấn đề sau: + Một số phương pháp kiểm tra số nguyên tố.
+ Ứng dụng số nguyên tố trong các thuật toán bảo vệ thông tin. 2). Xây dựng thử nghiệm chương trình với các chức năng sau: + Kiểm tra số nguyên tố bằng phương pháp Fermat.
+ Kiểm tra số nguyên tố bằng phương pháp Miller-Rabin.
TÀI LIỆU THAM KHẢO Tiếng Việt
[1] PGS. TS. Trịnh Nhật Tiến (2009), Bài giảng cao học: An ninh Cơ sở dữ liệu, ĐH Công nghệ, ĐHQG HN.
[2] PGS. TS. Trịnh Nhật Tiến (2008), Giáo trình: An toàn dữ liệu, ĐH Công nghê, ĐHQG HN.
[3] Phan Đình Diệu (2006), Lý thuyết mật mã và An toàn thông tin, NXB ĐHQG HN.
[4] Nguyễn Xuân Dũng (2007), Bảo mật thông tin mô hình & ứng dụng, NXB Thống kê.
[5] Bùi Doãn Khanh, Nguyễn Đình Thúc, Trần Đan Thư (2007), Cơ sở lí thuyết
số trong an toàn - bảo mật thông tin, NXB Giáo dục.
[6] Hà Huy Khoái, Phạm Huy Điển (2003), Số học thuật toán: Cở sở lý thuyết
và tính toán thực hành, NXB ĐHQG HN.
[7] Hà Huy Khoái, Phạm Huy Điển (2004), Mã hoã thông tin: Cơ sở toán học và
ứng dụng, NXB ĐHQG HN.
Tiếng Anh
[8] Manindra Agrawal (2005), “Primality tests based on Fermat’s little theorem”, Department of CS, Indian Institute of Technology, Kanpur.
[9] Manindra Agrawal, Neeraj Kayal, Nitin Saxena (2004), “PRIMES is in P”,
Ann. of Math, (2), 160(2): 781-793.
[10] R. Crandall, Carl Pomerance (2001), “Prime Numbers: A Computational Perspective”, Springer-Verlag, NewYork, 2001.
[11] R. Crandall and J. Papadopoulos (2003), “On the implementation of AKS- class primality tests”, Technical paper, Apple Advanced Computation Group.