Đồ án Giải pháp xác thực số

Tài liệu Đồ án Giải pháp xác thực số: MỤC LỤC LỜI CẢM ƠN Em xin chân thành cám ơn Ths.Hồ Thị Hương Thơm – người luôn chỉ bảo, hướng dẫn, cung cấp những tài liệu quý báu trong quá trình học và hoàn thành đồ án này. Em xin cám ơn các thầy cô giáo trong khoa công nghệ thông tin – trường DHDL Hải Phòng và gia đình đã tạo điều kiện giúp đỡ về vật chất cũng như tinh thần để em có thể học tập tốt và hoàn thành đồ án này. Sinh viên Phùng Thế Phương MỞ ĐẦU Sự ra đời của internet, sự phát triển nhanh chóng của công nghệ thông tin đã tạo ra một thay đổi lớn trong các lĩnh vực đời sống của con người. Internet ra đời, nhu cầu truyền thông tin trên mạng là một nhu cầu tất yếu. Và đặc biệt với sự ra đời của thương mại điện tử thì nhu cầu này càng rõ rệt và cấp thiết hơn. Vấn đề đặt ra là phải tạo một phương pháp truyền thông tin an toàn, tránh sự phá hoại, ăn cắp thông tin hay làm sai lệch thông tin. Cùng với nhu cầu này một loạt các giải pháp được ra đời. Mã hóa, chữ ký điện tử đảm bảo được tính xác thực, và an toàn của thôn...

