Tải bản đầy đủ (.doc) (51 trang)

các kỹ thuật đảm bảo an ninh web service

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (744.4 KB, 51 trang )

Học viện Kỹ thuật Mật mã

Môn: Công nghệ phần mềm

MỤC LỤC
CHƯƠNG 1. WEB SERVICE............................................................................1
1.1. Service.........................................................................................................1
1.1.1. Định nghĩa............................................................................................1
1.1.2. Đặc điểm service...................................................................................1
1.2. Web service (WS)........................................................................................2
1.2.1. Định nghĩa............................................................................................2
1.2.2. Cấu trúc web service.............................................................................3
1.2.3. Các đặc điểm của web service..............................................................4
1.2.4. Các thành phần của web service..........................................................5
1.2.5. Hoạt động của Web services...............................................................13
1.3. SOA và dịch vụ web..................................................................................13
1.3.1. Định nghĩa SOA..................................................................................13
1.3.2. Tính chất của một hệ thống sử dụng SOA..........................................15
1.3.3. SOA và dịch vụ web............................................................................16
CHƯƠNG 2. CÁC KỸ THUẬT ĐẢM BẢO AN NINH WEB SERVICE....19
2.1. Các vấn đề bảo mật cần quan tâm..........................................................19
2.1.1. Những hạn chế của tường lửa.............................................................19
2.1.2. Cơ chế bảo mật chưa được định nghĩa một các đầy đủ.....................19
2.1.3. Các giải pháp bảo mật khó tích hợp với nhau....................................19
2.1.4. Bảo mật và vấn đề hiệu suất hoạt động..............................................20
2.2. Giao thức bảo mật SSL............................................................................20
2.2.1. Cấu trúc giao thức bảo mật SSL.........................................................20
2.2.2. SSL Record Protocol...........................................................................27
2.2.3. SSL Handshake Protocol....................................................................30
2.3. Khai thác tính năng bảo mật của bộ thư viện Web Service
Enhancement (WSE)......................................................................................37


2.3.1. Những tính năng bảo mật web service của wse..................................37
2.3.2. Thư viện Web Service Enhancements - WSE......................................38
2.3.3. Hỗ trợ policy.......................................................................................40
CHƯƠNG 3. XÂY DỰNG CHƯƠNG TRÌNH...............................................43
3.1. Bài toán đặt ra..........................................................................................43
3.2. Mô tả hệ thống cần xây dựng..................................................................45
3.3. Triển khai hệ thống..................................................................................45
Page i


Học viện Kỹ thuật Mật mã

Môn: Công nghệ phần mềm

3.3.1. Lựa chọn ngôn ngữ lập trình..............................................................45
3.3.2. Hoạt động của hệ thống......................................................................45

Page ii


Học viện Kỹ thuật Mật mã

Môn: Công nghệ phần mềm

DANH MỤC HÌNH ẢNH
Hình 1.1. Mô hình Web Service..........................................................................2
Hình 1.2. Kiến trúc Web Service........................................................................3
Hình 1.3 Mô tả các layer hình thành nên Web Service....................................3
Hình 1.4. Tương tác giữa các thành phần Web Service...................................4
Hình 1.5. Các thành phần của Web Service......................................................5

Hình 1.6. Cấu trúc WSDL..................................................................................6
Hình 1.7. Trao đổi thông điệp SOAP.................................................................9
Hình 1.8. Cấu trúc của thông điệp SOAP.........................................................9
Hình 1.9. Mô hình tương tác giữa các thành phần.........................................11
Hình 1.10. Sơ đồ sử dụng Web Service............................................................11
Hình 1.11. Cấu trúc và hoạt động của một web service đơn giản.................13
Hình 1.12. Sơ đồ cộng tác SOA........................................................................15
Hình 2.13. Cấu trúc của giao thức bảo mật SSL............................................21
Hình 2.14. Các bước SSL Record Protocol.....................................................28
Hình 2.15. Xác nhận số một thông điệp...........................................................37
Hình 2.16. Mã hóa một thông điệp...................................................................38
Hình 2.17. Quy trình gửi nhận thông điệp qua các bộ lọc của WSE............39
Hình 2.18. Điều phối thông điệp SOAP...........................................................42
Hình 3.19. Biểu đồ hoạt động của hệ thống.....................................................45
Hình 3.20. Giao diện trang chủ........................................................................46
Hình 3.21. Giao diện đăng nhập.......................................................................46
Hình 3.22. Giao diện đăng ký...........................................................................47
Hình 3.23. Thực hiện giao dịch.........................................................................48

Page iii


Học viện Kỹ thuật Mật mã

Môn: Công nghệ phần mềm

CHƯƠNG 1. WEB SERVICE
1.1. Service
1.1.1. Định nghĩa.
Service là một ứng dụng với user, một thao tác được thực hiện một hoặc

