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

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.

 

doc128 trang | Chia sẻ: netpro | Lượt xem: 2453 | Lượt tải: 5download
Bạn đang xem trước 20 trang tài liệu Đồ án Nghiên cứu các vấn đề bảo mật trong xây dựng ứng dụng Ecommerce (Online payment), để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ậ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

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

  • docĐồ án tốt nghiệp nghiên cứu vấn đề bảo mật trong xây dựng ứng dụng Ecommerce.doc