Đồ án Chứng chỉ số và mô phỏng

Tài liệu Đồ án Chứng chỉ số và mô phỏng: MỤC LỤC LỜI CẢM ƠN Để hoàn thành đồ án này, tôi đã nhận được rất nhiều sự giúp đỡ, chỉ bảo tận tình và động viên của mọi người xung quanh. Xin gửi lời cảm ơn của tôi tới tất cả mọi người, đặc biệt xin chân thành cảm ơn: Sự quan tâm giúp đỡ, chỉ bảo nhiệt tình của Thạc sỹ Trần Ngọc Thái - Bộ môn Công nghệ thông tin trường Đại học dân lập Hải Phòng. Sự giúp đỡ và tạo mọi điều kiện của các thầy cô trong Ban giám hiệu nhà trường nói chung và Bộ môn công nghệ thông tin nói riêng. MỞ ĐẦU Ngày nay, việc ứng dụng công nghệ thông tin vào mọi mặt của đời sống đã mang lại những kết quả to lớn cho xã hội, đặc biệt là những ứng dụng của mạng Internet trong thời đại thông tin hiện nay. Thế nhưng những thách thức về bảo mật mạng lại nảy sinh bởi chính bản chất của sự chia sẻ toàn cầu đó. Do vậy làm sao để có những giao dịch trực tuyến an toàn là vấn đề cấp bách và thiết yếu! Vấn đề xác thực trở thành một trong những vấn đề nóng bỏng. Xác thực là xác minh, kiểm tra một thông tin hay một th...