nhiều lần trong một tiến trình nghiệp vụ được thực hiện bởi một người hoặc một
nhóm người. Service là một hệ thống có khả năng nhận một hay nhiều yêu cầu
xử lý và sau đó đáp ứng lại bằng cách trả về một hay nhiều kết quả. Quá trình
nhận yêu cầu và trả kết quả được thực hiện thông qua các interface đã được định
nghĩa trước đó. Thông thường, việc giao tiếp này được thực hiện trên các
interface đã được chuẩn hóa và sử dụng rộng rãi. Một tiến trình gồm nhiều
services và nhiều tiến trình hợp lại thành một service hay cũng có thể nói một
service có thể bao gốm nhiều services khác. Ví dụ: Thư điện tử là một service.
Có nhiều loại dịch vụ khác nhau, có những dịch vụ chỉ mang tính chất công
cộng cho phép người ở xa truy nhập thông tin qua mạng, cũng có loại dịch vụ
mang tính chất local và giới hạn người sử dụng. Ví dụ đơn giản về một service
chính là hoạt động của một nhà hàng. Khi khách hàng vào nhà hàng và gọi thức
ăn, khách hàng đang tiền hành gởi các yêu cầu của khách hàng, nếu món ăn
khách hàng yêu cầu nhà hàng không có hoặc đã hết, nhân viên nhà hàng sẽ từ
chối hoặc đề nghị khách hàng gọi món khác. Nếu nhà hàng có thể đáp ứng được
yêu cầu của khách, món ăn sẽ được chế biến và mang ra cho khách hàng muốn
thưởng thức, còn kết quả trả về của service phục vụ nhà hàng chính là từ chối
hay là món ăn mà khách hàng không cần .
1.1.2. Đặc điểm service.
Có ranh giới rõ ràng: Mỗi service được xây dựng dựa trên các interface
chuẩn hòa đã được sử dụng rộng rãi. Chi tiết thực hiện của mỗi service sẽ không
được thể hiện ra bên ngoài. Mỗi service chỉ công bố một số các interface của nó
cho user có thể dùng để gởi các yêu cầu và nhận kết quả trả về.
- Tính tự trị (autonomous): Mỗi service có tính độc lập cao, có thể được
xây dựng và đưa vào sử dụng mà không phụ thuộc vào các service khác.
Page 1


Học viện Kỹ thuật Mật mã


Môn: Công nghệ phần mềm

-Về mặt trao đổi dữ liệu, các service không truyền các class và type. Thay
vào đó, các class và type sẽ được đặc tả hình thức
- Sự tương thích giữa các service được căn cứ vào các policy. Tương thích
về mặt cấu trúc dựa trên các đặc tả hình thức bao gồm contract dựa trên WSDL
hoặc Businesss Process Execution Language or Web Services.
1.2. Web service (WS).
1.2.1. Định nghĩa.
WS là một hệ thống phần mềm được thiết kế nhằm hỗ trợ khả năng tương
tác giữa các máy tính hoặc với các thiết bị khác thông qua mạng. Một WS được
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. Nó có thể cung cấp các chức năng khác
nhau từ cơ bản nhất đến những nghiệp vụ phức tạp hay những qui trình khoa học.

Hình 1.1. Mô hình Web Service
WS sử dụng nền tảng là ngôn ngữ XML(extensible makup language) cho
việc trao đổi dữ liệu. Các hệ thống tương tác với WS theo một phương pháp qui
định bằng cách sử dụng các thông điệp SOAP(Simple Object Acess Protocol) sử
dụng giao thức HTTP. Và mô hình đặc thù của WS là mô hình client-server. WS
được đặc tả sử dụng các chuẩn WSDL, UDDI, SOAP, W3C...

Page 2


Học viện Kỹ thuật Mật mã

Môn: Công nghệ phần mềm

Giao diện của nó được mô tả trong một khuôn mẫu khả năng xử lý máy

(tiêu biểu là WSDL). Giao diện này được gọi là giao diện “dịch vụ”. Nó giúp
WS có thể được gọi bởi bất kì một ứng dụng nào hay bởi 1 WS nào khác.

Hình 1.2. Kiến trúc Web Service
1.2.2. Cấu trúc web service

Hình 1.3 Mô tả các layer hình thành nên Web Service.
Trong đó:
- Service Provider: Dùng WSDL để mô tả dịch vụ mà mình có thể cung
cấp cho.
- Service Broker (tương tự Service Registry trong SOA).
- Service Broker: Lưu trữ thông tin về các service được cung cấp bởi các
Service Provider. Cung cấp chức năng tìm kiếm hỗ trợ.

Page 3


Học viện Kỹ thuật Mật mã

Môn: Công nghệ phần mềm

- Service Requester (Service Consumer trong SOA) trong việc xác định
Service Provider phù hợp. Thành phần chính của Service Broker là UDDI.
Service Requester: Dùng WSDL để đặc tả nhu cầu sử dụng(loại service, thời
gian sử dụng, resource cần thiết, mức giá…) và gởi cho Service Broker. Bằng
việc sử dụng UDDI và chức năng tìm kiếm của Service Broker, Service
Requester có thể tìm thấy Service Provider thích hợp. Ngay sau đó, giữa Service
Requester và Service Provider thiết lập kênh giao tiếp sử dụng SOAP để thương
lượng giá cả và các yếu tố khác trong việc sử dụng service.


