Đồ án Nghiên cứu vấn đề bảo mật trong xây dựng ứng dụng ecommerce (online payment)

Tài liệu Đồ án Nghiên cứu vấn đề bảo mật trong xây dựng ứng dụng ecommerce (online payment): BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP.HCM KHOA CÔNG NGHỆ THÔNG TIN ĐỒ ÁN TỐT NGHIỆP NGHIÊN CỨU VẤN ĐỀ BẢO MẬT TRONG XÂY DỰNG ỨNG DỤNG ECOMMERCE (ONLINE PAYMENT) Giảng Viên Hướng Dẫn : VÕ THỊ THANH VÂN Sinh viên thực hiện : NGUYỄN CẢNH CHÂN Lớp : DHTH3LT Khoa : CÔNG NGHỆ THÔNG TIN TP. Hồ Chí Minh, tháng 04 năm 2009 LỜI MỞ ĐẦU Cùng với sự lớn mạnh của Internet, việc mua bán hàng hóa và dịch vụ thông qua Internet đã xuất hiện, đó chính là “Thương mại điện tử”. Tuy mới xuất hiện và chỉ chiếm một tỷ trọng nhỏ trong thương mại song thương mại điện tử đã mang lại những lợi ích to lớn cho doanh nghiệp, chính phủ, người tiêu dùng và xã hội. Thương mại điện tử đã vượt ra khỏi lĩnh vực thương mại, ngày càng tác động đến các lĩnh vực khác và hứa hẹn mang lại những thay đổi to lớn và sâu sắc mọi mặt đời sống xã hội loài người. Thương mại điện tử ngày càng được sự quan tâm của chính phủ, doanh nghiệp và người tiêu dùng và đang trở thành một công cụ hữu hiệu trong quá trình toàn ...

