Công ty chứng khoán không được trực tiếp nhận tiền giao dịch chứng khoán của khách hàng...” [1] Đề tài “Nghiên cứu về an ninh trong dịch vụ Web” nhằm mục đích nghiên cứu, tìm hiểu công n
Trang 1LỜI CAM ĐOAN
Tôi xin cam đoan những kết quả đạt được trong luận văn này là do tôi nghiên cứu, sưu tầm, tổng hợp và sắp xếp lại phù hợp với yêu cầu của luận văn
Toàn bộ những điều được trình bày trong luận văn hoặc là của cá nhân, hoặc được tham khảo và tổng hợp từ các nguồn tài liệu khác nhau Tất cả tài liệu tham khảo, tổng hợp đều được trích dẫn với nguồn gốc rõ ràng Toàn bộ chương trình, mã nguồn
là do tôi thiết kế và xây dựng, không sao chép của bất kỳ ai và chưa được công bố trên bất kỳ phương tiện nào
Tôi xin chịu hoàn toàn trách nhiệm về lời cam đoan của mình Nếu có điều gì sai trái, tôi xin chịu mọi hình thức kỷ luật theo qui định
Hải Phòng, tháng 5 năm 2009
Học viên
Lương Thanh Nhạn
Trang 2LỜI CẢM ƠN
Trước hết tôi xin được bày tỏ sự trân trọng và lòng biết ơn đối với thầy giáo TS Trương Ninh Thuận, giảng viên Bộ môn Công nghệ phần mềm, Khoa Công nghệ thông tin, Trường Đại học Công nghệ, Đại học Quốc Gia Hà Nội Trong suốt thời gian học và làm luận văn tốt nghiệp, Thầy đã dành rất nhiều thời gian quí báu để tận tình chỉ bảo, hướng dẫn cho tôi các bước nghiên cứu và thực hiện luận văn
Tôi xin được gửi lời cảm ơn sâu sắc tới các thầy cô giáo đã tận tình giảng dạy trong suốt quá trình học tập, đọc và nhận xét luận văn giúp cho tôi hiểu thấu đáo hơn lĩnh vực tôi đang nghiên cứu
Tôi xin bày tỏ lòng cảm ơn chân thành tới các bạn bè, đồng nghiệp của trường Cao đẳng công nghệ Viettronics và toàn thể các thành viên của lớp K13T4 đã tạo mọi điều kiện thuận lợi trong quá trình học tập
Cuối cùng, tôi xin dành một tình cảm biết ơn tới những thành viên trong gia đình Những người đã luôn ở bên cạnh tôi, giúp đỡ, động viên về mọi mặt trong suốt thời gian theo học cao học cũng như quá trình thực hiện luận văn
Hải Phòng, tháng 5 năm 2009
Học viên
Lương Thanh Nhạn
Trang 3MỤC LỤC
LỜI CAM ĐOAN 3
LỜI CẢM ƠN 4
MỤC LỤC 5
BẢNG CÁC CHỮ VIẾT TẮT 7
DANH MỤC CÁC HÌNH VẼ/BẢNG 8
MỞ ĐẦU 9
Chương 1 MÔ TẢ BÀI TOÁN 11
1.1 Tính cấp thiết 11
1.2 Bài toán nghiệp vụ 12
Chương 2 SOA VÀ DỊCH VỤ WEB 13
2.1 Dịch vụ 13
2.2 Kiến trúc hướng dịch vụ - SOA 13
2.2.1 Mô hình SOA 15
2.2.2 Ưu, nhược điểm của SOA 16
2.2.3 Lợi ích khi sử dụng SOA 17
2.3 Công nghệ Web service 18
2.3.1 Định nghĩa 18
2.3.2 Đặc điểm 18
2.3.3 Kiến trúc của dịch vụ Web 19
2.3.4 Các thành phần được sử dụng trong dịch vụ Web 21
2.3.4.1 XML – eXtensible Markup Language 21
2.3.4.2 SOAP - Simple Object Access Protocol 22
2.3.4.3 WSDL - Web Services Description Language 23
2.3.4.4 UDDI – Universal Description, Discovery and Integration 25
2.3.5 Xây dựng một dịch vụ Web 26
2.3.6 Tích hợp dịch vụ Web theo chuẩn 27
2.4 SOA và dịch vụ Web 29
Chương 3 CÁC KỸ THUẬT ĐẢM BẢO AN NINH DỊCH VỤ WEB 30
3.1 SAML -Security Assertion Markup Language 30
3.2 Giao thức Kerberos 30
3.3 Chứng chỉ số 31
3.3.1 Chứng chỉ số là gì? 31
3.3.2 Những lợi ích khi sử dụng chứng chỉ số 32
Trang 43.3.3 Quá trình hoạt động của chứng chỉ số 33
3.3.4 Chứng nhận X.509 34
3.4 Cấu trúc của giao thức bảo mật SSL 35
3.4.1 SSL Record Protocol 38
3.4.2 SSL Handshake Protocol 40
3.5 Giao thức HTTPS 45
3.5.1 HTTPS là gì? 45
3.5.2 Triển khai HTTPS cho Web server 46
3.6 An ninh dịch vụ Web 53
3.6.1 Đặc điểm của An ninh dịch vụ Web 56
3.6.2 Web Services Enhancements - WSE 57
Chương 4 XÂY DỰNG HỆ THỐNG VÀ ĐÁNH GIÁ KẾT QUẢ 58
4.1 Mô tả hệ thống cần xây dựng 58
4.1.1 Hoạt động đăng ký tài khoản 58
4.1.2 Hoạt động đăng nhập tài khoản 59
4.1.3 Hoạt động giao dịch 59
4.2 Giải pháp thực hiện 59
4.2.1 Các tiêu chí cho giải pháp kết nối 59
4.2.2 Giải pháp 60
4.3 Triển khai hệ thống và đánh giá kết quả 61
4.3.1 Lựa chọn ngôn ngữ lập trình 61
4.3.2 Triển khai hệ thống 62
4.3.2.1 Kiến trúc tổng quát 62
4.3.2.2 Mô hình triển khai 62
4.3.3 Các chức năng chính của hệ thống 63
4.3.3.1 Đăng ký tài khoản ngân hàng mới 63
4.3.3.2 Hiển thị thông tin trang chủ 64
4.3.3.3 Đăng nhập hệ thống 65
4.3.3.4 Hiển thị thông tin tài khoản 65
4.3.3.5 Đăng ký tài khoản mới 64
4.3.4 Đánh giá kết quả thử nghiệm chương trình 66
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 69
TÀI LIỆU THAM KHẢO 71
Trang 5BẢNG CÁC CHỮ VIẾT TẮT
NSIIOP Name Service Internet Inter-Orb Protocol)
Oasis Organization for the Advancement of Structured Information Standards
TCP/IP Transmission Control Protocol/Internet Protocol
UDDI Universal Description, Discovery, and Integration
Web APIs Web Advanced Papyrological Information System
Trang 6DANH MỤC CÁC HÌNH VẼ/BẢNG
Hình 4.4 Giao diện đăng ký tài khoản ngân hàng 65 Hình 4.5 Giao diện hiển thị thông tin trang chủ 64 Hình 4.6 Giao diện đăng ký tài khoản chứng khoán 64
Hình 4.8 Giao diện hiển thị tài khoản cá nhân 66
Trang 7MỞ ĐẦU
Hiện nay, công nghệ web services đã và đang được triển khai, ứng dụng trong rất nhiều lĩnh vực khác nhau bao gồm cả những lĩnh vực nhạy cảm , đòi hỏi tính an toàn cao như tài chính , ngân hàng, quân sự,… và nó đã mang l ại nhiều thành quả , lợi ích to lớn cho các tổ chức , doanh nghiệp, tập thể, các cá nhân, Bên cạnh mặt được của công nghệ web services thì việc đảm bảo sự an toàn, tin cậy, toàn vẹn, của thông tin trao đổi trên web services là một điều rất quan trọng Bởi chúng ta không thể yên tâm, tin tưởng để sử dụng dịch vụ thương mại như mua chứng khoán hay chuyển tiền trực tuyến mà lại không có một sự an toàn cần thiết
Kinh doanh chứng khoán là một hoạt động diễn ra rất phổ biến hiện nay, trong một bộ phận xã hội không nhỏ, nhưng công việc giao dịch hiện nay vẫn chủ yếu là bằng tiền mặt, công việc này làm mất nhiều thời gian và công sức cũng như làm hạ thấp tính chính xác và bảo mật về thông tin cá nhân của nhà đầu tư Đồng thời, theo
Quy định của Bộ Tài chính ban hành ngày 24 tháng 4 năm 2007 thì “ Công ty chứng khoán phải quản lý tiền gửi giao dịch chứng khoán của khách hàng tách biệt khỏi tiền của chính công ty chứng khoán Công ty chứng khoán không được trực tiếp nhận tiền giao dịch chứng khoán của khách hàng ” [1]
Đề tài “Nghiên cứu về an ninh trong dịch vụ Web” nhằm mục đích nghiên cứu, tìm hiểu công nghệ web services, các vấn đề bảo mật liên quan và sử dụng chúng để giải quyết bài toán “Kết nối ngân hàng với công ty chứng khoán” một cách an toàn, hiệu quả nhằm tạo điều kiện thuận lợi cho việc giao dịch chứng khoán và giúp cho các thông tin được minh bạch
Kết quả chính đạt được của luận văn:
- Nghiên cứu về các vấn đề: kiến trúc hướng dịch vụ, công nghệ Web services và các kỹ thuật đảm bảo an ninh Web services, nội dung bài toán “Kết nối ngân hàng với công ty chứng khoán” và hướng giải quyết bài toán
- Phát triển chương trình “Giao dịch chứng khoán thông qua tài khoản ngân hàng” với các chức năng cơ bản: đăng ký tài khoản chứng khoán mới, đăng nhập
để mua/bán cổ phiếu và tích hợp các kỹ thuật đảm bảo an ninh cho hệ thống
Nội dung chính của luận văn gồm 4 chương:
Chương 1 Mô tả bài toán Bài toán “Giải pháp kết nối ngân hàng với công ty chứng khoán” đòi hỏi
sự đồng bộ về thông tin giữa ngân hàng và công ty chứng khoán, cho phép thực hiện các giao dịch đối với tài khoản của nhà đầu tư
Trang 8Chương 2 SOA và dịch vụ Web Giới thiệu về kiến trúc hướng dịch vụ, ưu nhược điểm cũng như đặc điểm của SOA, tìm hiểu về dịch vụ Web, các thành phần cấu thành nên dịch vụ Web
và một vài đặc điểm cơ bản của nó
Chương 3 Các kỹ thuật đảm bảo an ninh dịch vụ Web
Trình bày về các kỹ thuật đảm bảo an ninh dịch vụ Web như là công nghệ bảo mật SSL và các thành phần của nó, chứng chỉ số, giao thức Kerberos, giao thức https, và các tiêu chí đảm bảo an toàn cho Web services
Chương 4 Xây dựng hệ thống và đánh giá kết quả
Trình bày các tiêu chí và các tính năng cơ bản của giải pháp từ đó đưa ra giải pháp thực hiện Phân tích và lựa trọn ngôn ngữ, triển khai chương trình theo chức năng chính của hệ thống và đánh giá kết kết quả
Cuối cùng là kết luận và hướng phát triển tiếp theo của đề tài
Trang 9Nhằm bảo vệ nhà đầu tư, tạo sự công bằng cho các công ty chứng khoán, thống nhất cơ chế quản lý vĩ mô và hướng tới một nền tài chính không tiền mặt tại Việt Nam Ngày 20/11/2007, Ủy ban Chứng khoán Nhà nước ra thông báo về việc thực hiện quản
lý tiền gửi giao dịch chứng khoán của người đầu tư theo quy định của Quyết định 27/2007/QĐ-BTC Trong Quyết định 27/2007/QĐ-BTC có nội dung:
“ Điều 32 Quản lý tiền và chứng khoán của khách hàng
1 Quản lý tiền của khách hàng:
a) Công ty chứng khoán phải quản lý tiền gửi giao dịch chứng khoán của khách hàng tách biệt khỏi tiền của chính công ty chứng khoán Công ty chứng khoán không được trực tiếp nhận tiền giao dịch chứng khoán của khách hàng;
b) Khách hàng của công ty chứng khoán phải mở tài khoản tiền tại ngân hàng thương mại do công ty chứng khoán lựa chọn ” [1]
Vậy là, các công ty chứng khoán không được trực tiếp nhận tiền mà phải ủy quyền cho một ngân hàng thương mại quản lý tiền của nhà đầu tư Nhà đầu tư mở tài khoản tại ngân hàng thương mại do công ty chứng khoán lựa chọn
Quy định trên đem lại sự an toàn về tiền gửi cho khách hàng khi công ty chứng khoán gặp những khó khăn trong hoạt động kinh doanh, đồng thời đảm bảo lợi ích về lãi suất, khả năng thanh toán, cho nhà đầu tư Điều này có nghĩa là nhà đầu tư nộp tiền, rút tiền tại ngân hàng và thực hiện việc giao dịch chứng khoán tại các công ty chứng khoán Nhà đầu tư sẽ phải thay đổi thói quen hiện nay: mở tài khoản, nộp tiền vào tài khoản tại sàn để có thể đặt lệnh mua cổ phiếu ngay lập tức và rút tiền bán chứng khoán ngay tại sàn giao dịch do toàn bộ tiền của khách hàng được quản lý tại công ty chứng khoán
Tuy nhiên, khi chuyển qua hình thức quản lý mới, khó khăn lớn nhất nằm ở chỗ
hệ thống thông tin của nhiều công ty chứng khoán còn chưa kết nối được với hệ thống ngân hàng Khi đó, khách hàng khi mang tiền đến gửi vào tài khoản của mình tại ngân hàng sẽ gặp khó khăn trong việc sử dụng ngay những đồng vốn đó, dẫn đến bỏ lỡ cơ hội giao dịch Bên cạnh đó, các công ty chứng khoán cũng sẽ gặp phải khó khăn khi kiểm tra tiền của khách hàng tại Ngân hàng có đủ hay không trước khi thực hiện lệnh
Trang 10mua chứng khoán Hơn nữa, một công ty chứng khoán còn phải bảo đảm kết nối được cùng lúc với nhiều ngân hàng lớn, vì đa số nhà đầu tư gửi tiền ở các ngân hàng lớn khác nhau, và ngược lại, các ngân hàng cũng mong muốn có được kết nối với nhiều công ty chứng khoán để hình thành nên mạng lưới thông suốt, tạo hiệu quả trong hoạt động
Đây là một thách thức không nhỏ với các ngân hàng, đặc biệt là các công ty chứng khoán khi thực trạng về hạ tầng công nghệ thông tin giữa các bên còn quá khác biệt, với các mức độ sẵn sàng cũng khác nhau
1.2 Bài toán nghiệp vụ
Các công ty chứng khoán cần ký kết với các ngân hàng đã lựa chọn để khi nhà đầu tư mở tài khoản có thể được cung cấp luôn tài khoản ngân hàng Dịch vụ của công
ty chứng khoán sẽ quản lý, cung cấp thông tin về cổ phiếu (tên cổ phiếu, mã cổ phiếu, đơn giá, ) và thông tin cá nhân của nhà đầu tư (tên nhà đầu tư, chứng minh thư nhân dân, địa chỉ, ) Dịch vụ của ngân hàng thì cung cấp thông tin của chủ tài khoản (tên chủ tài khoản, địa chỉ, ,số dư tài khoản)
Sau khi được cấp tài khoản chứng khoán nhà đầu tư được đăng nhập vào tài khoản và có thể thực hiện hoạt động mua/bán cổ phiếu:
- Mua: nhà đầu tư điền mã và số lượng cổ phiếu cần mua, mật khẩu tài khoản ngân hàng Nếu tổng giá trị của số lượng cổ phiếu nhà đầu tư thực hiện mua vượt quá
số dư hiện có của nhà đầu tư trong tài khoản ngân hàng thì giao dịch sẽ không được thực hiện Ngược lại sẽ tiến hành mua cổ phiếu, nếu cổ phiếu mà nhà đầu tư mua đã có trong tài khoản thì số lượng của cổ phiếu đó sẽ được cập nhật lại còn chưa có thì cổ phiếu đó sẽ được thêm mới vào tài khoản chứng khoán của nhà đầu tư và số tiền dùng
để mua cổ phiếu sẽ được trừ vào tài khoản tương ứng trong ngân hàng của nhà đầu tư
- Bán: nhà đầu tư điền mã và số lượng cổ phiếu cần bán, mật khẩu tài khoản ngân hàng Nhà đầu tư chỉ có thể thực hiện lệnh bán đối với những cổ phiếu có trong tài khoản chứng khoán của họ và số lượng cổ phiếu bán ra không được vượt quá số lượng cổ phiếu hiện có trong tài khoản Nếu thông tin hợp lệ sẽ tiến hành việc bán cổ phiếu Số tiền có được khi bán cổ phiếu sẽ được đưa vào tài khoản tương ứng trong ngân hàng của nhà đầu tư Nếu số cổ phiếu mà nhà đầu tư bán ít hơn số lượng hiện có thì thông tin số cổ phiếu sẽ được cập nhật lại còn nếu bán hết số cổ phiếu thì cổ phiếu
đã bán được xoá khỏi tài khoản chứng khoán của nhà đầu tư
Để đáp ứng được các yêu cầu của bài toán đặt ra, đặc biệt là toàn bộ các giao dịch đều được đảm bảo chính xác, an toàn cho các bên tham gia sẽ không thể không sử dụng tới các kiến thức trong lĩnh vực Công nghệ thông tin như: kiến trúc hướng dịch
vụ, dịch vụ Web và các kỹ thuật đảm bảo an ninh trong dịch vụ Web Các chương sau
sẽ lần lượt trình bày về các vấn đề đó
Trang 11Chương 2 SOA VÀ DỊCH VỤ WEB
Trong chương này, chúng ta sẽ đề cập đến Kiến trúc hướng dịch vụ cũng như
mô hình, các ưu nhược điểm của nó để từ đó tiếp tục tìm hiểu các vấn đề của công nghệ dịch vụ Web Sau đó chúng ta sẽ quan tâm đến kiến trúc dịch vụ Web và các thành phần của nó như: XML, SOAP, WSDL đặc biệt là các bước xây dựng dịch vụ Web và tích hợp chúng lại theo chuẩn
2.1 Dịch vụ
" A service is a repeatable task within a business process ” [13]
Một dịch vụ là một nhiệm vụ được thực hiện lặp đi lặp lại trong một tiến trình công việc (ví dụ: mở một tài khoản mới hay công việc kiểm tra thẻ của người truy cập
có các dịch vụ mang tính chất công cộng cho phép những người ở xa truy nhập thông qua mạng máy tính như dịch vụ thư điện tử,
SOA là một phong cách thiết kế trong lĩnh vực công nghệ thông tin, trợ giúp cho việc xây dựng các tiến trình công việc từ các dịch vụ hoặc những thành phần mô đun có thể dùng lại Các dịch vụ này hoàn toàn độc lập với các ứng dụng và phần nền của máy tính mà nó chạy trên đó
Theo IBM, SOA được định nghĩa:
“…an architectural style for creating an Enterprise IT Architecture that exploits the principles of service orientation to achieve a tighter relationship between the business and the information systems that support the business ” [13]
Trang 12SOA là một kiểu kiến trúc để tạo ra một công trình kiến trúc công nghệ thông tin, kiến trúc đó khai thác các nguyên tắc của dịch vụ định hướng để đạt được một mối quan hệ chặt chẽ giữa các công việc và các hệ thống thông tin có hỗ trợ các công việc này
Dịch vụ là yếu tố then chốt trong SOA Có thể hiểu dịch vụ như là hàm chức năng (mô-đun phần mềm) thực hiện qui trình nghiệp vụ nào đó Một cách cơ bản, SOA là tập hợp các dịch vụ kết nối “mềm dẻo” với nhau (nghĩa là một ứng dụng có thể “nói chuyện” với một ứng dụng khác mà không cần biết các chi tiết kỹ thuật bên trong), có giao tiếp (dùng để gọi hàm dịch vụ) được định nghĩa rõ ràng và độc lập với nền tảng hệ thống, và có thể tái sử dụng SOA là cấp độ cao hơn của phát triển ứng dụng, chú trọng đến qui trình nghiệp vụ và dùng giao tiếp chuẩn để giúp che đi sự phức tạp kỹ thuật bên dưới
Thiết kế SOA tách riêng phần thực hiện dịch vụ (phần mềm) với giao tiếp gọi dịch vụ Điều này tạo nên một giao tiếp nhất quán cho ứng dụng khách (client) sử dụng dịch vụ bất chấp công nghệ thực hiện dịch vụ Thay vì xây dựng các ứng dụng đơn lẻ và đồ sộ, nhà phát triển sẽ xây dựng các dịch vụ tinh gọn có thể triển khai và tái
sử dụng trong toàn bộ quy trình nghiệp vụ Điều này cho phép tái sử dụng phần mềm tốt hơn, cũng như tăng sự linh hoạt vì nhà phát triển có thể cải tiến dịch vụ mà không làm ảnh hưởng đến ứng dụng client sử dụng dịch vụ
Ưu điểm quan trọng nhất của SOA là khả năng kết nối “mềm dẻo” và tái sử dụng Các dịch vụ có thể được sử dụng với trình khách chạy trên nền tảng bất kỳ và được viết với ngôn ngữ bất kỳ (Ví dụ, ứng dụng Java có thể liên kết với dịch vụ web NET và ngược lại)
SOA dựa trên 2 nguyên tắc thiết kế quan trọng:
Chức năng cơ bản tạo nên các khối của SOA là dịch vụ Các dịch vụ khi thiết
kế phải thoả mãn đồng thời cả tính chất: tính kiên định và tính sẵn sàng Các dịch vụ (kết quả cuối cùng) được xây dựng sử dụng trong thời gian kéo dài, trong khi các dịch
vụ thành phần (thành phần cấu thành nên dịch vụ cuối cùng) lại được xây dựng để thay đổi Một kiến trúc tương liên yếu trong SOA sẽ làm cho dịch vụ trở lên mềm dẻo (dễ thay đổi để đáp ứng các yêu cầu mới của công việc), điều này là ưu điểm lớn nhất của SOA (các dịch vụ trước đây đều có tính tương liên rất cao, rất khó để có thể thay đổi
Trang 13một dịch vụ nào đó của hệ thống) Hệ thống tương liên yếu là kết quả của các tiến trình tương liên yếu (các tiến trình công việc không bị phụ thuộc vào cơ sở hạ tầng như phần cứng hay ngôn ngữ lập trình)
Vậy, ta có thể hiểu SOA là một kiển kiến trúc dễ dàng mở rộng và tích hợp Kiến trúc này bao gồm các dịch vụ được nối kết lỏng lẻo, dễ dàng sử dụng lại, có thể tương tác và không phụ thuộc vào kỹ thuật hiện thực Nếu hệ thống dự định thay đổi thường xuyên mà không quan tâm đến tốc độ thì SOA là phương cách tiếp cận tốt nhất Nó dễ dàng sử dụng lại trong tương lai và cho phép các ứng dụng tương tự được thiết kế một cách nhanh chóng
2.2.1 Mô hình SOA
a) Mô hình SOA cơ bản:
b) Mô hình SOA cấp cao:
c) Mô hình SOA đa tầng
* OOP (Object Oriented Model): mô hình hướng đối tượng
Trang 14Chúng ta có thể thấy sự ràng buộc giữa tầng trình diễn và và các đối tượng của tầng BLL (Business Logic Layer) Mã nguồn trên các thiết bị đầu cuối phải tương tác với mô hình đối tượng của tầng BLL, điều này làm tăng sự ràng buộc và yêu cầu số lượng lớn các lần gọi hàm giữa 2 tầng Khi các đối tượng của tầng BLL ở một máy trạm từ xa thì đây sẽ là một vấn đề khá khó khăn
* Mô hình SOA đa tầng
Chúng ta nhận ra ngay rằng so với mô hình OOP thì chúng ta có thêm một lớp mới là lớp Services, tầng trình diễn không còn thao tác trực tiếp lên các đối tượng của tầng BLL nữa mà thực hiện thông qua các đối tượng Service của tầng Services Các đối tượng của tầng BLL được đặt vào trong thư viện và được tầng Services đặt vào trong bộ nhớ Tầng Services và tầng BLL được đặt vào trong cùng một tiến trình, bởi vậy lời gọi hàm đến các đối tượng trong tầng BLL không hề bị quá tải
Tầng Services được coi như hộp đen với người sử dụng đầu cuối, cung cấp một lớp trừu tượng cho mô hình đối tượng, làm tập chức năng rút gọn và giảm sự trao đổi giữa các lớp
* SOA và OOP
SOA hỗ trợ việc kết nối lỏng lẻo các dịch vụ OOP dựa nhiều trên các lớp được định nghĩa sẵn khuyến khích việc kế thừa các đối tượng, kết quả là các đối tượng liên kết với nhau môt cách chặt chẽ
Dịch vụ định hướng trong SOA sử dụng các thông điệp để miêu tả thông tin về dịch vụ để thực hiện chức năng của mình OOP lại sử dụng các hàm APIs để miêu tả các đối tượng của mình
Phạm vi hoạt động của các dịch vụ trong SOA rộng lớn hơn là các đối tượng của OOP
SOA khuyến khích các dịch vụ được thiết kế phi trạng thái càng nhiều càng tốt còn OOP thì lại liên kết dữ liệu một cách logic từ đó tạo ra các đối tượng có trạng thái
2.2.2 Ưu, nhược điểm của SOA
* Ưu điểm
Trang 15Chúng ta sẽ đánh giá ưu điểm của SOA tuỳ theo các góc nhìn khác nhau nhưng cho dù theo góc nhìn nào thì nó cũng sẽ mang lại tính mềm dẻo và hiệu quả cao trong công việc với:
Hệ thống uyển chuyển và lâu dài Dễ dàng và nhanh chóng tạo ra các tiến trình công việc từ các dịch vụ đã có
Khả năng tương tác của các dịch vụ
* Nhược điểm
Hệ thống phức tạp
Khó miêu tả dữ liệu không cấu trúc trong header của message
2.2.3 Lợi ích khi sử dụng SOA
Độc lập hệ thống: những dịch vụ không phụ thuộc vào hệ thống và mạng cụ thể
Quan điểm của lĩnh vực Công nghệ thông tin:
- SOA dựa trên sự tích hợp quản lý đơn giản của các nguồn tài nguyên phân tán (vượt qua các môi trường nền khác nhau: phần cứng và ngôn ngữ lập trình), yêu cầu ít
về phần cứng, khả năng tin cậy cao, dựa trên các chuẩn và giảm chi phí cho sản phẩm
- SOA cho phép sự sử dụng lại các chương trình ứng dụng đã có sẵn với một giao diện mới mà không cần quan tâm đến các yếu tố thực hiện
- SOA cùng với chuẩn dịch vụ Web cho phép tích hợp một cách dễ dàng
- Xương sống của SOA chính là khả năng biến đổi linh hoạt không có giới hạn Quan điểm của nhà kinh doanh:
- SOA giúp nhà kinh doanh đáp ứng những yêu cầu của khách hàng rất nhanh
và hiệu quả
Trang 16- Tăng cường sự liên lạc giữa khách hàng và nhà cung cấp: cơ sở hạ tầng của ngành IT đủ để đáp ứng những nhu cầu của công việc kinh doanh
- Tăng khả năng đưa ra các quyết định đúng đắn trong quá trình kinh doanh (dựa trên quá trình tìm hiểu thông tin rất nhanh và chính xác)
- Tăng hiệu quả của người lao động
2.3 Công nghệ Web service
2.3.1 Định nghĩa
Dịch vụ web (web service) là sự kết hợp các máy tính cá nhân với các thiết bị khác, các cơ sở dữ liệu và các mạng máy tính để tạo thành một cơ cấu tính toán ảo mà người sử dụng có thể làm việc thông qua các trình duyệt mạng
" a software system designed to support interoperable machine-to-machine interaction over a network " [29]
Một dịch vụ Web được định nghĩa bởi W3C (World Wide Web Consortium) bao gồm nhiều hệ thống khác nhau, nhưng cách hiểu phổ biến được đề cập đến là mô hình khách - chủ, chúng giao tiếp qua giao thức HTTP được sử dụng trên Web Chúng như là một hệ thống phần mềm được thiết kế để hỗ trợ sự tương tác giữa các máy tính qua mạng
Dịch vụ web là tài nguyên phần mềm có thể xác định bằng địa chỉ URL (Uniform Resource Locator), thực hiện các chức năng và đưa ra thông tin người dùng yêu cầu Một dịch vụ web được tạo nên bằng cách lấy các chức năng và đóng gói chúng sao cho các ứng dụng khác dễ dàng nhìn thấy và có thể truy cập đến các dịch vụ
mà nó thực hiện, đồng thời có thể yêu cầu thông tin từ dịch vụ web khác Nó bao gồm các mô đun độc lập cho hoạt động của khách hàng, doanh nghiệp và bản thân nó được thực hiện trên server
Vậy, dịch vụ web là một giao diện trừu tượng (abstract interface) được thể hiện trong HTML, dựa trên sự tương tác của người dùng và máy chủ Web Nó là một ứng dụng phần mềm được truy xuất thông qua web bởi một ứng dụng khác
2.3.2 Đặc điểm
- Được truy xuất thông qua Web bằng cách dùng URL
- Dịch vụ Web liên lạc với thế giới bên ngoài dùng thông điệp XML gửi trực tiếp qua những giao thức Web
- Dịch vụ Web được đăng ký tại một địa chỉ cố định và được đặc tả tất cả các dịch vụ cung cấp
- Dịch vụ Web cho phép client và server tương tác được với nhau ngay cả trong những môi trường khác nhau Ví dụ, đặt web server trên một máy chủ chạy hệ điều
Trang 17hành Linux trong khi người dụng sử dụng máy tính chạy hệ điều hành Windows, ứng dụng vẫn có thể chạy và xử lý bình thường mà không cần thêm yêu cầu đặc biệt để tương thích giữa hai hệ điều hành này
- Phần lớn kỹ thuật của web service được xây dựng dựa trên mã nguồn mở và được phát triển từ các chuẩn đã được công nhận, ví dụ như XML
- Một Dịch vụ Web bao gồm có nhiều mô đun và có thể công bố lên mạng Internet
- Là sự kết hợp của việc phát triển theo hướng từng thành phần với những lĩnh vực cụ thể và cơ sở hạ tầng Web, đưa ra lợi ích cho cả doanh nghiệp, khách hàng, những nhà cung cấp khác và cả những cá nhân thông qua Internet
- Một ứng dụng khi được triển khai sẽ hoạt động theo mô hình client – server
Nó có thể được triển khai bởi một phần mềm ứng dụng phía server, ví dụ như PHP, Oracle Application server hay Microsoft.Net …
- Ngày nay dịch vụ Web đang rất phát triển, những lĩnh vực trong cuộc sống có thể áp dụng và tích hợp dịch vụ Web là khá rộng như dịch vụ chọn lọc và phân loại tin tức (hệ thống thư viện có kết nối đến web portal để tìm kiếm các thông tin cần thiết); ứng dụng cho các dịch vụ du lịch (cung cấp giá vé, thông tin về địa điểm…); các đại lý bán hàng qua mạng, thông tin thương mại như giá cả, tỷ giá hối đoái, đấu giá qua mạng…hay dịch vụ giao dịch trực tuyến
- Các ứng dụng có tích hợp dịch vụ Web đã không còn xa lạ, đặc biệt trong thương mại điện tử đang bùng nổ và phát triển không ngừng cùng với sự lớn mạnh của Internet
2.3.3 Kiến trúc của dịch vụ Web
Dịch vụ Web là hệ thống phần mềm được thiết kế để hỗ trợ cho việc thao tác giữa các thành phần (giữa một thiết bị đầu cuối này đến một thiết bị đầu cuối khác thông qua mạng máy tính) Khả năng thao tác này được thực hiện thông qua các chuẩn
mở dựa trên XML như WSDL, SOAP và UDDI [12, 21] Những chuẩn này cung cấp một cách tiếp cận chung cho việc định nghĩa, xuất bản và sử dụng dịch vụ Web
Trang 18- UDDI (Universal Description, Discovery, and Integration) Hình 2.1 mô tả chồng giao thức của dịch vụ Web, trong đó UDDI được sử dụng để đăng ký và khám phá dịch vụ Web đã được miêu tả cụ thể trong WSDL Giao tác UDDI sử dụng SOAP
để nói chuyện với UDDI server, sau đó các ứng dụng SOAP yêu cầu một dịch vụ Web Các thông điệp SOAP được gửi đi chính xác bởi HTTP và TCP/IP
Chồng giao thức của dịch vụ Web là tập hợp các giao thức mạng máy tính để định nghĩa, xác định vị trí thi hành và tạo nên dịch vụ Web tương tác với những ứng dụng hay dịch vụ khác, chồng giao thức này có bốn phần chính:
- Dịch vụ vận chuyển (Service transport) thường dùng những công nghệ truyền tải để truyền thông điệp giữa các ứng dụng mạng, bao gồm những giao thức như HTTP, SMTP, FTP, JSM và gần đây nhất là giao thức thay đổi khối mở rộng (Blocks Extensible Exchange Protocol) nên khả năng phân tán trên diện rộng như Internet là rất thuận tiện
- Thông điệp XML: có nhiệm vụ giải mã các thông điệp theo định dạng XML để có thể hiểu được ở mức ứng dụng tương tác với người dùng Hiện tại những giao thức thực hiện nhiệm vụ này là XML – RPC (Remote Procedure Call), SOAP và REST (representational state transfer)
- Mô tả dịch vụ: được sử dụng để miêu tả các giao diện chung cho một dịch
vụ Web cụ thể WSDL thường được sử dụng cho mục đích này, nó là một ngôn ngữ
mô tả giao tiếp và thực thi dựa trên XML
- Khám phá dịch vụ: tập trung dịch vụ vào trong một nơi được đăng ký, từ đó giúp một dịch vụ Web có thể dễ dàng khám phá ra những dịch vụ nào đã có trên mạng, tốt hơn trong việc tìm kiếm những dịch vụ khác để tương tác Một dịch vụ Web cũng phải tiến hành đăng ký để các dịch vụ khác có thể truy cập, và giao tiếp Hiện tại UDDI API thường được sử dụng để thực hiện công việc này
Trong đó, tầng giao thức tương tác dịch vụ (Service Communication Protocol) với công nghệ chuẩn là SOAP là giao thức nằm giữa tầng vận chuyển vào tầng mô tả thông tin về dịch vụ, cho phép người dùng triệu gọi một dịch vụ từ xa thông qua một
WEB SERVICES
UDDI (discovery) WSDL (description) SOAP (Simple Object Access Protocol) HTTP (transport application protocol) TCP/IP (transport protocol) Hình 2.1: Chồng giao thức của web service
Trang 19thông điệp XML Ngoài ra, để các dịch vụ có tính an toàn, toàn vẹn và bảo mật thông tin, trong kiến trúc dịch vụ Web, chúng ta có thể thêm các tầng Policy, Security, Transaction, Management
2.3.4 Các thành phần được sử dụng trong dịch vụ Web
Các thành phần thường được sử dụng trong dịch vụ Web thường bao gồm: XML, SOAP, WSDL
2.3.4.1 XML – eXtensible Markup Language
Là một chuẩn mở do W3C (World Wide Web Consortium) đưa ra cho cách thức mô tả dữ liệu, nó được sử dụng để định nghĩa các thành phần dữ liệu trên trang web và cho những tài liệu doanh nghiệp với doanh nghiệp Về hình thức, XML hoàn toàn có cấu trúc thẻ giống như ngôn ngữ HTML nhưng HTML định nghĩa thành phần được hiển thị như thế nào thì XML lại định nghĩa những thành phần đó chứa cái gì Với XML, các thẻ có thể được lập trình viên tự tạo ra trên mỗi trang web và được chọn
là định dạng thông điệp chuẩn bởi tính phổ biến và hiệu quả của mã nguồn mở
Do dịch vụ Web là sự kết hợp của nhiều thành phần khác nhau nên nó sử dụng các tính năng và đặc trưng của các thành phần đó để giao tiếp XML là công cụ chính
để giải quyết vấn đề này và là kiến trúc nền tảng cho việc xây dựng một dịch vụ Web, tất cả dữ liệu sẽ được chuyển sang định dạng thẻ XML Khi đó, các thông tin mã hóa
sẽ hoàn toàn phù hợp với các thông tin theo chuẩn của SOAP hoặc XML – RPC và có thể tương tác với nhau trong một thể thống nhất
Service Communication Protocol
SOAP
Transport HTTP JMS SMTP
Policy Security
Transaction Management
Hình 2.2: Kiến trúc sâu hơn của Web service
Trang 202.3.4.2 SOAP - Simple Object Access Protocol
SOAP là giao thức được dịch vụ Web sử dụng để truyền dữ liệu qua internet
SOAP = XML + một giao thức có thể hoạt động trên Internet (HTTP, FTP, SMTP, )
Khi tìm thấy dịch vụ thì làm thế nào để truy xuất được chúng? Các dịch vụ Web
có thể truy xuất bằng giao thức SOAP Nói cách khác chúng ta có thể truy xuất đến UDDI Registry bằng các lệnh gọi hoàn toàn theo định nghĩa của SOAP
SOAP là một giao thức giao tiếp có cấu trúc như XML Nó được xem như là xương sống của các ứng dụng phân tán được xây dựng từ nhiều ngôn ngữ và hệ điều hành khác nhau SOAP là giao thức thay đổi các thông điệp dựa trên XML qua mạng máy tính, thông thường sử dụng giao thức HTTP
Một client sẽ gửi thông điệp yêu cầu tới server và ngay lập tức server sẽ gửi những thông điệp trả lời tới client Cả SMTP và HTTP đều là giao thức ở lớp ứng dụng của SOAP nhưng HTTP được sử dụng và chấp nhận rộng rãi hơn bởi ngày nay
nó có thể làm việc rất tốt với cơ sở hạ tầng Internet
Thông điệp theo đinh dạng SOAP là một văn bản XML bình thường bao gồm các phần tử sau:
- Phần tử gốc – envelop: phần tử bao trùm nội dung thông điệp, khai báo văn bản như là một thông điệp SOAP
- Phần tử đầu trang – header: chứa các thông điệp tiêu đề cho trang, phần tử này không bắt buộc khai báo trong văn bản Header còn có thể mang những dữ liệu chứng thực, những chữ ký số, thông tin mã hóa hay cài đặt cho các giao dịch khác
- Phần tử khai báo nội dung chính trong thông điệp – body: chứa các thông tin yêu cầu và thông tin được phản hồi
- Phần tử đưa ra các thông tin về lỗi – fault: cung cấp thông tin lỗi xảy ra trong quá trình xử lý thông điệp
SOAP envelope – Phần tử gốc Header – Phần tử đầu trang
Body – Phần tử khai báo nội dungFault – Đưa ra thông tin lỗi
Hình 2.3 : Cấu trúc thông điệp SOAP
Trang 21Một SOAP đơn giản trong body sẽ lưu thông tin về các thông điệp, tham chiếu tới một thể hiện của dịch vụ, một hoặc nhiều tham số Có 3 kiểu thông báo sẽ được đưa ra khi truyền tin: request message (tham số gọi thực thi một thông điệp), response message (các tham số trả về, được sử dụng khi yêu cầu được đáp ứng) và cuối cùng là fault message (thông báo tình trạng lỗi)
Có 2 kiểu truyền thông:
- Remote procedure call (RPC): cho phép gọi hàm hoặc thủ tục qua mạng Kiểu này được khai thác bởi nhiều dịch vụ Web
- Document: được biết đến như kiểu hướng thông điệp, nó cung cấp giao tiếp
ở mức trừu tượng thấp, khó hiểu và yêu cầu lập trình viên mất công sức hơn
Hai kiểu truyền thông này cung cấp các định dạng thông điệp, tham số, lời gọi đến các API khác nhau nên việc sử dụng chúng tùy thuộc vào thời gian và sự phù hợp với dịch vụ Web cần xây dựng
Cấu trúc dữ liệu: Cung cấp những định dạng và khái niệm cơ bản giống như trong các ngôn ngữ lập trình khác như kiểu dữ liệu (int, string, date,…) hay những kiểu phức tạp hơn như struct, array, vector… Định nghĩa cấu trúc dữ liệu SOAP được đặt trong namespace SOAP-ENC
Mã hóa: Giả sử service rquester và service provider được phát triển trong Java, khi đó mã hóa SOAP là làm thế nào chuyển đổi từ cấu trúc dữ liệu Java sang SOAP XML và ngược lại, bởi vì định dạng cho dịch vụ Web chính là XML Bất kỳ một môi trường thực thi SOAP nào cũng phải có một bảng chứa thông tin ánh xạ nhằm chuyển đổi từ ngôn ngữ Java sang XML và từ XML sang Java - bảng đó được gọi là SOAPMappingRegistry Nếu một kiểu dữ liệu được sử dụng dưới một dạng mã hóa thì
sẽ có một ánh xạ tồn tại trong bộ đăng ký của môi trường thực thi SOAP đó
2.3.4.3 WSDL - Web Services Description Language
WSDL định nghĩa cách mô tả dịch vụ Web theo cú pháp tổng quát của XML,
bao gồm các thông tin sau:
- Tên dịch vụ
- Giao thức và kiểu mã hóa sẽ được sử dụng khi gọi các hàm của dịch vụ Web
- Loại thông tin: thao tác, tham số, những kiểu dữ liệu (có thể là giao diện của dịch vụ Web cộng với tên cho giao diện này)
Một WSDL hợp lệ gồm hai phần: phần giao diện (mô tả giao diện và phương thức kết nối) và phần thi hành mô tả thông tin truy xuất CSDL Cả hai phần này sẽ được lưu trong 2 tập tin XML tương ứng là tập tin giao diện dịch vụ và tập tin thi hành dịch vụ Giao diện của một dịch vụ Web được miêu tả trong phần này đưa ra cách thức
Trang 22làm thế nào để giao tiếp qua dịch vụ Web Tên, giao thức liên kết và định dạng thông điệp yêu cầu để tương tác với dịch vụ Web được đưa vào thư mục của WSDL
WSDL thường được sử dụng kết hợp với XML schema và SOAP để cung cấp dịch vụ Web qua Internet Một client khi kết nối tới dịch vụ Web có thể đọc WSDL để xác định những chức năng sẵn có trên server Sau đó, client có thể sử dụng SOAP để lấy ra chức năng chính xác có trong WSDL
Hình 2.4: Cấu trúc WSDL
Bề mặt Service import types message portType binding
Thực thi Service
import service port
Trang 23WSDL định nghĩa bốn kiểu thao tác mà một cổng có thể hỗ trợ :
- One-way: cổng nhận một message, message đó là message nhập
- Request-response: cổng nhận một message và gửi một message phản hồi
- Solicit-response : cổng gửi một message và nhận về một message
- Notification : cổng gửi một message, message đó là message xuất Mỗi kiểu thao tác có cú pháp biến đổi tùy theo thứ tự của các message nhập , xuất và lỗi
d Kết nối
Cách thức giao tiếp giữa client và server (HTTP, SMTP, RPC,…)
e Dịch vụ
Định nghĩa tên, các chú thích (documentation), và địa chỉ của service
2.3.4.4 UDDI – Universal Description, Discovery and Integration
Để có thể sử dụng được các dịch vụ, trước tiên client phải tìm dịch vụ, ghi nhận thông tin về cách sử dụng và biết được đối tượng nào cung cấp dịch vụ UDDI định nghĩa một số thành phần cho biết các thông tin này, cho phép các client truy tìm và nhận những thông tin được yêu cầu khi sử dụng dịch vụ Web
Cấu trúc UDDI:
- Trang trắng (white pages): chứa thông tin liên hệ và các định dạng chính yếu của dịch vụ Web, chẳng hạn tên giao dịch, địa chỉ, thông tin nhận dạng,… Những thông tin này cho phép các đối tượng khác xác định được dịch vụ
- Trang vàng (yellow pages): chứa thông tin mô tả dịch vụ Web theo những loại khác nhau Những thông tin này cho phép các đối tượng thấy được dịch vụ Web theo từng loại với nó
- Trang xanh (green pages): chứa thông tin kỹ thuật mô tả các hành vi và các chức năng của dịch vụ Web
Trang 24- Loại dịch vụ - tModel: chứa các thông tin về loại dịch vụ được sử dụng Những thông tin về dịch vụ Web được sử dụng và công bố lên mạng sử dụng giao thức này Nó sẽ kích hoạt các ứng dụng để tìm kiếm thông tin của dịch vụ Web khác nhằm xác định dịch vụ nào sẽ cần đến nó
Định nghĩa Web-based registry framework để đặc tả thông tin dịch vụ Web
- XML Schema: định nghĩa cấu trúc dữ liệu
- Tập hợp APIs: quy định các giao diện lập trình
Những UDDI registry hiện có:
- UDDI Business Registry: bộ đăng ký được bảo trì bởi Microsoft, IBM, đặc điểm của bộ đăng ký này là nó phân tán về mặt vật lý
- IBM Test Registry : bộ đăng ký cho những ngư ời phát triển để thử nghiệm công nghệ và kiểm tra những service của họ
- Private registries IBM ships: bộ đăng ký UDDI cá nhân
Với Red- path-solod, chúng ta sẽ xây dựng một dịch vụ Web mới từ trạng thái ban đầu hoặc với một dịch vụ đã có sẵn Từ đó, xây dựng định nghĩa service WSDL với các đối tượng, hàm chức năng mà chúng ta mong muốn
Nếu theo cách Blue-path-dashed, dịch vụ Web sẽ được xây dựng từ đầu hoặc
từ một định nghĩa dịch vụ WSDL Sử dụng WSDL này, xây dựng hoặc sửa đổi lại mã
để thực hiện các yêu cầu mong muốn trong dịch vụ Web
- Giai đoạn triển khai: công bố định nghĩa dịch vụ, xây dựng WSDL và triển khai mã thực thi của dịch vụ Web Triển khai dịch vụ Web tới một ứng dụng phía server, sau đó sẽ công bố dịch vụ Web trên mạng Internet để các client có thể nhìn thấy Sử dụng UDDI registry để công bố lên mạng
- Giai đoạn tiến hành: tìm kiếm và gọi thực thi dịch vụ Web bởi những người dùng muốn sử dụng dịch vụ
- Quản lý: Quản lý và quản trị dịch vụ, duy trì sự ổn định của dịch vụ, cập nhật thông tin mới, sửa lỗi khi nó xảy ra,…
Để xây dựng một dịch vụ Web, chúng ta cần hiểu được những việc phải làm và nên bắt đầu từ đâu Có 3 cách tiếp cận chủ yếu để xây dựng nên một dịch vụ Web: có
Trang 25thể từ một ứng dụng đã có (bottom-up); từ một định nghĩa dịch vụ WSDL để phát sinh một ứng dụng mới (top-down); hoặc có thể từ một nhóm các dịch vụ Web hiện có kết hợp lại với nhau để tạo nên các chức năng mới hoặc mở rộng thêm chức năng Những hướng tiếp cận này dựa trên những gì mà chúng ta đã có, tùy thuộc vào yêu cầu của hệ thống, trong đó tối đa việc sử dụng lại các chức năng, các thành phần, mô đun đã được xây dựng
Qui trình xây dựng một dịch vụ Web bao gồm các bước sau:
1 Định nghĩa, xây dựng các chức năng dịch vụ mà dịch vụ sẽ cung cấp
2 Tạo WSDL cho dịch vụ
3 Xây dựng SOAP server
4 Đăng ký WSDL với UDDI registry để cho phép các client có thể tìm thấy và truy xuất
5 Client nhận file WSDL và từ đó xây dựng SOAP client để có thể kết nối với SOAP server
6 Xây dựng ứng dụng phía client (chẳng hạn sử dụng Java, NET) và sau
đó gọi thực hiện dịch vụ thông qua việc kết nối tới SOAP server
Lựa chọn một ngôn ngữ, xây dựng các tiến trình nghiệp vụ và chúng ta bắt đầu tạo nên một dịch vụ Web như ý muốn Sau đó là cung cấp dịch vụ Web này trên Internet
2.3.6 Tích hợp dịch vụ Web theo chuẩn
Ứng dụng cơ bản của dịch vụ web là tích hợp các hệ thống và là một trong những hoạt động chính khi phát triển hệ thống Trong hệ thống này, các ứng dụng cần
SOAP Liên hệ
Tìm kiếm Đăng ký
Kết nối Hình 2.5: Mỗi liên hệ giữa các thành phần trong Web Service
Trang 26được tích hợp với cơ sở dữ liệu và các ứng dụng khác, người sử dụng sẽ giao tiếp với
cơ sở dữ liệu để tiến hành phân tích và lấy dữ liệu Trong thời gian gần đây, việc phát triển mạnh mẽ của thương mại điện tử giữa các doanh nghiệp cũng đòi hỏi các hệ thống phải có khả năng tích hợp với cơ sở dữ liệu của đối tác kinh doanh (nghĩa là tương tác với hệ thống bên ngoài – bên cạnh tương tác với các thành phần hệ thống bên trong của hệ thống trong doanh nghiệp)
Để có thể thành công với dịch vụ Web chúng ta phải quan tâm đến khá nhiều vấn đề, bao gồm việc triển khai, giám sát và tích hợp hệ thống Doanh nghiệp không những phải phát triển một ứng dụng dịch vụ Web mới mà còn phải tích hợp các ứng dụng nghiệp vụ phụ trợ của họ trong kiến trúc dịch vụ Web Cùng với việc triển khai
và tích hợp, những nhà kinh doanh và những người sử dụng kỹ thuật cũng cần có khả năng giám sát, triển khai toàn diện để đảm bảo hoạt động kinh doanh hiệu quả và tin cậy
- Giám sát: Cần hỗ trợ ở cả mức công cụ và cơ sở hạ tầng để giám sát các dịch
vụ Web chạy như thế nào qua toàn bộ mạng, từ một chi nhánh con của một công ty trên mạng tới các chi nhánh khác trong công ty hay giao tiếp với doanh nghiệp khác Kết hợp thông báo theo sự kiện với các lỗi trong luồng nghiệp vụ cho những người dùng không có kinh nghiệm giám sát dịch vụ Web và các dịch vụ kế thừa khác
- Xác định đường đi dữ liệu: Việc thiết lập đường đi của dữ liệu giữa những thành phần của dịch vụ Web hướng tới tối đa hóa khả năng sử dụng lại Nếu coi một thành phần là một đối tượng thì mỗi thể hiện của nó sẽ không quan tâm đến các thể hiện khác của cùng thành phần đó Những thể hiện của cùng một thành phần có thể dễ dàng được sử dụng lại trong các ứng dụng phân tán khác bởi vì chúng hoàn toàn độc lập và không phụ thuộc lẫn nhau
- Triển khai: Triển khai các dịch vụ Web có khả năng nâng cấp, điều khiển và cấu hình các thành phần từ xa thông qua mạng phân tán
- Quản lý: Có thể xây dựng theo kiến trúc P2P (Peer-to-Peer) Các hoạt động chính như thực thi các thành phần, định tuyến dữ liệu, xử lý luồng công việc và chuyển đổi dữ liệu được thực hiện tại các điểm cuối của mạng Máy chủ sẽ tập trung giải quyết các hoạt động khác như quản lý, điều khiển sự kiện, chứng thực bảo mật và quản trị
- Cấu hình và quản lý phiên: Sử dụng các công cụ linh hoạt để quản lý các phiên bản khác nhau của dịch vụ Web, cho phép các phiên bản được nâng cấp và điều khiển từ một công cụ quản lý tập trung Kết hợp giữa ứng dụng và mạng giúp các kỹ
sư triển khai có thể điều khiển các thành phần chạy trên nền tảng hệ thống phần cứng
cụ thể bên trong mạng
Trang 27- Bảo mật: các chuẩn mở như HTTP, XML, SOAP, WSDL và chuẩn bảo mật JSM được sử dụng rộng rãi khiến chúng trở thành lý tưởng để xây dựng các ứng dụng web Đầu tiên, dịch vụ Web sử dụng những công nghệ này giống như firewall, SSL và các chứng nhận số Dịch vụ Web thế hệ sau này sẽ kết hợp với những công nghệ có khả năng bảo mật cao hơn, giống như mã hóa XML và chứng nhận số XML
Như vậy, với một dịch vụ Web, việc giao tiếp và truyền nhận dữ liệu trở nên dễ dàng và hiệu quả hơn, đồng thời đem lại chi phí thấp hơn và tăng cường những khả năng giao tiếp thời gian thực Bản chất của nền tảng công nghệ này là kiến trúc hướng dịch vụ và sự phát triển của dịch vụ Web có tương lai rất khả quan
2.4 SOA và dịch vụ Web
Đặc điểm chính của SOA là tách rời phần giao tiếp với phần thực hiện dịch vụ Điều này có thể làm liên tưởng đến một công nghệ được đề cập nhiều gần đây là dịch
vụ web Chúng có những điểm giống nhau nhưng chúng không phải là một
Về cơ bản, SOA là kiến trúc phần mềm phát xuất từ định nghĩa giao tiếp và xây dựng toàn bộ mô hình ứng dụng như là mô hình các giao tiếp, hiện thực giao tiếp và phương thức gọi giao tiếp Giao tiếp là trung tâm của toàn bộ triết lý kiến trúc này Thực ra, tên gọi “kiến trúc định hướng giao tiếp” thích hợp hơn cho SOA Dịch vụ và
mô đun phần mềm nghiệp vụ được truy cập thông qua giao tiếp, thường theo cách thức yêu cầu - đáp trả Ngay cả với yêu cầu dịch vụ một chiều thì nó vẫn là yêu cầu trực tiếp có chủ đích từ một phần mềm này đến một phần mềm khác Một tương tác định hướng dịch vụ luôn bao hàm một cặp đối tác: nguồn cung cấp dịch vụ và khách hàng
sử dụng dịch vụ
Dịch vụ web cho phép truy cập thông qua định nghĩa giao thức và giao tiếp, dựa trên một nền tảng khác Tập hợp các công nghệ WSDL, SOAP và UDDI, cho phép xây dựng các giải pháp lập trình cho vấn đề tích hợp ứng dụng và truyền thông điệp Theo thời gian, các công nghệ này có thể hoàn thiện hay có thể được thay bằng công nghệ khác tốt hơn, hiệu quả hơn hay ổn định hơn
Rõ ràng, theo định nghĩa thì dịch vụ web là đặc tả công nghệ, là một công nghệ còn SOA là triết lý thiết kế phần mềm, là một phương pháp thiết kế Dịch vụ web đưa
ra giải pháp kỹ thuật để thực hiện SOA (nhưng không phải tất cả dịch vụ web đều có kiến trúc SOA) SOA có thể được thực hiện qua công nghệ dịch vụ Web nhưng cũng
có thể thực hiện thông qua các công nghệ khác Kiến trúc SOA sử dụng dịch vụ Web như là một giải pháp chính để giải quyết vấn đề tích hợp nghiệp vụ giữa các hệ thống (bên cạnh giải pháp dùng công nghệ thông báo)
Tuy vậy, SOA và dịch vụ web có mối quan hệ tương hỗ: sự phổ biến của dịch
vụ web giúp thúc đẩy sự phát triển của SOA, và kiến trúc tốt của SOA sẽ giúp dịch vụ web thành công Và đặc biêt trong quá trình internet hóa mọi dịch vụ hiên nay, thì triển khai dịch vụ bằng dịch vụ Web là điều “tất nhiên”
Trang 28Chương 3 CÁC KỸ THUẬT ĐẢM BẢO AN NINH DỊCH VỤ WEB
Trong chương 2 chúng ta đã tìm hiểu các thành phần của dịch vụ Web và các bước xây dựng Tuy nhiên làm thế nào để chúng trở nên an toàn, được sử dụng đúng mục đích và không bị truy cập trái phép thì chúng ta tiếp tục xét đến các kỹ thuật dưới đây để biết tác dụng của chúng trong việc đảm bảo an ninh dịch vụ Web, đồng thời tìm hiểu về các tiêu chí an toàn của dịch vụ Web
3.1 SAML -Security Assertion Markup Language
SAML (ngôn ngữ đánh dấu đảm bảo an toàn) [24] là một ngôn ngữ đánh dấu
mở rộng (XML) theo tiêu chuẩn cho phép một người sử dụng để đăng nhập một lần vào những trang web riêng biệt SAML được thiết kế cho các giao dịch giữa: doanh nghiệp và doanh nghiệp, doanh nghiệp và người tiêu dùng
SAML quy định ba thành phần: xác minh, giao thức, và ràng buộc Có ba loại xác minh: danh tính, thuộc tính, và cấp phép Xác minh tính hợp lệ danh tính của người dùng Xác minh thuộc tính chứa thông tin cụ thể về những người sử dụng Xác minh danh tính được cấp phép để xác định xem người sử dụng có những quyền thao tác (làm) gì Giao thức chỉ ra cơ chế xác minh hỏi đáp SAML như thế nào Ràng buộc định nghĩa trao đổi thông điệp SAML là ánh xạ SOAP SAML làm việc với nhiều giao thức bao gồm cả HTTP, SMTP, FTP và cũng hỗ trợ SOAP, BizTalk và Electronic Business XML
SAML là một XML dựa trên tiêu chuẩn trao đổi xác thực và cho phép dữ liệu giữa các tên miền bảo mật, có nghĩa là giữa một nhà cung cấp nhận dạng và một nhà cung cấp dịch vụ [0]
3.2 Giao thức Kerberos
Giao thức Kerberos [6, 10, 23] là một giao thức mật mã dùng để xác thực trong các mạng máy tính hoạt động trên những đường truyền không an toàn Giao thức Kerberos có khả năng chống lại việc nghe lén hay gửi lại các gói tin cũ và đảm bảo tính toàn vẹn của dữ liệu Mục tiêu khi thiết kế giao thức này là nhằm vào mô hình máy chủ-máy khách (client-server) và đảm bảo nhận thực cho cả hai chiều Giao thức được xây dựng dựa trên mật mã hóa khóa đối xứng và cần đến một bên thứ ba mà cả hai phía tham gia giao dịch tin tưởng
Kerberos sử dụng một bên thứ ba tham gia vào quá trình nhận thực gọi là "trung tâm phân phối khóa" (key distribution center) Trung tâm này bao gồm hai chức năng:
"máy chủ xác thực" (authentication server) và "máy chủ cung cấp vé" (ticket granting
Trang 29server) "Vé" trong hệ thống Kerberos chính là các chứng thực để chứng minh nhân dạng của người sử dụng
Mỗi người sử dụng (cả máy chủ và máy khách) trong hệ thống chia sẻ một khóa chung với máy chủ Kerberos Việc sở hữu thông tin về khóa chính là bằng chứng để chứng minh nhân dạng của một người sử dụng Trong mỗi giao dịch giữa hai người sử dụng trong hệ thống, máy chủ Kerberos sẽ tạo ra một khóa phiên dùng cho phiên giao dịch đó
3.3 Chứng chỉ số
Để bảo mật, các thông tin truyền trên Internet ngày nay đều có xu hướng được
mã hoá Trước khi truyền qua mạng Internet, người gửi mã hoá thông tin, trong quá trình truyền, dù có “chặn” được các thông tin này, kẻ trộm cũng khó thể đọc được vì bị
mã hoá Khi tới đích, người nhận sẽ sử dụng công cụ để giải mã Phương pháp bảo mật phổ biến nhất đang được thế giới áp dụng là chứng chỉ số (Digital Certificate) Với chứng chỉ số, người sử dụng có thể mã hoá thông tin một cách hiệu quả, chống giả mạo (cho phép người nhận kiểm tra thông tin có bị thay đổi không), xác thực danh tính của người gửi Ngoài ra, chứng chỉ số còn là bằng chứng giúp chống chối cãi nguồn gốc, ngăn chặn người gửi chối cãi nguồn gốc tài liệu mình đã gửi
3.3.1 Chứng chỉ số là gì?
Chứng chỉ số là một tệp tin điện tử dùng để xác minh một cá nhân, một máy chủ, một công ty, trên Internet Nó giống như bằng lái xe, hộ chiếu, chứng minh thư hay những giấy tờ xác minh cá nhân
Để có chứng minh thư, bạn phải được cơ quan Công an sở tại cấp Chứng chỉ số cũng vậy, phải do một tổ chức đứng ra 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 - CA) CA phải đảm bảo
về độ tin cậy, chịu trách nhiệm về độ chính xác của chứng chỉ số mà mình cấp
Trong chứng chỉ số có ba thành phần chính:
- Thông tin cá nhân của người được cấp
- Khoá công khai (Public Key) của người được cấp
- Chữ ký số của CA cấp chứng chỉ
a) Thông tin cá nhân
Đây là các thông tin của đối tượng được cấp chứng chỉ số, gồm tên, quốc tịch, địa chỉ, điện thoại, e-mail, tên tổ chức Phần này giống như các thông tin trên chứng minh thư của mỗi người
b) Khoá công khai
Là khoá dùng để mã hoá trong một thuật toán mã bất đối xứng nào Bất đối xứng có nghĩa là khi mã hoá bằng khoá công khai, chính người gửi cho bạn cũng
Trang 30không thể giải mã ngược trở lại Chỉ có bạn với khoá cá nhân (private key) của riêng bạn, mới có thể giải mã được các thông tin đó Khoá công khai như danh tính của bạn trên chứng minh thư (gồm tên địa chỉ, ảnh ), còn khoá cá nhân chính là gương mặt bạn Nếu coi một bưu phẩm là thông tin truyền đi, được mã hoá bằng địa chỉ và tên người nhận của bạn, thì dù ai đó có dùng chứng minh thư của bạn để lấy bưu phẩm này, họ cũng không thể lấy được bưu phẩm Chỉ có bạn, với chứng minh thư của mình mới được nhận bưu phẩm
c) Chữ ký số của CA cấp chứng chỉ
Còn gọi là chứng chỉ gốc Đây chính là sự xác nhận của CA, bảo đảm tính chính xác và hợp lệ của chứng chỉ Muốn kiểm tra một chứng chỉ số, trước tiên phải kiểm tra chữ ký số của CA có hợp lệ hay không Trên chứng minh thư, đây chính là con dấu xác nhận của Công An Tỉnh hoặc Thành phố mà bạn trực thuộc Về nguyên tắc, khi kiểm tra chứng minh thư, đúng ra đầu tiên phải là xem con dấu này, để biết chứng minh thư có bị làm giả hay không
3.3.2 Những lợi ích khi sử dụng chứng chỉ số
a) Mã hoá
Lợi ích đầu tiên của chứng chỉ số là tính bảo mật thông tin Khi người gửi đã
mã hoá thông tin bằng khoá công khai của bạn, chắc chắn chỉ có bạn mới giải mã được thông tin để đọc Trong quá trình truyền thông tin qua Internet, dù có đọc được các gói tin đã mã hoá này, kẻ xấu cũng khó thể biết được trong gói tin có thông tin gì
Đây là một tính năng rất quan trọng, giúp người sử dụng hoàn toàn tin cậy về khả năng bảo mật thông tin Những trao đổi thông tin cần bảo mật cao, chẳng hạn giao dịch liên ngân hàng, ngân hàng điện tử, thanh toán bằng thẻ tín dụng, đều cần phải có chứng chỉ số để đảm bảo an toàn
b) Chống giả mạo
Khi chúng ta gửi đi một thông tin, có thể là một dữ liệu hoặc một e-mail, có sử dụng chứng chỉ số, người nhận sẽ kiểm tra được thông tin của bạn có bị thay đổi hay không Bất kỳ một sự thay đổi hay thay thế nội dung của thông điệp gốc đều sẽ bị phát hiện Địa chỉ mail, tên domain, đều có thể bị kẻ xấu làm giả để đánh lừa người nhận, qua đó lây lan virus, ăn cắp thông tin quan trọng Tuy nhiên, chứng chỉ số thì “khó” có thể làm giả, nên việc trao đổi thông tin có kèm chứng chỉ số luôn đảm bảo an toàn
c) Xác thực
Khi người gửi gửi đi một thông tin kèm chứng chỉ số, người nhận - có thể là đối tác kinh doanh, tổ chức hoặc cơ quan chính quyền - sẽ xác định rõ được danh tính của người gửi Có nghĩa là dù không nhìn thấy, nhưng qua hệ thống chứng chỉ số mà người gửi và người nhận cùng sử dụng, người nhận sẽ biết chắc chắn được định danh của người gửi chứ không phải là một người khác
Trang 31Xác thực là một tính năng rất quan trọng trong việc thực hiện các giao dịch điện
tử qua mạng, cũng như các thủ tục hành chính với cơ quan pháp quyền Các hoạt động này cần phải xác minh rõ người gửi thông tin để sử dụng tư cách pháp nhân Đây chính
là nền tảng của một Chính phủ điện tử, môi trường cho phép công dân có thể giao tiếp, thực hiện các công việc hành chính với cơ quan nhà nước hoàn toàn qua mạng Có thể nói, chứng chỉ số là một phần không thể thiếu, là phần cốt lõi của Chính phủ điện tử
d) Chống chối cãi nguồn gốc
Khi chấp nhận sử dụng một chứng chỉ số thì đồng nghĩa với việc phải chịu trách nhiệm hoàn toàn về những thông tin mà chứng chỉ số đi kèm Trong trường hợp người gửi chối cãi, phủ nhận một thông tin nào đó không phải do mình gửi (chẳng hạn một đơn đặt hàng qua mạng), chứng chỉ số mà người nhận có được sẽ là bằng chứng khẳng định người gửi là tác giả của thông tin đó Trong trường hợp chối cãi, CA cung cấp chứng chỉ số cho hai bên sẽ chịu trách nhiệm xác minh nguồn gốc thông tin, chứng tỏ nguồn gốc thông tin được gửi
3.3.3 Quá trình hoạt động của chứng chỉ số
Khi đăng ký sử dụng chứng chỉ số, người sử dụng sẽ nhận được một file chứng chỉ số và một khoá cá nhân Khoá công khai và khoá cá nhân của người dùng là một cặp khoá của bất kỳ một thuật toán mật mã bất đối xứng (asymmetrical algorithm) nào Cặp khoá này dùng để mã hoá và giải mã dữ liệu, nhưng tính bất đối xứng thể hiện ở chỗ: Nếu dùng khoá cá nhân để mã hoá dữ liệu thì không thể tự giải mã, mà phải cần đến khoá công khai Ngược lại khoá công khai khi đã mã hoá dữ liệu thì cũng chỉ có khoá cá nhân mới mở được Cặp khoá này là duy nhất dùng để mở (giải mã cho nhau),
do đó tính bảo mật là tuyệt đối, không thể có người ngoài nào giải mã được thông tin Nếu mất khoá cá nhân, người sử dụng chứng chỉ số sẽ phải xin cấp chứng chỉ mới và thay khoá công khai
Khi một ai đó dùng chứng chỉ số để gửi thông tin cho bạn, người đó sẽ phải sử dụng khoá công khai của bạn để mã hoá thông tin Trong quá trình truyền, sẽ không ai
có thể xem được nội dung dữ liệu Chỉ đến khi bạn nhận được thông tin và dùng khoá
cá nhân của riêng mình để giải mã, thông tin mới có thể đọc được Như vậy, với mỗi người trao đổi thông tin, bạn phải trao đổi mã công khai với họ để có thể mã hoá thông tin cho nhau
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
Trang 323.3.4 Chứng nhận X.509
Chứng nhận X.509 [27] là chứng nhận khóa công cộng phổ biến nhất Hiệp hội viễn thông quốc tê (International Telecommunications Union – ITU) đã chỉ định chuẩn X.509 vào năm 1988 là định dạng phiên bản 1 của chuẩn X.509 Vào năm
1993, phiên bản 2 của chuẩn X.509 được phát hành với 2 trường tên nhận dạng duy nhất được bổ sung Phiên bản 3 của chuẩn X.509 được bổ sung thêm trường mở rộng
đã phát hành vào năm 1997
Một chứng nhận khóa công cộng kết buộc một khóa công cộng với sự nhận diện của một người (hoặc một thiết bị) Khóa công cộng và tên thực thể sở hữu khóa này là hai mục quan trọng trong một chứng nhận Hầu hết các trường khác trong chứngnhận X.509 phiên bản 3 đều đã được chứng tỏ là có ích Sau đây là thông tin về các trường trong chứng nhận X.509 phiên bản 3
- Version: Chỉ định phiên bản của chứng nhận X.509
- Serial Number: Số loạt phát hành được gán bởi CA Mỗi CA nên gán một
mã số loạt duy nhất cho mỗi giấy chứng nhận mà nó phát hành
- Signature Algorithm: Thuật toán chữ ký chỉ rõ thuật toán mã hóa được
CA sử dụng để ký giấy chứng nhận Trong chứng nhận X.509 thường là sự kết hợp giữa thuật toán băm (chẳng hạn như MD5) và thuật toán khóa công cộng (chẳng hạn như RSA)
- Issuer Name: Tên tổ chức CA phát hành giấy chứng nhận, đây là một tên phân biệt theo chuẩn X.500 (X.500 Distinguised Name – X.500 DN) Hai CA không được sử dụng cùng một tên phát hành
- Validity Period: Trường này bao gồm hai giá trị chỉ định khoảng thời gian mà giấy chứng nhận có hiệu lực Hai phần của trường này là not-before và not-after Not-before chỉ định thời gian mà chứng nhận này bắt đầu có hiệu lực, Not-after chỉ định thời gian mà chứng nhận hết hiệu lực Các giá trị thời gian này được đo theo chuẩn thời gian Quốc tế, chính xác đến từng giây
- Subject Name: là một X.500 DN, xác định đối tượng sở hữu giấy chứng nhận
mà cũng là sở hữu của khóa công cộng Một CA không thể phát hành 2 giấy chứng nhận có cùng một Subject Name
- Public key: Xác định thuật toán của khóa công cộng (như RSA) và chứa khóa công cộng được định dạng tuỳ vào kiểu của nó
- Issuer Unique ID và Subject Unique ID: Hai trường này được giới thiệu trong X.509 phiên bản 2, được dùng để xác định hai tổ chức CA hoặc hai chủ thể khi chúng
có cùng DN RFC 2459 đề nghị không nên sử dụng hai trường này
Trang 33- Extensions: Chứa các thông tin bổ sung cần thiết mà người thao tác CA muốn đặt vào chứng nhận Trường này được giới thiệu trong X.509 phiên bản 3
- Signature: Đây là chữ ký điện tử được tổ chức CA áp dụng Tổ chức CA sử dụng khóa bí mật có kiểu quy định trong trường thuật toán chữ ký Chữ ký bao gồm tất
cả các phần khác trong giấy chứng nhận Do đó, tổ chức CA chứng nhận cho tất cả các thông tin khác trong giấy chứng nhận chứ không chỉ cho tên chủ thể và khóa công cộng
3.4 Cấu trúc của giao thức bảo mật SSL
Cấu trúc của SSL (Secure Socket Layer) và giao thức SSL tương ứng được minh họa trong hình 3.1 Theo hình này, SSL chỉ một lớp (bảo mật) trung gian giữa lớp vận chuyển (Transport Layer) và lớp ứng dụng (Application Layer) Về khả năng,
nó có thể cung cấp các dịch vụ bảo mật cho các giao thức ứng dụng tùy ý dựa vào TCP chứ không chỉ HTTP Thực tế, một ưu điểm chính của các giao thức bảo mật lớp giao vận (Transport layer) nói chung và giao thức SSL nói riêng là chúng độc lập với ứng dụng theo nghĩa chúng có thể được sử dụng để bảo vệ bất kỳ giao thức ứng dụng được xếp lớp lên trên TCP một cách trong suốt Hình 3.1 minh họa một số giao thức ứng dụng điển hình bao gồm NSIIOP, HTTP, FTP, Telnet, IMAP, IRC, và POP3 Tất cả chúng có thể được bảo vệ bằng cách xếp lớp chúng lên trên SSL Tuy nhiên, chú ý rằng SSL có một định hướng client-server mạnh mẽ và thật sự không đáp ứng các yêu cầu của các giao thức ứng dụng ngang hàng
Tóm lại, giao thức SSL [8, 18] cung cấp sự bảo mật truyền thông có ba đặc tính
HTTP LDAP
etc…
SSL Change Cipher Spec Protocol
Internet Layer
Network Layer
Hình 3.1: Cấu trúc và giao thức SSL Giao thức bảo mật SSL
Trang 34- Các bên giao tiếp (nghĩa là client và server) có thể xác thực nhau bằng cách
sử dụng mật mã khóa công khai
- Sự bí mật của dữ liệu được bảo vệ vì kết nối được mã hóa trong suốt sau khi một sự thiết lập quan hệ ban đầu và sự thương lượng khóa session đã xảy ra
- Tính xác thực và tính toàn vẹn của dữ liệu cũng được bảo vệ vì các thông báo được xác thực và được kiểm tra tính toàn vẹn một cách trong suốt
Tuy nhiên, điều quan trọng cần lưu ý là SSL không ngăn các cuộc tấn công phân tích dữ liệu Ví dụ, bằng cách xem xét các địa chỉ IP nguồn và đích không được
mã hóa và các số cổng TCP, hoặc xem xét dữ liệu được truyền, một người phân tích vẫn có thể xác định các bên nào đang tương tác, các loại dịch vụ đang được sử dụng,
và đôi khi ngay cả dành được thông tin về các mối quan hệ doanh nghiệp hoặc cá nhân Hơn nữa, SSL không ngăn các cuộc tấn công có định hướng dựa vào phần thực thi TCP, chẳng hạn như các cuộc tấn công làm tràn ngập TCP SYN hoặc chiếm đoạt session
Để sử dụng sự bảo vệ SSL, cả client lẫn server phải biết rằng phía bên kia đang
sử dụng SSL
Nói chung, có hai khả năng để giải quyết vấn đề này:
- Sử dụng cổng chuyên dụng được dành riêng bởi Internet Asigned Numbers Authority (IANA) Trong trường hợp này, một số cổng riêng biệt phải được gán cho mọi giao thức ứng dụng sử dụng SSL
- Sử dụng số cổng chuẩn cho mọi giao thức ứng dụng và để thương lượng các tùy chọn bảo mật như là một phần của giao thức ứng dụng Sử dụng tùy chọn TCP để thoả thuận việc sử dụng một giao thức bảo mật, chẳng hạn như SSL trong suốt giai đoạn thiết lập kết nối TCP thông thường Thực tế, cổng riêng biệt đã được dành riêng
và được gán bởi IANA cho mọi giao thức ứng dụng có thể chạy trên SSL hoặc TLS Tuy nhiên, hãy chú ý việc sử dụng các cổng riêng biệt cũng có khuyết điểm là đòi hỏi hai kết nối TCP nếu client không biết những gì mà server hỗ trợ
Trước tiên, client phải kết nối với cổng an toàn và sau đó với cổng không an toàn hay ngược lại Rất có thể các giao thức sau này sẽ hủy bỏ phương pháp này và tìm khả năng thứ hai Ví dụ, SALS (Simple Authentication and Security Layer) xác định một phù hợp để thêm sự hỗ trợ xác thực vào các giao thức ứng dụng dựa vào kết nối Theo thông số kỹ thuật SALS, việc sử dụng các cơ chế xác thực có thể thương lượng giữa client và server của một giao thức ứng dụng đã cho
Các cổng được gán bởi IANA cho các giao thức ứng dụng chạy trên SSL/TLS được tóm tắt trong bảng 1và được minh họa một phần trong hình 3.1 Ngày nay, "S" chỉ định việc sử dụng SSL được thêm (hậu tố) nhất quán vào các từ ghép của các giao
Trang 35thức ứng dụng tương ứng (trong một số thuật ngữ ban đầu, S được sử dụng và được thêm tiền tố một cách không nhất quán và một số từ ghép)
Bảng 1: Các số cổng được gán cho các giao thức ứng dụng chạy trên TLS/SSL
ftps-data 989 FTP (dữ liệu) trên TLS/SSL ftps 990 FTP (Điều khiển) trên TLS/SSL tenets 992 TELNET trên TLS/SSL
Nói chung, một session SSL có trạng thái và giao thức SSL phải khởi tạo và duy trì thông tin trạng thái ở một trong hai phía của session Các phần tử thông tin trạng thái session tương ứng bao gồm một session ID, một phương pháp nén, một thông số mật mã, một khóa mật chính và một cờ chỉ định việc session có thể tiếp tục lại hay không, được tóm tắt trong bảng 2 Một session SSL có thể được sử dụng trong một số kết nối và các thành phần thông tin trạng thái kết nối tương ứng được tóm tắt trong bảng 3 Chúng bao gồm các tham số mật mã, chẳng hạn như các chuỗi byte ngẫu nhiên server và client, các khóa mật MAC ghi server và client, các khóa ghi server và client, một vector khởi tạo và một số chuỗi Ở trong hai trường hợp, điều quan trọng cần lưu ý là các phía giao tiếp phải sử dụng nhiều session SSL đồng thời và các session có nhiều kết nối đồng thời
Bảng 2: Các thành phần thông tin trạng thái Session SSL
Session ID Định danh được chọn bởi server để nhận dạng một trạng thái
session hoạt động hoặc có thể tiếp tục lại
Peer certificate Chứng chỉ số X.509 phiên bản 3 của thực thể
Compression method Thuật toán dùng để nén dữ liệu trước khi mã hóa
Cipher spec Thông số của các thuật toán mã hóa dữ liệu và MAC
Master secret Khóa mật 48-byte được chia sẻ giữa client và server
Is resumable Cờ biểu thị session có thể được sử dụng để bắt đầu các kết
nối mới hay không
Trang 36Bảng 3: Các thành phần thông tin trạng thái kết nối SSL
Khóa ghi server Khóa được sử dụng cho việc mã hóa dữ liệu bởi server và
giải mã bởi client Khóa ghi client Khóa được sử dụng để mã khóa dữ liệu bởi client và giải mã
bởi server
Initialization vector Trạng thái khởi tạo cho một mật mã khối trong chế độ CBC
Trường này được khởi tạo đầu tiên bởi SSL Handshake Player Sau đó, khối text mật mã sau cùng từ mỗi bản ghi được dành riêng để sử dụng với bản ghi sau đó
Như được minh họa trong hình 3.1, giao thức SSL gồm hai phần chính, SSL Record Protocol và một số giao thức con SSL được xếp lớp trên nó:
– Record OK được xếp lớp trên một dịch vụ lớp giao vận hướng kết nối và đáng tin cậy, chẳng hạn như được cung cấp bởi TCP và cung cấp sự xác thực nguồn gốc thông báo, sự bí mật dữ liệu
– Các dịch vụ toàn vẹn
– Các giao thức con SSL được xếp lớp trên SSL Record Protocol để cung cấp
sự hỗ trợ cho việc quản lý session SSL và thiết lập kết nối
– Giao thức con SSL quan trọng nhất là SSL Handshake Protocol Lần lượt giao thức này là một giao thức xác thực và trao đổi khóa có thể được sử dụng để thương lượng, khởi tạo và đồng bộ hóa các tham số bảo mật và thông tin trạng thái tương ứng được đặt ở một trong hai điểm cuối của một session hoặc kết nối SSL
– Sau khi SSL Handshake Protocol đã hoàn tất, dữ liệu ứng dụng có thể được gửi và được nhận bằng cách sử dụng SSL Record Protocol và các tham số bảo mật được thương lượng và các thành phần thông tin trạng thái SSL Record và Handshake Protocol được trình bày tổng quan ở phần tiếp theo
3.4.1 SSL Record Protocol
SSL Record Protocol [8, 19] nhận dữ liệu từ các giao thức con SSL lớp cao hơn và xử lý việc phân đoạn, nén, xác thực và mã hóa dữ liệu Chính xác hơn, giao thức này lấy một khối dữ liệu có kích cỡ tùy ý làm dữ liệu nhập và tạo một loạt các