Hình 1.4. Tương tác giữa các thành phần Web Service
1.2.3. Các đặc điểm của web service
- Web services được truy xuất thông qua Web bằng cách dùng địa chỉ URL
- Web services liên lạc với thế giới bên ngoài dùng thông điệp XML được
gửi trực tiếp qua Web protocols. Giao tiếp với người dùng bằng những phương
thức mở.
- Web services được đăng kí tại nơi chung và được đặc tả tất cả các
chức năng
- Có độ an toàn riêng tư

Page 4


Học viện Kỹ thuật Mật mã

Môn: Công nghệ phần mềm

- Web Service cho phép client tương tác với server ngay cả trong những
môi trường khác nhau. Và nó cũng đóng vai trò như là một thiết bị có thể “giao
tiếp” với các Web service khác mà không cần quan tâm đến các yêu cầu bên
trong. Ví dụ, đặt web server trên một máy chủ chạy hệ điều hành Linux trong
khi người 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.
- Phần lớn các web services đượ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 WS bao gồm nhiều module và có thể công bố trên mạng Internet
1.2.4. Các thành phần của web service
Web service là một tập các chuẩn đặc tả mở rộng khả năng của các chuẩn
có sẵn như XML, URL, HTTP, nhằm cung cấp chuẩn truyền thông giữa các hệ

thống với nhau. Web services là những thành phần thực thi một số xử lý nghiệp
vụ thông qua những dịch vụ và cung cấp những dịch vụ qua mạng, những dịch
vụ này có thể được triệu gọi bởi các dịch vụ client bằng cách sử dụng giao thức
SOAP trên HTTP. Web service độc lập về ngôn ngữ và độc lập về nền tảng bởi
vì nó tách biệt đặc tả ra khỏi cài đặt; nó còn hỗ trợ tích hợp loose coupling giữa
các ứng dụng với nhau qua trao đổi các thông điệp đồng bộ và bất đồng bộ
thông. Web services dựa trên kiến trúc phân tán trong đó không có bất kì dịch vụ
xử lý trung tâm nào và tất cả dạng truyền thông đều sử dụng các giao thức
chuẩn. Các giao thức không được có bất kỳ ý nghĩa ngầm định nào bên trong mà
phải được mô tả rõ ràng

Hình 1.5. Các thành phần của Web Service

Page 5


Học viện Kỹ thuật Mật mã

Môn: Công nghệ phần mềm

1.2.4.1. WSDL (Web Services Description Language)
Ngôn ngữ đặc tả dịch Web Service . Ngôn ngữ này cơ bản dựa trên XML,
khi tương tác các dịch vụ với nhau ta tương tác file WSDL của chúng. Một
client có thể đọc WSDL để xác định những chức năng có sẵn trên server, sau đó
client có thể sử dụng SOAP để lấy ra những chức năng chính xác có trong
WSDL. Cấu trúc chính của một tài liệu WSDL như sau:

Hình 1.6. Cấu trúc WSDL
- Service: Chứa các method có thể được sử dụng thông qua các web
protocol.

- Ports: Địa chỉ dùng để kết nối đến WS. Thông thường, ports được mô tả
bằng một HTTP URL.
- <type>: xác định kiểu dữ liệu mà được sử dụng đặc tả WS
<types>
<xsd:schema .... />*
</types>
- <message>: mô tả thông điệp truyền đi giữa client và server. Mỗi một
thông điệp có một tên duy nhất và tương ứng với một operation và chứa các thông
tin cần thiết để thực thi operation đó. Mỗi message có thể bao gồm một hoặc
nhiều phần. Mỗi phần có thể được so sánh với thông số của một chức năng gọi
trong ngôn ngữ lập trình truyền thống. Các thực thi và những message được mô

Page 6


Học viện Kỹ thuật Mật mã

Môn: Công nghệ phần mềm

hình riêng rẽ để hỗ trợ tính linh hoạt và đơn giản hóa việc tái sử dụng lại. Chẳng
hạn, hai thao tác với cùng tham số có thể chia sẻ một định nghĩa message.
<message name="nmtoken"> *
*
</message>
- : Định nghĩa một web service, các tác vụ mà service cung
cấp và định dạng các thông điệp được sử dụng để khởi động các tác vụ này.
<Wsdl:portType name="nmtoken">
<Wsdl:operation name="nmtoken" .... /> *
</Wsdl:portType>
- Operations: Mỗi operation có thể được xem như một method hay một lời