doc128 trang | Chia sẻ: hunglv | Lượt xem: 1295 | Lượt tải: 0download
Bạn đang xem trước 20 trang mẫu tài liệu Đồ án Nghiên cứu vấn đề bảo mật trong xây dựng ứng dụng ecommerce (online payment), để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP.HCM KHOA CÔNG NGHỆ THÔNG TIN ĐỒ ÁN TỐT NGHIỆP NGHIÊN CỨU VẤN ĐỀ BẢO MẬT TRONG XÂY DỰNG ỨNG DỤNG ECOMMERCE (ONLINE PAYMENT) Giảng Viên Hướng Dẫn : VÕ THỊ THANH VÂN Sinh viên thực hiện : NGUYỄN CẢNH CHÂN Lớp : DHTH3LT Khoa : CÔNG NGHỆ THÔNG TIN TP. Hồ Chí Minh, tháng 04 năm 2009 LỜI MỞ ĐẦU Cùng với sự lớn mạnh của Internet, việc mua bán hàng hóa và dịch vụ thông qua Internet đã xuất hiện, đó chính là “Thương mại điện tử”. Tuy mới xuất hiện và chỉ chiếm một tỷ trọng nhỏ trong thương mại song thương mại điện tử đã mang lại những lợi ích to lớn cho doanh nghiệp, chính phủ, người tiêu dùng và xã hội. Thương mại điện tử đã vượt ra khỏi lĩnh vực thương mại, ngày càng tác động đến các lĩnh vực khác và hứa hẹn mang lại những thay đổi to lớn và sâu sắc mọi mặt đời sống xã hội loài người. Thương mại điện tử ngày càng được sự quan tâm của chính phủ, doanh nghiệp và người tiêu dùng và đang trở thành một công cụ hữu hiệu trong quá trình toàn cầu hoá và trong xây dựng nền kinh tế số. Thât khó mà hình dung ra xã hội tương lai nếu không có thương mại điện tử. Bên cạnh đó, thương mại điện tử cũng đặt ra nhiều vấn đề cần phải giải quyết để khai thác các lợi ích của thương mại điện tử như vấn đề an toàn, an ninh cho các giao dịch trên mạng, các vấn đề về bảo vệ bí mật, tính riêng tư, cơ sở hạ tầng, các vấn đề về nhân lực, chuyển đổi mô hình kinh doanh, các vấn đề về quản lý, thay đổi tập quán, thói quen trong kinh doanh… Trong đó vấn đề an toàn, an ninh cho các giao dịch trên mạng và các vấn đề về bảo vệ tính riêng tư, gọi chung là “các vấn đề bảo mật trong thương mại điện tử” có ý nghía sống còn đối với việc phát triển của thương mại điện tử. Đồ án “Nghiên cứu các vấn đề bảo mật trong xây dựng ứng dụng thương mại điện tử và thanh toán trực tuyến” sẽ giúp tìm hiểu rõ thêm các vấn đề bảo mật và cách để xây dựng một ứng dụng thương mại điện tử an toàn, đảm bảo lợi ích của doanh nghiệp và khách hàng. LỜI CẢM ƠN Sau hơn bốn tháng tìm hiểu và thực hiện đồ án tốt nghiệp “Nghiên cứu các vấn đề bảo mật trong xây dựng ứng dụng ecommerce(online payment)” , đến nay đồ án đã cơ bản được hoàn thành. Ngoài sự cố gắng của bản thân, em đã nhận được sự giúp đỡ, động viên khuyến khích từ gia đình, thầy cô và bạn bè. Em xin chân thành cảm ơn đến thầy cô khoa công nghệ thông tin trường Đại học công nghiệp TP.HCM đã tận tình giảng dạy, truyền đạt những kiến thức quý báu cho chúng em trong suốt thời gian qua. Đặc biệt em xin gửi lời cảm ơn sâu sắc đến giáo viên hướng dẫn của em đã tận tình giúp đỡ em hoàn thành đồ án này. Đồ án đã hoàn thành với những kết quả nhất định, tuy nhiên không tránh khỏi những thiếu sót. Kính mong sự cảm thông và đóng góp từ các thầy cô. TP. HCM, 4/2009 Nguyễn Cảnh Chân NHẬN XÉT (Của giảng viên hướng dẫn) . NHẬN XÉT (Của giảng viên phản biện) MỤC LỤC DANH MỤC CÁC BẢNG SƠ ĐỒ HÌNH Bảng 2.1 Những dịch vụ nên hạn chế trên máy chủ web 64 Sơ đồ 4.1 Sơ đồ trang web phần khách hàng 93 Sơ đồ 4.2 Sơ đồ trang web phần quản trị 94 Hình 2.1 Thiết lập một phiên SSL 24 Hình 2.2 Ví dụ hàm băm 27 Hình 2.3 Quá trình mã hóa đối xứng 31 Hình 2.4 Sinh khóa công khai 35 Hình 2.5 Mã hóa và giải mã bằng mã hóa khóa công khai 36 Hình 2.6 Tạo và xác thực chữ ký số 36 Hình 2.7 Tạo chữ ký số 37 Hình 2.8 Thẩm định chữ ký số 38 Hình 2.9 Tạo chứng chỉ số 44 Hình 2.10 Cấu trúc chứng chỉ số X.509 45 Hình 2.11 Các thành phần của PKI 46 Hình 2.12 Mô hình CA nhiều cấp 47 Hình 2.13 Chứng thực chéo 48 Hình 2.14 Các thành phần tham gia SET 49 Hình 2.15 Chữ ký song song 50 Hình 2.16 Ví dụ HTTP header của vietnamnet.vn 52 Hình 2.17 Thông tin máy chủ trong HTTP Header 53 Hình 2.18 Ví dụ Referer trong HTTP Header 54 Hình 2.19 Proxy cache 54 Hình 2.20 Thiết lập tường lửa bảo vệ máy chủ web 65 Hình 2.21 Quá trình xử lý yêu cầu của CGI 66 Hình 2.22 Thiết lập tường lữa bảo vệ máy chủ cơ sở dữ liệu 69 Hình 2.23 Giả mạo web 70 Hình 2.24 Sử dụng máy chủ proxy tin cậy để lướt web ẩn danh 72 Hình 2.25 Hoạt động của cổng thanh toán điện tử 73 Hình 3.1 Mô hình ERD 81 Hình 3.2 Mô hình Use Case phần khách hàng 82 Hình 3.3 Mô hình Use Case phần quản trị 83 Hình 3.4 Mô hình hoạt động quá trình đăng ký thành viên mới 84 Hình 3.5 Mô hình hoạt động quá trình đăng nhập 85 Hình 3.6 mô hình hoạt động quá trình thêm sản phẩm vào giỏ hàng 86 Hình 3.7 Mô hình hoạt động quá trình mua hàng 87 Hình 4.1 Bảo mật thông tin trên URL 91 Hình 4.2 Thông tin kết nối vào CSDL trong web.config chưa được mã hóa 91 Hình 4.3 Thông tin kết nối vào CSDL trong web.config đã được mã hóa 91 Hình 4.4 Mã hóa các thiết lập quan trọng trong cơ sở dữ liệu 92 Hình 4.5 Màn hình trang chủ 95 Hình 4.6 Màn hình trang đăng ký khách hàng 95 Hình 4.7 Màn hình trang nhóm sản phẩm 96 Hình 4.8 Màn hình trang cập nhật giỏ hàng 96 Hình 4.9 Màn hình trang thông tin chuyển hàng 97 Hình 4.10 Màn hình trang thông tin hóa đơn 97 Hình 4.11 Màn hình trang thông tin thẻ tín dụng 98 Hình 4.12 Màn hình xác nhận mua hàng 98 Hình 4.13 Màn hình trang quản lý sản phẩm 99 Hình 4.14 Màn hình trang quản lý hóa đơn 100 Hình 4.15 Màn hình trang quản lý nhân viên 100 DANH MỤC CÁC CỤM TỪ VIẾT TẮT UNCITRAL : United Nations Commission On International Trade Law WTO : World Trade Organization B2B : Business To Business B2C : Business to Customers B2G : Business to Government C2C :Customers to Customers G2C : Customers to Government SSL : Secure Sockets Layer ID : Identification PIN : Personal Identificate Number BIN : Bank Identificate Number IETF : Internet Engineering Task Force TLS : Transport Layer Security HTTP : Hyper Text Transport Protocol IMAP : Internet Messaging Access Protocol FTP : File Transport Protocol MIT : Massachusetts Institute of Technology DES : Data Encryption Standard DSA : Digital Signature Algorithm KEA : Key Exchange Algorithm MD5 : Message Digest algorithm 5 SHA-1 : Secure Hash Algorithm NIST : National Institute of Standards and Technology PGP : Pretty Good Privacy GPG : GNU Privacy Guard FIPS : Federal Information Processing Standard NSA : National Security Agency AES : Advanced Encryption Standard PKI : Public key infrastructure CA : Certificate Authority URL : Uniform Resource Locator IP : Internet Protocol ITU :International Telecommunication Union SET : Secure Electronic Transaction LAN : Local Area Network CGI : Common Gateway Interface CSC : Card Security Code CVV : Card Verification Value CVC : Card Verification Code AVS : Address Verification System CSDL : Cơ sở dữ liệu TMĐT : Thương mại điện tử GIỚI THIỆU Thương mại điện tử và thanh toán điện tử Thương mại điện tử Khái niệm Hiện nay có nhiều quan điểm khác nhau về “thương mại điện tử” nhưng tựu trung lại có hai quan điểm lớn trên thế giới xin được nêu ra dưới đây. Thương mại điện tử theo nghĩa rộng được định nghĩa trong Luật mẫu về Thương mại điện tử của Ủy ban Liên Hợp quốc về Luật Thương mại Quốc tế (UNCITRAL): Thuật ngữ “thương mại” cần được diễn giải theo nghĩa rộng để bao quát các vấn đề phát sinh từ mọi quan hệ mang tính chất thương mại dù có hay không có hợp đồng. Các quan hệ mang tính thương mại bao gồm các giao dịch sau đây: Bất cứ giao dịch nào về thương mại nào về cung cấp hoặc trao đổi hàng hóa hoặc dịch vụ; thỏa thuận phân phối; đại diện hoặc đại lý thương mại, ủy thác hoa hồng; cho thuê dài hạn; xây dựng các công trình; tư vấn; kỹ thuật công trình; đầu tư; cấp vốn; ngân hàng; bảo hiểm; thỏa thuận khai thác hoặc tô nhượng; liên doanh các hình thức khác về hợp tác công nghiệp hoặc kinh doanh; chuyên chở hàng hóa hay hành khách bằng đường biển, đường không, đường sắt hoặc đường bộ. Như vậy, có thể thấy rằng phạm vi của Thương mại điện tử rất rộng, bao quát hầu hết các lĩnh vực hoạt động kinh tế, việc mua bán hàng hóa và dịch vụ chỉ là một trong hàng ngàn lĩnh vực áp dụng của thương mại điện tử. Ủy ban Châu Âu đưa ra định nghĩa về thương mại điện tử như sau: Thương mại điện tử được hiểu là việc thực hiện hoạt động kinh doanh qua các phương tiện điện tử. Nó dựa trên việc xử lý và truyền dữ liệu điện tử dưới dạng text, âm thanh và hình ảnh. Thương mại điện tử gồm nhiều hành vi trong đó hoạt động mua bán hàng hóa và dịch vụ qua phương tiện điện tử, giao nhận các nội dung kỹ thuật số trên mạng, chuyển tiền điện tử, mua bán cổ phiếu điện tử, vận đơn điện tử, đấu giá thương mại, hợp tác thiết kế, tài nguyên mạng, mua sắm công cộng, tiếp thị trực tiếp tới người tiêu dùng và các dịch vụ sau bán hàng. Thương mại điện tử được thực hiện đối với cả thương mại hàng hóa (ví dụ như hàng tiêu dùng, các thiết bị y tế chuyên dụng) và thương mại dịch vụ (ví dụ như dịch vụ cung cấp thông tin, dịch vụ pháp lý, tài chính); các hoạt động truyền thống (như chăm sóc sức khỏe, giáo dục ) và các hoạt động mới (ví dụ như siêu thị ảo). Tóm lại, theo nghĩa rộng thì thương mại điện tử có thể được hiểu là các giao dịch tài chính và thương mại bằng phương tiện điện tử như: trao đổi dữ liệu điện tử; chuyển tiền điện tử và các hoạt động gửi rút tiền bằng thẻ tín dụng. Thương mại điện tử theo nghĩa hẹp bao gồm các hoạt động thương mại được thực hiện thông qua mạng Internet. Các tổ chức như: Tổ chức Thương mại thế giới (WTO), Tổ chức Hợp tác phát triển kinh tế đưa ra các khái niệm về thương mại điện tử theo hướng này. Thương mại điện tử được nói đến ở đây là hình thức mua bán hàng hóa được bày tại các trang Web trên Internet với phương thức thanh toán bằng thẻ tín dụng. Có thể nói rằng thương mại điện tử đang trở thành một cuộc cách mạng làm thay đổi cách thức mua sắm của con người. Theo Tổ chức Thương mại Thế giới: Thương mại điện tử bao gồm việc sản xuất, quảng cáo, bán hàng và phân phối sản phẩm được mua bán và thanh toán trên mạng Internet, nhưng được giao nhận một cách hữu hình cả các sản phẩm được giao nhận cũng như những thông tin số hóa thông qua mạng Internet. Khái niệm về Thương mại điện tử do Tổ chức hợp tác phát triển kinh tế của Liên Hợp quốc đưa ra là: Thương mại điện tử được định nghĩa sơ bộ là các giao dịch thương mại dựa trên truyền dữ liệu qua các mạng truyền thông như Internet. Theo các khái niệm trên, chúng ta có thể hiểu được rằng theo nghĩa hẹp thương mại điện tử chỉ bao gồm những hoạt động thương mại được thực hiện thông qua mạng Internet mà không tính đến các phương tiện điện tử khác như điện thoại, fax, telex... Qua nghiên cứu các khái niệm về thương mại điện tử như trên, hiểu theo nghĩa rộng thì hoạt động thương mại được thực hiện thông qua các phương tiện thông tin liên lạc đã tồn tại hàng chục năm nay và đạt tới doanh số hàng tỷ đô la Mỹ mỗi ngày. Theo nghĩa hẹp thì thương mại điện tử chỉ mới tồn tại được vài năm nay nhưng đã đạt được những kết quả rất đáng quan tâm, thương mại điện tử chỉ gồm các hoạt động thương mại được tiến hàng trên mạng máy tính mở như Internet. Trên thực tế, chính các hoạt động thương mại thông qua mạng Internet đã làm phát sinh thuật ngữ “thương mại điện tử”. Các đặc trưng của thương mại điện tử Đế xây dựng khung pháp luật thống nhất cho thương mại điện tử, chúng ta cần nghiên cứu và tìm ra các đặc trưng của thương mại điện tử. So với các hoạt động thương mại truyền thống, thương mại điện tử có một số điểm khác biệt cơ bản sau: Các bên tiến hành giao dịch trong thương mại điện tử không tiếp xúc trực tiếp với nhau và không đòi hỏi phải biết nhau từ trước. Các giao dịch thương mại truyền thống được thực hiện với sự tồn tại của khái niệm biên giới quốc gia, còn thương mại điện tử được thực hiện trong một thị trường không có biên giới (thị trường thống nhất toàn cầu). Thương mại điện tử trực tiếp tác động tới môi trường cạnh tranh toàn cầu. Trong hoạt động giao dịch thương mại điện tử đều có sự tham ra của ít nhất ba chủ thể, trong đó có một bên không thể thiếu được là người cung cấp dịch vụ mạng, các cơ quan chứng thực. Đối với thương mại truyền thống thì mạng lưới thông tin chỉ là phương tiện để trao đổi dữ liệu, còn đối với thương mại điện tử thì mạng lưới thông tin chính là thị trường Những lợi ích của thương mại điện tử Thương mại điện tử giúp cho các doanh nghiệp nắm được thông tin phong phú về thị trường và đối tác Thương mại điện tử giúp giảm chi phí sản xuất Thương mại điện tử giúp giảm chi phí bán hàng và tiếp thị. Thương mại điện tử qua Internet giúp người tiêu dùng và các doanh nghiệp giảm đáng kể thời gian và chí phí giao dịch. Thương mại điện tử tạo điều kiện cho việc thiết lập và củng cố mối quan hệ giữa các thành phần tham gia vào quá trình thương mại. Tạo điều kiện sớm tiếp cận nền kinh tế số hoá. Một số loại hình ứng dụng trong thương mại điện tử B2B (Business To Business): Thương mại điện tử B2B được định nghĩa đơn giản là thương mại điện tử giữa các công ty. Đây là loại hình thương mại điện tử gắn với mối quan hệ giữa các công ty với nhau B2C (Business to Customers): Thương mại điện tử B2C là việc một doanh nghiệp dựa trên mạng internet để trao đổi các hang hóa dịch vụ do mình tạo ra hoặc do mình phân phối. B2G (Business to Government): Thương mại điện tử giữa doanh nghiệp với chính phủ (B2G) được định nghĩa chung là thương mại giữa công ty và khối hành chính công. Nó bao hàm việc sử dụng Internet cho mua bán công, thủ tục cấp phép và các hoạt động khác liên quan tới chính phủ. Hình thái này của thương mại điện tử có hai đặc tính: thứ nhất, khu vực hành chính công có vai trò dẫn đầu trong việc. C2C (Customers to Customers): Thương mại điện tử khách hàng tới khách hàng C2C đơn giản là thương mại giữa các cá nhân và người tiêu dùng. G2C (Customers to Government): Thương mại điện tử cơ quan nhà nước với cá nhân chủ yếu là những giao dịch mang tính hành chính, nhưng có thể mang những yếu tố của thương mại điện tử. Các bước cơ bản của một giao dịch mua bán trên mạng Khách hàng, từ một máy tính tại một nơi nào đó, điền những thông tin thanh toán và điạ chỉ liên hệ vào đơn đặt hàng (Order Form) của website bán hàng (còn gọi là website thương mại điện tử). Doanh nghiệp nhận được yêu cầu mua hàng hoá hay dịch vụ của khách hàng và phản hồi xác nhận tóm tắt lại những thông tin cần thiết nh mặt hàng đã chọn, địa chỉ giao nhận và số phiếu đặt hàng... Khách hàng kiểm tra lại các thông tin và kích (click) vào nút (button) "đặt hàng", từ bàn phím hay chuột (mouse) của máy tính, để gởi thông tin trả về cho doanh nghiệp. Doanh nghiệp nhận và lưu trữ thông tin đặt hàng đồng thời chuyển tiếp thông tin thanh toán (số thẻ tín dụng, ngày đáo hạn, chủ thẻ ...) đã được mã hoá đến máy chủ (Server, thiết bị xử lý dữ liệu) của Trung tâm cung cấp dịch vụ xử lý thẻ trên mạng Internet. Với quá trình mã hóa các thông tin thanh toán của khách hàng được bảo mật an toàn nhằm chống gian lận trong các giao dịch (chẳng hạn doanh nghiệp sẽ không biết được thông tin về thẻ tín dụng của khách hàng). Khi Trung tâm Xử lý thẻ tín dụng nhận được thông tin thanh toán, sẽ giải mã thông tin và xử lý giao dịch đằng sau bức tường lửa (FireWall) và tách rời mạng Internet (off the Internet), nhằm mục đích bảo mật tuyệt đối cho các giao dịch thương mại, định dạng lại giao dịch và chuyển tiếp thông tin thanh toán đến ngân hàng của doanh nghiệp (Acquirer) theo một đường dây thuê bao riêng (một đường truyền số liệu riêng biệt). Ngân hàng của doanh nghiệp gởi thông điệp điện tử yêu cầu thanh toán (authorization request) đến ngân hàng hoặc công ty cung cấp thẻ tín dụng của khách hàng (Issuer). Và tổ chức tài chính này sẽ phản hồi là đồng ý hoặc từ chối thanh toán đến trung tâm xử lý thẻ tín dụng trên mạng Internet. Trung tâm xử lý thẻ tín dụng trên Internet sẽ tiếp tục chuyển tiếp những thông tin phản hồi trên đến doanh nghiệp, và tùy theo đó doanh nghiệp thông báo cho khách hàng được rõ là đơn đặt hàng sẽ được thực hiện hay không. Toàn bộ thời gian thực hiện một giao dịch qua mạng từ bước 1 -> bước 6 được xử lý trong khoảng 15 - 20 giây. Thanh toán trong thương mại điện tử Thẻ tín dụng Thẻ tín dụng đã được xử lý điện tử hàng thập kỷ nay. Chúng được sử dụng đầu tiên trong các nhà hàng và khách sạn sau đó là các cửa hàng bách hoá và cách sử dụng nó đã được giới thiệu trên các chương trình quảng cáo trên truyền hình từ 20 năm nay. Cả một ngành công nghiệp lớn đang tồn tại trong lĩnh vực xử lý các giao dịch thẻ tín dụng trực tuyến với các công ty như First Data Corp., Total System Corp., và National Data Corp., chi tiết hoá các giao dịch phía sau mối quan hệ giữa nhà băng, người bán hàng và người sử dụng thẻ tín dụng. Hàng triệu các cửa hàng bách hoá trên toàn nước Mỹ được trang bị các trạm đầu cuối (Hewlett-Package Verifone là nhà sản xuất hàng đầu của thiết bị này) thông qua đó thể tín dụng được kiểm tra, nhập số thẻ và biên lai được in ra. Người sử dụng ký vào biên lai này để xác thực việc mua hàng. Trước khi nhận số thẻ tín dụng của người mua qua Internet bạn cần có một chứng nhận người bán. Nếu bạn đã hoạt động kinh doanh thì đơn giản là yêu cầu nhà băng của bạn cung cấp chứng nhận này. Nếu bạn chưa có bất cứ cái gì thì bạn có thể thực hiện việc này nhanh chóng tại một nhà băng nào đó hoặc truy nhập vào một WEB site có các mẫu đăng ký trực tuyến. Sử dụng thẻ tín dụng trực tuyến ngày hôm nay, tuy nhiên, giống như việc sử dụng chúng với một "operating standing by". Số thẻ và chi tiết của giao dịch được lưu lại và xử lý, nhưng không có sự xuất hiện của người mua và khi có một vụ thanh toán bị lỡ thì nó vẫn được lưu lại trên hệ thống. Bởi lý do này các chi phí xử lý thẻ tín dụng trực tuyến nhiều ngang bằng với chi phí để xử lý một giao dịch chứ không ngang bằng với một mức phí như điện thoại và thông thường là vào khoảng 50 xen. (Các giao dịch được xử lý thông qua các trạm đầu cuối đã được hợp đồng chỉ mất khoảng từ 3 đến 5 xen). Ngoài các khoản trên, phí được giảm nhờ việc sử dụng các dịch vụ của Visa và MasterCard, là các tổ hợp của các nhà băng, hoặc American Express Co. và Discover là các công ty riêng rẽ xử lý và quản lý các giao dịch thẻ tín dụng. Ðiều đó có nghĩa là bạn sẽ phải trả từ 2 đến 3 xen cho một đô la khi sử dụng Visa hay MasterCard, và ít hơn một chút với Discover, đối với American Express phí này vào khoảng 5 xen cho một đô la. Các thoả ước giữa các công ty cung cấp thẻ và các chủ doanh nghiệp giúp cho khách hàng không phải trả các chi phí này. Việc chiết khấu cũng khác giữa người sử dụng tại trạm đầu cuối nơi mà thẻ tín dụng tồn tại một cách vật lý, và môi trường WEB nơi mà thẻ không hiện diện. Trong quá trình chuyển đổi để chiết khấu người bán được đảm bảo thanh toán. Người mua được đảm bảo về việc sẽ nhận được hàng hoá và một số đảm bảo có giới hạn khác chống lại việc bị lừa hoặc mất thẻ. (Bảo hiểm thẻ được bán bởi các nhà băng phát hành thẻ và các rủi ro sẽ được thanh toán). Cửa hàng trên web của bạn cần phần mềm nào để có thể xử lý thẻ tín dụng? ở mức đơn giản nhất, bạn phải có sẵn một số biểu mẫu có khả năng mã hoá bảo mật, thông thường là Sercure Socket Layer (SSL), một tiêu chuẩn đối với cả các trình duyệt của Microsoft và Netscape, và điều đó cũng có nghĩa là máy chủ của bạn phải có một khoá mã hoá. Tiếp theo bạn phải có một chương trình đóng vai trò là một giỏ mua hàng, cho phép người sử dụng thu thập các mặt hàng cần mua, tính giá và thuế sau đó đưa ra một hoá đơn cuối cùng để phê chuẩn. Cuối cùng nếu như bạn không muốn xử lý các tệp giao dịch bằng tay hoặc xử lý một gói các tệp thì bạn phải cần một cơ chế giao dịch điện tử. Ðịnh danh hay ID số hoá (Digital identificator) Các khoá mã bảo mật trên máy chủ, được biết đến như là các ID số hoá, được cung cấp bởi một số các cơ quan chứng nhận thẩm quyền, là nơi cấp phép và bảo  dưỡng các bản ghi diễn biến trên các ID số hoá này. Tổ chức chứng thực thẩm quyền lớn nhất được điều hành bởi VeriSign Inc., một công ty được thành lập vào năm 1995 chuyên về lĩnh vực quản lý các chứng nhận số hoá. Công ty xử lý các yêu cầu ID số hoá cho các công ty như American Online, Microsoft, Netscape, tuy nhiên bạn cũng có thể trực tiếp có các ID số hoá trên web site của công ty. Vào mùa hè năm 1998, VeriSign thu phí 349 USD cho máy chủ ID đầu tiên mà một công ty mua và 249 USD cho thêm mỗi máy chủ ID tiếp theo. Một Máy chủ ID toàn cục - Global Server ID,  128 bit có mức chi phí 695 USD. Công nghệ nền tảng cho các ID số hoá của VeriSign là SSL được xây dựng đầu tiên bởi RSA Technologies inc., nay là một đơn vị của Sercurity Dynamics. Mỗi thông điệp, được mã hoá bằng hai mã hoặc khoá là một chuỗi các bit làm thay đổi giá trị đã được số hoá các của dữ liệu được đưa vào hay lấy ra khỏi chương trình. Một khoá công cộng được dùng để mã hoá các thông điệp, trong khi khoá riêng thứ hai được dùng để giải mã nó. Tính thống nhất và xác thực của các khoá riêng được đảm bảo bởi một cơ quan chứng nhận thẩm quyền như VeriSign. Một máy chủ ID số hoá cho phép bạn ký vào các văn bản điện tử và chứng thực chữ ký   của mình với một cơ quan chứng nhận thẩm quyền. Một số thuật ngữ Cơ sở chấp nhận thẻ (Merchant): Là các thành phần kinh doanh hàng hoá và dịch vụ có ký kết với Ngân hàng thanh toán về việc chấp nhận thanh toán thẻ như: nhà hàng, khách sạn, cửa hàng... Các đơn vị này phải trang bị máy móc kỹ thuật để tiếp nhận thẻ thanh toán tiền mua hàng hoá, dịch vụ, trả nợ thay cho tiền mặt. Ngân hàng đại lý hay Ngân hàng thanh toán (Acquirer): Là Ngân hàng trực tiếp ký hợp đồng với cơ sở tiếp nhận và thanh toán các chứng từ giao dịch do cơ sở chấp nhận thẻ xuất trình. Một Ngân hàng có thể vừa đóng vai trò thanh toán thẻ vừa đóng vai trò phát hành. Ngân hàng phát hành thẻ (Issuer): Là thành viên chính thức của các Tổ chức thẻ quốc tế, là Ngân hàng cung cấp thẻ cho khách hàng. Ngân hàng phát hành chịu trách nhiệm tiếp nhận hồ sơ xin cấp thẻ, xử lý và phát hành thẻ, mở và quản lý tài khoản thẻ, đồng thời thực hiện việc thanh toán cuối cùng với chủ thẻ. Chủ thẻ (Cardholder): Là người có tên ghi trên thẻ được dùng thẻ để chi trả thanh toán tiền mua hàng hoá, dịch vụ. Chỉ có chủ thẻ mới có thể sử dụng thẻ của mình mà thôi. Mỗi khi thanh toán cho các cơ sở chấp nhận thẻ vể hàng hoá dịch vụ hoặc trả nợ, chủ thẻ phải xuất trình thẻ để nơi đây kiểm tra theo qui trình và lập biên lai thanh toán. Danh sách Bulletin: Còn gọi là danh sách báo động khẩn cấp, là một danh sách liệt kê những số thẻ không được phép thanh toán hay không được phép mua hàng hóa, dịch vụ. Đó là những thẻ tiêu dùng quá hạn mức, thẻ giả mạo đang lưu hành, thẻ bị lộ mật mã cá nhân (PIN), thẻ bị mất cắp, thất lạc, thẻ bị loại bỏ... Danh sách được cập nhật liên tục và gởi đến cho tất cả các Ngân hàng thanh toán để thông báo kịp thời cho cơ sở chấp nhận. Hạn mức tín dụng (Credit limit): Được hiểu là tổng số tín dụng tối đa mà Ngân hàng phát hành thẻ cấp cho chủ thẻ sử dụng đối với từng loại thẻ. Số PIN (Personal Identificate Number): Là mã số cá nhân riêng của chủ thẻ để thực hiện giao dịch rút tiền tại các máy rút tiền tự động. Mã số này do Ngân hàng phát hành thẻ cung cấp cho chủ thẻ khi phát hành. Đối với mã số PIN, người chủ thẻ phải giữ bí mật, chỉ một mình mình biết. BIN (Bank Identificate Number): Là mã số chỉ Ngân hàng phát hành thẻ. Trong hiệp hội thẻ có nhiều ngân hàng thành viên, mỗi ngân hàng thành viên có một mã số riêng giúp thuận lợi trong thanh toán và truy xuất. Ngày hiệu lực: Ngày sao kê (Statement date): là ngày ngân hàng phát hành thẻ lập các sao kê về khoản chi tiêu mà chủ thẻ phải thanh toán trong tháng. Ngày đáo hạn (Due date): là ngày mà ngân hàng phát hành qui định cho chủ thẻ thanh toán toàn bộ hay một phần trong giá trị sao kê trên Merchant account: Merchant account là một tài khoản ngân hàng đặc biệt, cho phép bạn khi kinh doanh có thể chấp nhận thanh toán bằng thẻ tín dụng. Việc thanh toán bằng thẻ tín dụng chỉ có thể tiến hành thông qua dạng tài khoản này. Cổng thanh toán điện tử (payment gateway): là một chuơng trình phần mềm. Phần mềm này sẽ chuyển dữ liệu của các giao dịch từ website của người bán sang trung tâm thanh toán thẻ tín dụng để hợp thức hoá quá trình thanh toán thẻ tín dụng. Mục tiêu Tìm hiểu về thương mại điện tử. Tìm hiểu thanh toán điện tử trực tuyến. Tìm hiểu về các phương thức bảo mật trong thương mại điện tử và thanh toán điện tử trực tuyến. Xây dựng được một website thương mại điện tử với mô hình B2C. Tích hợp được hệ thống thanh toán trực tuyến vào trong trang web. Phạm vi thực hiện Nghiên cứu các thuật toán, kỹ thuật và phương pháp bảo mật trên web được dùng trong thương mại điện tử và thanh toán trực tuyến. Xây dựng một website bán máy tính xách tay trực tuyến để hiện thực một phần những gì đã nghiên cứu được. Thiết lập các cơ chế bảo mật thông tin trên website. Tích hợp thanh toán bằng thẻ tín dụng qua một cổng thanh toán điện tử. CƠ SỞ LÝ THUYẾT Các thuật toán và kỹ thuật mã hóa sử dụng trong thanh toán điện tử và thương mại điện Secure Socket Layer (SSL) Giới thiệu SSL SSL (Secure Socket Layer) là giao thức đa mục đích được thiết kế để tạo ra các giao tiếp giữa hai chương trình ứng dụng trên một cổng định trước (socket 443) nhằm mã hoá toàn bộ thông tin đi/đến, được sử dụng trong giao dịch điện tử như truyền số liệu thẻ tín dụng, mật khẩu, số bí mật cá nhân (PIN) trên Internet. Được phát triển bởi Netscape, ngày nay giao thức Secure Socket Layer (SSL) đã được sử dụng rộng rãi trên World Wide Web trong việc xác thực và mã hoá thông tin giữa client và server. Tổ chức IETF (Internet Engineering Task Force) đã chuẩn hoá SSL và đặt lại tên là TLS (Transport Layer Security). Mặc dù là có sự thay đổi về tên nhưng TSL chỉ là một phiên bản mới của SSL. Phiên bản TSL 1.0 tương đương với phiên bản SSL 3.1. Tuy nhiên SSL là thuật ngữ được sử dụng rộng rãi hơn. SSL được thiết kế như là một giao thức riêng cho vấn đề bảo mật có thể hỗ trợ cho rất nhiều ứng dụng. Giao thức SSL hoạt động bên trên TCP/IP và bên dưới các giao thức ứng dụng tầng cao hơn như là HTTP (Hyper Text Transport Protocol), IMAP ( Internet Messaging Access Protocol) và FTP (File Transport Protocol). Trong khi SSL có thể sử dụng để hỗ trợ các giao dịch an toàn cho rất nhiều ứng dụng khác nhau trên Internet, thì hiện nay SSL được sử dụng chính cho các giao dịch trên Web. Cơ chế mã hóa của SSL Giao thức SSL dựa trên hai nhóm con giao thức là giao thức "bắt tay" (handshake protocol) và giao thức "bản ghi" (record protocol). Giao thức bắt tay xác định các tham số giao dịch giữa hai đối tượng có nhu cầu trao đổi thông tin hoặc dữ liệu, còn giao thức bản ghi xác định khuôn dạng cho tiến hành mã hoá và truyền tin hai chiều giữa hai đối tượng đó. Khi hai ứng dụng máy tính, thí dụ giữa một trình duyệt web và máy chủ web, làm việc với nhau, máy chủ và máy khách sẽ trao đổi "lời chào" (hello) dưới dạng các thông điệp cho nhau với xuất phát đầu tiên chủ động từ máy chủ, đồng thời xác định các chuẩn về thuật toán mã hoá và nén số liệu có thể được áp dụng giữa hai ứng dụng. Ngoài ra, các ứng dụng còn trao đổi "số nhận dạng/khoá theo phiên" (session ID, session key) duy nhất cho lần làm việc đó. Sau đó ứng dụng khách (trình duyệt) yêu cầu có chứng chỉ điện tử (digital certificate) xác thực của ứng dụng chủ (web server). Hình 2.1 Thiết lập một phiên SSL Chứng chỉ điện tử thường được xác nhận rộng rãi bởi một cơ quan trung gian (Thẩm quyền xác nhận CA - Certificate Authority) như RSA Data Sercurity hay VeriSign Inc., một dạng tổ chức độc lập, trung lập và có uy tín. Các tổ chức này cung cấp dịch vụ "xác nhận" số nhận dạng của một công ty và phát hành chứng chỉ duy nhất cho công ty đó như là bằng chứng nhận dạng (identity) cho các giao dịch trên mạng, ở đây là các máy chủ webserver. Sau khi kiểm tra chứng chỉ điện tử của máy chủ (sử dụng thuật toán mật mã công khai, như RSA tại trình máy trạm), ứng dụng máy trạm sử dụng các thông tin trong chứng chỉ điện tử để mã hoá thông điệp gửi lại máy chủ mà chỉ có máy chủ đó có thể giải mã. Trên cơ sở đó, hai ứng dụng trao đổi khoá chính (master key) - khoá bí mật hay khoá đối xứng - để làm cơ sở cho việc mã hoá luồng thông tin/dữ liệu qua lại giữa hai ứng dụng chủ khách. Toàn bộ cấp độ bảo mật và an toàn của thông tin/dữ liệu phụ thuộc vào một số tham số: Số nhận dạng theo phiên làm việc ngẫu nhiên; Cấp độ bảo mật của các thuật toán bảo mật áp dụng cho SSL; Độ dài của khoá chính (key length) sử dụng cho lược đồ mã hoá thông tin. Có thể tóm tắt cơ chế của SSL như sau: Client phát sinh 1 Session Key ngẫu nhiên khi truy cập đến Server Client yêu cầu Server gởi Certificate (gồm Public Key của Server) Client kiểm tra tính hợp lệ của Certificate Nếu Certificate của Server hợp lệ, Client mã hóa Session Key bằng Public Key của Server Client gởi Session Key đã mã hóa cho Server Server giải mã Session Key đã được mã hóa bằng Private Key Các thông tin trao đổi giữa server và client sẽ được mã hóa và giải mã bằng Session Key Hiện nay, khi public một web site lên internet, để áp dụng cơ chế mã hóa SSL chúng ta phải thuê SSL Certificate cho Web Server từ các tổ chức cung cấp Digital Certificate như: Verisign, CyberTrust, EnTrust… Các thuật toán mã hóa trong SSL Các thuật toán mã hoá và xác thực của SSL được sử dụng bao gồm (phiên bản 3.0): DES - chuẩn mã hoá dữ liệu (ra đời năm 1977), phát minh và sử dụng của chính phủ Mỹ; DSA - thuật toán chữ ký điện tử, chuẩn xác thực điện tử, phát minh và sử dụng của chính phủ Mỹ; KEA - thuật toán trao đổi khoá, phát minh và sử dụng của chính phủ Mỹ; MD5 - thuật toán tạo giá trị "bǎm" (message digest), phát minh bởi Rivest; RC2, RC4 - mã hoá Rivest, phát triển bởi công ty RSA Data Security; RSA - thuật toán khoá công khai, cho mã hoá và xác thực, phát triển bởi Rivest, Shamir và Adleman; RSA key exchange - thuật toán trao đổi khoá cho SSL dựa trên thuật toán RSA; SHA-1 - thuật toán hàm băm an toàn, phát triển và sử dụng bởi chính phủ Mỹ; SKIPJACK - thuật toán khoá đối xứng phân loại được thực hiện trong phần cứng Fortezza, sử dụng bởi chính phủ Mỹ; Triple-DES - mã hoá DES ba lần. Hàm băm (Cryptographic hash function) Giới thiệu hàm băm Trong ngành mật mã học, một hàm băm mật mã học (tiếng Anh: Cryptographic hash function) là một hàm băm với một số tính chất bảo mật nhất định để phù hợp việc sử dụng trong nhiều ứng dụng bảo mật thông tin đa dạng, chẳng hạn như chứng thực (authentication) và kiểm tra tính nguyên vẹn của thông điệp (message integrity). Một hàm băm nhận đầu vào là một xâu ký tự dài (hay thông điệp) có độ dài tùy ý và tạo ra kết quả là một xâu ký tự có độ dài cố định, đôi khi được gọi là tóm tắt thông điệp (message digest) hoặc chữ ký số (digital fingerprint). Hình 2.2 Ví dụ hàm băm Nói rộng, một hàm băm phải hoạt động càng giống với một hàm ngẫu nhiên càng tốt, trong khi vẫn có tính chất đơn định và tính toán có hiệu quả. Một hàm băm mật mã học được coi là không an toàn nếu một trong các việc sau là khả thi về mặt tính toán: Cho một tóm tắt (digest), tìm một thông điệp (chưa biết) khớp với tóm tắt đó Tìm các "xung đột băm" (hash collision), trong đó hai thông điệp khác nhau có tóm tắt trùng nhau. Nếu có thể thực hiện một trong hai việc trên, một người có thể tấn công bằng cách dùng các cách trên để thay một thông điệp không được xác nhận (unauthorized message) vào chỗ của một thông điệp được xác nhận. Ứng dụng của hàm băm Một ứng dụng điển hình của một hàm băm mật mã học như sau: Alice đưa cho Bob một câu đố khó và tuyên bố rằng cô ấy đã giải được rồi. Bob muốn tự giải, nhưng cũng muốn chắc chắn là Alice đúng là đã giải được. Do đó, Alice viết đáp án, gắn thêm một nonce ngẫu nhiên, tính giá trị băm của nó, và đưa kết quả băm cho Bob (trong khi vẫn giữ bí mật đáp án và nonce). Bằng cách này, khi Bob tự giải xong, Alice có thể chứng minh rằng cô đã có đáp án từ trước bằng cách đưa nonce cho Bob. Trong thực tiễn, Alice và Bob thường là các chương trình máy tính, và bí mật thường là cái gì đó không dễ lừa bằng một lời giải cho câu đó. Ứng dụng trên được gọi là một hệ thống tin cậy (commitment scheme). Một ứng dụng quan trọng khác của các hàm băm bảo mật là sự kiểm tra tính toàn vẹn của thông điệp. Ví dụ, việc xác định xem một file hay một thông điệp có bị sửa đổi hay không có thể thực hiện bằng cách so sánh tóm tắt được tính trước và sau khi gửi (hoặc một sự kiện bất kỳ nào đó). Còn có thể dùng tóm tắt thông điệp làm một phương tiện đáng tin cậy cho việc nhận dạng file. Một ứng dụng có liên quan là kiểm tra mật khẩu. Mật khẩu thường không được lưu dưới dạng văn bản rõ (clear text), mà ở dạng tóm tắt. Để xác thực một người dùng, mật khẩu do người đó nhập vào được băm và so sánh với kết quả băm được lưu trữ. Do các lý do cả về bảo mật và hiệu năng chương trình, đa số các thuật toán chữ ký số nói rằng chỉ có tóm lược của thông điệp, chứ không phải toàn văn thông điệp, được "ký". Các hàm băm còn có thể được dùng để tạo các bit giả ngẫu nhiên (pseudorandom). SHA-1, MD5, và RIPEMD-160 nằm trong số các thuật toán tóm tắt thông điệp được dùng rộng rãi nhất của năm 2005. Tháng 8 năm 2004, các nhà nghiên cứu đã tìm được các điểm yếu của một loạt hàm băm, trong đó có MD5, SHA-0 và RIPEMD. Tháng 2 năm 2005, người ta ghi nhận một tấn công đối với SHA-1. Tháng 8 năm 2005, người ta lại ghi nhận một tấn công khác đối với SHA-1. Các hàm băm được dùng để nhận dạng các file trong các mạng chia sẻ tệp đồng đẳng. Ví dụ, trong một ed2k link, một biến thể của MD4 được kết hợp với kích thước file để cung cấp thông tin cho việc xác định nguồn file, tải xuống và kiểm tra nội dung. MD5 (Message-Digest algorithm 5) MD5 (Message-Digest algorithm 5) là một hàm băm để mã hóa với giá trị băm là 128bit. Từng được xem là một chuẩn trên Internet, MD5 đã được sữ dụng rông rải trong các chương trình an ninh mạng, và cũng thường được dùng để kiểm tra tính nguyên vẹn của tập tin. MD5 được thiết kế bởi Ronald Rivest vào năm 1991 để thay thế cho hàm băm trước đó, MD4 (cũng do ông thiết kế, trước đó nữa là MD2). MD5 có 2 ứng dụng quan trọng: MD5 được sử dụng rộng rải trong thế giới phần mềm để đảm bảo rằng tập tin tải về không bị hỏng. Người sử dụng có thể so sánh giữa thông số kiểm tra phần mềm bằng MD5 được công bố với thông số kiểm tra phần mềm tải về bằng MD5. Hệ điều hành Unix sử dụng MD5 để kiểm tra các gói mà nó phân phối, trong khi hệ điều hành Windows sử dụng phần mềm của hãng thứ ba. MD5 được dùng để mã hóa mật khẩu. Mục đích của việc mã hóa này là biến đổi một chuổi mật khẩu thành một đoạn mã khác, sao cho từ đoạn mã đó không thể nào lần trở lại mật khẩu. Có nghĩa là việc giải mã là không thể hoặc phải mất một khoãng thời gian vô tận (đủ để làm nản lòng các hacker) Một vài bảng băm MD5 Bảng băm MD5 128 bit (16 byte) (còn được gọi là message digests) được biểu diễn bằng chuỗi 32 số thập lục phân. MD5("hello") = 5d41402abc4b2a76b9719d911017c592 Thậm chí một sự thay đổi nhỏ trong mẩu tin cũng dẫn đến thay đổi hoàn toàn bảng băm, do hiệu ứng thác. Ví dụ, thay “e” thành “a”: MD5("hallo") = 598d4c200461b81522a3328565c25f7c Bảng băm của một chuỗi rỗng là: MD5("") = d41d8cd98f00b204e9800998ecf8427e SHA (Secure Hash Algorithm) SHA (Secure Hash Algorithm hay thuật giải băm an toàn) là năm thuật giải được chấp nhận bởi FIPS dùng để chuyển một đoạn dữ liệu nhất định thành một đoạn dữ liệu có chiều dài không đổi với xác suất khác biệt cao. Năm thuật giải SHA là: SHA-1 : trả lại kết quả dài 160 bit SHA-224 : trả lại kết quả dài 224 bit SHA-256: trả lại kết quả dài 256 bit SHA-384: trả lại kết quả dài 384 bit SHA-512: trả lại kết quả dài 512 bit. Thuật giải SHA là thuật giải băm mật được phát triển bởi cục an ninh quốc gia Mĩ (National Security Agency hay NSA) và được xuất bản thành chuẩn của chính phủ Mĩ bởi viện công nghệ và chuẩn quốc gia Mĩ (National Institute of Standards and Technology hay NIST). Bốn thuật giải sau thường được gọi chung là SHA-2. SHA-1 được sử dụng rộng rãi trong nhiều ứng dụng và giao thức an ninh khác nhau, bao gồm TLS và SSL, PGP, SSH, S/MIME, và IPSec. SHA-1 được coi là thuật giải thay thế MD5, một thuật giải băm 128 bit phổ biến khác. Hiện nay, SHA-1 không còn được coi là an toàn bởi đầu năm 2005, ba nhà mật mã học người Trung Quốc đã phát triển thành công một thuật giải dùng để tìm được hai đoạn dữ liệu nhất định có cùng kết quả băm tạo ra bởi SHA-1[1]. Mặc dù chưa có ai làm được điều tương tự với SHA-2, nhưng vì về thuật giải, SHA-2 không khác biệt mấy so với SHA-1 nên nhiều nhà khoa học đã bắt đầu phát triển một thuật giải khác tốt hơn SHA. NIST cũng đã khởi đầu một cuộc thi phát triển thuật giải băm mới an toàn hơn SHA, giống như quy trình phát triển chuẩn mã hóa tiên tiến (Advanced Encryption Standard hay AES). Một vài bảng băm SHA-1 Đoạn dữ liệu gốc sử dụng bảng mã ASCII được biểu diễn bằng chuỗi 40 số thập lục phân SHA-1 ("hello") = aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d Thay “e” thành “a”: SHA-1 ("hallo") = fd4cef7a4e607f1fcc920ad6329a6df2df99a4e8 Bảng băm của một chuỗi rỗng là: SHA-1 ("") = da39a3ee5e6b4b0d3255bfef95601890afd80709 Mã hóa đối xứng (Symmetric Encryption) Giới thiệu mã hóa đối xứng Trong mật mã học, các thuật toán khóa đối xứng (tiếng Anh: symmetric-key algorithms) là một lớp các thuật toán mật mã hóa trong đó các khóa dùng cho việc mật mã hóa và giải mã có quan hệ rõ ràng với nhau (có thể dễ dàng tìm được một khóa nếu biết khóa kia). Hình 2.3 Quá trình mã hóa đối xứng Khóa dùng để mã hóa có liên hệ một cách rõ ràng với khóa dùng để giải mã có nghĩa chúng có thể hoàn toàn giống nhau, hoặc chỉ khác nhau nhờ một biến đổi đơn giản giữa hai khóa. Trên thực tế, các khóa này đại diện cho một bí mật được phân hưởng bởi hai bên hoặc nhiều hơn và được sử dụng để giữ gìn sự bí mật trong kênh truyền thông tin. Nhiều thuật ngữ khác dành cho việc mã hóa dùng chìa khóa đối xứng bao gồm các phương pháp mã hóa đơn khóa (single-key), phương pháp mã hóa một khóa (one-key) và phương pháp mã hóa khóa cá nhân (private-key). Cách sử dụng thuật ngữ sau cùng đôi khi gây xung đột với thuật ngữ khóa cá nhân (private-key) dùng trong mật mã hóa khóa công khai (public key cryptography). Các thuật toán đối xứng nói chung đòi hỏi công suất tính toán ít hơn các thuật toán khóa bất đối xứng (asymmetric key algorithms). Trên thực tế, một thuật toán khóa bất đối xứng có khối lượng tính toán nhiều hơn gấp hằng trăm, hằng ngàn lần một thuật toán khóa đối xứng (symmetric key algorithm) có chất lượng tương đương. Thuật toán đối xứng có thể được chia ra làm hai thể loại, mật mã luồng (stream ciphers) và mật mã khối (block ciphers). Mật mã luồng mã hóa từng bit của thông điệp trong khi mật mã khối gộp một số bit lại và mật mã hóa chúng như một đơn vị. Cỡ khối được dùng thường là các khối 64 bit. Thuật toán tiêu chuẩn mã hóa tân tiến (Advanced Encryption Standard), được NIST công nhận tháng 12 năm 2001, sử dụng các khối gồm 128 bit. Các thuật toán đối xứng thường không được sử dụng độc lập. Trong thiết kế của các hệ thống mật mã hiện đại, cả hai thuật toán bất đối xứng (asymmetric) (dùng chìa khóa công khai) và thuật toán đối xứng được sử dụng phối hợp để tận dụng các ưu điểm của cả hai. Những hệ thống sử dụng cả hai thuật toán bao gồm những cái như SSL (Secure Sockets Layer), PGP (Pretty Good Privacy) và GPG (GNU Privacy Guard) v.v. Các thuật toán chìa khóa bất đối xứng được sử dụng để phân phối chìa khóa mật cho thuật toán đối xứng có tốc độ cao hơn. Một số ví dụ các thuật toán đối xứng nổi tiếng và khá được tôn trọng bao gồm Twofish, Serpent, AES (còn được gọi là Rijndael), Blowfish, CAST5, RC4, Tam phần DES (Triple DES), và IDEA (International Data Encryption Algorithm - Thuật toán mật mã hóa dữ liệu quốc tế). DES (Data Encryption Standard ) DES (viết tắt của Data Encryption Standardlà một phương pháp mật mã hóa được FIPS (Tiêu chuẩn Xử lý Thông tin Liên bang Hoa Kỳ) chọn làm chuẩn chính thức vào năm 1976. Sau đó chuẩn này được sử dụng rộng rãi trên phạm vi thế giới. Ngay từ đầu, thuật toán của nó đã gây ra rất nhiều tranh cãi, do nó bao gồm các thành phần thiết kế mật, độ dài khóa tương đối ngắn, và các nghi ngờ về cửa sau để Cơ quan An ninh quốc gia Hoa Kỳ (NSA) có thể bẻ khóa. Do đó, DES đã được giới nghiên cứu xem xét rất kỹ lưỡng, việc này đã thúc đẩy hiểu biết hiện đại về mật mã khối (block cipher) và các phương pháp thám mã tương ứng. Hiện nay DES được xem là không đủ an toàn cho nhiều ứng dụng. Nguyên nhân chủ yếu là độ dài 56 bit của khóa là quá nhỏ. Khóa DES đã từng bị phá trong vòng chưa đầy 24 giờ. Đã có rất nhiều kết quả phân tích cho thấy những điểm yếu về mặt lý thuyết của mã hóa có thể dẫn đến phá khóa, tuy chúng không khả thi trong thực tiễn. Thuật toán được tin tưởng là an toàn trong thực tiễn có dạng Triple DES (thực hiện DES ba lần), mặc dù trên lý thuyết phương pháp này vẫn có thể bị phá. Gần đây DES đã được thay thế bằng AES (Advanced Encryption Standard, hay Tiêu chuẩn Mã hóa Tiên tiến). DES là thuật toán mã hóa khối: nó xử lý từng khối thông tin của bản rõ có độ dài xác định và biến đổi theo những quá trình phức tạp để trở thành khối thông tin của bản mã có độ dài không thay đổi. Trong trường hợp của DES, độ dài mỗi khối là 64 bit. DES cũng sử dụng khóa để cá biệt hóa quá trình chuyển đổi. Nhờ vậy, chỉ khi biết khóa mới có thể giải mã được văn bản mã. Khóa dùng trong DES có độ dài toàn bộ là 64 bit. Tuy nhiên chỉ có 56 bit thực sự được sử dụng; 8 bit còn lại chỉ dùng cho việc kiểm tra. Vì thế, độ dài thực tế của khóa chỉ là 56 bit. AES (Advanced Encryption Standard) Trong mật mã học, AES (viết tắt của từ tiếng Anh: Advanced Encryption Standard, hay Tiêu chuẩn mã hóa tiên tiến) là một thuật toán mã hóa khối được chính phủ Hoa kỳ áp dụng làm tiêu chuẩn mã hóa. Giống như tiêu chuẩn tiền nhiệm DES, AES được kỳ vọng áp dụng trên phạm vi thế giới và đã được nghiên cứu rất kỹ lưỡng. AES được chấp thuận làm tiêu chuẩn liên bang bởi Viện tiêu chuẩn và công nghệ quốc gia Hoa kỳ (NIST) sau một quá trình tiêu chuẩn hóa kéo dài 5 năm. Thuật toán được thiết kế bởi hai nhà mật mã học người Bỉ: Joan Daemen và Vincent Rijmen (lấy tên chung là "Rijndael" khi tham gia cuộc thi thiết kế AES). Rijndael được phát âm là "Rhine dahl" theo phiên âm quốc tế (IPA: [ɹaindal]). Mặc dù 2 tên AES và Rijndael vẫn thường được gọi thay thế cho nhau nhưng trên thực tế thì 2 thuật toán không hoàn toàn giống nhau. AES chỉ làm việc với khối dữ liệu 128 bít và khóa có độ dài 128, 192 hoặc 256 bít trong khi Rijndael có thể làm việc với dữ liệu và khóa có độ dài bất kỳ là bội số của 32 bít nằm trong khoảng từ 128 tới 256 bít. Các khóa con sử dụng trong các chu trình được tạo ra bởi quá trình tạo khóa con Rijndael. Hầu hết các phép toán trong thuật toán AES đều thực hiện trong một trường hữu hạn. Mã hóa khóa công khai Giới thiệu mã hóa khóa công khai Mã hóa khóa công khai là một dạng mã hóa cho phép người sử dụng trao đổi các thông tin mật mà không cần phải trao đổi các khóa chung bí mật trước đó. Điều này được thực hiện bằng cách sử dụng một cặp khóa có quan hệ toán học với nhau là khóa công khai và khóa cá nhân (hay khóa bí mật). Thuật ngữ mật mã hóa khóa bất đối xứng thường được dùng đồng nghĩa với mật mã hóa khóa công khai mặc dù hai khái niệm không hoàn toàn tương đương. Có những thuật toán mật mã khóa bất đối xứng không có tính chất khóa công khai và bí mật như đề cập ở trên mà cả hai khóa (cho mã hóa và giải mã) đều cần phải giữ bí mật. Trong mật mã hóa khóa công khai, khóa cá nhân phải được giữ bí mật trong khi khóa công khai được phổ biến công khai. Trong 2 khóa, một dùng để mã hóa và khóa còn lại dùng để giải mã. Điều quan trọng đối với hệ thống là không thể tìm ra khóa bí mật nếu chỉ biết khóa công khai. Hình 2.4 Sinh khóa công khai Thông thường, các kỹ thuật mật mã hóa khóa công khai đòi hỏi khối lượng tính toán nhiều hơn các kỹ thuật mã hóa khóa đối xứng nhưng những lợi điểm mà chúng mang lại khiến cho chúng được áp dụng trong nhiều ứng dụng. Để đạt được độ an toàn tương đương, thuật toán mật mã hóa khóa bất đối xứng đòi hỏi khối lượng tính toán nhiều hơn đáng kể so với thuật toán mật mã hóa khóa đối xứng. Vì thế trong thực tế hai dạng thuật toán này thường được dùng bổ sung cho nhau để đạt hiệu quả cao. Trong mô hình này, một bên tham gia trao đổi thông tin tạo ra một khóa đối xứng dùng cho phiên giao dịch. Khóa này sẽ được trao đổi an toàn thông qua hệ thống mã hóa khóa bất đối xứng. Sau đó 2 bên trao đổi thông tin bí mật bằng hệ thống mã hóa đối xứng trong suốt phiên giao dịch. Các ứng dụng Hệ thống mật mã hóa khóa công khai có thể sử dụng với các mục đích: Mã hóa: giữ bí mật thông tin và chỉ có người có khóa bí mật mới giải mã được. Hình 2.5 Mã hóa và giải mã bằng mã hóa khóa công khai Tạo chữ ký số (xác thực thông tin): cho phép kiểm tra một văn bản có phải đã được tạo với một khóa bí mật nào đó hay không. Hình 2.6 Tạo và xác thực chữ ký số Thỏa thuận khóa: cho phép thiết lập khóa dùng để trao đổi thông tin mật giữa 2 bên. Chữ ký số (Digital Signature) Giới thiệu chữ ký số Chữ ký số là một dạng chữ ký điện tử được dựa trên công nghệ khóa công khai (PKI). Mỗi người cần 1 cặp khóa gồm khóa công khai & khóa bí mật. Khóa bí mật dùng để tạo chữ ký số khóa công khai dùng để thẩm định chữ ký số -> xác thực Tạo chữ ký số Hình 2.7 Tạo chữ ký số Thẩm định chữ ký số Hình 2.8 Thẩm định chữ ký số Mục đích của việc thẩm định chữ ký số: Xác thực được người gửi: Các hệ thống mật mã hóa khóa công khai cho phép mật mã hóa văn bản với khóa bí mật mà chỉ có người chủ của khóa biết. Để sử dụng chữ ký số thì văn bản không cần phải được mã hóa mà chỉ cần mã hóa hàm băm của văn bản đó (thường có độ dài cố định và ngắn hơn văn bản). Khi cần kiểm tra, bên nhận giải mã (với khóa công khai) để lấy lại hàm băm và kiểm tra với hàm băm của văn bản nhận được. Nếu 2 giá trị này khớp nhau thì bên nhận có thể tin tưởng rằng văn bản xuất phát từ người sở hữu khóa bí mật. Tất nhiên là chúng ta không thể đảm bảo 100% là văn bản không bị giả mạo vì hệ thống vẫn có thể bị phá vỡ. Vấn đề nhận thực đặc biệt quan trọng đối với các giao dịch tài chính. Chẳng hạn một chi nhánh ngân hàng gửi một gói tin về trung tâm dưới dạng (a,b), trong đó a là số tài khoản và b là số tiền chuyển vào tài khoản đó. Một kẻ lừa đảo có thể gửi một số tiền nào đó để lấy nội dung gói tin và truyền lại gói tin thu được nhiều lần để thu lợi (tấn công truyền lại gói tin). Chống chối bỏ: Trong giao dịch, một bên có thể từ chối nhận một văn bản nào đó là do mình gửi. Để ngăn ngừa khả năng này, bên nhận có thể yêu cầu bên gửi phải gửi kèm chữ ký số với văn bản. Khi có tranh chấp, bên nhận sẽ dùng chữ ký này như một chứng cứ để bên thứ ba giải quyết. Tuy nhiên, khóa bí mật vẫn có thể bị lộ và tính không thể phủ nhận cũng không thể đạt được hoàn toàn. Xác thực sự toàn vẹn của thông tin: Cả hai bên tham gia vào quá trình thông tin đều có thể tin tưởng là văn bản không bị sửa đổi trong khi truyền vì nếu văn bản bị thay đổi thì hàm băm cũng sẽ thay đổi và lập tức bị phát hiện. Quá trình mã hóa sẽ ẩn nội dung của gói tin đối với bên thứ 3 nhưng không ngăn cản được việc thay đổi nội dung của nó. Một ví dụ cho trường hợp này là tấn công đồng hình (homomorphism attack): tiếp tục ví dụ như ở trên, một kẻ lừa đảo gửi 1.000.000 đồng vào tài khoản của a, chặn gói tin (a,b) mà chi nhánh gửi về trung tâm rồi gửi gói tin (a,b3) thay thế để lập tức trở thành triệu phú! RSA Giới thiệu Trong mật mã học, RSA là một thuật toán mật mã hóa khóa công khai. Đây là thuật toán đầu tiên phù hợp với việc tạo ra chữ ký điện tử đồng thời với việc mã hóa. Nó đánh dấu một sự tiến bộ vượt bậc của lĩnh vực mật mã học trong việc sử dụng khóa công cộng. RSA đang được sử dụng phổ biến trong thương mại điện tử và được cho là đảm bảo an toàn với điều kiện độ dài khóa đủ lớn. Thuật toán được Ron Rivest, Adi Shamir và Len Adleman mô tả lần đầu tiên vào năm 1977 tại Học viện Công nghệ Massachusetts (MIT). Tên của thuật toán lấy từ 3 chữ cái đầu của tên 3 tác giả. RSA là thuật toán mã khối có kích thước khối thay đổi được. Thuật toán RSA có hai khóa: khóa công khai (hay khóa công cộng) và khóa bí mật (hay khóa cá nhân). Mỗi khóa là những số cố định sử dụng trong quá trình mã hóa và giải mã. Khóa công khai được công bố rộng rãi cho mọi người và được dùng để mã hóa. Những thông tin được mã hóa bằng khóa công khai chỉ có thể được giải mã bằng khóa bí mật tương ứng. Nói cách khác, mọi người đều có thể mã hóa nhưng chỉ có người biết khóa cá nhân (bí mật) mới có thể giải mã được. Ta có thể mô phỏng trực quan một hệ mật mã khoá công khai như sau : Bob muốn gửi cho Alice một thông tin mật mà Bob muốn duy nhất Alice có thể đọc được. Để làm được điều này, Alice gửi cho Bob một chiếc hộp có khóa đã mở sẵn và giữ lại chìa khóa. Bob nhận chiếc hộp, cho vào đó một tờ giấy viết thư bình thường và khóa lại (như loại khoá thông thường chỉ cần sập chốt lại, sau khi sập chốt khóa ngay cả Bob cũng không thể mở lại được-không đọc lại hay sửa thông tin trong thư được nữa). Sau đó Bob gửi chiếc hộp lại cho Alice. Alice mở hộp với chìa khóa của mình và đọc thông tin trong thư. Trong ví dụ này, chiếc hộp với khóa mở đóng vai trò khóa công khai, chiếc chìa khóa chính là khóa bí mật. Thuật toán Giả sử Alice và Bob cần trao đổi thông tin bí mật thông qua một kênh không an toàn (ví dụ như Internet). Với thuật toán RSA, Alice đầu tiên cần tạo ra cho mình cặp khóa gồm khóa công khai và khóa bí mật theo các bước sau: Chọn 2 số nguyên tố lớn và với , lựa chọn ngẫu nhiên và độc lập. Tính: . Tính: giá trị hàm số Ơle . Chọn một số tự nhiên e sao cho và là số nguyên tố cùng nhau với . Tính: d sao cho . Một số lưu ý: Các số nguyên tố thường được chọn bằng phương pháp thử xác suất. Các bước 4 và 5 có thể được thực hiện bằng giải thuật Euclid mở rộng (xem thêm: số học môđun). Bước 5 có thể viết cách khác: Tìm số tự nhiên sao cho cũng là số tự nhiên. Khi đó sử dụng giá trị . Từ bước 3, PKCS#1 v2.1 sử dụng thay cho ). Khóa công khai bao gồm: n, môđun, và e, số mũ công khai (cũng gọi là số mũ mã hóa). Khóa bí mật bao gồm: n, môđun, xuất hiện cả trong khóa công khai và khóa bí mật, và d, số mũ bí mật (cũng gọi là số mũ giải mã). Một dạng khác của khóa bí mật bao gồm: p and q, hai số nguyên tố chọn ban đầu, d mod (p-1) và d mod (q-1) (thường được gọi là dmp1 và dmq1), (1/q) mod p (thường được gọi là iqmp) Dạng này cho phép thực hiện giải mã và ký nhanh hơn với việc sử dụng định lý số dư Trung Quốc (tiếng Anh: Chinese Remainder Theorem - CRT). Ở dạng này, tất cả thành phần của khóa bí mật phải được giữ bí mật. Alice gửi khóa công khai cho Bob, và giữ bí mật khóa cá nhân của mình. Ở đây, p và q giữ vai trò rất quan trọng. Chúng là các phân tố của n và cho phép tính d khi biết e. Nếu không sử dụng dạng sau của khóa bí mật (dạng CRT) thì p và q sẽ được xóa ngay sau khi thực hiện xong quá trình tạo khóa. Hạ tầng khóa công khai (Public key Infrastructure) Giới thiệu hạ tầng khóa công khai Trong mật mã học, hạ tầng khóa công khai “public key infrastructure”, viết tắt PKI là một cơ chế để cho một bên thứ 3 (thường là nhà cung cấp chứng thực số) cung cấp và xác thực định danh các bên tham gia vào quá trình trao đổi thông tin. Cơ chế này cũng cho phép gán cho mỗi người sử dụng trong hệ thống một cặp khóa công khai/khóa bí mật. Các quá trình này thường được thực hiện bởi một phần mềm đặt tại trung tâm và các phần mềm phối hợp khác tại các địa điểm của người dùng. Khóa công khai thường được phân phối trong chứng thực khóa công khai. Khái niệm hạ tầng khóa công khai (PKI) thường được dùng để chỉ toàn bộ hệ thống bao gồm nhà cung cấp chứng thực số (CA) cùng các cơ chế liên quan đồng thời với toàn bộ việc sử dụng các thuật toán mật mã hóa khóa công khai trong trao đổi thông tin. Tuy nhiên phần sau được bao gồm không hoàn toàn chính xác bởi vì các cơ chế trong PKI không nhất thiết sử dụng các thuật toán mã hóa khóa công khai. PKI cho phép những người tham gia xác thực lẫn nhau và sử dụng thông tin từ các chứng thực khóa công khai để mật mã hóa và giải mã thông tin trong quá trình trao đổi. Thông thường, PKI bao gồm phần mềm máy khách (client), phần mềm máy chủ (server), phần cứng (như thẻ thông minh) và các quy trình hoạt động liên quan. Người sử dụng cũng có thể ký các văn bản điện tử với khóa bí mật của mình và mọi người đều có thể kiểm tra với khóa công khai của người đó. PKI cho phép các giao dịch điện tử được diễn ra đảm bảo tính bí mật, toàn vẹn và xác thực lẫn nhau mà không cần phải trao đổi các thông tin mật từ trước. Chứng chỉ số 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ố. Hình 2.9 Tạo 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ó 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. 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). Các thông tin trong chứng chỉ số bao gồm: Nhận dạng của thực thể thông tin (tên user, địa chỉ IP, địa chỉ email, URL, của website,…) Khóa công khai của thực thể thông tin Chữ ký số của “người” xác nhận Một số thông tin phụ trợ khác Cấu trúc chứng chỉ theo X.509 X.509 là một đề nghị của ITU (International Telecommunication Union) định nghĩa một framework về chứng thực (certificate). X.509 dựa trên X.500, mà bản thân X.500 còn chưa được định nghĩa hoàn hảo. Kết quả là chuẩn X.509 đang được diễn giải theo một số cách, tùy theo công ty cung cấp quyết định sử dụng như thế nào. X.509 lần đầu tiên được công bố vào năm 1988, và các phiên bản tiếp theo đã được đưa ra để giải quyết các vấn đề an toàn, đây cũng là sự cố xảy ra bất ngờ ngay lần công bố đầu tiên. X.509 hỗ trợ cả hai mã bí mật (mã đơn) và mã công khai. X.509 định nghĩa các nội dung về một chứng thực, bao gồm số phiên bản, số serial, ID chữ ký, tên công bố, thời điểm có hiệu lực, định nghĩa chủ đề, phần mở rộng và chữ ký trên các trường trên. Chứng chỉ số theo cấu trúc của X.509 Hình 2.10 Cấu trúc chứng chỉ số X.509 Về cơ bản, một người có trách nhiệm chứng nhận sẽ đặt khóa công khai của một người nào đó có nhu cầu chứng thực vào thủ tục chứng thực và sau đó xác thực lại bằng khóa riêng. Cơ sở hạ tầng khóa công khai Hệ thống bao gồm các thành phần cần thiết thực hiện các chức năng: Tạo ra các chứng chỉ khóa công khai Phân phối chứng chỉ Thu hồi chứng chỉ Quản lý các chứng chỉ PKI là thành phần nền tảng để triển khai các ứng dụng bảo mật dựa trên khóa công khai. Các thành phần của PKI Hình 2.11 Các thành phần của PKI End Entity: người sử dụng, một phần mềm hoặc thiết bị tham gia vào quá trình trao đổi thông tin. Certification Authority (CA): thực thể tin cậy trong cộng đồng, có chức năng tạo ra chứng chỉ. Registration Authority (RA): thực hiện các chức năng xử lý hỗ trợ cho CA. Repository: kho lưu trữ các chứng chỉ, cúng cấp chứng chỉ cho user khi có yêu cầu. CRL Issuer (Certificate Revocation List): thực thể quản lý việc thu hồi chứng chỉ đã hết hạn hoặc vi phạm các vấn đề về bảo mật. Chứng thực chéo CA chứng thực cho End Entity. CA cũng có thể chứng thực cho CA khác trong mô hình phân cấp tạo thành đường dẫn chứng thực (Certification Path). Tính tin cậy (trust) của các CA cũng được thiết lập thông qua mô hình phân cấp. Mô hình CA nhiều cấp: Hình 2.12 Mô hình CA nhiều cấp Ví dụ về chứng thực chéo: Hình 2.13 Chứng thực chéo Ký hiệu: A>: A chứng nhận cho X SET (Secure Electronic Transaction) Giới thiệu SET SET (Secure Electronic Transaction) là một giao thức tiêu chuẩn dùng bảo mật thông tin trong các ững dụng bảo mật dùng thẻ tín dụng. SET không phải là một hệ thống thanh toán mà là một giao thức bảo vệ cho các giao dịch. Được đề xuất đầu tiên bởi MasterCard và Visa lần đầu tiên vào năm 1996 với sự tham gia của GTE, IBM, Microsoft, Netscape, RSA and VeriSign. Các tính năng của SET: Bảo vệ các kết nối giữa các thành phần tham gia giao dịch Thiết lập quan hệ tinh cậy dùng chứng chỉ số Đảm bảo tính riêng tư của thông tin Hoạt động Các đặc trưng cơ bản của SET: Bảo mật thông tin: dùng mã hóa đối xứng DES Toàn vẹn thông tin: dùng RSA, SHA-1, HMAC, chữ ký số. Xác thực người dùng: dùng chứng chỉ số X.509 version 3. Xác thực nàh cung cấp: dùng chứng chỉ số X.509 version 3. Các thành phần tham gia SET: Chủ thẻ (Cardholder): người mua hàng có thẻ tín dụng do ngần hàng phát hành. Người bán hàng (Merchant): có quan hệ với tổ chức tài chính. Ngân hàng phát hành thẻ (Issuer). Tổ chức trung gian thực hiện thanh toán và xác thực thẻ (Acquirer). Cổng thanh toán (Payment getway): tổ chức xử lý việc thanh toán (có thể trùng với Acquirer). Cơ quan chứng thực (Certification Authority): có khả năng tạo ra chữ ký số. Hình 2.14 Các thành phần tham gia SET Các thao tác trong SET: Người dùng mởtài khỏan tại ngân hàng và trở thành chủ thẻ. Người dùng duợc cấp chứng chỉ X.509 v3 (liên kết với thẻ thanh tóan) Người bán hàng duợc cấp chứng chỉ (chứng chỉ ký và chứng chỉ trao dổi khóa), ngoài ra còn có bản sao chứng chỉ của cổng thanh toán điện tử. Nguời sử dụng đặt hàng (thông qua website, email, …) Xác thực nguời bán hàng bằng chứng chỉ số. Người sử dụng gởi thông tin đặt hàng và thông tin thanh toán cho người bán (cùng với chứng chỉ của người sử dụng) Người bán hàng yêu cầu xác thực thông tin thanh tóan. Người bán hàng xác nhận đơn đặt hàng. Giao hàng Yêu cầu thanh toán Chữ ký song song Hình 2.15 Chữ ký song song Công dụng của chữ ký song song: Ký đồng thời lên 2 bản tin gởi cho hai thực thể khác nhau (nguời bán và ngân hàng). Không thể tách rời 2 thông tin. Thực thể này không xem duợc thông tin của thực thể kia và ngược lại Gắn liền nhận dạng của user với đơn hàng và phiếu thanh tóan Không thể tách rời đơn hàng với phiếu thanh tóan Nguời bán hàng không đọc đuợc phiếu thanh tóan Ngân hàng không đọc đuợc đơn dặt hàng Thực hiện thanh toán trong SET: Yêu cầu mua hàng (Purchase Request).  Xác thực thanh toán (Payment Authorization).  Thực hiện thanh toán (Payment Capture). Bảo mật Web Hypertext Transfer Protocol Hypertext Transfer Protocol (HTTP) Hypertext Transfer Protocol (giao thức truyền tải siêu văn bản) là một trong năm giao thức chuẩn được sử dụng trong mạng Internet, được dùng để liên hệ thông tin giữa máy cung cấp dịch vụ (web server) và máy sử dụng dịch vụ (client) dùng cho World Wide Web-WWW, HTTP là một giao thức ứng dụng của bộ giao thức TCP/IP (các giao thức nền tảng cho Internet). HTTP là một giao thức kiểu máy khách/máy chủ như đã nói ở trên, máy khách đưa ra các request, và máy chủ nhận request từ máy khách, xử lý và sẽ gửi trả lời các request này ngược lại máy khách. Thông điệp HTTP (HTTP Message) HTTP message gồm có yêu cầu được gửi từ máy khách lên máy chủ và thông tin trả về từ máy chủ cho máy khách. Tổng quát, HTTP message gồm có: start line, không có hoặc có header, và tùy chọn message body. Một header luôn chứa: tên trường, dấu hai chấm và giá trị của trường ví dụ: From: somebody@something.com Một vài trường trong HTTP Message chỉ có thể được sử dụng để gửi yêu cầu từ máy khách đến máy chủ(Form…) hoặc chỉ có thể được sử dụng trong việc gửi thông tin trả về từ máy chủ tới máy khách (Server…). Một vài trường khác dùng để miêu tả nội dung của message (Content-Encoding). Thực thể Content-Type cho biết nội dung của message được gửi đến máy khách (text/html, hoặc image/gif, hoặc application/pdf…) . Ví dụ về http headers của vietnamnet.vn: Hình 2.16 Ví dụ HTTP header của vietnamnet.vn Dòng đầu tiên của một message gửi thông tin yêu cầu đến máy chủ là request-line, chỉ ra phương thức(method), một URI, và phiên bản HTTP mà máy khách đang sử dụng. Dòng đầu tiên trả về của một message từ máy chủ là status line, chứa thông tin về phiên bản HTTP mà máy chủ sử dụng, status code (mã trạng thái) và reason phrase. Status code là một dãy số gồm 3 chữ số chỉ ra kết quả mà máy chủ đã đáp ứng yêu cầu được gửi lên từ máy khách. Reason phrase là một dòng thông báo ngắn của status code. Ví dụ một máy máy khách yêu cầu một tài liệu mà không có trên máy chủ thì máy chủ sẽ trả về “404 Not Found.”. Nếu tài liệu đó có trên máy chủ, nhưng máy khách phải được chứng thực mới xem được thì máy chủ sẽ trả về “401 Unauthorized.”. Trao đổi thông tin nhạy cảm HTTP header mang rất nhiều thông tin về client hoặc máy chủ, điều này chứa đựng những nguy hiểm tiềm tàn. Ví dụ như thông tin header như thông tin trả về từ máy chủ chứa phiên bản của máy chủ như hình dưới đây: Hình 2.17 Thông tin máy chủ trong HTTP Header Điều này có thể rất nguy hiểm nếu như phần mềm của máy chủ này đang tồn tại một lỗ hổng bảo mật, điều đó có thể tạo cơ hội cho hacker khai thác lỗ hổng bảo mật này và tấn công vào máy chủ. Acccept trong header yêu cầu của máy khách gửi lên máy chủ cũng tiết lộ thêm nhiều điều về người dùng như: Accept-Language, Accept-Encoding… Giống như thông tin header của máy chủ có thể chứa thông tin về máy chủ, trường Form của client header cũng có thể chứa thông tin về địa chỉ email của người dùng. Rõ ràng, nếu người dùng lướt web nặc danh, thông tin này không nên được gửi đi. Trường Referer trong header yêu cầu gửi lên máy chủ được máy khách sử dụng để chỉ ra địa chỉ (URI) của tài liệu (hoặc những thành phần trong tài liệu) mà từ đó yêu cầu URI thu được. Điều này cho phép máy chủ tạo ra danh sách những liên kết được trả về phục vụ cho mục đích ghi lại thông tin (log), xử lý các liên kết bị lỗi... Referer header có thể bị lạm dụng, thông tin có thể được sử dụng để đếm số người yêu cầu tài nguyên đó trên máy chủ, từ đó có thể sử dụng thông tin này cho nhiều mục đích khác nhau như để phân tích hành vi của người dùng phục vụ cho việc quảng cáo… và điều đó vi phạm quyền riêng tư của người dùng. Hình 2.18 Ví dụ Referer trong HTTP Header Vấn đề bảo mật trong Proxy và Cache Hình 2.19 Proxy cache Proxy là một máy tính trung gian giữa máy khách và máy chủ. Truy cập thông qua proxy có thể gặp rất nhiều vấn đề nghiêm trọng về bảo mật cũng như tính riêng tư (privacy). Proxy có thể truy cập vào rất nhiều những phần thông tin quan trọng, những thông tin cá nhân hoặc tổ chức, quyền sở hữu... Những proxy không quan tâm đến các vấn đề bảo mật có thể là những mối nguy hại tiềm tàn vì proxy có thể là mục tiêu cho các cuộc tấn công bảo mật. Người quản trị proxy nên thiết lập hệ thống để bảo vệ hệ thống mà proxy đang chạy, cũng như bảo vệ bất cứ hệ thống nào chứa đựng hoặc chuyển qua lại các thông tin nhạy cảm. Hơn nữa, thông tin trong bản ghi (log) mà proxy thu thập có thể chứa rất nhiều những thông tin nhạy cảm và riêng tư, chính vì thế các thông tin này cần được bảo mật cẩn thận. HTTP cache là các thông tin, tập tin lưu tạm trên máy khách, proxy hoặc gateway dùng để chứa các dữ liệu được trả về từ phía máy chủ để giúp giảm bớt đường truyền sử dụng và tăng thời gian hiển thị trang web. Trường Cache-Control trong header trả về từ máy chủ quy định xem máy khách có thể được lưu lại cache hay không, một số thông số khác khác quy định cache có thể được sử dụng như thế nào. Mặc định, dữ liệu trả về từ phương thức POST không được lưu lại (no cacheable). Bảo mật giao dịch Web Trong quá trình sử dụng HyperText Transport Protocol cho các dịch vụ cá nhân hay thương mại thì những thông tin cá nhân hay nhạy cảm đòi hỏi phải được phát triển trên một phiên bản an toàn bao gồm tính riêng tư và xác thực. Bảo mật các giao dịch trên web (hay bảo mật HTTP message) cần phải tuân thủ theo các yêu cầu bảo mật: Đảm bảo tính bảo mật (confidentiality) trong quá trình gửi và nhận yêu cầu. Trong quá trình gửi yêu cầu và nhận các yêu cầu, các thông tin cần phải được bảo mật, đặc biệt là các thông tin nhạy cảm, đồng thời địa chỉ (URI) được yêu cầu cũng phải được bảo mật và tránh trường hợp các thông tin trong form hoặc các thông tin người dùng nhập hiển thị trên URI. Xác thực dữ liệu gốc (authentication) trong quá trình gửi và nhận yêu cầu. Đảm bảo tính toàn vẹn (integrity) của dữ liệu. Đảm bảo tính “nonrepudiation” của dữ liệu. Đảm bảo tính cập nhật (freshness) của dữ liệu. Ngoài ra, cơ chế bảo mật trên HTTP phải dễ dàng tích hợp với các tính năng khác của HTTP. Để đảm bảo được các yêu cầu bảo mật trên đây có thể sử dụng các phương thức bảo mật sau: Sử dụng các giao thức bảo mật bên dưới tầng HTTP để tạo ra một kênh truyền dữ liệu an toàn như là SSL hoặc TSL. Sử dụng giao thức bảo mật PGP (Pretty Good Privacy), S/MIME (Secure / Multipurpose Internet Mail Extensions) để bảo mật HTTP message. Sử dụng các bản mở rộng cho HTTP như S-HTTP, PEP (Protocol Extension Protocol). Hiện tại phương sử dụng SSL đang được sử dụng rộng rãi trên các giao dịch trên nền web vì tính bảo mật cao và tiện dụng. Bảo mật Web Server Các vấn đề bảo mật trên máy chủ Sự phát triển của Internet và thương mại điện tử đã có bước tăng trưởng rất nhanh chóng trong thời gian gần đây, kèm theo đó là sự phát triển của tin tặc và các nguy cơ bảo mật gia tăng. Rất nhiều những tổ chức vận hành máy chủ nhưng không được bảo vệ để sẵn sàng chống lại các nguy cơ tấn công từ bên ngoài. Các máy chủ web luôn là mục tiêu tấn công trên mạng của các tin tặc. Bởi vậy, việc thiết lập và bảo vệ các thông tin trên máy chủ luôn là một vấn đề cấp bách, đặt biệt là các hệ thống máy chủ thương mại điện tử. Có rất nhiều những kỹ thuật giúp kẻ tấn công có thể chạy các đoạn mã lệnh nguy hiểm trên máy của nạn nhân, các kỹ thuật này bao gồm: Khai thác từ xa: có rất nhiều lỗ hổng bảo mật tồn tại trong rất nhiều hệ thống máy tính, làm cho kẻ tấn công có khả năng làm hạy, xâm nhập hay tắt hệ thống mà không cần phản đăng nhập vào hệ thống máy tính. Các chương trình có hại (Malicious programs): một cách tấn công khác là bằng cách nào đó kẻ tấn công cài được vào hệ thống một chương trình có hại. Chương trình này có thể chạy một vài dịch vụ ẩn để kẻ tấn công có thể điều khiển được hệ thống từ xa, các chương trình này được gọi là “cửa sau” (back door) vì giúp cho kẻ tấn công có thể dễ dàng xâm nhập vào hệ thống và tránh được các phương pháp bảo mật. “Trojan Horse” dùng để gọi những chương trình có vẻ như là cung cấp một vài chức năng nào đó, nhưng thật sự nó là các phần mềm độc hại, giống như những con ngựa gỗ mà người Hy Lạp đã sử dụng để tấn công thành Toy. Virus và sâu máy tính (worm) là những chương trình có thể tự động nhân bản, và lây lan qua các máy tính thông qua các tệp đính kèm trong thư điện tử hay lây lan độc lập qua mạng. Virus sửa đổi các chương trình trên máy tính bị lây nhiểm, và cũng có thể tạo ra cửa sau giúp kẻ tấn công kiểm soát máy tính. Trộm thông tin đăng nhập và kỹ thuật tấn công xã hội (social engineering): trong rất nhiều hệ thống máy tính, có thể tồn tại các lỗ hổng hay lỗi giúp kẻ tấn công có thể sử dụng các tài khoản bình thường giống như tài khoản của người quản trị hệ thống (administrator). Hoặc kẻ tấn công sẽ sử dụng tài khoản có được để cài các phần mềm theo dõi hệ thống để từ đó lấy được thông tin đăng nhập của người quản trị hệ thống để thực hiện các mưu đồ xấu. Kẻ tấn công có thể sử dụng rất nhiều những kỹ thuật để ăn trộm thông tin đăng nhập của người dùng. Kẻ tấn công có thể cài các chương trình trên máy nạn nhân để theo dõi việc nhập thông tin thông qua bàn phím hay sử dụng các kỹ thuật lừa đảo để lấy thông tin đăng nhập. Ngoài ra kẻ tấn công cũng có thể tìm kiếm thông tin của nạn nhân trên internet hay các nguồn khác, từ đó phân tích các thông tin này để đoán ra thông tin đăng nhập của nạn nhân. Lừa đảo (phishing): lừa đảo là một trong những kỹ thuật tấn công xã hội (social engineering). Kẻ tấn công sử dụng thư điện tử hay các trang web giống các trang web nổi tiếng (lợi dụng các lỗi chính tả khi nhập địa chỉ trang web…) để lừa khách hàng cung cấp các thông tin đăng nhập và thông tin cá nhân liên quan. Ví dụ như kẻ tấn công gửi thư điện tử cho nạn nhân và thông báo là thẻ tín dụng của nạn nhân đã hết hạn sử dụng và nạn nhân cần click vào một địa chỉ mà thư điện tử cung cấp để làm một cái mới, tất nhiên địa chỉ mà thư điện tử cung cấp sẽ dẫn đến trang web giả mạo của kẻ tấn công. Bảo mật máy chủ Từ những vấn đề bảo mật trên cần phải có những phương pháp giúp bảo vệ hệ thống máy chủ và hạn chế tối đa các thiệt hại nếu có sự cố xảy ra. Các phương pháp giúp bảo vệ máy chủ web: Cài đặt phần mềm và các miếng vá Trước khi cài đặt hệ điều hành hay một phần mềm mới trên máy chủ, cần phải kiểm tra rằng đó là bản mới nhất để và chắc rằng đã có đầy đủ các bản vá lỗi. Nếu có thể được nên ngắt kết nối internet và bắt đầu cài đặt phần mềm, và chỉ nên kết nối lại internet khi quá trình cài đặt phần mềm và các miếng, các bản cập nhật đã hoàn thành. Trước khi cài đặt bất cứ phần mềm nào trên máy chủ, hay cài đặt hệ điều hành mới, phải luôn tạo một bản sao lưu lại hệ thống và cất nó vào một nơi an toàn. Điều này sẽ giúp khôi phục lại hệ thống một cách nhanh nhất và ít thiệt hại nhất trong trường hợp quá trình cài đặt xảy ra sự cố hay hệ thống bị tấn công. Tốt nhất là nên lưu trữ bản sao lưu vào đĩa CD, DVD, băng từ hay vài ổ cứng của một máy tính khác, và đem cất vào một nơi an toàn. Lưu lại thông tin trạng thái và các hoạt động (logging) Rất nhiều dịch vụ chạy trên máy chủ web cho phép ghi lại những hoạt động của nó (log). Những máy chủ web chạy hệ điều hành UNIX hay Windows cho phép cấu hình ghi lại các hoạt động của hệ thống xuống một tệp hay nhiều tệp tin, hoặc có thể gửi đến một máy tính khác trong mạng, gửi đến máy in hay các thiết bị khác. Những thông tin log sẽ trở nên vô giá khi phục hồi lại hệ thống từ những sự cố bảo mật. Thường chúng sẽ nói cho chúng ta biết các mà kẻ tấn công đã tấn công hệ thống, thậm chí có thể chúng cung cấp mang mối để tìm ra kẻ đã tấn công. Tệp tin log có thể được đệ trình như là bằng chứng lên toà án để kết tội kẻ tấn công nếu chúng được lưu lại điều đặn trong hệ thống. Nên thiết lập để lưu lại log của tất cả các máy chủ, và chắc rằng các thông tin này được kiểm tra một cách điều đặn. Người quản trị có thể viết ra một chương trình nhỏ để quét qua các tệp tin log mỗi ngày và lọc ra những thông tin, sự kiện mà người quản trị muốn biết hay các thông tin lỗi, hoặc cũng có thể dùng các chương trình phân tích tệp tin log. Một khi có những thông tin này rồi, người quản trị có thể dễ dàng hình dung các sự kiện đó xảy ra để từ đó tìm cách xử lý cho phù hợp. Tệp tin log cũng sẽ rất hữu dụng cho việc đo sức chụi đựng của hệ thống. Ví dụ, có thể thiết lập lưu lại những thông tin như: sự sử dụng kết nối ra bên ngoài và bên trong, hoạt động của CPU, RAM, dung lượng đĩa cứng. Những thông tin này sẽ rất hữu ích giúp xác định khi nào thì nên nâng cấp hệ thống. Bảo vệ tệp tin log là rất quan trọng. Nếu như một một người nào đó xâm nhập vào hệ thống, điều đầu tiên họ làm là sẽ tìm cách sửa lại tiệp tin log để xóa dấu vết xâm nhập của họ. Cách tốt nhất để bảo vệ các tệp tin log là xây dựng một máy chủ log an toàn sẽ thu thập thông tin log từ các máy khác trong mạng. Cũng cần có cơ chế chứng thực để bảo vệ tệp tin log để chỉ cho phép những người có quyền mới được xem. Sao lưu hệ thống đơn giản chỉ là cách lưu trữ lại toàn bộ hay một phần các tệp tin xuống băng từ hay các thiết bị lưu trữ khác. Đây là cách hiệu nhất để giúp khôi phục lại hệ thống nếu như có sự cố xảy ra. Sao lưu hệ thống có vai trò rất quan trọng trong bảo mật máy chủ: Giúp bảo vệ hệ thống trước các lỗi phần cứng hay các sự cố xóa nhầm tệp tin. Giúp bảo vệ trước những cuộc tấn công bởi vì những tệp bị xóa hay bị sữa đổi bởi kẻ tấn công có thể được khôi phục lại từ bản sao lưu. Giúp phát hiện mức độ phá hoại của kẻ tấn công bằng cách so sánh những tệp đang có trong hệ thống với những tệp được lưu trữ trong bản sao lưu. Sao lưu là một việc làm không khó, tuy nhiên cần phải tuân thủ một vài điều sau: Luôn kiểm tra lại bản sao lưu để đảm bảo rằng nó không bị hỏng và có thể khôi phục lại hệ thống đúng như lúc được sao lưu. Luôn mã hóa bản sao lưu bằng một mật khẩu an toàn, để trong trường hợp bản sao lưu bị đánh cắp thì dữ liệu được lưu trữ cũng không bị nguy hiểm. Và bản sao lưu cũng phải được lưu trữ ở những nơi đã được bảo vệ. Cẩn thận khi thực hiện việc sao lưu trong một mạng nội bộ. Thường trong mạng có một máy chủ phục vụ cho việc sao lưu hệ thống của các máy tính khác trong mạng, vì vậy nếu máy tính này bị tấn công thì những những hệ thống mà nó thực hiện sao lưu cũng sẽ gặp nguy hiểm. Sử dụng các công cụ bảo mật. Các công cụ bảo mật là các chương trình đặt biệt, giúp người quản trị hệ thống có thể ước lượng hay tăng khả năng bảo mật hệ thống. Nhiều công cụ bảo mật ngày nay được phát triển bởi các trường đại học hoặc những chuyên gia độc lập và được cung cấp rộng rãi trên mạng internet. Cũng có vài công cụ tốt được thương mại hóa. Có 5 loại công cụ nên được xem xét sử dụng trên hệ thống máy chủ: Công cụ quét những điểm yếu của hệ thống và báo cáo cho người quản trị (Snapshot tools). Ví dụ như trên hệ thống UNIX một công cụ sẽ gám xác tệp /etc/passwd để đảm bảo không cho phép ai ngoại trừ người quản trị có thể sửa đổi. Các chương trình này có thể quét hệ thống nhiều lần trong một khoảng thời gian ngắn, tùy theo thiết lập. Nên cẩn thận khi quản lý các báo cáo được xuất ra từ công cụ này, tốt nhất là nên lưu trữ ở một nơi an toàn và chỉ những người có quyền mới được xem, vì từ những thông tin này nếu lọt vào tay kẻ tấn công chúng có thể giúp tìm ra các lỗ hổng trong hệ thống một các dễ dàng. Công cụ giúp giám sát hệ thống và phát hiện những thay đổi không được phép trong hệ thống. Công cụ này rất quan trọng bởi vì điều đầu tiên mà kẻ tấn công làm khi xâm nhập được vào hệ thống là chỉnh sửa lại hệ thống để giúp chúng có thể dễ đang xâm nhập vào những lần sau hay xóa đi các chứng cớ xâm nhập. Giám sát các sự thay đổi không thể ngăn chặn sự tấn công, tuy nhiên nó giúp cảnh báo hệ thống đã bị làm hại. Hấu hết các cuộc tấn công không bị phát hiện trong một khoảng thời gian, công cụ phát hiện thay đổi là cách duy nhất giúp bạn phát hiện sự hiện diện của kẻ xâm nhập trong hệ thống để có những hành động thích hợp. Nếu như hệ thống có nhiều hơn một người quản trị, báo cáo thay đổi sẽ giúp giám xác các hoạt động của từng người. Công cụ giám sát mạng, giúp phát hiện những điểm yếu bảo mật trong mạng. Nên sử dụng một công cụ giúp tự động quét hệ thống mạng. Công cụ này giúp phát hiện những lỗi trong những chương trình mạng như gửi mail hay dịch vụ FPTD (File Transfer Protocol DAEMON). Công cụ giám sát hệ thống và mạng để phát hiện những cuộc tấn công đang được thực hiện. Hệ thống dò tìm xâm nhập (Intrusion detection system) viết tắt là IDS là phần mềm hay phần cứng giúp phát hiện những sự cố gắng không mong muốn để xâm nhập, thao tác hay cố gắng vô hiệu hóa hệ thống máy tính thông qua mạng, mà chủ yếu là qua mạng internet ở dạng những cuộc tấn công như sử dụng các phần mềm độc hại… Sử dụng các phần mềm quét virus để phát hiện virus và các phần mềm độc hại nhằm tránh hoạt động của chúng trên hệ thống có thể tạo các lỗ hổng cho kẻ tấn công xâm nhập vào hệ thống. Công cụ giúp lưu lại hoạt động của mạng để phục vụ cho sự phân tích sau này. Hệ thống dò tìm xâm nhập (IDS) giống như một hệ thống báo động tinh vi: IDS có những cảm biến và báo động, nếu như có một sự xâm nhập đi qua một trong chúng, IDS sẽ ghi nhận lại sự việc. Nhưng vấn đề với hệ thống IDS là chúng chỉ có thể ghi nhận lại những gì mà chúng đã được thiết lập để ghi nhận. Công cụ ghi lại nhật ký mạng lại tiếp cận theo một cách khác. Hệ thống sẽ lưu lại tất cả những thông tin được truyền qua mạng, và cho phép phân tích ngược lại. Trong trường hợp máy chủ bị tấn công hay các sự cố khác, những thông tin đó sẽ được phân tích để tìm ra nguyên nhân. Hệ thống này thường chạy trên máy tính có dung lượng ở cứng lớn. Hạn chế các nguy cơ bảo mật bằng cách hạn chế các dịch vụ Một trong những cách quan trọng để hạn chế hiểm họa đối với máy chủ là tối thiểu các dịch vụ không cần thiết trên máy chủ, bởi vì mỗi dịch vụ mạng tồn tại trong nó những rủi ro riêng. Bằng cách loại bỏ các dịch vụ không cần thiết, bạn đã loại bỏ được những nguy hiểm và lỗ hổng tiềm năng giúp kẻ tấn công có thể xâm nhập vào máy chủ. Những dịch vụ sau đây được khuyến khích loại bỏ hay vô hiệu hóa nếu như không có nhu cầu sử dụng: Tên dịch vụ Nguyên nhân Domain Name Service (DNS) Lỗi trong DNS có thể bị khai thác để làm hại máy chủ. Mail (SMTP, POP, IMAP,...) Những lỗi trong việc gửi mail và gửi tệp đính kèm có thể được sử dụng để tấn công máy chủ. Tốt nhất là nên chạy dịch vụ mail trên một máy chủ riêng. netstat, systat netstat và systat có thể tiết lộ thông tin thiết lập và trình trạng hệ thống. Tốt nhất là không nên cung cấp dịch vụ này. chargen, echo Dịch vụ này có thể được sử dụng để khởi chạy các chương trình điều khiển tấn công ghi dữ liệu hoặc tấn công từ chối dịch vụ. Nên vô hiệu hóa dịch vụ này. FTP Không nên chạy FPT nếu như bạn có thể. FPT tiêu chuẩn gửi thông tin tên đăng nhập và mật khẩu không được mã hóa. Mặc dù có thể sử dụng FTP với có chế “sao chép an toàn” (Secure Copy) viết tắt là SCP (sử dụng phương thức SSH (Secure Shell)) để thiết lập một kết nối an toàn. Nếu bạn bắt buộc phải sử dụng FTP thì chỉ nên sử dụng nó cho việc cập nhật máy chủ. Trong trường hợp phải sử dụng máy chủ FTP nặc danh, tốt nhất là nên chạy trên một máy tính riêng lẻ, và ít ra là với hệ thống tệp tin riêng biệt khác với máy chủ web. Telnet Không nên cho phép những sự đăng nhập tương tác vào máy chủ web cho bất cứ ai ngoại trừ người quản lý hệ thống (administrator). Nếu có thể, chỉ nên cho phép truy cập từ xa đã được bảo mật như SSH hay Kerberized. Nếu như phải sử dụng telnet không được bảo mật, thì nên sử dụng hệ thống mật mã dùng một lần như S/Key hay SecureID. Berkeley, những lệnh "r" (rlogin, rsh, rdist, ...) Những lệnh này sử dụng địa chỉ IP để chứng thực, vì vậy rất không an toàn vì IP có thể bị giả mạo. Nên sử dụng SSH hay SCP. Bảng 2.1 Những dịch vụ nên hạn chế trên máy chủ web Tường lửa (Firewall) Tường lửa là rào chắn được lập ra nhằm ngăn chặn người dùng mạng Internet truy cập các thông tin không mong muốn hay ngăn chặn người dùng từ bên ngoài truy nhập các thông tin bảo mật nằm trong mạng nội bộ. Tường lửa là một thiết bị phần cứng hay một phần mềm hoặc cả hai, hoạt động trong một môi trường máy tính nối mạng để ngăn chặn một số liên lạc bị cấm bởi chính sách an ninh của cá nhân hay tổ chức, việc này tương tự với hoạt động của các bức tường ngăn lửa trong các tòa nhà. Tường lửa được sử dụng để bảo vệ mạng cục bộ (LAN) khỏi các nguy cơ từ internet. Tường lửa cũng có thể được sử dụng để bảo vệ máy chủ web. Giống như mạng cục bộ, lợi ích lớn nhất của tường lửa trong việc bảo vệ máy chủ web là có thể điều khiển được những giao thức được máy chủ sử dụng. Ví dụ nếu như máy chủ chỉ đưa ra duy duy nhất dịch vụ HTTP, người quản trị có thể cấu hình để tường lửa chỉ cho phép các gói dữ liệu qua lại trên cổng 80. Nếu máy chủ web cần hỗ trợ HTTP trên SSL thì người quản trị có thể mở cổng 443. Trong trường hợp tồn tại những lỗ hổng trên máy chủ web, tường lửa sẽ giúp ngăn chặn kẻ tấn công sử dụng máy chủ web làm cơ sở để tấn công các máy tính khác trên mạng internet. Để đạt được sự bảo vệ tối đa, tường lửa cũng nên cô lập tường lửa của mạng nội bộ (xem hình bên dưới). Điều này giúp ngăn chặn kẻ tấn công trong trường hợp đã kiểm soát được máy chủ web sẽ sử dụng nó để tấn công vào mạng nội bộ. Hình 2.20 Thiết lập tường lửa bảo vệ máy chủ web Một trong những lợi ích quan trọng nữa trong việc sử dụng tường lửa để bảo vệ máy chủ web là có thể sử dụng tường lửa của mạng riêng ảo (VPN) để cập nhật an toàn nội dung của máy chủ web. Bảo mật ứng dụng Web Common Gateway Interface (CGI) CGI là giao thức tiêu chuẩn cho việc giao tiếp giữa máy chủ web và phần mềm bên ngoài viết bằng bất cứ ngôn ngữ nào. Khi máy khách yêu cầu một truy xuất vào một tệp tin CGI trên máy chủ web, máy chủ web sẽ không trả về nội dụng của tiệp này, mà sẽ gửi yêu cầu này qua một chương trình khác, chương trình này sẽ xử lý yêu cầu kết hợp với mã lệnh trong tệp tin CGI và trả về thông tin cho máy chủ web để máy chủ web trả về cho máy khách. Có thể hiểu CGI là một trình thông dịch các mã lệnh viết chứa trong các tệp tin đặt trên máy chủ. Hình 2.21 Quá trình xử lý yêu cầu của CGI CGI cũng cho phép dịch vụ web của bạn tương tác với các chương trình khác như cơ sở dữ liệu hay dịch vụ ứng dụng trên cùng hoặc không cùng máy chủ. Chính vì điều này, nếu bị tấn công, có thể gây ra sự mất mát to lớn. Vì thế, đây là một vài biện pháp an toàn nên tiến hành. Không cho phép chương trình CGI tải lên máy chủ từ Internet vì kẻ tấn công có thể sử dụng đặc quyền để gắn kèm chương trình phá hủy trong một thư mục, chỉ cần một trình duyệt để kích hoạt nó. Một chương trình CGI kiểu này có thể gắn những tệp tin hoặc thư mục trên máy chủ của bạn, làm thay đổi hoặc xóa những tệp tin có sẵn, sao chép và gửi thư điện tử cho kẻ tấn công toàn bộ đường dẫn của những thông tin bảo mật. Bất cứ chương trình CGI nào cũng nên giới hạn với ít đặc quyền nhất để khi một chương trình không hợp lệ nào đó được sử dụng, có thể hạn chế được những tổn hại nó gây ra. Tương tự, CGI cũng không nên được phép tải về từ máy chủ về vì kẻ xấu có thể lấy cắp và phân tích nó, từ đó hắn có thể tìm ra những lỗ hổng an ninh nghiêm trọng. Nếu bạn sử dụng chương trình CGI kết hợp, đảm bảo rằng mã nguồn gốc không còn nằm trên máy chủ nữa. Nếu dùng CGI nguyên bản (đơn giản hơn và thường dễ viết hơn nhưng cần nhiều tài nguyên hệ thống), trình thông dịch nên ở khác nguồn với code. Như vậy sẽ hạn chế được quyền hạn dành cho hai đối tượng khác nhau. Bảo mật các trường dữ liệu, trường dữ liệu ẩn Một trong những lý do khiến khó để phát triển một ứng dụng web an toàn là cấu trúc của ứng dụng web. Khi phát triển một ứng dụng web, người phát triển viết mã lệnh để chạy trên máy chủ web, và một phần sẽ được tải về và chạy trên trình duyệt của người dùng. Người phát triển sẽ mất khá nhiều thời gian để đảm bảo rằng hai phần này sẽ hoạt động một cách trơn tru với nhau. Ví dụ như một điều quan trọng là phải đảm bảo tên các trường dữ liệu được tải xuống trình duyệt của người dùng sẽ chính xác hoàn toàn với các tên trường dữ liệu trong kịch bản trên máy chủ. Và người phát triển sẽ phải giành rất nhiều thời gian để đảm bảo rằng các mã HTML, javascript và các mã khác được tải xuống trình duyệt của người dùng sẽ hoạt động tôt. Cơ chế hiện tại của cấu trúc ứng dụng web là các phần code được viết sẽ chạy trên máy chủ web và tạo ra mã HTML để trả về cho trình duyệt của người dùng. Ở trình duyệt, người dùng có thể xem được nội dung mã HTML và các mã javascript được trả về từ máy chủ. Điều này phát sinh ra một nguy cơ bảo mật là nếu như các thông tin trong các trường dữ liệu và các trường ẩn không được bảo mật, và kiểm tra thì kẻ tấn công có thể phân tích và chỉnh sửa thông tin này và gửi những thông tin giả mạo lên trên máy chủ web. Để sử dụng các trường dữ liệu một cách an toàn cần phải thực hiện các bước kiểm tra sau: Lọc thông tin của tất cả các trường nhập dữ liệu được nhập vào. Ví dụ nếu trường dữ liệu là số thẻ tín dụng thì chỉ cho phép nhập số từ 0 đến 9. Kiểm tra độ dài của các trường dữ liệu nhập vào. Nếu sử dụng danh sách lựa chọn (selection list) cũng cần phải kiểm tra các giá trị cung cấp bởi người dùng. Trong trường hợp sử dụng javascript để kiểm tra các trường dữ liệu người dùng nhập vào, thì cần phải thực hiện kiểm tra lại một lần nữa trên máy chủ vì kẻ tấn công có thể tắt javascript và vượt qua quá trình kiểm tra dữ liệu ở trình duyệt một cách dễ dàng. Các trường dữ liệu ẩn thường được dùng để gửi lại các thông tin lên máy chủ web giúp lưu lại các thông tin trong phiên làm việc giữa người dùng thông qua trình duyệt với máy chủ web. Ví dụ như lưu trữ thông tin tên đăng nhập và mật khẩu để xác thực người dùng: Ngoài cách sử dụng trường dữ liệu ẩn, các trường dữ liệu cũng có thể được để trên URL: Để đảm bảo tính bảo mật và toàn vẹn của dữ liệu trong các trường dữ liệu ẩn cũng như các dữ liệu trên URL, nên sử dụng các cơ chế mã hóa để mã hóa dữ liệu chứa trong các trường dữ liệu ẩn và các trường dữ liệu trên URL. Ví dụ: Bảo mật cơ sở dữ liệu Sẽ rất nguy hiểm nếu như kẻ tấn công có được thông tin kết nối vào cơ sở dữ liệu của ứng dụng web, những thông tin về sản phẩm cũng như các thông tin cá nhân của khách hàng, thông tin giỏ hàng cũng như các thông tin về hóa đơn sẽ bị lộ một khi kẻ tấn công xâm nhập được vào cơ sở dữ liệu. Bởi vậy việc bảo mật thông tin kết nối vào cơ sở dữ liệu là điều cực kỳ quan trọng. Để bảo mật thông tin kết nối vào cơ sở dữ liệu thì các thông tin này phải được mã hóa và được lưu trữ trong một tệp tin riêng trên máy chủ web, điều này giúp tăng cường khả năng bảo mật cũng như bảo trì web. Các kịch bản trên máy chủ web sẽ mở tệp tin này ra và lấy thông tin về tên đăng nhập, mật khẩu cũng như các thông tin cần thiết khác để kết nối vào cơ sở dữ liệu. Những điều quan trọng để bảo vệ cơ sở dữ liệu khỏi các nguy cơ tấn công: Cấu hình tường lửa để bảo vệ cơ sở dữ liệu khỏi sự xâm nhập từ bên ngoài. Hình 2.22 Thiết lập tường lữa bảo vệ máy chủ cơ sở dữ liệu Đảm bảo rằng tài khoản được sử dụng trong ứng dụng web để đăng nhập vào máy chủ cơ sở dữ liệu đã được giới hạn quyền. Đảm bảo rằng máy chủ cơ sở dữ liệu đã được sao lưu, bảo trì và bảo vệ giống như cách bảo vệ các máy chủ khác trong mạng. Ghi lại thông tin các hoạt động quan trọng (logging) Giống như việc ghi lại các hoạt động trên máy chủ web (logging), việc ghi lại các hoạt động quan trọng cũng như các lỗi và các ngoại lệ (exception) trong ứng dụng web là cực kỳ cần thiết. Những thông tin này sẽ rất hữu dụng trong trường hợp ứng dụng xảy ra lỗi hay bị tấn công, những thông tin này sẽ được tổng hợp và phân tích để giúp tìm ra nguyên nhân của vấn đề, từ đó đưa ra cách giải quyết để tránh các vấn đề đó lặp lại. Các thông tin này cũng cần được lưu trữ ở những nơi an toàn và chỉ cho phép những người có thẩm quyền mới được truy cập vào. Bảo mật Web Client Mặc dù có thể tạo ra một kênh kết nối thông tin an toàn giữa client và máy chủ thông qua việc sử dụng SSL để bảo mật và chứng thực thông tin, nhưng không phải tất cả các vấn đề bảo mật đã được giải quyết hết, đặc biệt là các vấn đề về tính riêng tư (privacy and anonymity). Giả mạo web (Web Spoofing) Web spoofing là một dạng lừa đảo (phishing). Kẻ tấn công tạo ra một bản sao của một trang web nào đó nhằm kiểm soát thông tin giữa web client và web browser của nạn nhân nhằm lấy thông tin cá nhân hoặc các thông tin nhạy cảm khác. Hình 2.23 Giả mạo web Kẻ tấn công có thể lừa nạn nhân vào trang web giả mạo bằng các cách sau: Đặt một liên kết đến trang web giả mạo trên một trang web nổi tiếng. Gửi email đến nạn nhân và dẫn nạn nhân đến trang web giả mạo. Dùng các công cụ tìm kiếm để đưa nạn nhân đến trang web giả mạo. Lợi dụng các lỗi khi gõ địa chỉ vào trình duyệt của người dùng, ví dụ: MICR0SOFT.COM, gooogle.com.. để dẫn nạn nhân đến trang web giả mạo. Giao diện của trang web giả mạo rất giống với trang gốc vì vậy rất khó để người dùng có thể nhận biết đó là một trang web giả mạo. Cách đơn giản nhât là xem nguồn của trang web trả về. Vài trang web giả mạo còn sử dụng SSL để thiết lập kết nối đến trang web giả mạo của mình, người dùng có thể bị mắc bẩy nếu không kiểm tra thông tin về chứng nhận SSL và dễ dàng tin rằng một kết nối an toàn đã được thiết lập giữa trình duyệt của người dùng và máy chủ thật. Chứng thực giả có thể rất giống với chứng thực của trang web thực, tên có thể chứa một vài lỗi chính tả rất khó phân biệt. Sự vi phạm tính riêng tư Thông tin riêng của người dùng có thể bị lộ trong quá trình truy cập thông qua: Referer header: như đã được đề cập ở phần trên, trường referer trong HTTP header có thể tiết lộ thông tin riêng tư của người dùng. Cookies là một phần mở rộng của HTTP, dùng lưu trữ thông tin trạng thái trên máy người dùng khi viếng thăm một trang web. Sử dụng cookies giúp web máy chủ có thể lưu lại các thông tin liên quan đến người dùng như các thông tin các sản phẩm trong giỏ hàng đang mua… để máy chủ web có thể sử dụng lại trong những lần viến thăm sau. Một vài website sử dụng cookies để lưu lại thông tin đăng nhập và một vài thông tin khác về người dùng để giúp máy chủ web nhận ra được người dùng trong những lần viếng thăm tiếp theo. Điều này sẽ rất nguy hiểm nếu như kẻ tấn công xâm nhập vào hệ thống và lấy các thông tin cá nhân từ trong cookies. Một mối nguy cơ khác từ cookies là các trang website xấu có thể sử dụng cookies để đếm số lượt truy cập của người dùng vào website đó và có thể sử dụng thông tin này để phục vụ cho nhiều mục đích khác nhau như quảng cáo… Nếu thông tin trong cookies không được bảo mật, người dùng có thể thay đổi các giá trị trong cookies. Để có thể bảo mật những thông tin cá nhân và thông tin nhạy cảm trong cookies, các máy chủ web có thể sử dụng kỹ thuật chữ ký điện tử hoặc mã hóa thông tin trong cookies để xác thực và bảo mật thông tin trong cookies. Log file: mỗi khi trình duyệt người dùng tải về một trang web từ máy chủ web, một bản ghi thông thông tin sẽ được lưu lại trong tệp tin nhật ký (log file) trên máy chủ web. Bản ghi này bao gồm thông tin về địa chỉ IP, thời gian, URI và một vài thông tin khác. Những thông tin này có thể bị lạm dụng cho các mục đích khác nhau vi phạm quyền riêng tư của người dùng. Lướt web ẩn danh (Anonymous Browsing) Lướt web ẩn danh là kỹ thuật giúp người dùng có thể ẩn các thông tin về địa chỉ IP cũng như các thông tin cá nhân, riêng tư khác của mình trong quá trình duyệt web. Để làm được điều này người dùng có thể sử dụng một trong các cách sau: Sử dụng một proxy server tin cậy: người dùng có thể lướt web thông qua một proxy server để ẩn đi địa chỉ IP của mình với máy chủ web. Hình 2.24 Sử dụng máy chủ proxy tin cậy để lướt web ẩn danh Sử dụng các dịch vụ lướt web ẩn danh: sử dụng các dịch vụ lướt web ẩn danh trên mạng cũng tương tự như sử dụng thông qua một proxy server ngoại trừ việc sẽ không có một thông tin nào được lưu lại trên hệ thống của dịch vụ. Cổng thanh toán điện tử Cổng thanh toán điện tử (Payment Gateways) Cổng thanh toán điện tử là dịch vụ cho phép thanh toán trực tuyến ở các website thương mại điện tử. Nó tương tự như một POS khi thanh toán online. Cổng thanh toán điện tử cho phép mã hóa các thông tin nhạy cảm như số thẻ tín dụng, để đảm bảo thông tin có thể bảo mật và giao dịch thuận tiện giữa người bán và người mua. Đơn giản hơn, cổng thanh toán điện tử là công cụ nối liền website thương mại điên tử của bạn với tài khoản của người bán hàng. Cổng thanh toán điện tử đơn giản chỉ có chức năng thanh toán, tuy nhiên rất nhiều nhà cung cấp dịch vụ gateway đã cung cấp thêm các tiện ích kèm theo như giỏ mua hàng (shopping carts)… Hoạt động của cổng thanh toán điện tử Hình 2.25 Hoạt động của cổng thanh toán điện tử Khi một người mua đặt lệnh mua một đối tượng sản phẩm tại cổng thanh toán điện tử trên website, cổng thanh toán điện tử sẽ xử lý một lọat các tiến trình thanh toán ngầm bên trong như sau: Khách hàng đặt lệnh bằng cách nhập thông tin trên thẻ tín dụng và bấm vào nút ví dụ như "Xác nhận mua" trên website. Thông tin sẽ được mã hóa và chuyển từ Trình duyệt của khách hàng đến máy chủ web của người bán, để thực hiện được tiến trình này, bắt buộc máy chủ phải được hỗ trợ bởi tính năng mã hóa SSL (Secure Socket Layer). Người bán sẽ chuyển các thông tin giao dịch đó cho cổng thanh toán điện tử (thường là tự động). Đó lại là một tiến trình thực hiện mã hóa SSL khác của máy chủ cổng thanh toán điện tử. Cổng thanh toán điện tử sẽ nhận thông tin chi tiết về giao dịch đó và chuyển nó cho trung tâm xử lý tại ngân hàng của người bán. Trung tâm xử lý này sẽ chuyển thông tin giao dịch tới trung tâm thanh toán của CreditCard đó (Visa/Master) Trong trường hợp là thẻ American Express hay Discover Card, thì Amex và Dis kiêm luôn vai trò của acquiring bank và trực tiếp xử lý lệnh từ cổng thanh toán điện tử (gộp 2 bước vào 1). Trung tâm thanh toán thẻ sẽ chuyển thông tin giao dịch tới ngân hàng phát hành thẻ. Ngân hàng phát hành thẻ sẽ kiểm tra tính sở hữu và gửi thông tin phản hồi tới cổng thanh toán điện tử theo tiến trình ngược lại một mã phản hồi. Mã phản hồi đó cung cấp thông tin như chấp nhận hay không chấp nhận, lý do trong trường hợp không chấp nhận (như không đủ tiền, hay ko liên kết được với tài khoản ngân hàng .v.v.) Cổng thanh toán điện tử nhận mã phản hồi này và chuyển nó tới website và thể hiện bằng một thông báo dễ hiểu đối với người mua và bán. Tất cả các công việc đó chỉ diễn ra trong vòng 2-3 giây. Người bán sau đó phải chuyển hàng hoặc đáp ứng lệnh bán trước khi được quyền yêu cầu một lệnh hoàn thành giao dịch. Sau đó người bán nhập các thông tin cần thiết về việc đáp ứng lệnh bán và lưu vào một "batch" để gửi tới acquiring bank để hoàn thành giao dịch. Acquiring bank sau đó sẽ nạp tiền vào một tài khoản người bán chỉ định. Tiến trình từ việc yêu cầu lệnh đến khi hoàn thành giao dịch tiền về tài khoản cuối cùng mất chừng 3 ngày (trung bình). Các cổng thanh toán điện tử thường cung cấp sẵn các form, các công cụ tự động tính thuế và tự động hoàn thành hồ sơ gửi tới trung tâm xử lý. Đặc biệt là các công cụ chống giả mạo như geolocation, velocity pattern analysis, delivery address verification, computer finger printing technology, idenity morphing detection, AVS checks. Bảo mật trong hệ thống cổng thanh toán điện tử Mã số bảo mật thẻ (Card Security Code) Mã số bảo mật thẻ (Card Security Code) viết tắt là CSC đôi khi được gọi là giá trị xác minh thẻ (Card Verification Value) viết tắt là CVV hay mã số xác minh thẻ (Card Verification Code) viết tắt là CVC là một tính năng bảo mật cho thẻ ghi nợ hoặc thẻ tín dụng nhằm chống lại thẻ tín dụng gian lận. Mã số này chỉ có người chủ thẻ và ngân hàng phát hành thẻ biết, bởi vậy nó gần giống như mã PIN. Thật ra có đến vài loại mã số bảo mật thẻ: Loại mã số đầu tiên được gọi là CVV1 hay CVC1 được mã hóa trên sọc từ tính của thẻ dùng cho các giao dịch trực tiếp bằng thẻ. Loại mã số thứ hai được gọi là CVV2 hay CVC2 thường được yêu cầu khi thực hiện các giao dịch gián tiếp (card not present) như các giao dịch trên Internet, thư điện tử, điện thoại hay fax. CVV2 là một dãy số gồm 3 hay 4 chữ số được in chìm trên thẻ ở mặt trước hoặc ngay phía sau dãy từ chứa chữ ký. Đối với thẻ tín dụng hay thẻ ghi nợ của MasterCard, Visa, Diners Club, Discover, và JCB, dãy số này được in ngay phía sau bảng chữ ký và được gọi là "CVC2" (card validation code), "CVV2" (card verification value), "CVV", hay "CID" (card identification number). Đối với thẻ American Express, dãy số này được in chìm ở mặt trước , bên trên số thẻ. Dãy số CVC được tạo ra khi thẻ được cấp phát bằng cách dùng hàm băm có mã (keyed hash) để băm số thẻ và ngày hết hạn của thẻ với khóa của ngân hàng phát hành. Cung cấp thông tin này trong quá trình giao dịch để nhằm kiểm tra rằng khách hàng đã từng nhìn thấy thẻ. Yêu cầu khách hàng cung cấp CVV2 sẽ giúp tạo thêm một mức bảo vệ rủi ro cho các ngân hàng và chủ thẻ. Thông tin CVV2 được chủ thẻ cung cấp trong quá trình thực hiện giao dịch chỉ nhằm mục đích kiểm tra và xác thực thông tin, và người bán hàng sẽ không được lưu lại thông tin này vào cơ sở dữ liệu của mình. Mục đích của việc này là nhằm bảo vệ trong trường hợp cơ sở dữ liệu của người bán hàng bị rò rỉ thông tin, bởi vì không có CVC nên mã số thẻ bị đánh cắp sẽ không thể sử dụng được. CVV2 cũng còn một vài hạn chế: CVV2 không thể giúp chống lại các âm mưu lừa đảo (phishing) qua mạng. Nếu bằng một cách nào đó kẻ lừa đảo biết được số tài khoản thẻ của người dùng (như bằng cách tấn công cơ sở dữ liệu của người bán), đưa thông tin này cho nạn nhân bằng cách gửi email cho nạn nhân và hỏi nạn nhân về CVV2, nếu nạn nhân mắc bẩy và cung cấp CVV2 thì kẻ lừa đảo đã có đủ thông tin để sử dụng thẻ của nạn nhân. Bởi vì CVV2 không được phép lưu lại trong cơ sở dữ liệu của người bán hàng nên vì một lý do nào đó mà người bán hàng cần chỉnh sửa lại hóa đơn chẳng hạn sẽ không thể cung cấp lại CVV2 cho ngân hàng để thực hiện việc xác minh cho quá trình thanh toán lại. Hệ thống xác minh địa chỉ (Address Verification System) Hệ thống xác minh địa chỉ (Address Verification System) viết tắt là AVS là hệ thống dùng để xác minh, kiểm chứng chủ sở hữu thẻ tín dụng. Hệ thống sẽ kiểm tra địa chỉ của hoá đơn của thẻ tín dụng cung cấp bởi người dùng với địa chỉ được lưu trữ trong cơ sở dữ liệu của nhà cung cấp thẻ. AVS sẽ kiểm tra phần số của địa chỉ. Ví dụ nếu địa chỉ của của khách hàng là “101 Main Street, Highland, CA 92346”, AVS sẽ kiểm tra 101 và 92346. Hiện tại chỉ có một vài nước được hỗ trợ AVS trên Visa và MasterCard, đáng chú ý nhất là Mỹ, Canada và Anh. American Express hỗ trợ nhiều quốc gia hơn. Ngoài sự kiểm chứng tự đông, một vài ngân hàng còn cung cấp cho người bán những sự kiểm tra thủ công. Thường điều này được thực hiện cho tài khoản thẻ tín dụng nước ngoài như AVS chỉ làm việc trong cùng quốc gia. Phương tiện này trợ giúp người bán ngăn chặn gian lận phát sinh từ quốc gia khác. Ngân hàng của người bán gọi ngân hàng khách hàng (hoặc gửi fax cho ngân hàng đó để yêu cầu họ). Authorize.net Giới thiệu Authorize.net được thành lập năm 1996 là một cổng thanh toán điện tử cho phép những người bán hàng có thể sử dụng phương thức thanh toán bằng thẻ tín dụng trên website của mình. Authorize.net hiện có hơn 212.000 thành viên, và là cổng thanh toán điện tử lớn nhất trên thế giới. Tháng 11 năm 2007 Cybersource đã mua lại Authorize với giá 565 triệu đô. Hai phương thức tích hợp thanh toán điện tử qua Authorize.net Authorize.net cung cấp hai phương thức để tích hợp thanh toán điện tử vào trong website của người bán hàng: Phương thức thứ nhất được gọi là Simple Integration Method (SIM), với phương thức này, khi yêu cầu thanh toán, khách hàng sẻ được chuyển sang trang web của authorize.net để tiến hành cung cấp các thông tin cần thiết cho việc thanh toán. Sau khi hoàn tất quá trình thanh toán người dùng sẻ được chuyển lại trang web bán hàng. Phương thức này phù hợp cho những trang web bán hàng nhỏ. Phương thức thứ hai được gọi là Advanced Integration Method (AIM), phương thức này phức tạp hơn phương thức trên, nhưng bù lại người dùng sẻ không bị chuyển sang trang web của authorize.net mà có thể xử lý việc thanh toán trên trang web bán hàng. Sau khi thu thập đủ thông tin cho việc thanh toán, trang web bán hàng sẽ gửi một yêu cầu xác thực hay chuyển khoản lên trên trang web của authorize.net, authorize.net sẽ nhận và xử lý yêu cầu, sau đó gửi trả lại một kết quả. Trang web bán hàng sẽ nhận kết quả, và tùy theo kết quả nhận về sẽ tiến hành xử lý

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

  • docdo_an_tot_nghiep_nghien_cuu_van_de_bao_mat_trong_ung_dung_online_payment__179.doc