doc68 trang | Chia sẻ: hunglv | Lượt xem: 1231 | Lượt tải: 0download
Bạn đang xem trước 20 trang mẫu tài liệu Đồ án Chứng chỉ số và mô phỏng, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
MỤC LỤC LỜI CẢM ƠN Để hoàn thành đồ án này, tôi đã nhận được rất nhiều sự giúp đỡ, chỉ bảo tận tình và động viên của mọi người xung quanh. Xin gửi lời cảm ơn của tôi tới tất cả mọi người, đặc biệt xin chân thành cảm ơn: Sự quan tâm giúp đỡ, chỉ bảo nhiệt tình của Thạc sỹ Trần Ngọc Thái - Bộ môn Công nghệ thông tin trường Đại học dân lập Hải Phòng. Sự giúp đỡ và tạo mọi điều kiện của các thầy cô trong Ban giám hiệu nhà trường nói chung và Bộ môn công nghệ thông tin nói riêng. MỞ ĐẦU Ngày nay, việc ứng dụng công nghệ thông tin vào mọi mặt của đời sống đã mang lại những kết quả to lớn cho xã hội, đặc biệt là những ứng dụng của mạng Internet trong thời đại thông tin hiện nay. Thế nhưng những thách thức về bảo mật mạng lại nảy sinh bởi chính bản chất của sự chia sẻ toàn cầu đó. Do vậy làm sao để có những giao dịch trực tuyến an toàn là vấn đề cấp bách và thiết yếu! Vấn đề xác thực trở thành một trong những vấn đề nóng bỏng. Xác thực là xác minh, kiểm tra một thông tin hay một thực thể nào đó để công nhận hoặc bác bỏ tính hợp lệ của thông tin hay thực thể đó. Đây là yêu cầu rất quan trọng trong các giao tiếp cần có sự tin cậy giữa các đối tượng tham gia trao đổi thông tin. Trên thực tế, có một số hình thức xác thực thực thể như chứng minh thư, giấy phép lái xe, hoặc các giấy tờ cá nhân khác, và xác thực tính an toàn của thông tin như chữ ký, con dấu. Còn chứng chỉ số chính là “chứng minh thư trên thế giới điện tử”. Trong đồ án này nghiên cứu về phương pháp xác thực dùng chứng chỉ số. Đồ án gồm 3 chương: Chương 1: Các khái niệm cơ bản – Trình bày cơ sở toán học và các khái niệm về an toàn và bảo mật thông tin Chương 2: Xác thực bằng chứng chỉ số – Trình về khái niệm, phân loại và cách sử dụng chứng chỉ số trong xác thực điện tử Chương 3: Chương trình mô phỏng – Xây dựng một chương trình mô phỏng sử dụng chứng chỉ số trong xác thực thành viên trên mạng Internet. Chương 1. CÁC 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ố và nguyên tố cùng nhau Số nguyên tố là số nguyên dương chỉ chia hết cho 1 và chính nó. Ví dụ: 2, 3, 5, 7, 17, … là những số nguyên tố. Hệ mật mã thường sử dụng các số nguyên tố ít nhất là lớn hơn 10150. Hai số m và n được gọi là nguyên tố cùng nhau nếu ước số chung lớn nhất của chúng bằng 1. Ký hiệu: gcd(m, n) = 1. Ví dụ: 9 và 14 là nguyên tố cùng nhau. 1.1.2 Đồng dư thức Cho a và b là các số nguyên tố, n là số nguyên dương thì a được gọi là đồng dư với b theo modulo n nếu n|a-b (tức a - b chia hết cho n, hay khi chia a và b cho n được cùng một số dư như nhau). Số nguyên n được gọi là modulo của đồng dư. Kí hiệu: a ≡ b (mod n) Ví dụ: 67 ≡ 11 (mod 7), bởi vì 67 (mod 7) = 4 và 11 (mod 7) = 4. Tính chất của đồng dư: Cho a, a1, b, b1, c Î Z. Ta có các tính chất: a ≡ b mod n nếu và chỉ nếu a và b có cùng số dư khi chia cho n. Tính phản xạ: a ≡ a mod n. Tính đối xứng: Nếu a ≡ b mod n thì b ≡ a mod n. Tính giao hoán: Nếu a ≡ b mod n và b ≡ c mod n thì a ≡ c mod n. Nếu a ≡ a1 mod n, b ≡ b1 mod n thì a + b ≡ (a1 + b1) mod n và ab ≡ a1b1 mod n. 1.1.3 Không gian Zn và Zn* Không gian Zn (các số nguyên theo modulo n) Là tập hợp các số nguyên {0, 1, 2, …, n-1}. Các phép toán trong Zn như cộng, trừ, nhân, chia đều được thực hiện theo module n. Ví dụ: Z11 = {0, 1, 2, 3, …, 10} Trong Z11: 6 + 7 = 2, bởi vì 6 + 7 = 13≡ 2 (mod 11). Không gian Zn* Là tập hợp các số nguyên p Î Zn, nguyên tố cùng n. Tức là: Zn* = {p Î Zn | gcd (n, p) =1}, F(n) là số phần tử của Zn* Nếu n là một số nguyên tố thì: Zn* = {p Î Zn |1 ≤ p ≤ n-1} Ví dụ: Z2 = {0, 1} thì Z2* = {1} vì gcd(1, 2) = 1. 1.1.4 Phần tử nghịch đảo Định nghĩa: Cho a Î Zn. Nghịch đảo của a theo modulo n là số nguyên x Î Zn sao cho ax ≡ 1 (mod n). Nếu x tồn tại thì đó là giá trị duy nhất, và a được gọi là khả nghịch, nghịch đảo của a ký hiệu là a-1. Tính chất: Cho a, b Î Zn. Phép chia của a cho b theo modulo n là tích của a và b-1 theo modulo n, và chỉ được xác định khi b có nghịch đảo theo modulo n. Cho a Î Zn, a là khả nghịch khi và chỉ khi gcd(a, n) = 1. Giả sử d=gcd (a, n). Phương trình đồng dư ax ≡ b mod n có nghiệm x nếu và chỉ nếu d chia hết cho b, trong trường hợp các nghiệm d nằm trong khoảng 0 đến n - 1 thì các nghiệm đồng dư theo modulo n/d. Ví dụ: 4-1 = 7 (mod 9) vì 4.7 ≡ 1 (mod 9) 1.1.5 Khái niệm nhóm, nhóm con, nhóm Cyclic Nhóm là bộ các phần tử (G, *) thỏa mãn các tính chất: Kết hợp: ( x * y ) * z = x * ( y * z ) Tồn tại phần tử trung lập e Î G: e * x= x * e = x , "x Î G Tồn tại phần tử nghịch đảo x’ Î G: x’ * x = x * x’ = e Nhóm con của nhóm (G,*) là bộ các phần tử (S,*) thỏa mãn các tính chất: S Ì G, phần tử trung lập e Î S . x, y Î S => x * y Î S. Nhóm Cyclic: Là nhóm mà mọi phần tử của nó được sinh ra từ một phần tử đặc biệt g Î G. Phần tử này được gọi là phần tử sinh (nguyên thủy), tức là: Với " x Î G: $ n Î N mà gn = x. Ví dụ: (Z+, *) là nhóm cyclic có phần tử sinh là 1. Định nghĩa: Ta gọi Cấp của nhóm là số các phần tử trong nhóm đó. Như vậy, nhóm Zn* có cấp F(n). Nếu p là số nguyên tố thì nhóm Zp* có cấp là p-1 Định nghĩa: Cho a Î Zn*, cấp của a ký hiệu là ord(a) được định nghĩa là số nguyên dương nhỏ nhất t thoả mãn: at ≡ 1 (mod n). Ví dụ: Z21*={1, 2, 4, 5, 8, 10, 11, 13, 16, 17, 19, 20}, F(21) = 12 = |Z21*| và cấp của từng thành phần trong Z21* là: a Î Z21* 1 2 4 5 8 10 11 13 16 17 19 20 Cấp của a 1 6 3 6 2 6 6 2 3 6 6 2 1.1.6 Bộ phần tử sinh (Generator-tuple) {g1, ..., gk} được gọi là bộ phần tử sinh nếu mỗi gi là một phần tử sinh và những phần tử này khác nhau (gi ≠ gj nếu i ≠ j). Ví dụ: {3, 5} là bộ phần tử sinh của Z7*, bởi vì: 1 = 36 mod 7 = 56 mod 7 2 = 32 mod 7 = 54 mod 7 3 = 31 mod 7 = 55 mod 7 4 = 34 mod 7 = 52 mod 7 5 = 35 mod 7 = 51 mod 7 6 = 33 mod 7 = 53 mod 7. 2 không phải là phần tử sinh của Z7*, bởi vì: {2, 22, 23 , 24, 25 , 26} = {2,4,1,2,4,1} {1,2,4} Tuy nhiên {1,2,4} là tập con của {1, 2, 3, 4, 5, 6} = Z7*, do đó số 2 được gọi là “phần tử sinh của nhóm G(3)”, G(3) là nhóm có 3 thành phần {1,2,4}. 1.1.7 Bài toán đại diện (Presentation problem). Gọi g là phần tử sinh của nhóm con G(q) thuộc Zn*. Bài toán logarit rời rạc liên quan đến việc tìm số mũ a, sao cho: a = loggh mod n (với h Î G(q)). Cho k>= 2, 1<=ai<= q, i = 1 …k. Bài toán đại diện là: cho h thuộc G(q), tìm {a1, ... , ak}, của bộ phần tử sinh {g1, ... , gk} , sao cho: {ak, ... , ak} được gọi là đại diện (representation). Ví dụ: Cho tập Z*23, thì ta có thể tìm được: nhóm con G(11)={1, 2, 3, 4, 6, 8, 9, 12, 13, 16, 18} với những phần tử sinh gi là: 2, 3, 4, 6, 8, 9, 12, 13, 16, 18. {2, 3} là 2 phần tử sinh của nhóm con G(11) trong Z*23. Bài toán đại diện là với h = 13 Î G(11), tìm {a1, a2} sao cho: Logarit hai vế, có a1*log (2) + a2*log (3) = log (13) mod 23. Kết quả là: a1 = 2 và a2 = 2, vì 22 * 32 = 4*9 = 36 = 13 mod 23. Hay a1 = 7 và a2 = 11, vì 27 * 311 = 128*177147 = 13 mod 23. 1.1.8 Hàm băm. Hàm băm h là hàm một chiều (one-way hash) với các đặc tính sau: Với thông điệp đầu vào x thu được bản băm z = h(x) là duy nhất. Nếu dữ liệu trong thông điệp x thay đổi hay bị xóa để thành thông điệp x’ thì h(x’) ≠ h(x). Cho dù chỉ là một sự thay đổi nhỏ hay chỉ là xóa đi 1 bit dữ liệu của thông điệp thì giá trị băm cũng vẫn thay đổi. Điều này có nghĩa là: hai thông điệp hoàn toàn khác nhau thì giá trị hàm băm cũng khác nhau. Nội dung của thông điệp gốc “khó” suy ra từ giá trị hàm băm. Nghĩa là: với thông điệp x thì dễ dàng tính được z = h(x), nhưng lại “khó” suy ngược lại được x nếu chỉ biết giá trị hàm băm h(x). Tính chất: - Hàm băm h là không va chạm yếu: Nếu cho trước một bức điện x, thì không thể tiến hành về mặt tính toán để tìm ra một bức điện x’ ≠ x mà h(x’) = h(x). - Hàm băm h là không va chạm mạnh: Nếu không có khả năng tính toán để tìm ra hai bức thông điệp x và x’ mà x ≠ x’ và h(x) = h(x’). 1.2 CÁC KHÁI NIỆM VỀ MÃ HOÁ. 1.2.1 Khái niệm mã hóa. Ta biết rằng tin truyền trên mạng rất dễ bị lấy cắp. Để đảm bảo việc truyền tin an toàn người ta thường mã hoá thông tin trước khi truyền đi. Việc mã hoá thường theo quy tắc nhất định gọi là hệ mật mã. Hiện nay có hai loại hệ mật mã mật mã cổ điển và mật mã khoá công khai. Mật mã cổ điển dễ hiểu, dễ thực thi nhưng độ an toàn không cao. Vì giới hạn tính toán chỉ thực hiện trong phạm vi bảng chữ cái sử dụng văn bản cần mã hoá (ví dụ Z26 nếu dùng các chữ cái tiếng anh, Z256 nếu dùng bảng chữ cái ASCII...). Với các hệ mã cổ điển, nếu biết khoá lập mã hay thuật toán thuật toán lập mã, người ta có thể "dễ" tìm ra được bản rõ. Ngược lại các hệ mật mã khoá công khai cho biết khoá lập mã K và hàm lập mã Ck thì cũng rất "khó" tìm được cách giải mã. 1.2.1.1. Hệ mã hóa. Hệ mã hóa là hệ bao gồm 5 thành phần ( P, C, K, E, D ) thỏa mãn các tính chất sau: P (Plaitext): là tập hợp hữu hạn các bản rõ có thể. C (Ciphertext): Là tập hữu hạn các bản mã có thể K (Key): Là tập hợp các bản khoá có thể E (Encrytion): Là tập hợp các quy tắc mã hoá có thể D (Decrytion): Là tập hợp các quy tắc giải mã có thể. Chúng ta đã biết một thông báo thường được xem là bản rõ. Người gửi sẽ làm nhiệm vụ mã hoá bản rõ, kết quả thu được gọi là bản mã. Bản mã được gửi đi trên đường truyền tới người nhận. Người nhận giải mã để tìm hiểu nội dung bản rõ. Dễ dàng thấy được công việc trên khi định nghĩa hàm lập mã và hàm giải mã: Ek(P) = C và Dk (C) = P 1.2.1.2 Những khả năng của hệ mật mã. Cung cấp một mức cao về tính bảo mật, tính toàn vẹn, chống chối bỏ và tính xác thực. Tính bảo mật: Bảo đảm bí mật cho các thông báo và dữ liệu bằng việc che dấu thông tin nhờ các kỹ thuật mã hoá. Tính toàn vẹn: Bảo đảm với các bên rằng bản tin không bị thay đổi trên đường truyền tin. Chống chối bỏ: Có thể xác nhận rằng tài liệu đã đến từ ai đó, ngay cả khi họ cố gắng từ chối nó. Tính xác thực: Cung cấp hai dịch vụ: Nhận dạng nguồn gốc của một thông báo và cung cấp một vài bảo đảm rằng nó là đúng sự thực. Kiểm tra định danh của người đang đăng nhập một hệ thống, tiếp tục kiểm tra đặc điểm của họ trong trường hợp ai đó cố gắng kết nối và giả danh là người sử dụng hợp pháp. 1.2.2 Các phương pháp mã hóa. 1.2.2.1. Mã hóa đối xứng Hệ mã hoá đối xứng: là hệ mã hoá tại đó khoá mã hoá có thể “dễ” tính toán ra được từ khoá giải mã và ngược lại. Trong rất nhiều trường hợp, khoá mã hoá và khoá giải mã là giống nhau. Thuật toán này có nhiều tên gọi khác nhau như thuật toán khoá bí mật, thuật toán khoá đơn giản, thuật toán một khoá. Thuật toán này yêu cầu người gửi và người nhận phải thoả thuận một khoá trước khi thông báo được gửi đi và khoá này phải được cất giữ bí mật. Độ an toàn của thuật toán này phụ thuộc vào khoá, nếu để lộ ra khoá này nghĩa là bất kỳ người nào cũng có thể mã hoá và giải mã thông báo trong hệ thống mã hoá. Sự mã hoá và giải mã của hệ mã hoá đối xứng biểu thị bởi: Ek : P ® C Và Dk: C ® P Nơi ứng dụng: Sử dụng trong môi trường mà khoá đơn dễ dàng được chuyển, như là trong cùng một văn phòng. Cũng dùng để mã hoá thông tin khi lưu trữ trên đĩa nhớ. Các vấn đề đối với hệ mã hoá đối xứng: Phương pháp mã hoá đối xứng đòi hỏi người mã hoá và người giải mã phải cùng chung một khoá. Khoá phải được giữ bí mật tuyệt đối. "Dễ dàng" xác định một khoá nếu biết khoá kia và ngược lại. Hệ mã hoá đối xứng không an toàn nếu khoá bị lộ với xác xuất cao. Hệ này khoá phải được gửi đi trên kênh an toàn. Vấn đề quản lý và phân phối khoá là khó khăn, phức tạp khi sử dụng hệ mã hoá đối xứng. Người gửi và người nhận phải luôn thống nhất với nhau về khoá. Việc thay đổi khoá là rất khó và dễ bị lộ. Khuynh hướng cung cấp khoá dài mà nó phải được thay đổi thường xuyên cho mọi người, trong khi vẫn duy trì cả tính an toàn lẫn hiệu quả chi phí, sẽ cản trở rất nhiều tới việc phát triển hệ mật mã. 1.2.2.2 Mã hóa phi đối xứng (Mã hóa công khai). Hệ mã hoá khoá công khai: là Hệ mã hoá trong đó khoá mã hoá là khác với khoá giải mã. Khoá giải mã “khó” tính toán được từ khoá mã hoá và ngược lại. Khoá mã hoá gọi là khoá công khai (Public key). Khoá giải mã được gọi là khoá bí mật (Private key). Nơi ứng dụng: Sử dụng chủ yếu trong việc trao đổi dữ liệu công khai. Các điều kiện của một hệ mã hoá công khai: Việc tính toán ra cặp khoá công khai KB và bí mật kB dựa trên cơ sở các điều kiện ban đầu, phải được thực hiện một cách dễ dàng, nghĩa là thực hiện trong thời gian đa thức. Người gửi A có được khoá công khai của người nhận B và có bản tin P cần gửi B, thì có thể dễ dàng tạo ra được bản mã C. C = EKB (P) = EB (P) Người nhận B khi nhận được bản mã C với khoá bí mật kB, thì có thể giải mã bản tin trong thời gian đa thức. P = DkB (C) = DB [EB(P)] Nếu kẻ địch biết khoá công khai KB cố gắng tính toán khoá bí mật thì chúng phải đương đầu với trường hợp nan giải, đó là gặp bài toán "khó". 1.2.3 Một số hệ mã hoá cụ thể. 1.2.3.1 Hệ mã hoá RSA. Cho n=p*q với p, q là số nguyên tố lớn. Đặt P = C = Zn Chọn b nguyên tố với f(n), f(n) = (p-1)(q-1) Ta định nghĩa: K={(n,a,b): a*b º 1(mod f (n))} Giá trị n và b là công khai và a là bí mật Với mỗi K=(n, a, b), mỗi x Î P, y Î C định nghĩa Hàm mã hóa: y = ek(x) = xb mod n Hàm giải mã: dk (x) = ya mod n 1.2.3.2 Hệ mã hoá ElGamal. Hệ mã hóa với khoá công khai ElGamal có thể được dựa trên tuỳ ý các nhóm mà với họ đó bài toán lôgarit rời rạc được xem là “khó” giải được. Thông thường người ta dùng nhóm con Gq (cấp q) của Zp; ở đó p, q là các số nguyên tố lớn thoả mãn q|(p-1). Ở đây giới thiệu cách xây dựng nhóm Zp, với p là một số nguyên tố lớn. Sơ đồ: Chọn số nguyên tố lớn p sao cho bài toán logarit rời rạc trong Zp là “khó” (ít nhất p = 10150); Chọn g là phần tử sinh trong Z*p . Lấy ngẫu nhiên một số nguyên a thoả mãn 1£ a £ p-2 và tính toán h=gmod p. Khoá công khai chính là (p, g, h), và khoá bí mật là a. Mã hoá :khoá công khai (p, g, h) muốn mã hoá thư tín m (0£ m < p) Lấy ngẫu nhiên một số nguyên k, 0£ k £ p-2. Tính toán x = gk mod p , y = m * hk mod p. Giải mã. Để phục hồi được bản gốc m từ c = (x, y), ta làm như sau: - Sử dụng khoá riêng a, tính toán r = x. (Chú ý rằng r = x= x= (gk)= g). - Phục hồi m bằng cách tính toán m = y*r mod p. 1.2.3.3. Mã hoá đồng cấu. Xét một sơ đồ mã hoá xác suất. Giả sử P là không gian các văn bản chưa mã hoá và C là không gian các văn bản mật mã. Có nghĩa là P là một nhóm với phép toán 2 ngôi Å và C là một nhóm với phép toán Ä. Ví dụ E của sơ đồ mã hoá xác suất được hình thành bởi sự tạo ra khoá riêng và khoá công khai của nó. Giả sử Er(m) là sự mã hoá thư tín m sử dụng tham số (s) r ta nói rằng sơ đồ mã hoá xác suất là (Å,Ä)-đồng cấu. Nếu với bất kỳ ví dụ E của sơ đồ này, ta cho c1 = Er1(m1) và c2 = Er2(m2) thì tồn tại r sao cho: c1 Ä c2 = Er(m1 Å m2) Chẳng hạn, sơ đồ mã hoá Elgamal là đồng cấu. Ở đây, P là tập tất cả các số nguyên modulo p ( P = Zp ), còn C = {(a,b)ú a,bÎ Zp }. Phép toán Å là phép nhân modulo p . Đối với phép toán 2 ngôi Ä được định nghĩa trên các văn bản mật mã, ta dùng phép nhân modulo p trên mỗi thành phần. Hai văn bản gốc m0, m1 được mã hoá: Eko(mo) = (gko, hkomo) Ek1(m1) = (gk1, hk1m1) Ở đó ko,k1 là ngẫu nhiên. Từ đó: Eko(mo) Ek1(m1) = (gko, hkomo) (gk1, hk1m1) = Ek(mom1) với k= ko + k1 Bởi vậy, trong hệ thống bí mật ElGamal từ phép nhân các văn bản mật mã chúng ta sẽ có được phép nhân đã được mã hoá của các văn bản gốc tương ứng. 1.2.3.4 Mã nhị phân. Giả sử rằng Alice muốn gửi cho Bob 1 chữ số nhị phân b. Cô ta không muốn tiết lộ b cho Bob ngay. Bob yêu cầu Alice không được đổi ý, tức là chữ số mà sau đó Alice tiết lộ phải giống với chữ số mà cô ta nghĩ bây giờ. Alice mã hoá chữ số b bằng một cách nào đó rồi gửi sự mã hoá cho Bob. Bob không thể phục hồi được b tới tận khi Alice gửi chìa khoá cho anh ta. Sự mã hoá của b được gọi là một blob. Một cách tổng quát, sơ đồ mã nhị phân là một hàm x: {0, 1} x X® Y, ở đó X, Y là những tập hữu hạn. Mỗi mã hoá của b là giá trị x (b, k), kÎ X. Sơ đồ mã nhị phân phải thoả mãn những tính chất sau: Tính che đậy (Bob không thể tìm ra giá trị b từ x(b, k) ) Tính mù (Alice sau đó có thể mở x(b, k) bằng cách tiết lộ b, k thì được dùng trong cách xây dựng nó. Cô ta không thể mở blob bởi 0 hay 1). Nếu Alice muốn mã hoá một xâu những chữ số nhị phân, cô ta mã hoá từng chữ số một cách độc lập. Sơ đồ mã hoá số nhị phân mà trong đó Alice có thể mở blob bằng 0 hay 1 được gọi là mã hoá nhị phân cửa lật. Mã hoá số nhị phân có thể được thực hiện như sau: Giả sử một số nguyên tố lớn p, một phần tử sinh g Î Zp và G Î Zp đã biết logarit rời rạc cơ số g của G thì cả Alice và Bob đều không biết (G có thể chọn ngẫu nhiên). Sự mã hoá nhị phân x: {0,1} x Zp®Zp là: x(b, k) = gkGb Đặt loggG = a. Blob có thể được mở bởi b bằng cách tiết lộ k và mở bởi –b bằng cách tiết lộ k-a nếu b=0 hoặc k+a nếu b=1. Nếu Alice không biết a, cô ta không thể mở blob bằng –b. Tương tự, nếu Bob không biết k, anh ta không thể xác định b với chỉ một dữ kiện x(b, k) = gkGb. Sơ đồ mã hoá chữ số nhị phân cửa lật đạt được trong trường hợp Alice biết a. Nếu Bob biết a và Alice mở blob cho Bob thông qua kênh chống đột nhập đường truyền (untappable channel) Bob có thể sẽ nói dối với người thứ ba về sự mã hoá chữ số nhị phân b. Rất đơn giản, anh ta nói rằng anh ta nhận được k-a hoặc k+a (mà thực tế là k). Sơ đồ mã hoá số nhị phân mà cho phép người xác minh (Bob) nói dối về việc mở blob, được gọi là sự mã hoá nhị phân chameleon. Thay vì mã hoá từng chữ số nhị phân trong sâu s một cách độc lập, Alice có thể mã hoá một cách đơn giản 0≤ s ≤ p bằng x(b, k) = Gs gk. Hơn nữa, những thông tin về số a sẽ cho Alice khả năng mở x (s,k) bởi bất kì s’, k’ thoả mãn as + k = as’ + k’. 1.3 KHÁI NIỆM VỀ KÝ ĐIỆN TỬ. 1.3.1 Định nghĩa. Một sơ đồ chữ ký gồm bộ 5 (P, A, K, S, V) thoả mãn các điều kiện dưới đây: P là tập hữu hạn các bức điện (thông điệp) có thể A là tập hữu hạn các chữ kí có thể K không gian khoá là tập hữu hạn các khoá có thể Sigk là thuật toán ký P ® A x Î P ® y = Sigk(x) Verk là thuật toán kiểm thử: (P, A) ® (Đúng, sai) Verk(x, y) = Đúng Nếu y = Sigk(x) Sai Nếu y ¹ Sigk(x) 1.3.2 Phân loại sơ đồ chữ ký điện tử. Chữ ký “điện tử” được chia làm 2 lớp, lớp chữ ký kèm thông điệp (message appendix) và lớp chữ ký khôi phục thông điệp (message recovery). Chữ ký kèm thông điệp: Đòi hỏi thông điệp ban đầu là đầu vào của giải thuật kiểm tra. Ví dụ: chữ ký Elgamal. Chữ ký khôi phục thông điệp: Thông điệp ban đầu sinh ra từ bản thân chữ ký. Ví dụ: chữ ký RSA. 1.3.3 Một số sơ đồ ký số cơ bản. 1.3.3.1 Sơ đồ chữ ký Elgamal. Chọn p là số nguyên tố sao cho bài toán log rời rạc trong Zp là khó. Chọn g là phần tử sinh Î Z; a Î Z. Tính ga mod p. Chọn r ngẫu nhiên Z*p-1 Ký trên x: Sig(x) = (g, ), Trong đó g= gk mod p , = (x - ag) r-1 mod (p-1). Kiểm tra chữ ký: Ver(x, g, )=True gx mod p Ví dụ: Chọn p=463; g=2; a=211; bº 2211mod 463=249; chọn r =235; r-1=289 Ký trên x = 112 Sig(x,r) = Sig (112,235)=(g,d)=(16,108) g= 2235 mod 463 =16 d= (112-211*16)*289 mod (463-1)=108 Kiểm tra chữ ký: Ver(x, g,)=True gx mod p = 24916* 16108 mod 463 = 132 gx mod p = 2112 mod 463 = 132 1.3.3.2 Sơ đồ chữ ký RSA. Chọn p, q nguyên tố lớn . Tính n=p.q; f(n)=(p-1)(q-1). Chọn b nguyên tố cùng f(n). Chọn a nghịch đảo với b; a=b-1 mod f(n). Ký trên x: Sig (x) = xa mod n Kiểm tra chữ ký: Ver (x,y)= True xyb mod n Ví dụ: p=3; q=5; n=15; f(n)= 8; chọn b=3; a=3 Ký x =2: Chữ ký : y = xa mod n = 23 mod 15=8 Kiểm tra: x = yb mod n = 83 mod 15 =2 (chữ ký đúng) 1.3.3.3 Sơ đồ chữ ký Schnorr. Chuẩn bị: Lấy G là nhóm con cấp q của Zn* , với q là số nguyên tố. Chọn phần tử sinh g Î G sao cho bài toán logarit trên G là khó giải. Chọn x ≠ 0 làm khóa bí mật, x Î Zq. Tính y = gx làm khóa công khai. Lấy H là hàm băm không va chạm. Ký trên thông điệp m: Chọn r ngẫu nhiên thuộc Zq Tính c = H(m, gr) Tính s = (r - c x) mod q Chữ ký Schnorr là cặp (c, s) Kiểm tra chữ ký: Với một văn bản m cho trước, một cặp (c, s) được gọi là một chữ ký Schnorr hợp lệ nếu thỏa mãn phương trình: c = H(m, gs*yc) Để ý rằng ở đây, c xuất hiện ở cả 2 vế của phương trình Chương 2. XÁC THỰC BẰNG CHỨNG CHỈ SỐ 2.1. VẤN ĐỀ XÁC THỰC. Việt Nam là một quốc gia đang trong quá trình hình thành và phát triển thương mại điện tử (TMĐT). Theo Vnexpress: “Theo thống kê chưa đầy đủ, đến năm 2003, Việt Nam mới có hơn 3.000 doanh nghiệp (trong hơn 132.000 doanh nghiệp đã đăng ký kinh doanh) có website riêng và vài nghìn doanh nghiệp đăng ký quảng cáo trên mạng Internet. Trong số đó, cũng chỉ mới có 5% doanh nghiệp quan tâm đến thương mại điện tử và khoảng 7-8% doanh nghiệp bắt đầu triển khai”. Mặc dù tính tới thời điểm hiện nay số doanh nghiệp quan tâm tới việc áp dụng CNTT vào kinh doanh cũng đã tăng mạnh, nhưng hầu hết chỉ dừng ở mức giới thiệu về doanh nghiệp và sản phẩm, giao dịch trực tuyến là rất ít. Nguyên nhân thì có nhiều, nhưng một lý do quan trọng là chúng ta, cũng như cả thế giới, đang phải đứng trước những thách thức to lớn về bảo mật khi tham gia vào quá trình này. Nhưng các cơ hội kinh doanh, sự tiện lợi trong đời sống qua trao đổi thông tin, các giao dịch trên mạng là một sức mạnh ngày càng được khẳng định và không thể phủ nhận. Do vậy cần đảm bảo những tính chất quan trọng và cần thiết của thông tin trong giao dịch trực tuyến như: + Tính bí mật (confidentiality) : Thông tin chỉ được tiết lộ cho những ai được phép. + Tính toàn vẹn (integrity): Thông tin không thể bị thay đổi mà không bị phát hiện. + Tính xác thực (authentication): Chủ thể có thể chứng thực chính bản thân mình. + Tính không chối bỏ ( non-repudiation): Người gửi hoặc người nhận sau này không thể chối bỏ việc đã gửi hoặc nhận thông tin. Và xác thực là một trong những vấn đề nóng bỏng. Xác thực là xác minh, kiểm tra một thông tin hay một thực thể nào đó để công nhận hoặc bác bỏ tính hợp lệ của thông tin hay thực thể đó. Đây là yêu cầu rất quan trọng trong các giao tiếp cần có sự tin cậy. Xác thực bao gồm 2 việc chính: + Xác thực tính hợp lệ của các thực thể tham gia giao tiếp. + Xác thực tính bảo mật của thông tin được trao đổi. Như vậy trên thực tế, chúng ta có thể thấy một số hình thức xác thực thực thể như chứng minh thư, giấy phép lái xe, hoặc các giấy tờ cá nhân khác, và xác thực tính an toàn của thông tin như chữ ký, con dấu. Xác thực điện tử. Xác thực điện tử là việc xác minh từ xa bằng các phương tiện điện tử sự tồn tại chính xác và hợp lệ danh tính của chủ thế nào đó, cũng như lớp thông tin nào đó mà không cần biết nội dung cụ thể của thông tin và chủ thể đó, bằng cách chỉ thông qua thông tin đặc trưng cho chủ thể hoặc thông tin để bảo bảo đảm tính bí mật của chủ thế hoặc thông tin cần chứng minh. Mục đích của việc xác thực điện tử: chống giả mạo, chống chối bỏ, đảm bảo tính toàn vẹn, tính bí mật, tính xác thực của thông tin và mục đích cuối cùng là hoàn thiện các giải pháp an toàn thông tin. Cơ sở ứng dụng để xây dựng các giải pháp an toàn cho xác thực điện tử là các hệ mật mã. Ứng dụng trong: thương mại điện tử, trong các hệ thống thanh toán trực tuyến, là nền tảng của chính phủ điện tử. Hiện nay, xác thực điện tử được sử dụng trong khá nhiều ứng dụng, theo số liệu điều tra công bố vào tháng 8/2003 của tổ chức OASIS (Organization for the Advancement of Structured Information Standard): 24,1% sử dụng trong việc ký vào các dữ liệu điện tử; 16,3% sử dụng để đảm bảo cho e-mail; 13,2% dùng trong thương mại điện tử; 9,1% sử dụng để bảo vệ WLAN; 8% sử dụng đảm bảo an toàn cho các dịch vụ web; 6% sử dụng bảo đảm an toàn cho Web Server; 6% sử dụng trong các mạng riêng ảo... Như vậy đã hình thành nhiều phương pháp xác thực điện tử khác nhau. Xác thực thực thể có thể sử dụng các phương pháp nhận dạng sinh học như dấu vân tay, mẫu võng mạc, mẫu giọng nói, chữ ký tay. Xác thực thông tin có thể sử dụng mật khẩu, chữ ký số, sơ đồ định danh…Có ba phương pháp xác thực chính sau đây: + Xác thực dựa vào những gì mà ta biết: Khi xác thực hệ thống yêu cầu chủ thể cung cấp những thông tin mà chủ thể biết. Như mã pin, mật khẩu… + Xác thực dựa vào những gì mà ta có: Khi xác thực hệ thống yêu cầu chủ thế phải sở hữu một vật gì đó có thể xác minh như chứng chỉ số, thẻ ATM… + Xác thực dựa vào những gì mà ta đại diện: Việc xác nhận dựa vào việc nhận dạng các dấu hiệu sinh học như dấu vân tay, giọng nói, võng mạc… Mỗi phương pháp đều có ưu và nhược điểm riêng, vì vậy trên thực tế, việc xác thực thường kết hợp nhiều phương pháp để có kết quả tốt nhất đảm bảo an toàn cho các giao dịch. Và hiện nay việc xác nhận bằng chứng chỉ số đang được tin cậy sử dụng do khắc phục những nhược điểm của các phương pháp khác. 2.2 CHỨNG CHỈ SỐ. Chứng chỉ số do một tổ chức độc lập, trung lập, có uy tín cấp cho người đăng kí, là một tệp tin điện tử chứa thông tin cá nhân của người đăng kí, chứa khóa công khai của người đăng kí nhằm mục đích chứng nhận trên mạng đích thực bạn là ai đảm bảo cho các giao dịch trực tuyến an toàn và bảo mật, hoặc để xem xét quyền sử dụng tài nguyên trực tuyến của bạn và đây cũng là cơ sở pháp lý khi xảy ra tranh chấp. Vậy nói cho cùng, Chứng chỉ số là một công cụ xác thực. Chứng chỉ số có nội dung thường tuân theo chuẩn nội dung của X509V3, có cấu trúc bao gồm: + Tên của CA tạo ra chứng nhận ( Issuer ). + Ngày hết hạn của chứng nhận ( Period of validity ). + Thông tin cá nhân về người được cấp được chứng nhận ( Subject ). + Khóa công khai của cá nhân (Public key ). + Chữ kí số của CA đảm bảo giá trị của chứng nhận. (Signature ). Một số thông tin chính: Thông tin cá nhân: Gồm các thông tin về người được cấp chứng chỉ gồm tên, quốc tịch, địa chỉ, điện thoại, mail, tên của tổ chức … Khóa công khai: Khoá công khai được khi kết hợp cùng với một khoá cá nhân duy nhất được tạo ra từ khoá công khai để tạo thành cặp mã khoá bất đối xứng. Khóa công khai dùng để mã hóa, còn khóa bí mật dùng giải mã. Hai bên giao dịch muốn giao dịch với nhau thì phải biết khóa công khai của nhau. Khoá cá nhân có thể giải mã thông tin được mã hoá bằng khoá công khai tương ứng, nhưng khoá công khai thì lại không có khả năng giải mã ngược lại, thậm chỉ cả những thông tin do chính khoá công khai đó đã mã hoá. Chữ kí số của nhà cung cấp chứng chỉ. Chữ ký số của CA là sự chứng nhận của CA, đảm bảo tính hợp lệ của chứng chỉ. 2.2.1 Xác thực định danh. Xác thực định danh là xác định tính hợp lệ của các thực thể tham gia giao tiếp. Việc giao dịch qua mạng điển hình ngày nay là giữa máy khách và máy chủ ( máy dịch vụ ), xác thực định danh tức là xác thực đảm bảo từ cả hai phía làm cho cả 2 phía tin tưởng vào đối tác, đồng thời cũng có trách nhiệm với chính những gì mình gửi đi. Để xác thực danh tính cho máy khách có hai hình thức: + Xác thực dựa trên tên truy nhập và mật khẩu: Với hình thức tất cả các khách hàng nếu muốn truy cập vào máy chủ thì phải có tên truy cập và mật khẩu, máy chủ dịch vụ sẽ quản lý những tên và mật khẩu đó. Có thể tham khảo sơ đồ sau: Hình 1: Sơ đồ xác thực dựa vào mật khẩu + Xác thực dựa vào chứng chỉ số: Ở hình thức xác thực này, máy khách ký số vào dữ liệu, sau đó gửi chữ ký số và chứng chỉ số qua mạng. Máy chủ sẽ dùng kĩ thuật mã hóa khóa công khai để kiểm tra chữ ký và xác định tính hợp lệ của chứng chỉ số. Ta có thể hình dung qua sơ đồ sau: Hình 2: Sơ đồ xác thực dựa vào chứng chỉ số 2.2.2 Chứng chỉ khóa công khai. Khi một giao dịch trên mạng tiến hành theo nguyên tắc mã hóa công khai thì khóa công khai là công khai, lúc này nguy cơ bị tấn công nhiều hơn lại ở khả năng làm giả khóa công khai để lấy thông tin. Nếu giao dịch chỉ tiến hành ở một nhóm nhỏ thì mọi việc đơn giản hơn vì mọi người trong nhóm có thể trực tiếp tin cậy có được khóa công khai của người khác dùng cho việc mã hóa thông tin khi muốn gửi tin cho người đó. Nhưng đó là điều không thực tế so với nhu cầu giao dịch, vì vậy cần có một tổ chức như đã nói là độc lập, trung lập và có uy tín cao được cả bên gửi và nhận tin tưởng đứng ra làm công việc phân phối khóa công khai, chứng thực khóa công khai của các chủ thể trong các giao dịch. VD như tổ chức Entrust, là một trong những hãng đi đầu về phát triển PKI. Entrust là một tổ chức chứng thực điện tử tin cậy trên thế giới được các công ty thuộc lĩnh vực thương mại điện tử trên thế giới tin cậy. Microsoft cũng là nhà phân phối sản phẩm về hệ thống cấp phát chứng chỉ của EnTrust tại Việt Nam. Giải pháp của EnTrust không những đáp ứng đầy đủ các yêu cầu về hệ thống CA mà còn cung cấp thêm nhiều ứng dụng của chứng chỉ số, tích hợp chúng trong các ứng dụng khác như email, mã hoá file thư mục…Các sản phẩm của Entrust tập trung cho việc nhận dạng và quản lý truy nhập bằng sử dụng xác thực mạnh, phân quyền, chữ ký điện tử và mã hoá các dịch vụ bảo mật cho các doanh nghiệp sử dụng giao dịch điện tử qua hệ thống mạng nội bộ, mạng WAN, mạng Internet, các dịch vụ Web,VPN. Hay tại Việt Nam, VASC đã xây dựng thành công hệ thống quản lý và cấp chứng chỉ số của mình từ tháng 4/2002 và từ tháng 8/2002 đã chính thức phục vụ khách hàng. VASC CA cung cấp ba loại chứng chỉ số: chứng chỉ số cho cá nhân, chứng chỉ số cho máy chủ (server) và chứng chỉ số cho phát triển phần mềm… CA sẽ kí lên chứng chỉ số để xác thực chứng chỉ đó là hợp lệ. Hình 3: Quy trình tạo chữ ký của CA Khi sử dụng chứng chỉ số, trước tiên người dùng kiểm tra chữ kí của CA trên Chứng chỉ số có hợp lệ không thông qua khóa công khai của CA. 2.2.3 Mô hình CA. Như vậy chúng ta hẳn thấy rằng nếu có một CA nào đó có đủ uy tín đứng ra làm CA cho tất cả mọi giao dịch điện tử thì quả thực là không còn biên giới cho việc tìm kiếm và tiến hành các giao dịch. Nhưng tất yếu đó là điều không thực tế vì mỗi nước, mỗi vùng ngoài vị trí địa lý hoàn toàn khác biệt còn có tập quán kinh doanh, tập quán chính trị khác nhau, vậy nên việc nghĩ rằng có một CA nào đó đảm bảo hết các mối quan hệ tốt đẹp với tất cả để tạo ra uy tín làm mọi chủ thể đều chấp nhận là không hề thực tế. Vậy làm sao để một chủ thế được cấp chứng chỉ số bởi CA này có thể có khóa công khai của chủ thể khác được cấp bởi CA khác một cách an toàn và tin cậy? Có một giải pháp đưa ra đó là chủ thế này có thể tìm chứng chỉ chứa khóa công khai của CA của chủ thể đó qua một số những CA uy tín mà chủ thể này tin cậy. Và việc CA này cấp chứng chỉ số cho CA khác tạo thành một mô hình, gọi là mô hình CA. Như vậy với phương pháp chứng thực đệ quy ở trên, một chủ thể có thể có được khóa công khai của những chủ thế khác CA. Ta có thể tham khảo sơ đồ chứng thực đệ quy sau: Hình 4: Sơ đồ chứng thực đệ quy 2.2.4 Thời hạn tồn tại và việc thu hồi chứng chỉ. + Đăng ký: Khi một chủ thể muốn có một chứng chỉ số thì chủ thể phải đăng kí với CA và chứng minh được với CA rằng mình là mình. Sau khi đã được RA xác minh thì CA sẽ cấp chứng chỉ số cho chủ thể đó. + Sau khi đăng kí thì lúc này chủ thể sẽ có 1 khóa bí mật và 1 khóa công khai. Muốn giao dịch với chủ thể khác thì bắt buộc chủ thể này cũng phải có chứng chỉ số. Khóa công khai lúc này giúp cho chủ thể có thể có những giao dịch an toàn với các chủ thể khác. Ví dụ như khi chủ thể A muốn trao đổi thông tin với chủ thể B thì chủ thể A tìm khóa công khai của chủ thể B. Sau khi chắc chắn chìa khóa đó là của B bằng cách kiểm tra chứng chỉ số, A dùng khóa công khai này để mã hóa thông tin đó. Thông tin này chỉ có thể được giải mã bởi khóa bí mật của B, kể cả khóa vừa dùng để mã hóa chúng cũng không thể. Khi nhận được thông tin, B dùng khóa bí mật của mình để giải mã thông tin. Nếu khóa bí mật của B có thể giải mã được thì thông tin đúng là được gửi cho B. Trong trường hợp này nếu thông tin bị mã hóa trên nếu có rơi vào tay người khác thì cũng không thể bị dò ra. Như vậy ta thấy A và B không nhất thiết phải là người có quen biết trước, chỉ cần có nhu cầu giao dịch thì thông qua chứng chỉ số họ cũng có thể thực hiện được giao dịch của mình mà không hề bị lộ bí mật thông tin. + Chứng chỉ số không còn hợp lệ và không đáng tin cậy nữa sau khi hết thời hạn. Nhưng cũng có chứng chỉ số bị CA thu hồi trước thời hạn vì có nghi ngờ bị thám mã và tấn công thỏa hiệp. + Ta có thể hình dung việc sử dụng chứng chỉ số cho việc giao dịch trực tuyến giống như là chứng minh thư trong đời sống thực vậy. Gồm con dấu của nơi cấp chứng minh thư giống như là chữ ký của CA trên chứng chỉ số, những thông tin nhận dạng của chủ thể như quê quán, họ tên, ngày sinh…trên chứng minh nhân dân là khóa công khai trong chứng chỉ số. A giao dịch gửi hàng cho B qua bưu điện được mã hóa bằng tên, tuổi người gửi thì đó là khóa công khai ai cũng biết, nhưng không phải ai cũng lấy được hàng khi mang chứng minh thư đó tới, mà phải có khóa riêng, tức là có mặt và nhận dạng giống miêu tả trong chứng minh thư. 2.2.5 Khuôn dạng chứng chỉ số theo chuẩn X.509 Chứng chỉ số có nội dung thường tuân theo chuẩn nội dung của X509, là chuẩn được đưa ra bởi Internationnal Telecommunication Union- Telecommunication Standardization Sector (ITU-T) và Iso/Internationnal Electrotechnical Commission (IEC). Công bố lần đầu tiên vào năm 1988 như là một phần khuyến cáo của dịch vụ thư mục X500. Định dạng chuẩn X 509 phiên bản 2 là sự mở rộng của khuôn dạng chuẩn X509 phiên bản 1, kết hợp thêm 2 trường quản lý truy cập thư mục. Chuẩn X509 V3 được đưa ra tháng 6-2006. ISO/IEC và ANSI X9 đều đã định nghĩa các trường chuẩn mở rộng trong X509 V3, ví dụ cho phép mang thêm thông tin về định danh đối tượng , thông tin về thuộc tính khóa, thông tin về chính sách…. 2.2.5.1. Khuôn dạng chứng chỉ số X.509 ver 1, ver 2. Hình 5: Khuôn dạng chứng chỉ số V1,2 Trong đó tên duy nhất của đối tượng và tên CA mới được bổ sung trong V2. 2.2.5.2. Đặt tên trong X.509 ver 1, ver 2. Thông tin được lưu trữ trong các thư mục X509 gồm một nhiều thực thể, mỗi thực thể liên quan tới một đối tượng, mỗi đối tượng có tên rõ ràng gọi là tên phân biệt. Đầu vào thư mục của đối tượng chứa giá trị là tập hợp các thuộc tính gắn liền với đối tượng. Trong X509 các đầu vào được tổ chức dưới dạng cây, gọi là cây thông tin thư mục, đỉnh của cây là số đầu vào thư mục, mỗi đỉnh có một tên phân biệt. Tên của một đầu vào được đặt bằng tên của đầu vào cấp trên gần nó nhất cộng với tên phân biệt của nó. Trong X509V2 thì có bổ sung trường tên duy nhất của người phát hành và tên duy nhất của chủ thế. Nhưng đây là phương pháp không hiệu quả vị chúng khó quản lý, có xu hướng bị che giấu và dễ bị quên, bỏ qua khi bổ sung vào X509V1. 2.2.5.3. Đăng ký đối tượng. Hệ thống đăng kí đối tượng được sử dụng cho tên thuật toán và các lớp đối tượng khác liên quan tới thương mại điện tử chính là cơ chế tên đối tượng. Tên đối tượng là một giá trị, bao gồm một dãy các số nguyên tố. Giá trị này có thể được gán cho một đối tượng đã đăng kí. Các tên đối tượng làm việc dựa vào một cấu trúc thứ bậc của các cơ quan gán cho đối tượng đã đăng kí. Các tên đối tượng là khác nhau hay là duy nhất. Các tên đối tượng làm việc dựa vào một cấu trúc thứ bậc của các cơ quan gắn giá trị riêng biệt. Mỗi mức của hệ thống thứ bậc có trách nhiệm đối với một thành phần nguyên giá trị. Các giá trị sau được gắn ở mức cao nhât: 0: ITU; 1: ISO. 2: cả ISO và ITU. 2.2.5.4 Chứng chỉ X.509 ver 3. X509V3 được ra đời 6-1996 bổ sung những nhược điểm của V1,2 và được sử dụng là chuẩn trong chứng chỉ số ngày nay bao gồm các trường chuẩn: Tên của CA tạo ra chứng nhận ( Issuer ). Ngày hết hạn của chứng nhận ( Period of validity ). Thông tin cá nhân về người được cấp được chứng nhận ( Subject ). Khóa công khai của cá nhân (Public key ). Chữ kí số của CA đảm bảo giá trị của chứng nhận. (Signature ). Hình 6: Khuôn dạng chứng chỉ số X509V3 Chương 3. CHƯƠNG TRÌNH MÔ PHỎNG 3.1 MÔ TẢ BÀI TOÁN. Trong một cơ quan có rất nhiều người và đảm nhận nhiều công việc chức năng đa dạng, do đặc thù công việc, các thành viên phải đi công tác xa thường xuyên, trong thời gian đó, họ có nhu cầu trao đổi dữ liệu với cơ quan và với những nhân viên khác ở cơ quan. Hiện nay mọi người khi đi công tác, nếu có phát sinh về tài liệu thì phải nhờ người đang ở cơ quan gửi giúp, nếu muốn trao đổi với những nhân viên khác thì chủ yếu là điện thoại. Như vậy là rất bất tiện, bị động và rườm rà cho các nhân viên! Như vậy việc xây dựng một mạng trao đổi thông tin trực tuyến là vấn đề cần thiết và thiết thực trên nền tảng ứng dụng thành tựu của công nghệ thông tin và truyền thông, giúp nhân viên truy cập thông tin và trao đổi trực tuyến. Một số vấn đề xảy ra khi sử dụng một mạng thông tin trực tuyến gồm: + Truy cập bất hợp pháp: Một người không phải là người của cơ quan, hoặc không có thẩm quyền muốn xâm nhập vào mạng cơ quan để lấy những thông tin nhạy cảm. + Mạo danh: Giả mạo mình là người khác để đối phương nói ra những thông tin mình cần hoặc tạo ra những thông tin giả cho đối phương. Như vậy, giải pháp cho cơ quan hiện nay là xây dựng một mạng trao đổi thông tin trực tuyến an toàn, trong đó các thành viên được xác nhận chính xác để có thể trao đổi dữ liệu với cơ quan, và với nhau một cách an toàn. Một đề xuất cho mô hình mạng nói trên đó là áp dụng chứng chỉ số: 3.2 MÔ HÌNH XÁC THỰC SỬ DỤNG CHỨNG CHỈ SỐ Đề xuất sau đây nhằm mục đích giải quyết bài toán ứng dụng chứng chỉ số trong mô hình mạng trao đổi an toàn tại cơ quan như đã nêu ở trên. Để có thể tham gia vào hệ thống trao đổi thông tin mỗi người dùng phải thực hiện 2 giai đoạn: 3.2.1 Xin cấp chứng chỉ số Với sự hỗ trợ của hạ tầng cơ sở khóa công khai PKI, các nhân viên của cơ quan gửi yêu cầu cấp chứng chỉ tới một CA để yêu cầu cấp phát một chứng chỉ số. Đầu tiên, nhân viên này phải gửi các thông tin cho bộ phận quản lý và xác thực thông tin người dùng RA. RA kiểm tra và ra quyết định có cấp chứng chỉ hay không. Nếu có, RA gửi một thông báo xác nhận đăng ký cho nhân viên. Nhân viên sử dụng smart card để lưu trữ chứng chỉ, lúc này hệ thống sẽ yêu cầu sinh cặp khóa công khai / bí mật và gửi khóa công khai đến CA. Bộ phận RA kiểm tra tính hợp lệ của các thông tin. Nếu tất cả hợp lệ, yêu cầu cấp chứng chỉ sẽ được gửi tới CA và CA sẽ thực hiện việc cấp chứng chỉ cho người dùng. Chứng chỉ số có thời hạn sử dụng nhất định. Khi hết hạn người dùng có thể yêu cầu gia hạn hoặc cấp mới. Trong trường hợp chứng chỉ bị lộ không còn an toàn nữa hoặc người dùng làm mất chứng chỉ thì họ có thể yêu cầu CA thu hồi và hủy bỏ chứng chỉ đã cấp. 3.2.1.1 Sơ đồ quá trình xin cấp chứng chỉ số Người dùng gửi yêu cầu cấp chứng chỉ số Người dùng mang theo giấy tờ xác minh cá nhân, tổ chức, hoặc chính quyền sở tại Bộ phận RA xác thực thông tin của người dùng Thông tin chính xác Bộ phận CA cấp chứng chỉ số cho người dùng Thông tin sai Hình 7: Sơ đồ quá trình xin cấp chứng chỉ số 3.2.1.2 Kĩ thuật thực hiện Trước tiên xây dựng một giao diện để người dùng nhập các thông tin đăng kí theo chuẩn X509 gồm: họ tên, địa chỉ email, đơn vị trực thuộc, tỉnh (thành phố), huyện (quận), quốc tịch và mật khẩu của người dùng. Thông tin người dùng đăng kí sẽ được chuyển xử lý tạo mảng để sử dụng. Tạo một khóa riêng : openssl_pkey_new(); Dùng thông tin người dùng đã đăng kí kết hợp với khóa riêng để tạo một chứng chỉ. openssl_csr_new(); CA kí xác nhận lên chứng chỉ. openssl_csr_sign(); Xuất chứng chỉ ra file cho người dùng load về: openssl_x509_export_to_file(); Xuất khóa riêng ra file: openssl_pkey_export_to_file(); Hình 8: Chứng chỉ số 3.2.2 Xác thực từ xa bằng chứng chỉ số Khi nhân viên đã có chứng chỉ số, họ có thể sử dụng trong các giao dịch. Để kiểm tra danh tính của một nhân viên, hệ thống mạng của cơ quan sẽ kiểm tra chứng chỉ có được phát hành bởi CA đã đăng kí không. Nếu đúng, hệ thống sẽ gửi một thông tin ngẫu nhiên để người dùng ký mẫu lên thông tin đó. Khóa tạo chữ ký điện tử chính là khóa bí mật tương ứng với khóa công khai trên chứng chỉ. Nếu chữ ký đúng thì nhân viên tham gia giao dịch chính là chủ sở hữu thực sự của chứng chỉ vì chỉ có họ mới biết khóa bí mật tương ứng với khóa công khai trên chứng chỉ. Khi đó, việc xác thực thành công và giao dịch trên một kết nối an toàn được thực hiện. 3.2.2.1 Sơ đồ quá trình xác thực từ xa bằng chứng chỉ số. Gửi một văn bản mẫu để ký thử đúng Người dùng Server Gửi chứng chỉ để xác thực Kiểm tra tính hợp lệ của các thông tin trên chứng chỉ sai Dùng khóa bí mật tương ứng khóa công khai trên chứng chỉ để ký mẫu sai đúng Xác thực thành công. Bắt đầu thực hiện giao dịch trên một kết nối an toàn Kết nối an toàn, các thực thể tham gia giao dịch đã được xác thực Hình 9: Sơ đồ quá trình xác thực từ xa bằng chứng chỉ số. 3.2.2.2 Kĩ thuật thực hiện Khi cần xác nhận chứng chỉ, người dùng cần gửi chứng chỉ điện tử và pass tương ứng đã đăng kí cho hệ thống. Hệ thống lấy khóa riêng từ file đã lưu: openssl_get_privatekey(); Tiến hành kiểm tra khóa riêng trên chứng chỉ với khóa riêng đã lưu: openssl_x509_check_private_key(); hàm này sẽ cho kết quả trả về là True hay False để cho biết chứng chỉ có hợp lệ không. Nếu chứng chỉ hợp lệ, yêu cầu người dùng kí thử mẫu cùng với việc gửi khóa riêng và pass đã đăng kí cho hệ thống. openssl_sign($data, $signature, $key); Hệ thống sẽ lấy khóa công khai từ chứng chỉ của người sử dụng để kiểm tra chữ kí có hợp lệ hay không. openssl_get_publickey($cert); openssl_verify($data, $signature, $pubkeyid); Kết quả trả về là đúng hay sai. 3.2.3 Giao diện của chương trình 3.2.3.1 Giao diện trang chủ: Hình 10: Giao diện trang chủ 3.2.3.1 Giao diện trang đăng kí: Hình 11: Giao diện đăng kí 3.2.3.1 Giao diện trang đăng nhập: Hình 12: Giao diện đăng nhập 3.2.3.2 Chứng chỉ được tạo ra: Hình13 : Chứng chỉ được tạo Nội dung chứng chỉ: -----BEGIN CERTIFICATE----- MIIDoTCCAwqgAwIBAgIBADANBgkqhkiG9w0BAQQFADCBmDEgMB4GA1UEAxQXbmd1 eSYjNzg3NztuIEgmIzc4NTc7bmcxEzARBgkqhkiG9w0BCQEWBGhhbGYxDTALBgNV BAsUBGjgbmcxEzARBgNVBAcUCm5naCYjNzg4MTsxCzAJBgNVBAgTAmdoMQswCQYD VQQGEwJ2bjEhMB8GA1UEChMYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMB4XDTA3 MDcyNTIyNTkwOVoXDTA4MDcyNDIyNTkwOVowgZgxIDAeBgNVBAMUF25ndXkmIzc4 Nzc7biBIJiM3ODU3O25nMRMwEQYJKoZIhvcNAQkBFgRoYWxmMQ0wCwYDVQQLFARo 4G5nMRMwEQYDVQQHFApuZ2gmIzc4ODE7MQswCQYDVQQIEwJnaDELMAkGA1UEBhMC dm4xITAfBgNVBAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDCBnzANBgkqhkiG 9w0BAQEFAAOBjQAwgYkCgYEA8HSI55yD0xyIC68KUAgmKXYJLQZBj9cIzpdkFYVv yCcPKvx/Li/HIElSyB/xKnNup5XTR9B3udVPwtxMpb2DHrMfThTK0aQ/4PDwiCNn rFlap1JWrKo2W9XkTnR1TVXXDExcIc/bvFG9iorJkU2y6Z2mqQhy86+EKMMIqQKj 2PkCAwEAAaOB+DCB9TAdBgNVHQ4EFgQUssz/aJnLBOKfaW7ifGFOf2VSaecwgcUG A1UdIwSBvTCBuoAUssz/aJnLBOKfaW7ifGFOf2VSaeehgZ6kgZswgZgxIDAeBgNV BAMUF25ndXkmIzc4Nzc7biBIJiM3ODU3O25nMRMwEQYJKoZIhvcNAQkBFgRoYWxm MQ0wCwYDVQQLFARo4G5nMRMwEQYDVQQHFApuZ2gmIzc4ODE7MQswCQYDVQQIEwJn aDELMAkGA1UEBhMCdm4xITAfBgNVBAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0 ZIIBADAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBAUAA4GBAI7Do7YRZTpWlzqe YLksuUXhGVgsljagL8T3z3B0sIf9Yq0BMnazlY1UBpZbD8eNlgc4rxw0gfGgeBFu QlMA0sfiLdeRBKqwBY/ZXwnvgCCadqhaYhDS4t3UNvIQ3Z9cVQClzTYhgeolDAQ4 QzYFB/gi/qOA4sHP2WPc4QbjFEfD -----END CERTIFICATE----- 3.2.3.3 Khóa riêng được tạo thành: -----BEGIN RSA PRIVATE KEY----- Proc-Type: 4,ENCRYPTED DEK-Info: DES-EDE3-CBC,E8C04E3E7BF73D78 ZhgrBz6i0Aluz6Ijz78rZmneAlMevPMzpmuhdA8i/WJxGAsH/by6afXB7MuqdUhS zdck99eTM78l9VHdiielzeJBVGONSZTVWJTRylfapCKlILRgpb3VrRRgNSPB53l5 WMtTXJNQ4zBMZnTSu3r2v/0j6Hjwm5CzBFzUAmVmuKbSbYWWldNNkHFyl8PhKrbO Zb1l08nPY1y/mk+fJ/xwb09GRJU3i2DK8wjdL3uX2jM6GTnMLOhqVApb83ID/6fg 1WST1aYo3ydiqdk7N4tcih9caOMHWrdWVJMoT9DP9esUK9i0bccBk0XxRgMxf+fj TmyP8PwFEVdrRfVVhYHvIqL6WLApgIuhUCjfbW//9U7pug6c0zj/0NmEq5eu8GC1 FayeMR178YU7qFyuCLpet+xRLV4WSGdhOhkd7O6n+yKC4jLElLCKkKauMoOQ3rCL psHqT5RToIdAKuQHey3cS1iPMulWdMzuzAJdhoX1KJ05zpcTRn0tgNgxG8dWQs5r bX3Go6t7Xbvbgi+IN0oLAYWYnnCWrY9z4Ii+pMPeX0HCxEcnYrFAbm0fsopnDNTM RdZ2hZX63Awah4aZxFdOE0GNr+MvGLXE4xBMxAJ9NmoJhEKAJWlyzoncHobW4s5y QUrcwCaeM3HRIYfDsdk1N5wVkXJny/Lo//mhM2rIEnEJsaNi2juENb1T0+4n7SbH OAjen/I/fLFbKTvUmnDvecJJI/vg2wizH47qBDNTkgYqPr81U/xuCdRj23uHE7+s mjqM/bsWS0VFHdktfpifL1utNFgPBLHcPJso5c1qLWCrwnk2Wq6hoQ== -----END RSA PRIVATE KEY----- KẾT LUẬN Chứng chỉ số là một hình thức tin cậy trong vấn đề xác thực, và có những ứng dụng hiệu quả trong các giao dịch điện tử hiện nay. Đây là một trong những vấn đề khá mới mẻ áp dụng thành tựu của lý thuyết mật mã. Vì vậy việc nghiên cứu và thực hiện đề tài là cần thiết và mang lại những lợi ích đặc biệt trong quá trình áp dụng công nghệ thông tin và lý thuyết mật mã, an toàn thông. Đề tài của em đã nghiên cứu 1 số vấn đề sau: - Tìm hiểu vấn đề xác thực điện tử và công cụ xác thực. - Tìm hiểu về chứng chỉ số. - Phân tích khuôn dạng chứng chỉ theo chuẩn X.509 - Xây dựng ứng dụng mô phỏng sử dụng chứng chỉ số trong xác thực cá nhân trong mạng trao đổi thông tin. Nhìn chung đề tài của em đã bước đầu tìm hiểu về chứng chỉ số từ đó thấy được hiệu quả và lợi thế khi sử dụng phương pháp xác thực chứng chỉ số trong việc ứng dụng công nghệ thông tin vào các mặt trong đời sống xã hội. Trong đề tài em đã mạnh dạn đưa ra mô hình cấp tạo chứng chỉ số cho cá nhân, tuy rằng mới chỉ dừng lại ở mức độ mô phỏng đơn giản nhưng em hi vọng tạo nền tảng tích cực cho việc đi vào thực tiễn của chứng chỉ số nói riêng và các thành tựu công nghệ thông tin nói chung. Trong quá trình làm tốt nghiệp với thời gian không nhiều, không tránh khỏi những thiếu sót, hạn chế, rất mong nhận được sự đánh giá nhận xét và góp ý của thầy cô và các bạn để hoàn thiện và phát triển đề tài. TÀI LIỆU THAM KHẢO [1] Phan Đình Diệu, Lý thuyết mật mã và an toàn thông tin [2] A. Menezes, P. Van Oorschot, and S. Vanstone, Handbook of Applied Cryptography, CRC Press, 1996. [3] Peter Gutmann, Cryptography and Data Security. [4] Bruce Schneier, Applied Cryptography, Second Edition: Protocols, Algorthms, and Source Code in C (cloth), 1996. [5] Nick Goots, Boris Izotov, Alexander Moldovyan, Nick Moldovyan, Modern Cryptography-Protect Your Data with Fast Block Ciphers, 2003. [6] RSA Laboratories ‘s FAQ – Today’s Cryptography [7] Douglas Stinson, Cryptography: Theory and Practice, CRC Press. [8] ftp://ftp.pgpi.org/pub/pgp/7.0/docs/english/IntroToCrypto.pdf [9] [10] [11] [12] PHỤ LỤC Mã nguồn trang Đăng ký: Đăng kí <BODY text=#333333 vLink=#31b9c9 aLink=#ff6600 link=#0099cc bgColor=#ffffff leftMargin=0 topMargin=0 marginheight="0" marginwidth="0">         Trang chủ Đăng kí Đăng nhập   Đăng kí chứng chỉ số cá nhân. Mời bạn nhập các thông tin sau:   Họ và tên:         Địa chỉ email:         Đơn vị:         Tỉnh/Thành Phố: <INPUT id="tinh" size=32 name="tinh">         Quận/Huyện:         Quốc tịch: <INPUT id="quoctich" size=32 name="quoctich">         Mật khẩu: <INPUT id="matkhau" type="password" size=32 name="matkhau">                                                   Mã nguồn trang Tạo chứng chỉ: <?php include_once( 'openSSL.php' ); $openSSL = new openSSL; $pass = $_POST['matkhau']; $dn= array( "commonName" =>$_POST['hoten'], "emailAddress" => $_POST['mail'], "organizationalUnitName" => $_POST['donvi'], "localityName" => $_POST['tinh'], "stateOrProvinceName" => $_POST['huyen'], "countryName" => $_POST['quoctich'] ); $privkey = openssl_pkey_new(); echo "\n"; echo "\n"; $csr = openssl_csr_new($dn, $privkey); echo "\n"; echo "\n"; $sscert = openssl_csr_sign($csr, null, $privkey, 365); echo "\n"; echo "\n"; //openssl_csr_export($csr, $csrout) and var_dump($csrout); echo "\n"; echo "\n"; //openssl_x509_export($sscert, $certout) and var_dump($certout); echo "\n"; echo "\n"; //openssl_pkey_export($privkey, $pkeyout, $pass) and var_dump($pkeyout); openssl_x509_export_to_file($sscert, "C:/sure/chungchi.crt"); openssl_pkey_export_to_file($privkey,"C:/sure/khoarieng.pem",$pass); print "Cac thong tin ban da dang ki:" . print_r($dn,1) . ""; print " Download your certificate here! "; print " Download your private key here! "; print " Tro ve trang chu! "; ?> Mã nguồn trang đăng nhập: Đăng nhap <BODY text=#333333 vLink=#31B9C9 aLink=#FF6600 link=#0099CC bgColor=#ffffff leftMargin=0 topMargin=0 marginheight="0" marginwidth="0">         Trang chủ Đăng kí Đăng nhập Đăng nhập cá nhân. Mời bạn nhập các thông tin sau:   Chứng chỉ:         Mật khẩu: <INPUT id="matkhau" type="password" size=32 name="matkhau">                                                   Mã nguồn trang Kiểm tra chứng chỉ: <?php $pass = $_POST['matkhau']; $upload_dir = "/sure/chungchi/"; $uploadfile = $upload_dir . basename($_FILES["file"]["name"]); if (move_uploaded_file($_FILES["file"]["tmp_name"], $uploadfile)) { echo " \n"; } else { echo "Viec load file cua ban co van de, vui lòng xem lai!\n"; } $fp1=fopen("/sure/khoarieng.pem","r"); $priv_key=fread($fp1,8192); fclose($fp1); $key = openssl_get_privatekey($priv_key,$pass); $fp = fopen("$uploadfile", "r"); $cert = fread($fp, 8192); fclose($fp); $ok=openssl_x509_check_private_key ( $cert, $key ); if ($ok == true) { echo "Chung chi cua ban hoàn toàn hop le!"; echo " \n"; echo " \n"; echo " \n"; print " Moi ban tiep tuc! "; } elseif ($ok == false) { echo "Xin loi, chung chi nay ko thuoc ve ban, vui lòng kiem tra lai!"; } else { echo "Xin loi, chung toi k!o hieu chung chi cua ban hoac ban da gap loi gi do! Vui long xem lai"; } ?> Mã nguồn trang kí mẫu: Đăng nh?p <BODY text=#333333 vLink=#31b9c9 aLink=#ff6600 link=#0099cc bgColor=#ffffff leftMargin=0 topMargin=0 marginheight="0" marginwidth="0">         Trang chủ Đăng kí Đăng nhập   KÍ XÁC NHẬN. Mời bạn nhập các thông tin sau:   Khóa riêng:         Mật khẩu: <INPUT id="matkhau" type="password" size=32 name="matkhau">         Mời bạn nhập chuỗi kí tự bất kì: <INPUT id="data" type="text" size=32 name="data">                                                   Mã nguồn trang Kiểm tra kí mẫu: <?php $pass = $_POST['matkhau']; $data = $_POST['data']; $signature=null; $upload_dir = "/sure/khoarieng/"; $uploadfile = $upload_dir . basename($_FILES["file"]["name"]); if (move_uploaded_file($_FILES["file"]["tmp_name"], $uploadfile)) { echo " \n"; } else { echo "Viec load file cua ban co van de, vui lòng xem lai!\n"; } $fp1 = fopen("$uploadfile", "r"); $priv_key=fread($fp1,8192); fclose($fp1); $key = openssl_get_privatekey($priv_key,$pass); openssl_sign($data, $signature, $key); $fp = fopen("C:/sure/chungchi.crt", "r"); $cert = fread($fp, 8192); fclose($fp); $pubkeyid = openssl_get_publickey($cert); $ok = openssl_verify($data, $signature, $pubkeyid); if ($ok == 1) { echo "Chung chi nay thuoc ve ban!"; } elseif ($ok == 0) { echo "Chung chi nay ko thuoc ve ban!"; } else { echo "ugly, error checking signature"; } ?> 40.35.33.31.30.28.26.25

Các file đính kèm theo tài liệu này:

  • docBaocao.doc
  • docBao cao tom tat.doc
  • docBia.doc
  • pptHang .ppt