gọi hàm trong các ngôn ngữ lập trình cổ điển.
- Binding: Chỉ định port type, các operation và chứa các thông tin cần
thiết để thực thi operation đó. Mỗi message có một tên duy nhất và một hay
nhiều thành phần được phân biệt với nhau qua tên và có thể lưu trữ các tham số
cần cho operation.
- Element: Được định nghĩa trong Types. Mỗi element có một tên duy
nhất và kiểu dữ liệu. Element được dùng để đặc tả dữ liệu dùng trong message.
Element có thể đặc tả các dữ liệu đơn giản như string, integer hay phức tạp hơn
như array, truct…
- XSD file: Các element thường được định nghĩa trong các XML Schema
Definition. XSD file có thể ở trong cùng file WSDL hoặc ở file riêng biệt. Mô tả
cách nhận và gửi thông điệp, là một phần tử quan trọng trong WSDL. Phần tử có
thể được so sánh như chức năng thư viện(hay một module, class) trong các ngôn
ngữ lập trình. WSDL định nghĩa 4 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à gửi về một message.
Page 7


Học viện Kỹ thuật Mật mã

Môn: Công nghệ phần mềm

- 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.
1.2.4.2. UDDI (Universal Description, Discovery and Integration)
Làm thế nào để một client sử dụng được một web service?

Để 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 Web Service.
Nhiệm vụ chính của nó chính là tìm đúng dịch vụ đang cần và định nghĩa các kích
hoạt dịch vụ. Các client sẽ tìm kiếm, ghi nhận thông tin thông qua việc truy cập
đến UDDI.
UDDI giao tiếp thông qua SOAP và được xây dựng trên nền
Microsoft.NET
UDDI sử dụng W3C (World Wide Web Consortium) và IETF (Internet
Engineering Task Force) sử dụng các chuẩn Internet như XML, HTTP, và
phương thức DNS. UDDI sử dụng WSDL để mô tả giao diện đến web services.
Trước UDDI chưa có chuẩn Internet nào cho các nhà doanh nghiệp tiếp
cận khách hàng của họ với các thông tin về sản phẩm và dịch vụ của họ và cũng
chưa có phương thức nào tích hợp các hệ thống khác nhau vào. UDDI giải quyết
một số vấn đề như: Tìm kiếm ra hàng triệu người hiện đang online (có thể giúp
một doanh nghiệp phát triển tốt), xác định hướng phát triển khi một tính năng
thương mại được phát hiện, tiếp cận khách hàng mới và tăng lượng khách hàng
hiện tại. Mở rộng thị trường.
1.2.4.3. SOAP (Simple Object Access Protocol)
Là giao thức triệu gọi các đối tượng dựa trên nền giao thức HTTP và ngôn
ngữ XML. Các đối tượng được cài đặt và chạy trên một web service nào đó trên
Internet. Chúng ta lập trình và gọi phương thức, thuộc tính của nó trên chương
trình và máy tính của chúng ta. Có khả năng tích hợp các chương trình trên
Page 8


Học viện Kỹ thuật Mật mã

Môn: Công nghệ phần mềm


Internet. SOAP định nghĩa cơ chế giao tiếp giữa các đối tượng thông qua 2
bước: SOAP request và SOAP response.
SOAP = XML + Một giao thức có thể hoạt động trên Internet (HTTP,
FTP, SMTP) trong đó HTTP phổ biến hơn cả.

Hình 1.7. Trao đổi thông điệp SOAP
Thông điệp theo định dạng XML bình thường gồm các phần như hình sau:

Hình 1.8. Cấu trúc của thông điệp SOAP
- SOAP envelope: Phần tử gốc bao trùm nội dung thông điệp, khai báo
văn bản XML như một thông điệp SOAP.
<?xml version="1.0"?>
xmlns:soap=" />soap:encodingStyle=" />... Message information goes here ...
</soap:Envelope>

Page 9


Học viện Kỹ thuật Mật mã

Môn: Công nghệ phần mềm

- Xmlns: soap namespace. Thường có giá trị “url/soap-envelope”. Không
gian tên xác định Envelope như là một SOAP Envelope. Nếu một không gian
tên khác nhau được sử dụng, ứng dụng sẽ phát sinh ra lỗi và loại bỏ thông điệp.
Encoding Style là thuộc tính được sử dụng để xác định kiểu dữ liệu được sử
dụng trong văn bản. Thuộc tính này có thể được xuất hiện trong bất kì phần nào
của thông điệp. Cú pháp chuẩn : soap:encodingStyle=”URL”.