doc67 trang | Chia sẻ: hunglv | Lượt xem: 1194 | Lượt tải: 0download
Bạn đang xem trước 20 trang mẫu tài liệu Đồ án Giải pháp xác thực số, để 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 Em xin chân thành cám ơn Ths.Hồ Thị Hương Thơm – người luôn chỉ bảo, hướng dẫn, cung cấp những tài liệu quý báu trong quá trình học và hoàn thành đồ án này. Em xin cám ơn các thầy cô giáo trong khoa công nghệ thông tin – trường DHDL Hải Phòng và gia đình đã tạo điều kiện giúp đỡ về vật chất cũng như tinh thần để em có thể học tập tốt và hoàn thành đồ án này. Sinh viên Phùng Thế Phương MỞ ĐẦU Sự ra đời của internet, sự phát triển nhanh chóng của công nghệ thông tin đã tạo ra một thay đổi lớn trong các lĩnh vực đời sống của con người. Internet ra đời, nhu cầu truyền thông tin trên mạng là một nhu cầu tất yếu. Và đặc biệt với sự ra đời của thương mại điện tử thì nhu cầu này càng rõ rệt và cấp thiết hơn. Vấn đề đặt ra là phải tạo một phương pháp truyền thông tin an toàn, tránh sự phá hoại, ăn cắp thông tin hay làm sai lệch thông tin. Cùng với nhu cầu này một loạt các giải pháp được ra đời. Mã hóa, chữ ký điện tử đảm bảo được tính xác thực, và an toàn của thông tin nhưng vẫn chưa đủ để xác thực khi người sử dụng các cặp khóa công khai và bí mật chối bỏ các thông tin về khóa mình đã sử dụng. Từ lý do đó mà người ta thấy cần phải có một bên thứ ba đứng ra xác nhận các thông tin về khóa dùng để mã hóa gắn liền với chủ thể sử dụng. Chứng chỉ số ra đời. Chứng chỉ số là một tệp tin điện tử do một cơ quan, tổ chức cấp trong đó lưu trữ các thông tin về chủ thể sử dụng và các thông tin về khóa. Đồ án đề cập đến chứng chỉ số và sử dụng chứng chỉ số để xác thực. Đồ án gồm 3 chương. Chương I: Các khái niệm cơ bản Trong chương này sẽ đề cập đến một số khái niệm toán học, vấn đề mã hóa, chữ ký điện tử, xác thực, chứng thực điện tử. Chương II: Chứng chỉ số Trong chương này sẽ trình bày chi tiết về chứng chỉ số. Chương III: Xây dựng hệ thống quản lý chứng chỉ số Trong chương này sẽ giới thiệu việc xây dựng một chương trình hệ thống quản lý chứng chỉ số viết bằng ngôn ngữ PHP 5. CHƯƠNG I: CÁC KHÁI NIỆM CƠ BẢN 1.1 Các 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ố 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} Φ(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 nghịch đảo 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 Hàm băm 1.1.5.1 Giới thiệu Một hàm băm (hash function) hay một giải thuật băm là một phương pháp sinh một địa chỉ trong phần bộ nhớ dành cho các khóa được sắp thứ tự. Các hàm này cung cấp một cách tạo một "vân tay" số nhỏ từ bất kỳ loại dữ liệu nào. Hàm này cắt và trộn (thay thế và chuyển vị) dữ liệu để tạo một giá trị thường được gọi là giá trị băm. Giá trị băm thường được biểu diễn trong hệ cơ số 16. Hàm băm tốt là hàm cho ra ít đụng độ băm (hash collision) trong các miền dữ liệu trông đợi. Trong các bảng băm và việc xử lý dữ liệu, các đụng độ này dẫn đến chi phí cao hơn cho việc tìm kiếm các bản ghi trong cơ sở dữ liệu. Hình 1.1 Hai điều kiện sau đây được người ta cho là hai điều kiện chủ yếu cho một hàm băm: Hàm băm phải là hàm một phía nghĩa là cho x tính z=h(x) là việc dễ nhưng ngược lại, biết z tính x là việc cực khó (có thể quy ước dễ hay khó là có thể tính được trong thời gian đa thức hay không). Hàm băm phải là hàm không va chạm mạnh theo nghĩa sau đây: không có thuật toán tính được trong thời gian đa thức giả bài toán “tìm x1 và x2 thuộc S sao cho x1 ≠ x2 và h(x1) = h(x2)”; nói cách khác tìm hai văn bản khác nhau có cùng một đại diện là cực kỳ khó. Danh sách các hàm băm: Hình 1.2 1.1.5.2 Cấu trúc của hàm băm Hầu hết các hàm băm mật mã đầu có cấu trúc giải thuật như sau: Cho trước một thông điệp M có độ dài bất kỳ. Tùy theo thuật toán được sử dụng chúng ta có thể cần bổ sung một số bit vào thông điệp này để nhận được thông điệp có dộ dài là bội số của một hằng số cho trước. Chia nhỏ thông điệp thành từng khối có kích thước bằng nhau: M1, M2,....,Ms. Gọi H là trạng thái có kích thước n bit, f là “hàm nén: thực hiện thao tác trộn khối dữ liệu với trạng thái hiện hành. - Khởi gán H0 bằng một vector khởi tạo nào đó. - H1 = f(Hi-1,Mi) với I = 1,2,3,….,s. Hs chính là thông điệp rút gọn của thông điệp M ban đầu. 1.1.5.3 Một số loại hàm băm Hàm băm MD5: Hàm băm MD4 (Message Digest 4) được giáo sư Rivest đề nghị vào năm 1990. Vào năm sau, phiên bản cải tiến. Thông điệp ban đầu x sẽ được mở rộng thành dãy bit X có độ dài là bội số của 512. Một bit 1 được thêm vào sau dãy bit x, tiếp đến là dãy gồm d bit 0 và cuối cùng là dãy 64 bit l biểu diễn độ dài của thông điệp x. Dãy gồm d bit 0 được thêm vào sao cho dãy X có độ dài là bội số của 512. Quy định này được thể hiện bằng thuật toán sau: Thuật toán xây dựng dãy bit X từ dãy bit x Hình 1.3 Đơn vị xử lý trog MD5 là các từ 32-bit nên dãy X sẽ được biểu diễn thành dãy các tư X[i] 32 bit: X=X[0]X[1]………X[N-1] với N là bội số của 16. Thuật toán MD5: Hình 1.4 Đầu tiên bốn biến ABCD được khởi tạo. Những biến này được gọi là chaining variables. Bốn chu kỳ biến đổi trong MD5 hoàn toàn khác nhau và lần lượt sử dụng các hàm F,G,H và I. Mỗi hàm có các tham số X,Y,Y là cá từ 32 bit và kết quả là một từ 32 bit. F(X,Y,Z)= (XÙY)Ú((ØX)ÙZ) G(X,Y,Z)= (XÙZ)Ú(Y(ØZ)) H(X,Y,Z)= XÅYÅZ I(X,Y,Z)= YÅ(XÚ(ØZ)) Với quy ước: XÙY: Phép toán AND trên bit giữa X và Y. XÚY: Phép toán OR trên bit giữa X và Y. XÅY: Phép toán XOR trên bit giữa X và Y. ØX: Phép toán NOT trên bit của X. X+Y: Phép cộng (modulo 232). X<<<s: Các bit của X được dịch chuyển xoay vòng sang trái s vị trí (0 ≤ s <32). Định nghĩa các hàm: Hình 1.5 Với Mj là M[j] và hằng số ti xác định theo công thức: ti = ë232|sin(i)|û, I tính bằng radian. Chu kỳ biến đổi trong MD5 Hình 1.6 Hình 1.7 Hàm băm mật mã SHA: Trong các hàm băm SHA, chúng ta cần sử dụng thao tác quay phải một từ, ký hiệu là ROTR, và thao tác dịch phải một từ, ký hiệu là SHR. Khung thuật toán chung cho hàm băm SHA: Hình 1.8 Hình 1.9 Mỗi thuật toán có bảng hằng số phân bố thông điệp tương ứng. Kích thước bảng hằng số thông điệp (ScheduleRound) của SHA-224 và SHA-256 là 64, kích thước bảng hằng số thông điệp của SHA-384 và SHA-512 là 80. Trong phương pháp SHA-224 và SHA-256 sử dụng các hàm sau: Trong phương pháp SHA-384 và SHA-512 sử dụng các hàm sau: Hình 1.10: Các tính chất của các thuật toán băm an toàn 1.2 Vấn đề mã hóa 1.2.1 Khái niệm mã hoá Mã hóa là phương pháp để biến thông tin (phim ảnh, văn bản, hình ảnh...) từ dạng bình thường sang dạng thông tin “khó” thể hiểu được, nếukhông có phương tiện giải mã. Giải mã là phương pháp để chuyển thông tin đã được mã hóa về dạng thông tin ban đầu (quá trình ngược của mã hóa). Ví dụ: Thông điệp cần mã hoá là chuỗi nhị phân M=1011, hàm mã hoá vàgiải mã là hàm XOR, với K= 1010. Mã hóa: Giải mã: Việc giao dịch thông tin trên mạng ngày càng trở nên phổ biến, vấn đề an toàn thông tin được đặt ra, làm thế nào để thông tin không bị đánh cắp. Nếu kẻ cắp lấy được dữ liệu, nhưng “khó” lấy được thông tin thực sự. Điều này có thể thực hiện bằng cách mã hoá, nghĩa là trước khi gửi thông điệp, thông điệp được chuyển từ bản rõ sang bản mã, rồi mới gửi đi. Kẻ cắp có thể lấy được bản mã, nhưng không có được bản rõ (nghĩa là không lấy được nội dung của thông điệp). Mã hoá tuân theo qui tắc nhất định gọi là Hệ mã hoá. Hiện nay có hai loại mã hoá: • Mã hoá đối xứng. • Mã hoá khoá công khai (phi đối xứng). Hệ mã hoá được định nghĩa là bộ năm (P,C,K,E,D) trong đó: P là một tập hữu hạn các bản rõ có thể. C là một tập hữu hạn các bản mã có thể. K là một tập hữu hạn các khoá có thể. E là tập các hàm lập mã. D là tập các hàm giải mã. Với mỗi k Î K, có một hàm lập mã ek Î E. ek : P→C, và một hàm giải mã dk: C→P sao cho dk(ek(x))=x " x Î P. Hệ mã hoá khóa công khai sử dụng một cặp khóa. Một trong hai khóa được gọi là khóa riêng (Private Key) và phải được giữ bí mật bởi người sở hữu. Khóa còn lại được gọi là khóa công khai (Public Key), nó được phổ biến cho tất cả những ai muốn giao dịch với người giữ khóa riêng tương ứng. Cặp khóa này có liên quan về mặt toán học, và không thể sử dụng các thông tin của khóa công khai để tìm ra khóa riêng. Theo lý thuyết bất kỳ ai cũng có thể gửi cho người giữ khóa riêng một thông điệp được mã hóa bằng khóa công khai, và như vậy chỉ có người nào sở hữu khóa riêng mới có thể giải mã được. Đồng thời, người sở hữu khóa riêng cũng chứng minh được tính toàn vẹn của dữ liệu mà anh ta gửi cho người khác bằng chữ ký điện tử thông qua việc sử dụng khóa riêng để mã hóa. Bất kỳ ai nhận được dữ liệu đó đều có thể sử dụng khóa công khai tương ứng để kiểm tra xem nó do ai gửi và có còn toàn vẹn hay không. 1.2.2 Hệ mã hoá khóa công khai RSA là hệ mã hoá khoá công khai, và độ an toàn của hệ dựa vào bài toán khó: ”phân tích số nguyên thành thừa số nguyên tố”, sau đây là chi tiết về hệ mã hoá RSA. Sơ đồ: Chọn p, q là số nguyên tố rất lớn. Tính: n = p * q, Φ(n) = (p-1)*(q-1). Chọn b là số nguyên tố với Φ(n), để tồn tại phần tử nghịch đảo b-1, nghĩa là gcd(b,Φ(n)) = 1. Chọn a là nghịch đảo của b: a*b = 1 mod Φ(n) (nghịch đảo theo modulo Φ(n)). + b là khoá lập mã, công khai. + a là khoá giải mã, giữ bí mật. Lập mã: Chọn P = C = Zn với n = p * q, Zn = {0, 1, 2, ..., n-1} x Î Zn → y = xb mod n Î Zn Giải mã: y Î Zn → x = ya mod n Î Zn Ví dụ: Giả sử ông B cần gửi cho ông A một thông điệp x=8 trên kênh truyền công cộng. A và B muốn giữ bí mật tài liệu, hai bên thống nhất sử dụng hệ mã khoá RSA.Sau đây là các bước thực hiện để A và B trao đổi thông điệp. • Chuẩn bị: Lấy p = 3; q=5 (Đây là ví dụ minh họa, nên chọn p,q là hai số nguyên tố nhỏ để tiện cho việc tính toán). ® n=p*q=3*5=15; Φ(n) = (p-1)*(q-1)=2*4= 8. Chọn b=7 (thoả mãn gcd(7,8)=1), ® a= b-1mod Φ(n)=7 (thoả mãn 7*7=1 mod 8). ®Khóa công khai b=7; n=15. ®Khóa bí mật a = 7. • Quá trình mã hóa: Cho x= 8; Mã hóa: y = xb mod n = 87 mod 15 = 2097152 mod 15 = 2. • Quá trình giải mã: Nhận y = 2. Giải mã: x = ya mod n = 27 mod 15 = 128 mod 15=8. 1.3 Vấn đề chữ ký điện tử 1.3.1 Giới thiệu Giống như chữ ký của bạn trên các tài liệu thì chữ ký điện tử cũng có một ý nghĩa tương tự, đó là dùng chữ ký điện tử để ký lên một e-mail hoặc dữ liệu điện tử. Chữ ký điện tử được tạo ra và được chứng thực do việc dùng chứng chỉ số. Ngày nay, trên thế giới đã có nhiều quốc gia đã ban hành những điều luật công nhận chữ ký điện tử có giá trị pháp lý như những chữ ký trên các văn bản, giấy tờ trước đây vẫn dùng. Để ký, để tạo nên một giao dịch an toàn thì chứng chỉ số của bạn là duy nhất. Chữ ký điện tử mang lại cho bạn nhiều chức năng quan trọng như: • Tính xác thực. • An toàn và toàn vẹn dữ liệu. • Không chối cãi nguồn gốc. 1.3.2 Định nghĩa Một sơ đồ ký số thông thường gồm 2 thành phần tương ứng với 2 giai đoạn: - Thuật toán ký – tương ứng với giai đoạn ký. - Thuật toán xác minh – tương ứng với giai đoạn kiểm tra chữ ký. Định nghĩa một cách hình thức sơ đồ ký số gồm 5 thành phần: ( P, A, K, S, V ) P là tập các thông điệp. A là tập hữu hạn chữ ký. K là tập các khóa. S là tập hàm ký. V là tập hợp các hàm kiểm thử chữ ký. Với mỗi kÎ K thì tồn tại một thuật toán ký sigkÎ S và thuật toán xác nhận là VerkÎ V. Thông điệp xÎP => yÎA sao cho y=sigk(x) và từ xÎA và yÎA thì ta có Verk(x,y)=True ó y=sigk(x) Sử dụng khóa bí mật kết hợp với hàm giải mã để ký. Kiểm tra chữ ký bằng cách sử dụng khóa công khai và hàm mã. 1.3.3 Sơ đồ chữ ký RSA Sơ đồ chữ ký RSA sử dụng thao tác sinh khóa của hệ mã RSA. 1. Tạo khóa: Chọn hai số nguyên tố lớn p và q khác nhau. N= p*q. Φ(N)=(p-1)*(q-1). Chọn e sao cho (e, Φ(N))=1 và (1<e< Φ(N)). D=e-1mod Φ(N). Công khai (N,e) và giữ bí mật (D,p,q). 2. Ký: Thông điệp x ÎZq ta có: y=sig(x)=xd mod n. Gửi (x,y). 3. Kiểm tra chữ ký: Ver(x,y)=Trueó x=ye mod n. 1.4 Xác thực 1.4.1 Khái niệm xác thực Xác thực là việc xác minh, kiểm tra một thông tin hay một thực thể để công nhận hoặc bác bỏ tính hợp lệ của thông tin hay thực thể đó. Xác thực luôn là yêu cầu quan trọng trong các giao tiếp cần có sự tin cậy. Để đơn giản ta xét mô hình giao tiếp gồm 2 thực thể trao đổi thông tin A và B, họ cùng mục đích trao đổi một thông tin X nào đó. Khi đó, việc xác thực gồm: - A cần xác minh B đúng là B và ngược lại - Cả A và B cần xác minh tính an toàn của thông tin X mà họ trao đổi. Như vậ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 Theo các phương pháp truyền thống, chúng ta có thể thấy việc xác thực thực thể thường được thực thi bằng các giấy tờ như chứng minh thư, giấy phép lái xe, hoặc các giấy tờ cá nhân khác. Còn việc xác thực tính an toàn của thông tin trao đổi thường dựa trên chữ ký, con dấu. 1.4.2 Các dạng xác thực Có hai dạng xác thực là sự xác thực thực thể và sự xác thực trách nhiệm văn bản gốc. 1.4.2.1 Xác thực thực thể Trong sự xác thực thực thể, người dùng yêu cầu được chấp nhận là người chính thức hợp pháp của hệ thống. Dịch vụ xác thực thực thể đem đến sự đảm bảo sự công nhận hoặc bác bỏ nét nhận dạng của người truy nhập. Sự xác thực thực thể có thể một phía hoặc nhiều phía. Trong sự xác thực một phía, chỉ một phía thực hiện sự xác thực tự bản thân mình khi liên lạc, nhưng trái lại, trong sự xác thực thực thể đồng thời, cả hai bên phải xác thực lẫn nhau. Khi một Web browser kết nối với một lớp nền bảo vệ (a secure socket layer – SSL) có thể tới được trang chủ, ví dụ, nó luôn luôn thực hiện xác thực một phía máy chủ; còn máy chủ có thể thực hiện có chọn lọc sự xác thực đồng thời của browser. Sự xác thực đồng thời đóng vai trò quan trọng trong việc ngăn cản sự tấn công ác ý, mà ở đó, một server lừa đảo lừa một Client (khách hàng) vào trong một thông tin có cảm giác lộ ra ngoài, hoặc là một khách hàng lừa đảo truy nhập trái phép vào nguồn thông tin của máy chủ. 1.4.2.2 Xác thực trách nhiệm văn bản gốc Sự xác thực văn bản gốc cung cấp bằng chứng để một đoạn dữ liệu, cũng như một thư điện tử, trong thực tế được tạo bởi người sử dụng chính thức. Việc xác thực này nhằm mục đích chứng tỏ sự không chối cãi được trách nhiệm của người đã tạo ra tài liệu điện tử đó. Và để chứng minh rằng tài liệu là của người đó chứ không phải của ai khác. Việc xác thực này cũng đảm bảo phát hiện những sửa đổi khi tài liệu được truyền trên các kênh truyền thông, đảm bảo tính đúng đắn,toàn vẹn của tài liệu. 1.4.3 Các phương pháp xác thực Có nhiều phương pháp xác thực điện tử đã được phát triển. Với mỗi yêu cầu xác thực lại có những phương pháp 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, đây là phương pháp hiện đang được sử dụng rộng rãi nhất, chứng chỉ số và chữ ký điện tử, thẻ thông minh, những phương pháp hiện đang được quan tâm nhất. - Bằng mật khẩu. - Bằng chữ ký, Sơ đồ định danh (Công cụ: Chứng chỉ số, Thẻ thông minh,…). - Bằng nhận dạng sinh học. - Xác thực khởi động (Pre boot) Trên thực tế, đôi khi phải kết hợp nhiều phương pháp xác thực để đảm bảo tính an toàn đến một mức độ nào đó, bởi mỗi phương pháp xác thực đều có những ưu và nhược điểm riêng. Xác thực bằng mật khẩu có nhược điểm lớn nhất là người dùng thường chọn mật khẩu dễ nhớ, do vậy dễ đoán, nên dễ bị tấn công. Kẻ tấn công có thể có nhiều phương pháp để đạt được mật khẩu như thâm nhập vào hệ thống máy tính và đọc file password, dự đoán password, vét cạn các từ trong từ điển để tìm password, hoặc lừa người dùng để lộ password. Phương pháp nhận dạng sinh học thì đòi hỏi phải dựa trên hạ tầng thông tin tốt. Hiện nay chứng chỉ số đang được xem là giải pháp xác thực điện tử hiện đại nhất và triệt để nhất mà khắc phục các nhược điểm của các phương pháp khác. Chứng chỉ số phải được dựa trên một hạ tầng là hạ tầng mật mã khóa công khai (PKI), cộng với các thiết bị lưu trữ có tính năng xử lý như smart card, e-token,… 1.4.4 Các giao thức xác thực 1.4.4.1 Giao thức thử thách và trả lời Giao thức thử thách và trả lời cho phép người truy nhập tự xác thực mình với hệ thống bằng cách chứng minh hiểu biết của mình về giá trị mật mã bí mật mà không yêu cầu người truy nhập tiết lộ bí mật. Hệ thống xác thực đưa ra cho người truy nhập một số được tạo ra một cách ngẫu nhiên được gọi là thử thách. Người truy nhập nhập số thử thách và giá trị mật để hàm mật mã tính ra câu trả lời. Hệ thống xác thực nét nhận dạng của người truy nhập nếu câu trả lời là giá trị mong đợi. Bởi vì thử thách là một số ngẫu nhiên, giao thức thử thách – trả lời cung cấp một lá chắn có hiệu quả chống lại sự tấn công lặp lại. 1.4.4.2 Giao thức mật khẩu được chuyển đổi Trong giao thức này, người truy nhập chế biến mật khẩu của mình qua hàm băm rồi gửi kết quả tới hệ thống xác thực. Hệ thống so sánh giá trị băm với giá trị băm chính xác của mình và xác thực nét nhận dạng của người sử dụng nếu hai giá trị như nhau. Nếu hệ thống lưu giữ mật khẩu thay vì giá trị băm của chúng, hệ thống sẽ tính giá trị băm của mật khẩu trước khi đưa ra so sánh. Giao thức mật khẩu được chuyển đổi thể hiện mật khẩu dưới dạng hiện, nên nó dễ bị tổn thương trước sự tấn công lặp lại. 1.4.4.3 Giao thức mật khẩu sử dụng một lần Giao thức mật khẩu sử dụng một lần là một dạng quan trọng của giao thức mật khẩu được chuyển đổi để che chắn chống lại sự tấn công lặp lại được thực hiện bởi kẻ nghe trộm. Giao thức này yêu cầu người truy nhập và hệ thống xác thực chia một số bí mật nhỏ n. Người truy nhập băm mật khẩu của mình n lần để tạo ra mật khẩu sử dụng một lần và xác thực người truy nhập nếu hai kết quả là như nhau. Trên cơ sở của sự xác thực thành công, cả hai bên giảm lượng n. Một kẻ trộm không thể thực hiện việc tấn công lặp lại bởi vì mật khẩu sử dụng một lần tiếp theo là khác và nó không thể xác định từ giá trị trước đó. Trong giao thức này, cần phải thay đổi mật khẩu của người dùng và lập lại n khi n tiến tới 0. 1.4.4.4 Giao thức chứng chỉ số Giao thức chứng chỉ số là một dạng của giao thức thử thách – trả lời mà ở đó giá trị mật mã bí mật là một khóa riêng và hệ thống xác thực dùng khóa công khai tương ứng với khóa riêng để xác thực câu trả lời. Chúng ta sẽ nghiên cứu kỹ vấn đề này ở chương sau. 1.5 Chứng thực điện tử 1.5.1 Chứng thực điện tử là gì? Chứng thực điện tử là một loại chứng nhận điện tử giống như hộ chiếu, thẻ hội viên câu lạc bộ…Để chứng tỏ sự hiện diện của mình trên mạng và tạo được sự tin cậy đối với cá nhân hoặc tổ chức khác trong giao dịch điện tử thì bạn cần được “tổ chức cấp chứng thực” cấp một chứng thực điện tử. Qua đó, bạn có thể xuất trình chứng thực điện tử để các tổ chức, cá nhân khác nhận diện và cho phép bạn tiến hành các giao dịch trực tuyến. Chứng thực điện tử được sử dụng trong các ứng dụng giao dịch trên các trang web thương mại điện tử và các ứng dụng của mô hình “chính phủ điện tử”. Các ứng dụng phổ biến nhất là các dịch vụ hành chính công điện tử: Hộ khẩu, chứng minh thư điện tử, hải quan điện tử, đăng ký kinh doanh trực tuyến, công chứng điện tử…Dịch vụ thanh toán điện tử là một hình thức của thương mại điện tử mà yêu cầu sử dụng chứng thực điện tử là hết sức rõ nét. Chứng thực điện tử còn được sử dụng trong các ứng dụng thư tín điện tử, chứng thực này cho phép người sử dụng chữ ký điện tử mã hoá toàn bộ thông tin được gửi đi và người nhận tin sẽ xác định được nguồn gốc của thư điện tử, biết rằng nội dung của thư đó có bị thay đổi hay không. Ở Việt Nam hiện nay, một số chứng thực điện tử đã được triển khai như chữ ký điện tử, chứng từ điện tử trong hệ thống thanh toán liên ngân hàng, chữ ký điện tử trong khai báo hải quan điện tử. 1.5.2 Làm thế nào để có và sử dụng chứng thực điện tử? Việc cung cấp các chứng thực điện tử cho các tổ chức, doanh nghiệp, người dùng được thực hiện bởi các hệ thống phân phối. Người dùng có thể yêu cầu về chứng thực điện tử bằng cách thực hiện yêu cầu trực tuyến hoặc tự thiết lập các file mô tả đầy đủ các yêu cầu chứng thực, sau đó gửi cho nhà cung cấp dịch vụ. Từ cơ sở đó, nhà cung cấp dịch vụ sẽ thực hiện các thủ tục chấp nhận. Chứng thực sau khi được chấp nhận và được tổ chức cấp chứng chỉ (CA - Certification Authority) tạo ra là một tập tin có cấu trúc đặc biệt, có thể được chuyển tới cho người dùng trực tuyến từ địa chỉ của nhà cung cấp dịch vụ hoặc được gửi tới cho người dùng thông qua một phương thức đảm bảo (chỉ có người dùng đã đăng ký nhận được chứng thực). Chứng thực điện tử có tác dụng và thời gian tồn tại phụ thuộc vào nhà cung cấp. Sau khi nhận được chứng thực điện tử, người sử dụng phải cài đặt vào ứng dụng để sau đó có thể sử dụng chúng trong giao dịch. Chứng thực điện tử với khoá mã riêng được cài đặt tại ứng dụng trung tâm, khoá mã công cộng được chuyển tải rộng rãi cho người dùng. Người dùng thường sử dụng một chứng thực điện tử cho mỗi ứng dụng. Việc sử dụng nhiều chứng thực cho nhiều ứng dụng khác nhau sẽ giúp cho người sử dụng dễ dàng hơn trong việc quản lý cũng như tăng cường tính độc lập và bảo mật của các ứng dụng đó. Hiện nay, Công ty Điện toán và Truyền số liệu-VDC đã ký thoả thuận hợp tác với Công ty Trust Asia-đại diện Verisign tại khu vực Châu á-Thái Bình Dương và trở thành công ty đại diện duy nhất tại Việt Nam cung cấp dịch vụ chứng thực điện tử của Verisign. Khách hàng có thể đăng ký sử dụng dịch vụ chứng thực điện tử của Verisign thông qua VDC. Với chứng thực điện tử này, khách hàng sẽ được xác nhận toàn cầu và được bảo vệ nghiêm ngặt khi thực hiện các giao dịch trực tuyến. 1.6 Chứng thực chéo Một khía cạnh rất quan trọng trong hoạt động chứng thực điện tử là hoạt động chứng thực chéo. Chứng thực chéo là quá trình các CA hoặc các root CA thiết lập quan hệ tin cậy lẫn nhau, nhờ đó cộng đồng những người sử dụng có thể thực hiện các giao dịch điện tử đối với các đối tác không cùng một CA. CHƯƠNG II: CHỨNG CHỈ SỐ 2.1 Vài nét về chứng chỉ số 2.1.1 Chứng chỉ số là gì? Chứng chỉ số là một tệp tin điện tử được sử dụng để nhận diện một cá nhân, một máy chủ, một công ty, hoặc một vài đối tượng khác và gắn chỉ danh của đối tượng đó với một khoá công khai (public key). Giống như bằng lái xe, hộ chiếu, chứng minh thư hay những giấy tờ nhận diện cá nhân thông thường khác, chứng chỉ số cung cấp bằng chứng cho sự nhận diện của một đối tượng. Hệ mã khoá công khai sử dụng chứng chỉ số để giải quyết vấn đề mạo danh. Để lấy được bằng lái xe, bạn cần phải đăng ký với Phòng cảnh sát giao thông. Họ sẽ cấp cho bạn bằng lái xe sau khi đã xác định các thông tin về bạn như: có khả năng lái xe, họ và tên, địa chỉ, và những thông tin cần thiết khác. Để lấy được chứng chỉ số bạn cũng cần phải thực hiện các công việc đăng ký tương tự như vậy. Nơi có thể chứng nhận những thông tin của bạn là chính xác được gọi là Nhà cấp chứng chỉ số (Certificate Authority viết tắt là CA), một tổ chức có thẩm quyền xác nhận chỉ danh và cấp các chứng chỉ số. Họ có thể là một thành phần thứ ba đứng độc lập hoặc các tổ chức tự vận hành phần mềm cấp chứng chỉ số của mình. Các phương pháp để xác định chỉ danh phụ thuộc vào các chính sách mà CA đặt ra. Chính sách lập ra phải đảm bảo việc cấp chứng chỉ số phải đúng đắn, ai được cấp và mục đích dùng vào việc gì. Thông thường, trước khi cấp một chứng chỉ số, CA sẽ công bố các thủ tục cần phải thực hiện cho các loại chứng chỉ số. Trong chứng chỉ số chứa một khoá công khai được gắn với một tên duy nhất của một đối tượng (như tên của một nhân viên hoặc server). Chứng chỉ số giúp ngăn chặn việc sử dụng khoá công khai cho việc giả mạo. Chỉ có khoá công khai được chứng thực bởi chứng chỉ số mới làm việc với khoá riêng (private key) tương ứng được sở hữu bởi đối tượng mà có chỉ danh đã được chứng thực nằm trong chứng chỉ số. Ngoài khoá công khai, một chứng chỉ số còn chứa thêm tên của đối tượng mà nó nhận diện, hạn dùng, tên của CA cấp chứng chỉ số đó, mã số thứ tự, và những thông tin khác. Điều quan trọng nhất là một chứng chỉ số luôn luôn chứa chữ ký số của CA đã cấp chứng chỉ số đó. Nó giống như con dấu ở trên bằng lái xe hoặc chứng minh thư nhân dân của bạn khi được cấp. Nó cho phép chứng chỉ số như đã được đóng dấu để cho người sử dụng biết và tin cậy vào CA. 2.1.2 Chứng chỉ gốc là gì ? Chứng chỉ gốc là chữ ký điện tử của nhà cung cấp chứng chỉ số. Public key trong chứng chỉ được dùng để xác thực chữ ký của nhà cung cấp chứng chỉ số. Tương ứng với public key là một private key được nhà cung cấp chứng chỉ số ký trên tất cả các chứng chỉ số cung cấp cho khách hàng. Chứng chỉ gốc chứng thực một public key gắn với một nhà cung cấp chứng chỉ số. Khi chấp nhận chứng chỉ gốc của một nhà cung cấp chứng chỉ số tức bạn đã đặt sự tin tưởng vào nhà cung cấp chứng chỉ số đó. 2.1.3 Chứng chỉ số làm việc như thế nào ? Một chứng chỉ số gắn một public key với một cá nhân hay một tổ chức, sự kết hợp này là duy nhất và tính xác thực của nó được đảm bảo bởi CA. Chứng chỉ số được dựa trên thuật toán mã khoá công khai mà mô hình là việc dùng cặp khoá public key và private key. Private key được sở hữu riêng bởi người có chứng chỉ số và nó được dùng để tạo nên chữ ký điện tử. Khoá này luôn luôn phải giữ bí mật và chỉ thuộc về người sở hữu chứng chỉ số đó. Public key thì được công khai, nó được dùng để chứng thực một chữ ký điện tử. Sự chứng thực một chữ ký điện tử tức là bạn muốn biết đích danh là ai đã ký vào thông tin mà bạn nhận được. Cặp khoá public key và private key vốn không gắn với bất kỳ một chỉ danh nào, nó đơn giản chỉ là một cặp khoá mà giá trị của nó là các con số. Chứng chỉ số là sự kết hợp của một public key với một chỉ danh. Căn cứ vào chứng chỉ số của bạn hệ thống có thể kiểm tra xem bạn có đủ thẩm quyền khi truy cập vào hệ thống hay không, tránh khỏi sự mạo danh bạn để truy cập các hệ thống cũng như trao đổi thông tin. Với việc mã hoá thì chứng chỉ số đã cung cấp cho bạn một giải pháp thực sự đảm bảo giúp bạn hoàn toàn yên tâm khi tham gia trao đổi thông tin và giao dịch trên Internet. 2.1.4 Tại sao cần một chứng chỉ số ? Các cơ hội trong kinh doanh và việc đáp ứng các nhu cầu của khách hàng qua Internet là hết sức quan trọng và rõ ràng. Từ công việc của ngân hàng đến cửa hàng trực tuyến, dịch vụ ký nhận thông tin trực tuyến thì vấn đề an toàn ngày càng được chú trọng. Việc quản trị truy cập vào một hệ thống thông qua dùng một mật khẩu không còn phù hợp nữa. Giải pháp khác cho vấn đề này là dùng một chứng chỉ số, nó sẽ đảm bảo an ninh hơn rất nhiều so với các phương pháp bảo mật đơn giản như dùng mật khẩu. Ngày càng nhiều các công ty thực hiện công việc kinh doanh và trao đổi thông tin, ký kết các hợp đồng thương mại trên Internet thì việc bảo đảm an toàn và bảo mật cho các thông tin đó là vấn đề quan trọng hàng đầu. Điều này đã được các công ty nhận thức một cách rõ ràng, an toàn và bảo mật trong trao đổi thông tin qua mạng đã là một chính sách không thể thiếu của họ. Với mỗi công ty mà sử dụng chứng chỉ số thì đã được nhà cung cấp chứng chỉ số thẩm định rõ ràng sự tồn tại của họ về cơ sở pháp lý, điều này sẽ làm tăng sự tin tưởng của khách hàng vào doanh nghiệp đó. Và xa hơn nữa là cung cấp mức pháp lý cho các khách hàng khi họ tham gia giao dịch với các doanh nghiệp mà đã được CA chứng thực cho việc cấp chứng chỉ số. 2.1.5 Chứng chỉ số được áp dụng vào những công việc gì ? Chứng chỉ số được áp dụng vào các việc sau đây: - Sự riêng tư và bảo mật – Các tổ chức dùng chứng chỉ số để mã hoá và giải mã thông tin. - Tính toàn vẹn, xác thực và không thể chối cãi nguồn gốc – Dùng chứng chỉ số để ký lên một thông điệp cần gửi đi là đã thiết lập một chỉ danh cho người gửi, chứng minh nguồn gốc người gửi cũng như sự toàn vẹn của thông tin. - Kiểm soát truy cập – Sẽ yêu cầu các chứng chỉ số, dù nó ở trong các trình duyệt, trên đĩa hay trong smart card thì việc kiểm soát truy cập vào các trang Internet, các mạng Intranet và các mạng khác là dễ dàng. - Bằng chứng việc truyền tài liệu (dấu thời gian) – Các tổ chức cần “con dấu thời gian” trên những nguồn tin được gửi tới nhằm thẩm định lại tính hợp pháp cũng như bất hợp pháp trong giao dịch thương mại cũng như những qui định của riêng họ. - Lưu trữ tài liệu – Khi đó dùng chứng chỉ số để cung cấp quyền truy cập cho từng cá nhân và xác định xem tài liệu lưu trữ có bị thay đổi hay không. - Chỉ danh và quyền hạn – Khi sử dụng chứng chỉ số ta có thể xác lập quyền hạn cho từng cá nhân cụ thể và quản lý họ theo chỉ danh của họ. 2.1.6 Kiểm tra và tạo chữ ký điện tử như thế nào ? Để tạo một chữ ký điện tử, người ký tạo một dữ liệu “băm” là duy nhất và rút ngắn lại so với dữ liệu gốc, sau đó dùng private key để mã hoá dữ liệu đã được “băm” nói trên. Vậy thì chữ ký điện tử chính là dạng băm của dữ liệu đã được mã hoá bằng private key của người ký. Nếu thông điệp bị thay đổi thì dẫn đến kết quả “băm” của thông điệp đã bị thay đổi khác so với kết quả “băm” của thông điệp khi chưa bị thay đổi. Với các thông điệp khác nhau và với một private key dùng để ký thì chữ ký điện tử là duy nhất, bởi vậy không thể giả mạo được chữ ký điện tử. Chữ ký điện tử được thêm vào thông điệp và cả hai được gửi tới người nhận. Người nhận tạo lại giá trị băm từ thông điệp nhận được, sau đó dùng public key của người gửi để giải mã giá trị “băm” trong thông điệp nhận được. Nếu cả hai giá trị băm là giống nhau thì cả hai vấn đề chứng thực người gửi và tính toàn vẹn của thông tin. 2.2 Cơ sở hạ tầng khóa công khai Public Key Infrastructure – PKI 2.2.1 PKI là gì ? Internet đã xuất sắc trong việc trở thành bệ phóng số một cho thương mại và giao dịch toàn cầu. Tính phổ biến rộng rãi một mặt đã thúc đẩy bùng nổ Internet, tuy nhiên, mặt khác khó mà bảo đảm rằng những giao dịch trên Internet luôn an toàn. Các tổ chức chính phủ, doanh nghiệp và các cá nhân đòi hỏi máy móc không những phải bảo vệ toàn vẹn thông tin lưu chuyển trên Internet mà còn phải cho họ cảm giác tin cậy giống như khi giao dịch trên giấy tờ. Trước khi giao phó các giao dịch nhạy cảm của mình cho Internet, người sử dụng đòi hỏi mức an toàn đặc biệt. Họ muốn rằng giao dịch điện tử phải đáng tin cậy và phải được bảo vệ chống xem trộm. Họ muốn được chắc chắn rằng những người tham gia giao dịch phải là những người mà họ thỉnh cầu, và họ muốn được bảo đảm rằng không ai có thể phủ nhận hành vi liên quan của mình trong giao dịch khi có sự cố xảy ra. Cơ sở hạ tầng chìa khóa công cộng (PKI) đã đáp ứng cho những yêu cầu trên. Dựa trên cách sử dụng của chìa khóa mật mã công cộng và chữ ký điện tử, một PKI chính là bộ khung của các chính sách, dịch vụ và phần mềm mã hóa, đáp ứng nhu cầu bảo mật của người sử dụng khi gởi đi những thông tin quan trọng qua Internet và các mạng khác. Chìa khóa mật mã công cộng (Public Key cryptography) bảo đảm độ tin cậy đối với các thông tin hoặc thông điệp quan trọng bằng cách sử dụng các thuật toán, hay còn gọi là chìa khóa, để mã hóa dữ liệu và một chìa khóa để giải mã chúng. Trong dịch vụ Chìa khóa mật mã công cộng, người sử dụng nhận được phần mềm mã hóa đặc biệt và một cặp chìa khóa, trong đó có một chìa là chìa khóa công cộng (Public key) để có thể sử dụng dịch vụ, chìa còn lại là chìa khóa cá nhân (Private key) mà người sử dụng phải giữ bí mật. Hai chìa khóa này có liên quan mật thiết đến nhau, sao cho một thông điệp được mã hóa bởi một chìa khóa mật mã công cộng thì chỉ giải mã được bởi một chìa khóa cá nhân tương ứng. Một người sử dụng, ví dụ là Bob, mã hóa một thông điệp gởi đi bằng chìa khóa công cộng của người nhận là Alice. Khi nhận được thông điệp này, Alice sẽ giải mã nó bằng chìa khóa cá nhân của mình. Tất cả các chìa khóa công cộng đều được phát hành trong những cuốn niên giám điện tử. Tổ chức cấp giấy chứng nhận là một thành phần chính của PKI. Nó là một tổ chức thứ ba đáng tin cậy chịu trách nhiệm phát hành giấy chứng nhận kỷ thuật số và quản lý chúng trong thời hạn có hiệu lực. Chứng nhận kỷ thuật số là những tập tin điện tử chứa các chìa khóa mật mã công cộng và các thông tin nhận dạng đặc biệt về người sử dụng. Các giấy chứng nhận này có "dán tem" xác nhận và không thể làm giả được. Cũng giống như việc phát hành hộ chiếu, tổ chức cấp giấy chứng nhận xác nhận rằng cá nhân được cấp giấy chứng nhận kỷ thuật số là người đáp ứng đủ điều kiện. Chữ ký điện tử là một xác minh điện tử ngang bằng với một chữ ký truyền thống trên giấy - tức là có giá trị duy nhất, có thể kiểm chứng được và chỉ người ký mới có thể tạo ra nó. Thông điệp hay tài liệu dù đã được mã hóa hay chưa, hễ có chữ ký điện tử thì cũng đảm bảo được rằng thông tin trong đó không bị xâm phạm trong quá trình lưu chuyển. Các chính phủ, doanh nghiệp, cá nhân hội nhập vào cuộc cách mạng số hóa đều sẽ dùng chứng nhận kỹ thuật số. Khi phát hành một số lượng lớn giấy chứng nhận như vậy thì cần phải đề ra biện pháp quản lý việc sử dụng. Quản lý giấy chứng nhận là một công việc về lâu về dài của tổ chức cấp giấy chứng nhận PKI. Trên khắp thế giới, các công ty lớn và nhỏ đều đầu tư cho cơ sở hạ tầng chìa khóa công cộng như là một giải pháp hữu hiệu cho sáng tạo tập trung, phân phối, quản lý, chứng nhận cải tiến và đổi mới. 2.2.2 PKI hoạt động như thế nào ? Bob và Alice muốn liên lạc với nhau qua Internet, dùng PKI để chắc chắc rằng thông tin trao đổi giữa họ được bảo mật. Bob đã có chứng nhận kỹ thuật số, nhưng Alice thì chưa. Để có nó, cô phải chứng minh được với tổ chức cấp giấy chứng nhận cô thực sự là Alice. Một khi các thông số nhận dạng của Alice đã được tổ chức thông qua, họ sẽ phát hành cho cô một chứng nhận kỹ thuật số. Chứng nhận điện tử này có giá trị thực sự, giống như tấm hộ chiếu vậy, nó đại diện cho Alice. Nó gồm có những chi tiết nhận dạng Alice, một bản sao chìa khóa công cộng của cô và thời hạn của giấy chứng nhận cũng như chữ ký kỹ thuật số của Tổ chức chứng nhận. Alice cũng nhận được chìa khóa cá nhân kèm theo chìa khóa công cộng. Chìa khóa cá nhân này được lưu ý là phải giữ bí mật, không được san sẻ với bất cứ ai. Bây giờ thì Alice đã có chứng nhận kỷ thuật số, Bob có thể gởi cho cô những thông tin quan trọng được số hóa. Bob có thể xác nhận với cô là thông điệp đó xuất phát từ anh ta cũng như được bảo đảm rằng nội dung thông điệp không bị thay đổi và không có ai khác ngoài Alice đọc nó. Diễn biến thực tế không phải mất nhiều thời gian như những giải thích trên, phần mềm tại máy trạm của Bob tạo ra một chữ ký điện tử và mã hóa thông điệp có chứa chữ ký đó. Phần mềm sử dụng chìa khóa cá nhân của Bob để tạo ra chữ ký điện tử và dùng chìa khóa công cộng của Alice để mã hóa thông điệp. Khi Alice nhận được thông điệp đã được mã hóa có chữ ký của Bob, phần mềm sẽ dùng chìa khóa cá nhân của cô để giải mã thông điệp. Vì chỉ có duy nhất chìa khóa cá nhân của Alice mới có thể giải mã thông điệp đã được mã hóa bằng chìa khóa công cộng của cô, cho nên độ tin cậy của thông tin hoàn toàn được bảo đảm. Sau đó, phần mềm dùng chìa khóa công cộng của Bob xác minh chữ ký điện tử, để đảm bảo rằng chính Bob đã gởi thông điệp đi, và thông tin không bị xâm phạm trên đường di chuyển. Bảng sau đây minh họa cho tiến trình của chữ ký điện tử và độ tin cậy cao đáp ứng cho yêu cầu giao dịch điện tử an toàn của Bob và Alice. Bob muốn chuyển một thư điện tử đến cho Alice, với yêu cầu rằng giao dịch phải chứng minh được chính anh đã gởi nó đi và nội dung bức thư không bị thay đổi. Phần mềm PKI dùng chìa khóa cá nhân của Bob tạo ra một chữ ký điện tử cho bức thư Bob muốn chắc chắn rằng không ai ngoài Alice đọc được bức thư này Phần mềm PKI của Bob dùng chìa khóa công cộng của Alice để mã hóa thông điệp của Bob. Alice muốn đọc thư do Bob gởi Phần mềm PKI dùng chìa khóa cá nhân của Alice để để giải mã thông điệp. Alice muốn kiểm chứng rằng chính Bob đã gởi đi thông điệp đó và nội dung thông điệp không bị chỉnh sửa. Phần mềm PKI của Alice dùng chìa khóa công cộng của Bob để kiểm chứng chữ ký điện tử của anh ta. 2.2.3 Thành phần của PKI Mặc dù các thành phần cơ bản của PKI đều được phổ biến, nhưng một số nhà cung cấp đang muốn đưa ra những chuẩn PKI riêng khác biệt. Một tiêu chuẩn chung về PKI trên Internet cũng đang trong quá trình xây dựng. Một cơ sở hạ tầng khóa công khai bao gồm: - Một nhà cung cấp chứng chỉ số (CA) chuyên cung cấp và xác minh các chứng chỉ số. - Một nhà quản lý đăng ký (RegistrationAuthority - RA) đóng vai trò như một người thẩm tra cho CA trước khi CA cấp phát một chứng chỉ số. - Các dịch vụ lưu trữ phục vụ các nhu cầu tra cứu, lấy khóa công khai của các đối tác cần thực hiện giao dịch chứng thực số. - Một hệ thống quản lý chứng chỉ số Trong cơ sở hạ tầng khóa công khai PKI, CA sẽ kiểm soát cùng với nhà quản lý đăng ký để xác minh thông tin về chứng chỉ số mà người ta yêu cầu xác thực. RA xác minh thông tin về chứng chỉ số mà người ta yêu cầu xác thực và sau đó CA cấp chứng chỉ. Hình 2.1 Lợi ích cơ bản của hệ thống cấp chứng chỉ là một người sử dụng khóa công khai có thể biết được phần lớn khóa công khai của các thành viên khác một cách đáng tin cậy nhờ khóa công khai của CA. Lưu ý rằng các chứng chỉ số chỉ hữu ích khi người dùng khóa công khai tin cậy CA phát hành các chứng chỉ hợp lệ. 2.2.4 Phân phối khóa công khai Khi khóa công khai được gửi đến cho người sử dụng thì không cần thiết phải giữ bí mật khóa công khai này. Tuy nhiên người dùng người dùng khóa công khai phải đảm bảo rằng khóa công khai này được sử dụng, đúng là dành cho các thành viên khác( có thể là người nhận thông điệp có chủ định hoặc là bộ sinh chữ ký số được yêu cầu).Nếu kẻ phá hoại dùng khóa công khai khác để thay thế khóa công khai hợp lệ, nội dung các thông điệp đã mã hóa có thể bị lộ. Như vậy thành viên không chủ định khác có thể biết được các thông điệp hay các chữ ký số có thể bị làm giả. Nói cách khác, cách bảo vệ (được tạo ra từ các kỹ thuật này) bị ảnh hưởng nếu kẻ truy nhập thay thế các khóa công khai không xác thực. Đối với các nhóm thành viên nhỏ yêu cầu này có thể được thỏa mãn dễ dàng. Ví dụ hai người quen biết nhau, khi người này muốn truyển thông an toàn với người kia, họ có thể có các khóa công khai bằng cách trao đổi các đĩa nhớ có chứa các khóa công khai của từng người, như vậy đảm bảo rằng các khóa công khai được lưu trữ an toàn trên hệ thống cục bộ của từng người. Đây chính là hình thức phân phối khóa công khai thủ công. Tuy nhiên hình thức phân phối khóa công khai này được xem là không thực tế, không đấp ứng được nhu cầu khi một số lượng người sử dụng quá lớn hoặc phân tán. Các chứng chỉ khóa công khai giúp cho việc phân phối khóa công khai trở nên có hệ thống. Hệ thống cấp chứng chỉ khóa công khai làm việc nhu sau: Một CA phát hành các chứng chỉ cho những người nắm giữ cặp khóa công khai và khóa riêng. Một chứng chỉ gồm khóa công khai và nhân dạng duy nhất chủ thể của chứng chỉ. Chủ thể của chứng chỉ có thể là một người, một thiệt bị, hoặc một thực thể có nắm giữ khóa riêng tương ứng. Khi chủ thể của chứng chỉ là một người hay một thực thể hợp pháp nào đó, chủ thể thường được nhắc đến như là một thực thể của CA. Chứng chỉ được CA ký bằng khóa riêng của họ. Một khi hệ thống các chứng chỉ được thiết lập, công việc của người dùng khóa công khai rất đơn giản. Người dùng cần khóa công khai của một trong các thuê bao của CA, họ chỉ cần lấy bản sao chứng chỉ của thuê bao, lấy ra khóa công khai, kiểm tra xem chữ ký của CA có trên chứng chỉ hay không. Người dùng khóa công khai sử dụng các chứng chỉ như cách trên được gọi là các thành viên đáng tin cậy. Kiểu hệ thống này tương đối đơn giản và kinh tế khi triển khai trên diện rộng theo hình thức tự động. Bởi vì một trong những đặc tính quan trọng của chứng chỉ là: “ các chứng chỉ có thể được phát hành mà không cần phải bảo vệ thông qua các dịch vụ an toàn truyền thông để đảm bảo sự tin cẩn xác thực và toàn vẹn” Chúng ta không cần giữ bí mật khóa công khai, như vậy các chứng chỉ không phải là bí mật. Hơn nữa ở đây không yêu cầu tính xác thực và toàn vẹn do các chứng chỉ tự bảo vệ (chữ ký số của CA có trong chứng chỉ khi cấp bảo vệ xác thực và toàn vẹn). Một kẻ truy nhập trái phép định làm giả chứng chỉ số khi nó đang được phát hành cho những người đang sử dụng khóa công khai. Những người dùng này sẽ phát hiện ra giả mạo vì chữ ký số của CA được kiểm tra chính xác. Lợi ích cơ bản của hệ thống cấp chứng chỉ là một người sử dụng khóa công khai có thể dễ dàng có được một số lượng lớn khóa công khai của các người dùng khác một cách đáng tin cậy nhờ khóa công khai của CA. Lưu ý rằng chứng chỉ số chỉ hữu ích khi người dùng khóa công khai tin cậy CA phát hành các chứng chỉ hợp lệ. 2.3 Thời hạn tồn tại và việc thu hồi chứng chỉ Chứng chỉ cơ bản và các mô hình đường dẫn chứng thực được mô tả như trên đòi hỏi một yêu cầu nào đó đối với từng ứng dụng thực tế. Trước hết phải nhân ra tính đúng lúc, cặp khóa riêng và khóa công khai không phải lúc nào cũng hợp lệ mãi mãi. Trong hệ thống kỹ thuật, cặp khóa bất kỳ có thời hạn tồn tại nhất định nhằm hạn chế cơ hội thám mã và hạn chế thời gian có thể xảy ra tấn công thỏa hiệp. Vì vậy một chứng chỉ có thời gian tồn tại hợp lệ được quy định trước, xác định ngày giờ bắt đầu và ngày giờ kết thúc. Sau khi chứng chỉ số hết hạn, sự giàng buộc giữa khóa công khai và chủ thể không còn hợp lệ nữa và chứng chỉ không còn đáng tin cậy. Một người sử dụng khóa công khai không nên dùng chứng chỉ đã hết hạn trừ khi muốn chứng thực lại các hoạt động trước đó, ví dụ như kiểm tra chữ ký trên tài liệu cũ. Dựa vào thời hạn kết thúc chứng chỉ nếu chủ thể vẫn còn giữu khóa công khai hợp lệ thì CA có thể cấp chứng chỉ mới cho thuê bao này. Hơn thế nữa, việc thỏa hiệp khóa bị phát hiện hoặc nghi ngờ có sự thỏa hiệp khóa thì thời hạn kết thúc của chứng chỉ có thể bảo vệ người dùng chống lại việc tiếp tục sử dụng khóa công khai thông qua việc phat hành chứng chỉ trước khi thỏa hiệp. Có nhiều trường hợp CA có thể thu hồi chứng chỉ trước khi hết hạn của chứng chỉ nếu như phát hiện khóa riêng bị lô hay có sự thoa hiệp khóa riêng tương ứng. 2.4 Nhà cấp chứng chỉ số (Certificate Authority - CA) 2.4.1 CA là gì ? Một tổ chức tin cậy phát hành các chứng thực điện tử (electronic certificate) cho các đối tác cần trao đổi thông tin, giao dịch với nhau thông qua các phương tiện giao tiếp điện tử như: Internet, Smart card, Security card… CA cung cấp và quản lý các electronic certificates cho các đối tác như: kiểm tra đối tác đăng ký (registration) cấp phát (issue), thu hồi certificate (revocation). CA được cấu trúc theo mô hình phân cấp X.500 và cho phép các phân cấp con có thể tiếp tục chứng thực cho các đối tác khác (intermediate). Các thông tin trong một certificate bao gồm gồm public key của site's server, tên của đối tác đăng ký, Algorithm ID được dùng để ký lên certificate, ngày hết hạn certificate, tên của tổ chức CA cấp phát… Các trusted CA bảo đảm được đầy đủ ba yếu tố cho một đối tác khi sử dụng trusted certificates: CONFIDENTIALITY, INTEGRITY, và AUTHENTICATION. CONFIDENTIALITY: Không ai có thể đọc được nội dung data khi đang giao dịch. INTEGRITY: Bảo đảm được tính toàn vẹn của data, không ai có thể sửa đổi lại dữ liệu. AUTHENTICATION: Bảo đảm được tính xác thực của đối tác đăng ký, không ai có thể giả mạo được. 2.4.2 Mô hình CA Nếu việc thiết lập một CA cung cấp các chứng chỉ khóa công khai cho tất cả những người nắm giữ các cập khóa công khai trên thế giới là khả thi và được tất cả mọi người sủ dụng khóa công khai tin tưởng vào các chứng chỉ do CA cấp thì chúng ta giải quyết vấn đề phân phối khóa công khai. Nhưng đứng trước một thực tế là một CA không thể nắm giữ tất cả các thông tin và các mối quan hệ của mọi người dùng trên thế giới để có thể cấp phát các chứng chỉ hợp lệ. do đó chúng ta phải chấp nhân sự tồn tại của nhiều CA trên thế giới. Giả thiết có nhiều CA. Người dùng đang nắm giữ khóa công khai của một CA xác định muôn có khóa công khai của một người dùng khác đang sử dụng chứng chỉ số do một CA khác phát hành. Trong trường hợp này người dùng có thể tìm và sử dụng một chứng chỉ khác nó chứa khóa công khai của CA này nhưng lại do CA khác phát hành. Khóa công khai của CA này được người dùng nắm giữ an toàn. Hình 2.2 Vì vậy một người sử dụng có thể áp dụng chứng thực đệ quy chứng chỉ để thu được các khóa công khai của các CA và khóa công khai của những người sử dụng từ xa. Điều này dẫn đến một mô hình được gọi là dây chuyền chứng thực hoặc đường dẫn chứng thực đưa vào các hệ thống phân phối khóa công khai như hình vẽ trên. 2.4.3 Chữ ký của CA trên chứng chỉ số Như chúng ta đã biết thì chứng chỉ số chỉ hữu ích khi người sử dụng tin tưởng vào CA đã cấp phát chứng chỉ số cho họ. Để tạo được sự tin tưởng này ở người sử dụng thì cần phải có một dấu hiêu nào đó để xác thực CA đó có đúng là CA đã phát hành chứng chỉ số không. Giống như chứng minh thư nhân dân hay bằng lái xe khi cấp cần phải có con dấu của cơ quan công an. CA cũng cần có dấu hiệu để chứng thực mình bằng cách ký lên các chứng chỉ đó bằng khóa bí mật của riềng mình. Và tất nhiên CA sẽ cung cấp một khóa công khai để người sử dụng có thể kiểm tra chữ ký đó có đúng là của CA đã phát hành chứng chỉ không. Có rất nhiều thuật toán để có thể tạo ra một chữ ký điện tử như Elgamal, RSA, Rabin… Chữ ký này còn được gọi là chứng chỉ gốc. 2.5 Khuôn dạng chứng chỉ X.509 X.509 là một định dạng chuẩn được đưa ra bởi International TelecommunicationUnion-Telecommunication Standardization Sector (ITU-T) và ISO/International Electrotechnical Commission (IEC) – công bố lần đầu tiên vào năm 1988. Định dạng chuẩn X.509 phiên bản 2 (v2) là là sự mở rộng của định dạng chuẩn X.509 phiên bản 1 (v1) năm 1993, kết hợp thêm hai quyền mới hỗ trợ việc truy cập thư mục. Trong quá trình triển khai Internet Privacy Enhanced Mail (PEM) dựa trên X.509 v1 đã cho thấy sự thiếu hụt về tính mở cũng như sự mở rộng của khuôn dạng X.509 v1 và v2. Chuẩn X.509 v2 đã được xem xét lại cho phép bổ sung thêm các trường mở rộng. X.509 phiên bản 3 được đưa ra vào tháng 6- 1996. ISO/IEC và ANSI X9 đều đã định nghĩa các trường chuẩn mở rộng trong X.509 v3 chẳng hạn 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 và thông tin về chính sách … 2.5.1 Khuôn dạng chứng chỉ số X.509 v1, v2 Hình 2.3 Các trường của khuôn dạng chứng chi: Phiên bản (version): Chỉ ra khuôn dạng của phiên bản 1,2,3. Số hiệu (serial number): Số hiệu nhận dạng duy nhất của chứng chỉ này. Nó được CA phát hành gán cho. Tên thuật toán ký ( Signature algorithm identifier): Tên thuật toán ký được CA sử dụng để ký lên chứng chỉ. Người phát hành (Issuer): Tên X.500 của CA phát hành. Thời gian hợp lệ (Validity periord): Ngày/ giờ bắt đầu và kết thúc chứng chỉ. Chủ thể (Subject): Tên X.500 của đối tượng nắm giữ khóa riêng, nó tương ứng với khóa công khai được chứng thực. Thông tin khóa công khai của chủ thể (Subject publich-key ìnformation): gồm có khóa công khai của chủ thể và tên thuật toán sử dụng khóa công khai này. Tên duy nhất của người phát hành (Issuer unique indentifier): là chuỗi bit tùy chọn để chỉ ra tên của CA phát hành – trong trương hợp cung một tên được gán cho các thực thể khác nhau với cùng một thời gian. Tên duy nhất của đối tượng (Subject unique indentifier): là chuỗi bit tùy chọn để chỉ ra tên rõ ràng của chủ thể. Trong trường hợp cùng một tên được gán cho các chủ thể khác nhau trong cùng một thời gian. 2.5.2 Đặt tên trong X.509 v1, v2 Thông tin được lưu trữ trong các thư mục X.509 gồm một tập hợp các thực thể (entry). Thực thể liên quan đến một đối tượng thực, ví dụ như một người, một tổ chức, một thiết bị. Đối tượng này có tên rõ ràng, được gọi là tên phân biệt (DN). Đầu vào thư mục của đối tượng có chứa các giá trị của tập hợp các thuộc tính – gắn liền với đối tượng này. Ví dụ đầu vào của một người có thể chứa các thuộc tính như tên, số điện thoại, địa chỉ thư điện tử. Để hỗ trợ yêu cầu đặt tên rõ ràng, tất cả các đầu vào của X.509 được tổ chức thành một cấu trúc cây – được gọi là cây thông tin thư mục (DIT). Nó có gốc và không hạn chế số đỉnh (trừ gốc) tương ứng với một đầu vào thư mục và có tên phân biệt (tên phân biệt của gốc là null). Tên phân biệt của một đầu vào được tạo ra bằng cách: kết hợp tên phân biệt của đầu vào cấp trên gần nó nhất cùng với tên phân biệt liên quan (RDN), nó phân biệt đầu vào phụ thuộc với các cấp trực tiếp khác của cùng một thực thể cấp trên. Khuôn dạng chứng chỉ X.509 phiên bản 2 có hai trường không phải là các tên X.500: tên duy nhất cuat người phát hành và tên duy nhất của chủ thể. Mục đích chính của việc bổ sung thêm các trường này vào phiên bản 1 để hỗ trợ khả năng kiểm soát truy nhập thư mục. Rất tiếc là các tên duy nhất không phải là giải pháp đáng tin cậy cho vấn đề này bởi vì chúng rất khó quản lý. Có xu hướng che dấu không cho xem và rất dễ bị bỏ qua hoặc quên khi bổ sung. Hình 2.4 2.5.3 Khuôn dạng chứng chỉ số X.509 v3 Vào những năm 1993-1994, mọi cố gắng nhằm triển khai các chứng chỉ X.509 trên phạm vi đủ lớn được đẩy mạnh. Người ta nhận thấy rằng các khuôn dạng chứng chỉ v1, v2 không đáp ứng được tất cả các yêu cầu. Sau đây là một số lý do dẫn đến việc ra đời của phiên bản 3: Đối tượng có thể có các chứng chỉ khác nhau với các khóa công khai khác nhau và giả thiết rằng các cặp khóa cần được cập nhật định kỳ, do đó cần phải có cách để phân biệt các chứng chỉ khác nhau của đối tượng này một cách dễ dàng. Một tên đối tượng trở thành tên duy nhất nhưng nó không có đủ thông tin cho những người sử dụng khác nhận dạng đối tượng, cần có thêm thông tin nhân dạng đối tượng ngoài tên đối tượng. Một số ứng dụng cần nhận dạng những người sử dụng thông qua các dạng tên xác định ứng dụng, ngoài các tên X.500. Ví dụ trong an toàn thư tín điện tử, việc gắn kết một khóa công khai với một thư điện tử. Các chứng chỉ khác nhau có thể được phát hành theo các chính sách và các hoạt động chứng thực khác nhau. Các chính sách và các hoạt động chứng thực này thường chi phối mức độ tin cậy của người dùng khóa công khai đối với chứng chỉ. Ví dụ nếu chứng chỉ được phát hành cho thuê bao với sự mong đợi rằng đôi khi nó sẽ được sử dụng cho mục đích mã hóa thư tín điện tử, CA không phải thực hiện tất cả các kiểm tra nhận dạng và xác thực thích hợp nếu chứng chỉ đã được sử dụng cho việc kiểm tra các chữ ký số trong các giao dịch tài chính giữa các tổ chức. Các đường dẫn chứng thực ( chứng thực đệ quy) không được phép dài tùy tiện và phức tạp. Khi một CA (CA phát hành) chứng thực một CA khác (CA của một chủ thể), CA phát hành có thể chỉ muốn nhận một tập hợp con các chứng chỉ được CA của môt chủ thể phát hành. Trong thực tế để thỏa mãn các yêu cầu (đã biết hoặc chưa biết) trong tương lai, cần bổ sung thêm các trường vào khuôn dạng chứng chỉ. Các tổ chức chuẩn (như ISO/IEC, ITU và ANSI 19) chấp nhận bổ sung thêm vào chứng chỉ X.509 một cơ chế mở rộng chung. Kết quả là X.509 có ba khuôn dạng chứng chỉ được định nghĩa. Chứng chỉ trong phiên bản ba có cùng khuôn dạng với các chứng chỉ phiên bản 1, 2 nhưng có thêm các trường mở rộng. Mỗi trường mở rộng có một kiểu (cần được đăng ký). Giống với cách khi đăng ký một thuật toán, kiểu của trường mở rộng được đăng ký bằng cách gán cho nó một tên đối tượng. Các cộng đồng quan tâm có thể định nghĩa các kiểu của trường mở rộng nhằm đáp ứng các nhu cẩu riêng của họ. Cờ cần thiết sẽ chỉ báo khi sự xuất hiện của trường mở rộng là cần thiết (Critical) hoặc không (Non- Critical). Nếu cờ này chỉ báo: sự xuất hiện của trường mở rộng là không thiết yếu thì hệ thống sử dụng chứng chỉ được phép bỏ qua trường mở rộng néu nó không chấp nhận kiểu của trường mở rộng. Nếu cờ này chỉ báo thiết yếu thì hệ thống sẽ không an toàn nếu sử dụng một phần bất kỹ của chứng chỉ, trừ khi hệ thống này chấp nhận kiểu của trường mở rộng và thiết lập chức năng liên quan. Hình 2.5 2.5.4 Đặt tên trong khuôn dạng chứng chỉ X.509 v3 Một trong những điểm khác nhau quan trọng nhất giữa phiên bản 3 của X.509 và các phiên bản trước là việc đặt tên. Một thực thể bất kỳ được nhận dạng thông qua một hoặc nhiều tên ( có các dạng khác nhau). Có các dạng như sau: các tên X.500, các tên vùng của internet, các địa chỉ thư tín trên internet và các URL. Mỗi tên rõ ràng ( được trình bày ở trên) đều có thể dùng để nhân dạng chủ thể. Vì vậy, không có lý do gì mà không phát hành chứng chỉ có chứa tất cả các tên trên và bất cứ người nào cũng có thể sử dụng chứng chỉ nếu biết một trong các tên này. Một chứng chỉ như vậy rất tiên lợi. Các dạng tên được chấp nhận trong chuẩn X.509 như sau: - Địa chỉ thư tín điện tử; - Tên domain của internet; - Địa chỉ thư tín điện tử X.400; - Tên thư mục X.500; - Tên thành viên EDI 9 gồm có tên của một cơ quan gán tên, cộng với tên của một thành viên được cơ quan này gán cho. - Tên của Web Uniform Resource (trong đó URL là một kiểu phụ ); - Địa chỉ IP trên Internet :tạo thành một tên đối tượng; Tên dược đăng ký : dạng tên được đăng ký như là một đối tượng. 2.6 Đăng ký đối tượng Hệ thống đắng ký đối tượng –được sử dụng cho các tên thuật toán và cho 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,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à khác nhau hay tên đối tượng là duy nhất. Các tên đối tượng làm việc dựa vào cấu trúc thứ bậc của các cơ quan gán giá trị riêng biệt. Cá giá trị sau được gán ở mức cao nhất : 0 dành cho ITU, 1 dành cho ISO, 2 dành cho cả ISO và ITU. Đây là việc gán số, các số này rất quan trọng. Mỗi số liên quan đến một chuỗi văn bản ngắn có thể đọc được, nhưng hệ thống tên đối tượng không phải là hệ thống gán tên. Hình 2.6 2.7 Quy trình xin cấp một chứng chỉ số Với sự hỗ trợ của hạ tầng cơ sở khóa công khai PKI, một người dùng có thể 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, người dùng phải gửi các thông tin cho bộ phận quản lý và xác thực thông tin khách hà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 khách hàng. Nếu khách hàng sử dụng smart card để lưu trữ chứng chỉ thì 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. Khách hàng có thể sinh cặp khóa công khai/ bí mật ngay trên trình duyệt của mình thông qua một script. Chứng chỉ được sinh kiểu này sẽ không thể mang đến sử dụng ở máy khác như trường hợp sử dụng smart card do khóa bí mật được lưu trữ ngay trên trình duyệt của máy đó. 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 khách hàng. Trong nhiều trường hợp CA đóng luôn vai trò của RA. CA cấp chứng chỉ số cho khách hàng, đồng thời đưa chứng chỉ số vào kho thông tin và gửi cho khách hàng các thông tin cần thiết để thực hiện việc cài đặt chứng chỉ số. Chứng chỉ số có thời hạn sử dụng nhất định. Khi hết hạn khách hà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. Hình 2.7 CHƯƠNG III: XÂY DỰNG HỆ THỐNG QUẢN LÝ CHỨNG CHỈ SỐ 3.1 Chức năng của chương trình Tạo chứng chỉ số trong đó có các thông tin về chủ thể và khóa công khai, tạo khóa bí mật. Thu hồi chứng chỉ. Mã hóa và tạo chữ ký điện tử từ khóa công khai và khóa bí mật. Giải mã dùng khóa bí mật của chủ thể. Xác thực văn bản đã ký bằng cách kiểm tra tính đúng đắn của chữ ký. Các chức năng của chương trình bao gồm: Đăng ký cấp chứng chỉ. Lấy thông tin chứng chỉ. Tìm chứng chỉ. Mã hóa và ký thông điệp. Giải mã thông điệp. Kiểm tra tính chính xác chữ ký. Thu hồi chứng chỉ. 3.2 Mô tả hoạt động và một số giao diện của chương trình 3.2.1 Đăng ký cấp chứng chỉ Hình 3.1 Khi một người muốn đăng ký cấp chứng chỉ thì cần điền các thông tin của mình vào form sau đó ấn continue. Nếu các thông tin cung cấp là chính xác và hợp lệ thì sẽ được cấp một chứng chỉ. 3.2.2 Lấy thông tin chứng chỉ Để xem thông tin chi tiết của chứng chỉ ấn vào nút “Lấy Chứng Chỉ”, sẽ có một form hiện ra: Hình 3.2 Nhập thông tin và ấn continue. Nếu thông tin nhập vào là chính xác thì các thông tin chi tiết về chứng chỉ của bạn sẽ hiện ra như hình vẽ bên dưới: Hình 3.3 Bạn có thể tải khóa công khai và bí mật về để sử dụng. 3.2.3 Tìm thông tin về chứng chỉ của một người khác Ấn vào chữ ”tìm chứng chỉ” trên trang, một form sẽ hiện ra: Hình 3.4 Nhập số serial chứng chỉ cần tìm rồi ấn continue. Nếu số serial người đó tồn tại thì thông tin về chứng chỉ của người ấy sẽ hiện ra như ở hình 4.3 nhưng không có thông tin về khóa bí mật của người đó. 3.2.4 Mã hóa và ký thông điệp Khi muốn mã hóa một thông điệp và ký với thông điệp đó bằng chứng chỉ số đã được cung cấp bạn ấn vào chữ ”Mã Hóa Và Ký” trên trang. Một form sẽ hiện ra: Hình 3.5 Điền các thông tin vào và ấn vào nút mã hóa, sẽ hiện ra một form với thông điệp đã được mã hóa và chữ ký. Hình 3.6 3.2.5 Giải mã thông điệp Khi muốn giải mã một thông điệp đã được mã hóa bằng khóa công khai trong chứng chỉ bạn ấn vào chữ ”Giải Mã” trên trang, một form sẽ hiện ra: Hình 3.7 Nhập nội dung cần giải mã và khóa bí mật. Nếu khóa là đúng ta sẽ thu được bản rõ. Hình 3.8 3.2.6 Kiểm tra tính chính xác của chữ ký Để xác thực xem văn bản có đúng là do người đó gửi hay không bạn cần vào phần kiểm tra chữ ký để xác thực lại chữ ký đi kèm văn bản. Để làm việc này bạn ấn vào chữ ”Kiểm Tra Chữ Ký” trên trang. Một form sẽ hiện ra: Hình 3.9 Nhập các thông tin về chữ ký và khóa. Nếu chữ ký đúng của người gửi thì sẽ hiện thông báo “Chữ ký là đúng” nếu không sẽ hiện thông báo “ chữ ký không chính xác”. 3.2.7 Thu hồi chứng chỉ Khi muốn thu hồi một chứng chỉ bạn ấn vào chữ “Thu Hồi” trên trang chủ. Một form sẽ hiện ra để bạn nhâp thông tin chứng chỉ muốn thu hồi: Hình 3.10 Nếu chứng chỉ đó là tồn tại thì sẽ hiện ra một form nữa hiển thị thông tin của chứng chỉ: Hình 3.11 Bạn nhập số serial của chứng chỉ cần thu hồi và ấn vào nút continue chứng chỉ sẽ được thu hồi. 3.3 Công cụ hỗ trợ và ngôn ngữ lập trình 3.3.1 Ngôn ngữ lập trình php5 PHP 5.0 bản chính thức được công bố vào ngày 13/7/2004 là một trong những sự kiện gây nhiều chú ý trong cộng đồng các nhà phát triển. PHP hiện là ngôn ngữ lập trình được sử dụng phổ biến nhất để xây dựng các trang web động với 16.251.453 tên miền, và 1.346.521 địa chỉ IP, tính đến ngày 18/7/2004. PHP 5.0 có những cải tiến vượt bậc so với các bản PHP 4.x trước đây. Cho đến nay, PHP 5 được coi là bản cập nhật đáng kể nhất trong vòng 2 năm trở lại đây trong khi vẫn giữ được thế mạnh vốn có của PHP kể từ thời PHP/FI 2.0 là tốc độ và tính hiệu quả. (Tham khảo lịch sử phát triển PHP trên Wikipedia tại địa chỉ và các thông tin khác về PHP trên website của cộng đồng PHP Việt Nam tại địa chỉ Trở lại năm 1998, việc đưa Zend Engine 1 vào bộ lõi của PHP Engine đã đem đến sức mạnh vượt trội của PHP 4. Mặc dù PHP đã thu hút được số lượng người dùng đông đảo nhưng hạn chế chính của nó là không cung cấp thêm công cụ để xây dựng website. Sáu năm sau đó, cộng đồng đã thực sự nghiêm túc xem xét lại những tồn tại cố hữu của PHP khiến các nhà phát triển gặp nhiều khó khăn khi xử lý một số vấn đề. Trong số đó, các nhà phát triển nhấn mạnh đến việc hỗ trợ lập trình hướng đối tượng trong PHP 4 một cách nửa vời, thư viện mở rộng MySQL không hỗ trợ giao thức máy khách MySQL 4.1 mới, hỗ trợ XML chắp vá và hỗn độn. PHP 5 ra đời đã cải thiện 3 vấn đề quan trọng trên (được viết lại hoàn toàn) và kết quả thực sự ấn tượng. Tuy nhiên, đây vẫn chưa phải là tất cả những gì tốt đẹp nhất mà PHP 5 mang đến. Trong bài viết này, tôi sẽ đề cập đến 7 đặc điểm nổi bật của PHP 5. Những đặc điểm này cho phép phát triển mã lệnh ngắn hơn, đẹp hơn và cơ động hơn. Hỗ trợ mạnh lập trình hướng đối tượng Mặc dù những tính năng hỗ trợ đối tượng đã được tuyên bố từ PHP 4, tuy nhiên cộng đồng các nhà phát triển đã nhanh chóng nhận ra sự non nớt của chúng. Với PHP 5, các nhà phát triển từ nay có trong tay các phương tiện lập trình hướng đối tượng hoàn thiện (PHP 5 vẫn cho phép làm việc bình thường với kiểu lập trình cấu trúc). Có thể liệt kê một số đặc điểm: 1.   Mô hình đối tượng hoàn toàn mới dựa trên nguyên mẫu là mô hình của Java 2.   Hàm tạo dựng thống nhất _construct(): tạo điều kiện để di chuyển các lớp từ cây phân cấp lớp này sang cây phân cấp lớp khác. 3.   Hàm hủy _destruct(): tạo điều kiện để ghi lại các thông tin phục vụ cho việc tìm lỗi, đóng kết nối dữ liệu và thực hiện các công việc giải phóng tài nguyên khác. 4.   Các thuộc tính và các phương thức public, protected, và private: cho phép định nghĩa tính hữu hình của các thuộc tính lớp. Điều này rất quan trọng để hỗ trợ tính kế thừa và tính bao gói trong lập trình hướng đối tượng. 5.   Giao diện (Interface): tính năng này lấy từ mô hình của Java nhằm hỗ trợ đa kế thừa. 6.   Các lớp trừu tượng. 7.   Cấu trúc gợi nhắc kiểu lớp (class hints). 8.   Các thuộc tính và phương thức static. 9.   Các thuộc tính và phương thức Final. 10.  Một loạt các phương thức hỗ trợ mạnh khác như auto loading, reflection, xử lý lỗi ngoại lệ (exceptions), nhân bản đối tượng (object cloning), toán tử instanceof... Thêm vào đó, các đối tượng bây giờ đồng thời cả gán lẫn truyền đều theo tham chiếu (reference hoặc handle) thay vì theo giá trị, nhờ vậy lập trình viên không còn phải sử dụng rải rác các kí hiệu & xuyên suốt chương trình. Các tính năng ngôn ngữ này cũng đã mở đường cho lập trình viên PHP sử dụng tối ưu sức mạnh của các mô hình thiết kế (pattern). Thư viện mở rộng MySQL được viết lại hoàn toàn Hệ quản trị CSDL MySQL song hành với PHP như hình với bóng, mặc dù PHP có khả năng hỗ trợ nhiều hệ CSDL khác. Tuy nhiên, trong khi sự kết hợp này đem đến những thành công vang dội cho cả hai sản phẩm thì sự lạc hậu của mô đun mở rộng để PHP làm việc với MySQL lại là một trở ngại khi nó không cho phép tận dụng các tính năng cực kì hấp dẫn của MySQL 4.1 và các bản cao hơn. Nhóm phát triển PHP 5 đã viết một thư viện mở rộng hoàn toàn mới, rất mạnh để hỗ trợ MySQL 4.1 và 5.x, mang tên MySQLi (MySQL Improved). Các tính năng bao gồm: 1.    Câu lệnh biên dịch trước 2.    Tham số xuất và nhập có giới hạn 3.    Kết nối SSL 4.    Hàm đa truy vấn. MySQLi còn tận dụng được hỗ trợ lập trình hướng đối tượng mới của PHP 5 để cung cấp một giao diện hướng đối tượng với MySQL. Trên hết, những bản mới nhất của MySQL bây giờ cho phép dùng chọn lọc con (subselects), chuyển tác (transactions) và bản sao dữ liệu (replication). Bộ công cụ XML có thể tương tác PHP 5 đã cải tiến hỗ trợ XML với các thư viện XML mở rộng như sau: 1.    Làm việc được với nhau như một thể thống nhất. 2.    Được chuẩn hóa trên một thư viện XML duy nhất: libxml2. 3.    Tuân thủ hoàn toàn các đặc tả của W3. 4.    Xử lý dữ liệu hiệu quả. 5.    Cung cấp công cụ xử lý XML mạnh. Thêm vào đó, để tiếp tục duy trì tính dễ dàng của PHP trong việc xây dựng ứng dụng web, người ta đã đưa vào một thư viện XML mới cho phép đọc và thay đổi dễ dàng các tài liệu XML. Mô đun mở rộng SimpleXML cho phép tương tác với các thông tin có trong một văn bản XML như thể các thông tin này là mảng hay đối tượng, có thể dùng vòng lặp để duyệt qua chúng, biên tập chúng tại chỗ chỉ bằng cách gán các giá trị mới vào các biến. Nếu bạn đã biết trước định dạng của tài liệu, ví dụ như khi phân tách các file RSS, dữ liệu cấu hình thì dùng SimpleXML rất tiện. Nếu thích dùng DOM, bạn sẽ rất hứng thú với mô đun mở rộng DOM của PHP 5, mô đun này đã được viết lại và cải tiến rất nhiều so với bản trong PHP 4. Hệ CSDL nhúng SQLITE Sự gắn kết hoàn hảo với MySQL là một lợi thế rất lớn cho PHP 4.x, tuy nhiên nhiều khi ứng dụng web lại không cần nhiều đến khả năng của hệ quản trị CSDL mạnh. Do đó, việc phân phối kèm hệ CSDL nhúng SQLite cho phép nhà phát triển có thêm công cụ sẵn sàng để lưu trữ và truy vấn dữ liệu bằng phương thức SQL mà không cần cài đặt hệ CSDL riêng biệt nào cả. SQLite xử lý chính xác các truy cập khóa chặn (locking) và truy cập đồng thời (concurrent), hai vấn đề nổi cộm khi xử lý các file dữ liệu phẳng (flat file) tự tạo. SQLite đủ mạnh để xử lý phần lớn các nhu cầu lưu trữ và thao tác dữ liệu thông thường. Nó hỗ trợ: 1.    Chuyển tác (transactions): 2.    Truy vấn con (Subqueries) 3.    Kiểm soát toàn vẹn tham chiếu (triggers) 4.    Nhiều tính năng cao cấp liên quan đến CSDL như hỗ trợ View... SQLite tương thích với phần lớn các tính năng chuẩn SQL92, tuy nhiên bản 3.0 mới nhất chưa hỗ trợ chuyển tác lồng nhau, ràng buộc khóa ngoại, cũng như hỗ trợ kiểm soát toàn vẹn tham chiếu một cách đầy đủ. Bạn thậm chí có thể viết các hàm cho người sử dụng tự định nghĩa bằng PHP và gọi chúng bên trong SQLite. Đây là tính năng nổi bật nhất từ trước đến nay có được trong một mô đun mở rộng liên quan đến CSDL trong PHP. Cơ chế xử lý lỗi sáng sủa hơn với Exceptions PHP 5 cung cấp một mô hình kiểm tra lỗi hoàn toàn khác so với PHP 4. Nó có tên là xử lý lỗi ngoại lệ. Với lỗi ngoại lệ, nhà phát triển được giải phóng khỏi việc phải kiểm tra giá trị trả lại của tất cả các hàm. Thay vào đó, bạn có thể tách biệt luận lý lập trình xử lý lỗi và đặt chúng nằm bên cạnh các khối mã. Lỗi ngoại lệ thường được thấy ở các ngôn ngữ lập trình hướng đối tượng như Java và C++. Hiện tại, chỉ có một số ít mô đun mở rộng của PHP sử dụng lỗi ngoại lệ, nhưng dần dần điều này sẽ được thực hiện đồng bộ. Tuy nhiên, bạn có thể sử dụng lỗi ngoại lệ cho bất cứ đoạn mã PHP nào của mình. Bản thực thi SOAP cao cấp SOAP là thành phần chủ yếu của lĩnh vực dịch vụ web đang phát triển rất nhanh. Hỗ trợ SOAP trong PHP 4 chỉ ở cấp trung bình, không chỉ là việc có rất ít các gói SOAP mà còn ở chỗ các gói quan trọng nhất viết bằng PHP thay vì C nên chậm. Với PHP 5, cuối cùng chúng ta đã có một mô đun mở rộng cho SOAP viết bằng C. Hiện tại, mô đun này thực thi được phần lớn, mặc dù không phải là tất cả các đặc điểm nêu trong SOAP 1.2. Trong tương lai, mô đun này sẽ được cải thiện nhiều hơn. Hiện tại, so với .NET hay Java thì hỗ trợ SOAP trong PHP vẫn bị xếp ở chiếu dưới. 3.3.2 OpenSSL trong PHP 5 3.3.2.1 Giới thiệu Trong PHP 5 đặc biệt hỗ trợ thư viện openssl với rất nhiều hàm hỗ trợ việc mã hóa và sinh các cặp khóa công khai và bí mật cũng như tạo các chứng chỉ số. Để sử dụng được thư viện openssl để tạo chứng chỉ và sinh các khóa cần phải cài đặt hợp lệ openssl.cnf trong hệ thống. Php sẽ tìm tới openssl.cnf và sử dụng các nhóm logic. Môi trường biến openssl_conf và ssleay_conf, nếu thiết lập sẽ được sử dụng như là đường dẫn cấu hình file. File openssl.cnf sẽ được giả như tìm thấy ở một miền chứng nhận mặc định như là định cấu hình trong một thời gian cho opensl.dll biên dịch. Thông thường mặc định đường dẫn là c:\usr\local\ssl\openssl.cnf. Để sử dụng được thư viện openssl cần phải cấu hình lại file php.ini. Bỏ dấu ”;” ở trước ;extension=php_openssl.dll. 3.3.2.2 Khóa và chứng chỉ Chứng chỉ: Trả lại giá trị X.509 sử dụng hàm openssl_x509_read(). Chuỗi có định dạng file://path/to/cert.pem; Chuỗi bao gồm nội dung chứng chỉ mã hóa PEM. Khóa công khai /khóa bí mật: Lấy giá trị khóa nhờ hàm openssl_get_publickey() và openssl_get_privatekey(). Với khóa công khai chỉ có thể là định dạng X.509. Chuỗi có định dạng file://path/to/file.pem. Chuỗi bao gồm nội dung của chứng chỉ /khóa, mã hóa PEM. Với khóa bí mật bạn có thể sử dụng cú pháp array($key, $passphrase). $key có thể sử dụng lấy từ một file hoặc từ nội dung ký hiệu văn bản. $passphrase là khóa cho khóa bí mật, có thể có, có thể không có. 3.3.2.3 Một số hàm trong OpenSSL openssl_csr_export_to_file: Tạo chứng chỉ lưu vào file. openssl_csr_export: Tạo chứng chỉ là một chuỗi. openssl_csr_get_public_key: Trả lại giá trị khóa công khai từ chứng chỉ. openssl_csr_get_subject: Trả lại thông tin chủ thể của chứng chỉ. openssl_csr_sign: Ký và sinh chứng chỉ. openssl_error_string: Trả lại thông báo lỗi openssl. openssl_free_key: Gải phóng khóa. openssl_get_privatekey: Tên hiệu của openssl_pkey_get_private() openssl_get_publickey: Tên hiệu của openssl_pkey_get_public() openssl_open: Mở dữ liệu được mã hóa. openssl_pkcs7_decrypt: Giải mã thông điệp mã hóa theo định dạng pkcs7. openssl_pkcs7_encrypt: Mã hóa thông điệp theo định dạng pkcs7. openssl_pkcs7_sign: Ký thông điệp theo định dạng pkcs7. openssl_pkcs7_verify: Xác thực chữ ký theo định dạng pkcs7. openssl_pkey_free: Giải phóng khóa bí mật. openssl_pkey_get_details: Trả lại một mảng với mô tả về khóa (bits, pkey, type) openssl_pkey_get_private: Lấy khóa bí mật. openssl_pkey_get_public: Trích khóa công khai từ chứng chỉ và chuẩn bị sử dụng. openssl_pkey_new: Sinh khóa bí mật mới. openssl_private_decrypt: Giải mã với khóa bí mật. openssl_private_encrypt: Mã hóa với khóa bí mật. openssl_public_decrypt: Giải mã với khóa công khai. openssl_public_encrypt: Mã hóa với khóa công khai. openssl_sign: Sinh chữ ký. openssl_verify: Xác thực chữ ký openssl_x509_check_private_key: Kiểm tra khóa bí mật có phù hợp với chứng chỉ. openssl_x509_export_to_file: Tạo chứng chỉ và lưu vào file. openssl_x509_export: Tạo chứng chỉ là một chuỗi. openssl_x509_free: Giải phóng chứng chỉ. openssl_x509_parse: Tính toán chứng chỉ và trả lại giá trị là một mảng. openssl_x509_read: Tính toán chứng chỉ và trả lại nguồn định danh cho nó. 3.4 Một số đoạn mã quan trọng của chương trình 3.4.1 Tạo chứng chỉ <?php include_once( 'ketnoi.php' ); $ketnoi = new ketnoi; $dn=array("countryName"=>$_POST['quoctich'], "stateOrProvinceName"=>$_POST['tinh'], "localityName"=>$_POST['thanhpho'],"organizationName"=>$_POST['tochuc'],"organizationalUnitName"=>$_POST['donvi'],"commonName"=> $_POST['hoten'], "emailAddress" => $_POST['email']); $numberofdays = 365; $privkey = openssl_pkey_new($config); $csr = openssl_csr_new($dn, $privkey); $sscert = openssl_csr_sign($csr, null, $privkey, $numberofdays); openssl_x509_export($sscert, $publickey); openssl_pkey_export($privkey, $privatekey); echo "$publickey"; // Will hold the exported PubKey //============================= $rd = sha1(crypt("Random string", mt_rand(1, 1000))); $filename = "PrivateKey_".$rd.".pem"; $path = "C:/CA/Key/".$filename; if(!($myFile = fopen($path, "w"))) { print("Error: "); print("'$path' could not be created\n"); exit; } fputs($myFile, $privatekey); //======================== $filename1 = "PublicKey_".$rd.".pem"; $path1 = "C:/CA/Key/".$filename1; if(!($myFile = fopen($path1, "w"))) { print("Error: "); print("'$path1' could not be created\n"); exit; } fputs($myFile, $publickey); fclose($myFile); //============================== ?> 3.4.2 Mã hóa và ký <?php $PublicKey=$_POST['khoacongkhai']; $string=$_POST['vanban']; if ( empty( $PublicKey ) ) { exit( 'Khong the ma hoa do khoa cong khai khong hop le' ); } if ( strlen( $string ) > 56 ) { exit( 'Khong the ma hoa do ky tu dau vao qua dai' ); } cert = openssl_get_publickey( $PublicKey ); // encrypt openssl_public_encrypt ( $string, $out, $cert ); $privatekey=$_POST['khoabimat']; $key = openssl_get_privatekey( $privatekey); // find the signature $signature = NULL; openssl_sign( $string, $signature, $key ); $signature = chunk_split( base64_encode( $signature ), 64 ); // free the cert resource openssl_free_key( $cert ); // encode the encrypted text for transport $out = chunk_split( base64_encode( $out ), 64 ); echo"$out"; echo"Signature:$signature"; ?> 3.4.3 Giải mã <?php $string=$_POST['vanban']; $privatekey=$_POST['khoabimat']; if ( empty( $privatekey ) ) { exit( 'Khong the giai ma, ban hay kiem tra lai ma so va mat khau ' ); } // decodes encrypted text from transport $string = base64_decode( $string ); // create openssl pkey resource $key = openssl_get_privatekey( $privatekey ); // decrypt openssl_private_decrypt( $string, $out, $key ); // make openssl forget the key openssl_free_key( $key ); echo"$out"; ?> 3.4.4 Kiểm tra chữ ký <?php $signature=$_POST['chuky']; $PublicKey=$_POST['khoacongkhai']; $string=$_POST['banro']; if ( empty( $PublicKey ) ) { exit( 'Cannot verify, no active certificate.' ); } // base64 decode the signature... $signature = base64_decode( $signature ); // create openssl certificate resource $cert = openssl_get_publickey( $PublicKey ); // verify the signature $success = openssl_verify( $string, $signature, $cert ); // free the key resource openssl_free_key( $cert ); if ( $success ) { echo"Chu Ky La Dung"; } else echo"Chu ky khong dung"; ?> 3.5 Những hạn chế và hướng phát triển 3.5.1 Hạn chế của chương trình Chưa mã hóa được trên một văn bản có độ dài lớn. Chỉ mã hóa và ký trên văn bản, chưa sử dụng chứng chỉ số một cách rộng rãi hơn, ví dụ như để xác thực phần mềm hay xác thực website, xác thực máy chủ. 3.5.2 Hướng phát triển chương trình Xây dựng ứng dụng mã hóa với văn bản có độ dài lớn hơn. Xây dựng các ứng dụng sử dụng chứng chỉ số một cách rộng rãi hơn như ký xác thực phần mềm, xác thực website, xác thực máy chủ… KẾT LUẬN Việc nghiên cứu và tìm hiểu về chứng chỉ số để đáp ứng nhu cầu xác thực thông tin và người dùng hiện này là rất cần thiết đặc biệt là trong các giao dịch điện tử. Đồ án đã đạt được những kết quả chính sau: Nghiên cứu và tìm hiểu trong tài liệu để hệ thống lại các vấn đề: Các khái niệm về toán học được sử dụng trong mật mã học. Các kiến thức về mã hóa, chữ ký điện tử. Khái niệm tổng quan về xác thực. Các phương pháp và các giao thức xác thực. Tìm hiểu về chứng chỉ số cách thức hoạt động, các quy tắc xây dựng, các chuẩn về chứng chỉ số, cách thức sử dụng, quy trình xin cấp một chứng chỉ số. Xây dựng một hệ thống quản lý chứng chỉ số mô phỏng bằng ngôn ngữ php5.0 kết hợp với mysql với chức năng cấp và thu hồi chứng chỉ, sử dụng khóa công khai và bí mật cấp trong chứng chỉ để mã hóa, ký, giải mã và kiểm tra tính chính xác của chữ ký. Mặc dù có nhiều cố gắng, nhưng trong đồ án vẫn có một số vấn đề chưa thật sự hoàn thiện. Xin các thầy cô giáo góp ý đề em có thể tiếp tục nghiên cứu đề tài này được tốt hơn. TÀI LIỆU THAM KHẢO [1] George Tubin (2005), The Need for Stronger Consumer Online Banking Authentication, TowerGroup. [2] Kenneth H.Rosen, PH.D.AT&T Bell laboraties, Cryptograpy theory and practice,CRC Press, INC. [3] William stalling, PH.D,(2003) Network and internetwork sercirity principles and practice, Prentice Hall Internation editions. [4] Phan Đình Diệu (2002), Lý thuyết mật mã và an toàn thông tin, Nhà xuất bản đại học quốc gia Hà Nội. [5] Nguyễn Nam Nhuận (2005), Ngôn ngữ lập trình web php5, Nhà xuất bản giao thông vận tải. [6] Đinh Vinh Quang (2006), Giải pháp và công nghệ sử dụng tiền điện tử, Luận văn thạc sĩ. Website: [7] https://vasc-ca.vasc.com.vn [8] [9] [10] [11] [12]

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

  • docbaocaoupdate.doc
  • pptxacthucso.ppt
Tài liệu liên quan