- Header: Phần tử đầu trang, chứa các tiêu đề cho trang. Nó có thể được
khai báo hoặc không được khai báo và có thể mang những chữ kí số, thông tin
mã hóa hay cài đặt cho giao dịch khác. Nếu khai báo phần Header trong thông
điệp, nó phải là phần tử con đầu tiên của phần tử Envelope.
<?xml version="1.0"?>
xmlns:soap=" />soap:encodingStyle=" /><soap:Header>
<m:Trans xmlns:m=" />soap:mustUnderstand="1">234
</m:Trans>
</soap:Header>
...
...
</soap:Envelope>
Thuộc tính mustUnderstand có thể được sử đụng để đưa ra để đưa ra nơi
mà toàn bộ phần header là . Nếu mustUnderstand=”1”. Nó sẽ chỉ ra rằng những
người nhận xử lý Header phải nhận các phần tử. Nếu người nhận thông điệp
không nhận phần tử nó sẽ lỗi khi xử lý phần Header.
- Body: Chứa các thông tin yêu cầu và thông tin phản hồi.
- Fault: Đưa ra thông tin về các lỗi xảy ra trong quá trình truyền thông
điệp. Nếu có một lỗi xảy ra, nó phải nằm trong phần Body. Một lỗi có thể chỉ
xuất hiện một lần trong thông điệp SOAP. Một SOAP đơn giản trong body sẽ
Page 10


Học viện Kỹ thuật Mật mã

Môn: Công nghệ phần mềm

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 đư ra khi truyền tin: request

message (tham số gọi thực thi một thông điệp), response message (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). Một số đặc điểm của SOAP:
- Khả năng mở rộng (extensible): Cung cấp khả năng mở rộng phục vụ
cho nhu cầu đặc thù của ứng dụng và nhà cung cấp. Các chức năng về bảo mậ,
tăng độ tin cậy có thể đưa vào phần mở rộng của SOAP. Các nhà cung cấp dịch
vụ khác nhau, tùy vào đặc điểm hệ thống của mình có thể định nghĩa them các
chức năng mở rộng nhằm tăng thêm lợi thế cạnh tranh cũng như cung cấp thêm
tiện ích cho người sử dụng.
- Có thể hoạt động dựa trên các network protocol đã được chuẩn hóa
(HTTP, SMTP, FTP, TCP,…) - Độc lập với platform, ngôn ngữ lập trình hay
programming model được sử dụng.

Hình 1.9. Mô hình tương tác giữa các thành phần
Tóm lại SOAP, WSDL, UDDI có thể kết hợp với nhau theo sơ đồ sử dụng sau:

Hình 1.10. Sơ đồ sử dụng Web Service
Page 11


Học viện Kỹ thuật Mật mã

Môn: Công nghệ phần mềm

o Nhà cung cấp Web Service mô tả Web Service trong một tài liệu
WSDL và đăng ký nó lên một UDDI bằng cách Publisher’s API
o Một người sử dụng UDDI Inquiry API để tìm thông tin về nhà cung
cấp dịch vụ thích hợp. Nếu có, nó sẽ tìm kiếm tiếp tModel rồi từ đó
lấy ra tài liệu mô tả WSDL.
o Một yêu cầu dạng SOAP được tạo ra dựa trên tài liệu mô tả WSDL

o Yêu cầu SOAP trên sẽ được gửi đến nhà cung cấp dịch vụ và được
xử lý.
1.2.4.4. XML (eXtensible Markup language)
XML là viết tắt của cụm từ eXtensible Markup Language – là một chuẩn
mở do W3C đư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 còn
XML lại định nghĩa thành phần trong dữ liệu gồm những 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. Một số đặc điểm của XML:
- XML được thiết kế để chứa dữ liệu không phải để hiển thị dữ liệu
- Các thẻ XML không được định nghĩa trước mà do người lập trình tự
định nghĩa.
- Mỗi thẻ trong file XML không chỉ chữa dữ liệu mà còn cho biết dữ liệu
đó là gì. Điều này rất có lợi cho công việc tìm kiếm.
Ví dụ về cấu trúc của một tài liệu được mô tả bởi XML.
Page 12


Học viện Kỹ thuật Mật mã

Môn: Công nghệ phần mềm


Cấu trúc của một tài liệu được mô tả bằng XML
1.2.5. Hoạt động của Web services

Hình 1.11. Cấu trúc và hoạt động của một web service đơn giản
- Web service developer (provider): Người xây dựng và triển khai Web
Service. Có thể là một người hay một tổ chức mà cung cấp một phương thức
phù hợp để thực thi một dịch vụ cụ thể. Đăng ký và phân loại web service
- Web service consumer: Người yêu cầu Provider thực hiện các dịch vụ.
Truy vấn và tìm kiếm Web Services. Xác định và tìm ra web service thích hợp nhất
- Web service developer: Xây dựng ứng dụng tiêu thụ Web Service.
1.3. SOA và dịch vụ web
1.3.1. Định nghĩa SOA
SOA – Service Oriented Architecture là cấu trúc hướng dịch vụ.
SOA là phong cách kiến trúc để tạo ra một công trình kiến trúc IT, kiến trúc
đó khai thác các nguyên tắc của hướng dịch vụ để đạt được các mối quan hệ chặt
chẽ giữa doanh nghiệp và hệ thống thông tin nhằm hỗ trợ cho các doanh nghiệp.
Theo một dịnh nghĩa khác, SOA là phương pháp tiếp cận công nghệ thông
tin nhằm xây dựng các tiến trình nghiệp vụ thừ những thành phần mô hình có
Page 13


Học viện Kỹ thuật Mật mã

Môn: Công nghệ phần mềm

sẵn hoặc các dịch vụ mà đối lập với các ứng dụng và các phần nền của máy tính
như phần cứng hay môi trường lập trình mà nó chạy.
Một hệ thống được xây dựng theo mô hình SOA bao gồm các service thỏa
mãn các tính chất của service. Mỗi service trong hệ thống có thể được sửa đổi

một cách độc lập với các service khác nhằm mục đích đáp ứng một yêu cầu mới
từ thực tế. SOA có 3 đối tượng chính:
- Service Provider: Cung cấp thông tin về dịch vụ cho một nhu cầu nào
đó. Người sử dụng không cần quan tâm đến vị trí thực sự mà service họ cần sử
dụng đang hoạt động. Nhà cung cấp dịch vụ ở đây là một dịch vụ chấp nhận và
xử lý những yêu cầu từ người sử dụng dịch vụ. Nó có thể là một hệ thống mainrame. Một thành phần hoặc các dạng phần mềm khác xử lý yêu cầu dịch vụ. Nhà
cung cấp gửi hợp đồng lên service registry để những người sử dụng dịch vụ có
thể truy cập đến nó.
- Service Consumer: Người sử dụng service được cung cấp bởi Service
Provider. Có thể là một ứng dụng, một dịch vụ hoặc là các module phần mềm
khác yêu cầu sử dụng dịch vụ. Đây là thực thể thực thi quá trình dịch vụ thông
qua service registry, liên kết với dịch vụ và thực thi các chức năng của dịch vụ.
Người sử dụng dịch vụ thực thi chức năng dịch vụ bằng cách gửi một yêu cầu
đúng định dạng mô tả trong hợp đồng.
- Service Regiestry: Nơi lưu trữ thông tin về các service của các service
Provider khác nhau. Service registry chấp nhận và lưu trữ các hợp đồng không
gửi đến từ nhà cung cấp dịch vụ và cung cấp hợp đồng tùy theo yêu cầu của
người sử dụng. Service Consumer dựa trên những thông tin này để tìm kiếm và
lựa chọn Service Provider phù hợp.

Page 14


Học viện Kỹ thuật Mật mã

Môn: Công nghệ phần mềm

Hình 1.12. Sơ đồ cộng tác SOA
1.3.2. Tính chất của một hệ thống sử dụng SOA.
1.3.2.1. Tính loose coupling 1

SOA hỗ trợ tính loose coupling thông qua việc sử dụng hợp đồng và liên
kết. Một người dùng truy vấn đến nơi lưu trữ và cung cấp thông tin dịch vụ để
lấy thông tin về loại dịch vụ cần sử dụng. Registry sẽ trả về tất cả những dịch vụ
theo tiêu chuẩn tìm kiếm. Theo đó, người sử dụng chỉ việc chọn dịch vụ mà
mình cần, và thực thi phương thức trên đó theo mô tả dịch vụ nhận được từ
registry. Bên sử dụng dịch vụ không cần phụ thuộc trực tiếp vào cài đặt của dịch
vụ mà chỉ dựa trên hợp đồng mà dịch vụ đó hỗ trợ.
1.3.2.2. Tính sử dụng lại dịch vụ
Vì các dịch vụ được cung cấp lên trên mạng và được đăng ký ở một nơi
nhất định nên chúng dễ dàng được tìm thấy và tái sử dụng. Nếu một dịch vụ
không có khả năng tái sử dụng, nó cũng không cần đến interface mô tả. Các dịch
vụ có thể được tái sử dụng lại bằng cách kết hợp lại với nhau theo nhiều mục
đích khác nhau. Tái sử dụng lại các dịch vụ còn giúp loại bỏ những thành phần
trùng lặp và tăng độ vững chắc trong cài đặt, nó còn giúp đơn giản hóa việc quản
trị. Thực ra tái sử dụng dịch vụ lại dễ dàng hơn tái sử dụng thành tố hay lớp.
Những dịch vụ dùng chung bởi tất cả các ứng dụng của một hệ thống SOA gọi là
những share infrastructure service.
1.3.2.3. Sử dụng dịch vụ bất đồng bộ
Trên lý thuyết một hệ thống SOA có thể hỗ trợ gửi và nhận cả thông điệp
đồng bộ và bất đồng bộ.

Page 15


Học viện Kỹ thuật Mật mã

Môn: Công nghệ phần mềm

1.3.2.4. Quản lý các chính sách
Khi sử dụng các dịch vụ chia sẻ trên mạng, tùy theo mỗi ứng dụng sẽ có

một luật kết hợp riêng gọi là các policy. Các policy cần được quản lý các áp
dụng cho mỗi dịch vụ cả khi thiết kế lẫn khi trong thời gian thực thi.
1.3.2.5. Khả năng cộng tác
Kiến trúc hướng dịch vụ nhấn mạnh đến khả năng cộng tác, khả năng mà
hệ thống có thể giao tiếp với nhau trên nhiều nền tảng và ngôn ngữ khác nhau.
Mỗi dịch vụ cung cấp một interface có thể được triệu gọi thông qua một dạng
kết nối. Một kết nối được gọi là một interoperable chứa bên trong nó một giao
thức và một định dạng dữ liệu mà mỗi client kết nối đến nó đều hiểu.
1.3.2.6. Tự động dò tìm và ràng buộc động
Với tính chất này khi sử dụng kiến trúc SOA một người sử dụng cần đến một
dịch vụ nào đó có thể tìm kiếm dịch vụ dựa trên một số tiêu chuẩn khi cần. Người
sử dụng chỉ cần hỏi một registry về dịch vụ nào thỏa mãn yêu cầu tìm kiếm.
1.3.2.7. Tự phục hồi
Một hệ thống tự phục hồi là hệ thống có khả năng tự phục hồi sau khi bị
lỗi mà không cần sự can thiệp của con người. Trong kiến trúc hướng dịch vụ,
các dịch vụ luôn có thể hoạt động hay ngừng bất kỳ lúc nào, nhất là đối với
những ứng dụng tổng hợp từ nhiều dịch vụ của nhiều tổ chức khác nhau. Độ tin
cậy của hệ thống phụ thuộc vào khả năng phục hồi của phần cứng sau khi bị lỗi.
1.3.3. SOA và dịch vụ web
Những lợi ích của một hệ thống SOA đã quá rõ ràng nhưng việc triển khai
một hệ thống SOA và tích hợp chúng với Web Service là điều không hề dễ.
Trước đây, khi người dùng muốn sử dụng các chức năng của hệ thống thì họ
phải ngồi tại các thiết bị đầu cuối gắn liền với hệ thống mạng để truy cập. Ngày
nay điều này không còn cần thiết nữa vì trong một hệ thống SOA, các chức năng
này đã được “dịch vụ hóa” và cung cấp ra cho các đối tượng bên ngoài truy cập
thông qua các nghi thức chuẩn của web service.
Đặ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 bạn liên tưởng đến một công nghệ được đề cập
nhiều gần đây: Dịch vụ web. Dịch vụ web cho phép truy cập thông qua định
Page 16



Học viện Kỹ thuật Mật mã

Môn: Công nghệ phần mềm

nghĩa giao thức-và-giao tiếp. SOA và dịch vụ web thoạt trông có vẻ 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à module 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ụ 1
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ụ.
Định nghĩa cơ bản của dịch vụ web dựa trên một nền tảng khác: Tập hợp
các công nghệ WSDL (Web Services Description Language), SOAP (Simple
Object Access Protocol) và UDDI (Universal Description, Discovery ang
Integration), 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ệ còn SOA là
triết lý thiết kế phần mềm. Dịch vụ web đưa ra giải pháp kỹ thuật để thực hiện
SOA, nhưng SOA cũng có thể thực hiện với các giải pháp kỹ thuật khác không
phải dịch vụ web (và không phải tất cả dịch vụ web đều có kiến trúc SOA). 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.

SOA là một phương pháp thiết kế, trong khi dịch vụ Web chỉ là một công
nghệ. 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). Và đặc biêt trong quá
Page 17


Học viện Kỹ thuật Mật mã

Môn: Công nghệ phần mềm

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”.

Page 18


Học viện Kỹ thuật Mật mã

Môn: Công nghệ phần mềm

CHƯƠNG 2. CÁC KỸ THUẬT ĐẢM BẢO AN NINH WEB

SERVICE
Cùng với sự phát triển không ngừng của Web Service tạo nên những ảnh
hưởng nhất định trong việc xây dựng các mô hình phân tán. Các công nghệ kiến
trúc hướng đối tượng như DOA hay Java RMIT đang dần chuyển sang các kiến
trúc hướng dịch vụ SOA với những công nghệ như SOAP, HTTP và XML.
2.1. Các vấn đề bảo mật cần quan tâm

2.1.1. Những hạn chế của tường lửa
Các hệ thống tưởng lửa đều không giám sát chặt chẽ các gói tin được
truyền tải dựa trên giao thức HTTP, nghĩa là, các yêu cầu truy cập đến Web
Service thông qua nghi thức HTTP đều được các hệ thống tường lửa cho phép
qua. Sự thiếu sót này có thể khiến cho máy chủ có nguy cơ bị những cuộc tấn
công mà không thể biết trước. Trong thực tế, đã có những cuộc tấn công bằng
cách thiết kế các gói tin SOAP qua mặt được hệ thống tường lửa và máy chủ để
gây nên lỗi “Tràn vùng đệm” cho các ứng dụng bên trong.
Thời gian gần đây, rất nhiều những sản phẩm tường lửa giám sát những
gói tin chứa những dữ liệu dạng XML được xây dựng nhằm bảo vệ các web
service trong việc kiểm soát các yêu cầu dạng SOAP. Tuy nhiên, tính hiệu quả
của những sản phẩm này chưa đủ sức thuyết phục để các nhà quản trị chấp nhận
sử dụng nó như một phần của thiết kế an ninh hệ thống.
2.1.2. Cơ chế bảo mật chưa được định nghĩa một các đầy đủ
Hầu hết những chuẩn về bảo mật hiện nay đều chỉ tập trung vào việc đưa
ra các định dạng bảo vệ dữ liệu trong quá trình trao đổi, mà không quan tâm đến
việc xác định các nghi thức mà các bên cần thực hiện khi tương tác, như là việc
chứng thực và kiểm tra quyền.
2.1.3. Các giải pháp bảo mật khó tích hợp với nhau
Vì thiếu những chuẩn chung về việc chỉ ra nghi thức giao tiếp giữa những
web service khiến cho các sản phẩm hỗ trợ cho vấn đề bảo mật của web service
Page 19


Học viện Kỹ thuật Mật mã

Môn: Công nghệ phần mềm

trên thị trường ngày nay không thể hoàn toàn tích hợp với nhau, mặc dù các sản
phẩm này đều được thiết kế dựa trên các chuẩn về bảo mật cho web service.

Bảo mật trong qui trình phối hợp hoạt động của các WS
Khi số lượng các web ngày càng gia tăng, nhu cầu tái sử dụng lại các dịch
vụ này, kết hợp chúng theo những qui trình xử lý khác nhau để đạt được những
kết quả khác nhau đang giành được rất nhiều sự quan tâm. Và lúc này, rõ rang là
ta phải giải quyết được vấn đề bảo mật trong mối quan hệ tương tác giữa các
web service.
2.1.4. Bảo mật và vấn đề hiệu suất hoạt động
Một hệ thống sử dụng cơ chế bảo mật khóa công cộng đòi hỏi phải thực
hiện rất nhiều phép tính như là chứng nhận thông điệp, mã hóa và kiểm tra các
giấy chứng nhận. Việc truyền gửi một thông điệp đã được chứng nhận sẽ chậm
hơn rất nhiều lần so với việc truyền gửi một thông điệp thông thường. Và chắc
chắn rằng, sẽ luôn luôn có một sự ràng buộc giữa mức độ bảo mật và hiệu suất
hoạt động của hệ thống. Vấn đề đặt ra đó là, cần phải lên phương án, hoạch định
kế hoạch chi tiết, kỹ càng, thận trọng những công nghệ tối ưu về hiệu quả nhằm
đảm bảo rằng hệ thống SOA được an toàn, trong khi vẫn có hiệu suất hoạt động
ở mức chấp nhận được.
2.2. Giao thức bảo mật SSL
2.2.1. Cấu trúc giao thức bảo mật SSL
SSL 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 (thông thường là socket 443)
nhằm mã hoá toàn bộ thông tin đi/đến, mà ngày nay được sử dụng rộng rãi cho
giao dịch điện tử như truyền số hiệu thẻ tín dụng, mật khẩu, số bí mật cá nhân
(PIN) trên Internet. Giao thức SSL được hình thành và phát triển đầu tiên năm
1994 bởi nhóm nghiên cứu Netscape dẫn dắt bởi Elgammal và ngày nay đã trở
thành chuẩn bảo mật thực hành trên mạng Internet. Phiên bản SSL hiện nay là
3.0 và vẫn đang tiếp tục được bổ sung và hoàn thiện. Chức năng chính là bảo vệ
bằng mật mã lưu lượng dữ liệu HTTP.
Page 20



Học viện Kỹ thuật Mật mã

Môn: Công nghệ phần mềm

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” (hellos) 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
thực điện tử (digital certificate) xác thực của ứng dụng chủ (web server). Cấu
trúc của một giao thức bảo mật SSL như hình sau:

Hình 2.13. Cấu trúc của giao thức bảo mật SSL
Hình trên mô tả giao thức bảo mật SSL. Trong đó, SSL chỉ một lớp bảo
mật trung gian giữa tầng transport và tầng application. SSL được xếp lớp lên
trên một dịch vụ vận chuyển định hướng kết nổi và đáng tin cậy. Chẳng hạn như
được cung cấp bởi TCP. 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ế,
Page 21


Học viện Kỹ thuật Mật mã

Môn: Công nghệ phần mềm


một ưu điểm chính của các giao thức bảo mật tầng vận chuyể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
là 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 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ớn chúng lên trên SSL (mẫu tự S được
thêm vào trong các từ ghép giao thức tương ứng chỉ định việc sử dụng 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 cung cấp sự bảo mật truyền thông vốn có ba đặc
tính cơ bản:
1. 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 chung.
2. Sự bí mật của lưu lượng dữ liệu được bảo vệ vì nối kết đượ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.
3. Tính xác thực và tính toàn vẹn của lưu lượng 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 bằng cách sử dụng MAC.
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 lưu lượng. 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 lượng dữ liệu được
truyền, một người phân tích lưu lượng 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 cưỡng đ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ó ba khả năng để giải quyết vấn đề này:

Page 22


×