Tài liệu Luận văn Bảo mật trong môi trường lưới với tiếp cận hướng tác từ: BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
-------------------------------------
LUẬN VĂN THẠC SĨ KHOA HỌC
NGÀNH: CÔNG NGHỆ THÔNG TIN
BẢO MẬT TRONG MÔI TRƯỜNG LƯỚI
VỚI TIẾP CẬN HƯỚNG TÁC TỬ
LÊ HUY CƯỜNG
HÀ NỘI 2006
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
-------------------------------------
LUẬN VĂN THẠC SĨ KHOA HỌC
BẢO MẬT TRONG MÔI TRƯỜNG LƯỚI
VỚI TIẾP CẬN HƯỚNG TÁC TỬ
NGÀNH: CÔNG NGHỆ THÔNG TIN
MÃ SỐ:
LÊ HUY CƯỜNG
Người hướng dẫn khoa học: PGS.TS. NGUYỄN THANH THỦY
HÀ NỘI 2006
MỤC LỤC
MỤC LỤC......................................................................................................... 1
LỜI NÓI ĐẦU .................................................................................................. 3
LỜI CẢM ƠN ................................................................................................... 4
DANH MỤC CÁC KÝ HIỆU, CHỮ VIẾT TẮT............................................. 5
DANH M...
107 trang |
Chia sẻ: haohao | Lượt xem: 1070 | Lượt tải: 0
Bạn đang xem trước 20 trang mẫu tài liệu Luận văn Bảo mật trong môi trường lưới với tiếp cận hướng tác từ, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
-------------------------------------
LUẬN VĂN THẠC SĨ KHOA HỌC
NGÀNH: CÔNG NGHỆ THÔNG TIN
BẢO MẬT TRONG MÔI TRƯỜNG LƯỚI
VỚI TIẾP CẬN HƯỚNG TÁC TỬ
LÊ HUY CƯỜNG
HÀ NỘI 2006
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
-------------------------------------
LUẬN VĂN THẠC SĨ KHOA HỌC
BẢO MẬT TRONG MÔI TRƯỜNG LƯỚI
VỚI TIẾP CẬN HƯỚNG TÁC TỬ
NGÀNH: CÔNG NGHỆ THÔNG TIN
MÃ SỐ:
LÊ HUY CƯỜNG
Người hướng dẫn khoa học: PGS.TS. NGUYỄN THANH THỦY
HÀ NỘI 2006
MỤC LỤC
MỤC LỤC......................................................................................................... 1
LỜI NÓI ĐẦU .................................................................................................. 3
LỜI CẢM ƠN ................................................................................................... 4
DANH MỤC CÁC KÝ HIỆU, CHỮ VIẾT TẮT............................................. 5
DANH MỤC HÌNH VẼ.................................................................................... 6
Chương 1. Tổng quan tính toán lưới, bảo mật trên môi trường lưới ................ 8
1.1. Tính toán lưới ......................................................................................... 8
1.1.1. Giới thiệu về tính toán lưới ............................................................. 8
1.1.2. Lợi ích của tính toán lưới .............................................................. 10
1.1.3. Các vấn đề cơ bản của một lưới .................................................... 12
1.1.4. Kiến trúc lưới ................................................................................ 14
1.2. Các khái niệm cơ bản về bảo mật ........................................................ 15
1.2.1. Một số thuật ngữ cơ bản................................................................ 15
1.2.2. Mã hóa thông tin sử dụng khóa..................................................... 16
1.2.3. Mã hóa đối xứng ........................................................................... 17
1.2.4. Mã hóa công khai .......................................................................... 18
1.2.5. Chữ ký điện tử............................................................................... 19
1.2.6. Giấy chứng nhận điện tử và Nhà chứng nhận thẩm quyền........... 21
1.3. Cơ chế bảo mật trong môi trường lưới................................................. 25
1.4. Các chính sách bảo mật trong môi trường lưới.................................... 28
1.5. Giới thiệu về hạ tầng bảo mật lưới GSI ............................................... 30
1.5.1. Cơ sở hạ tầng khóa công khai ....................................................... 30
1.5.2. Bảo mật mức thông điệp và mức giao vận.................................... 31
1.5.3. So sánh hiệu năng của bảo mật mức thông điệp với mức giao vận
................................................................................................................. 32
1.5.4. Giấy ủy nhiệm............................................................................... 34
1.5.5. Sự ủy quyền................................................................................... 35
1.5.6. Chứng thực.................................................................................... 35
1.5.7. Ứng dụng của GSI......................................................................... 36
Chương 2. An toàn bảo mật trong Globus Toolkit 4 ...................................... 37
2.1. Giới thiệu về GT4 ................................................................................ 37
2.1.1. GT4, OGSA và WSRF.................................................................. 37
2.1.2. Giới thiệu chung về dịch vụ web .................................................. 40
2.1.3. WSRF - nền tảng tài nguyên dịch vụ web .................................... 48
2.1.4. Kiến trúc Globus Toolkit 4 ........................................................... 53
2.2. Các thành phần bảo mật trong GT4 ..................................................... 55
2.3. Ví dụ minh họa: cài đặt bảo mật trong GRAM.................................... 57
Chương 3. Ứng dụng công nghệ tác tử trong tính toán lưới ........................... 61
2
3.1. Tác tử.................................................................................................... 61
3.1.1. Khái niệm tác tử ............................................................................ 61
3.1.2. Hệ đa tác tử ................................................................................... 66
3.1.3. Truyền thông giữa các tác tử......................................................... 73
3.2. Tiềm năng ứng dụng công nghệ tác tử trong lưới................................ 76
3.3. Các hướng tiếp cận tích hợp công nghệ tác tử trong lưới.................... 77
3.4. Hướng triển khai công nghệ tác tử trong hệ thống BKGrid2006 ........ 79
3.4.1. Kiến trúc hệ thống BKGrid2006................................................... 79
3.4.2. Xây dựng các tác tử giúp đơn giản hóa việc thương lượng sử dụng
dịch vụ ..................................................................................................... 81
Chương 4. Xây dựng môđun bảo mật trong BKGrid 2006 ............................ 84
4.1. Yêu cầu cần thiết xây dựng môđun quản trị người dùng..................... 84
4.2. Kiến trúc môđun quản trị người dùng.................................................. 86
4.3. Thiết kế chi tiết..................................................................................... 89
4.3.1. Nhà chứng nhận thẩm quyền ........................................................ 89
4.3.2. Thành phần Quản lý giấy ủy nhiệm.............................................. 91
4.3.3. Thành phần Quản lý ánh xạ người dùng....................................... 91
4.3.4. Tích hợp với các chức năng quản lý người dùng cơ bản.............. 92
4.3.5. Đảm bảo an toàn cho môđun quản trị người dùng........................ 93
4.4. Tích hợp vào hệ thống BKGrid 2006................................................... 94
4.5. Hướng dẫn sử dụng .............................................................................. 95
4.6. Triển khai thử nghiệm.......................................................................... 97
4.6.1. Cấu hình triển khai ........................................................................ 97
4.6.2. Kết quả triển khai .......................................................................... 99
Chương 5. Kết luận ....................................................................................... 102
5.1. Kết quả đạt được ................................................................................ 102
5.2. Hướng phát triển ................................................................................ 103
TÀI LIỆU THAM KHẢO............................................................................. 104
3
LỜI NÓI ĐẦU
Công nghệ tính toán lưới đã và đang được nghiên cứu, phát triển và ứng
dụng rộng rãi trên thế giới. Tuy nhiên, hiện tại ở Việt Nam công nghệ này vẫn
còn khá mới mẻ. Để bắt kịp với xu thế chung của thế giới, Trung tâm Tính
toán hiệu năng cao, Trường Đại học Bách Khoa Hà Nội đã triển khai đề tài
Tính toán lưới nhằm mục đích tìm hiểu làm chủ công nghệ và ứng dụng vào
thực tiễn.
Lưới tính toán là một tập bao gồm nhiều tài nguyên phân tán và không
đồng nhất, các tài nguyên này thuộc về nhiều tổ chức khác nhau. Do vậy,
trong hệ thống lưới, vấn đề an ninh và bảo mật luôn được đặt lên hàng đầu.
Để trở thành người dùng của lưới, người dùng phải đáp ứng các yêu cầu phức
tạp về bảo mật như: có giấy chứng nhận, được người quản trị cấp phép truy
cập, mỗi lần truy cập vào tài nguyên phải tạo giấy ủy nhiệm để tương tác với
các tài nguyên. Điều đó làm khó khăn cho người sử dụng, nhất là người sử
dụng không có hiểu biết về bảo mật lưới.
Nhiệm vụ của luận văn "Bảo mật trong môi trường lưới với tiếp cận
hướng tác tử " là nghiên cứu các cơ sở hạ tầng bảo mật lưới và ứng dụng của
công nghệ tác tử trong tính toán lưới, áp dụng vào xây dựng môđun quản trị
người dùng trong hệ thống lưới BKGrid 2006. Mục đích của môđun quản trị
người dùng là làm cho các yêu cầu về bảo mật trở nên trong suốt đối với
người dùng. Cấu trúc của luận văn được chia thành 5 chương:
¾ Chương 1: Tổng quan về tính toán lưới, bảo mật trong môi trường lưới
¾ Chương 2: An toàn bảo mật trong Globus Toolkit 4.03
¾ Chương 3: Ứng dụng công nghệ tác tử trong tính toán lưới
¾ Chương 4: Kiến trúc hệ thống BKGrid 2006 và mô đun bảo mật
¾ Chương 5: Kết quả đạt được và hướng phát triển
4
LỜI CẢM ƠN
Trong thời gian làm luận văn tốt nghiệp, tôi đã nhận được sự hỗ trợ rất
quý báu từ các thầy cô giáo, các cán bộ và các thành viên khác của Trung tâm
Tính toán hiệu năng cao và của Trung tâm máy tính Trường Đại học Bách
Khoa Hà Nội.
Em xin chân thành cảm ơn PGS. TS. Nguyễn Thanh Thủy, Giám đốc
Trung tâm Tính toán hiệu năng cao, người đã tận tình chỉ bảo, cung cấp cơ sở
vật chất và các điều kiện tốt nhất cho em hoàn thành đề tài.
Em xin chân thành cảm ơn TS. Lê Đăng Hưng, thầy đã đóng góp những
ý kiến quý báu trong suốt quá trình thực hiện đề tài.
Em xin chân thành cảm ơn ThS. Đinh Hùng, thầy đã động viên và tạo
điều kiện cho em trong suốt thời gian thực hiện đề tài.
Cuối cùng tôi xin gửi lời cảm ơn chân thành tới các bạn sinh viên của cả
2 nhóm GCK46 và HPCK46. Các bạn đã giúp tôi rất nhiều trong việc tìm hiểu
và triển khai hệ thống lưới tính toán trên Trung tâm máy tính.
Hà Nội, ngày 20 tháng 10 năm 2006
Học viên thực hiện
Lê Huy Cường
5
DANH MỤC CÁC KÝ HIỆU, CHỮ VIẾT TẮT
STT Thuật ngữ Giải thích
1 ACL Agent Communication Language
2 AID Agent Identification
3 AMS Agent management System
4 AP Agent Platform
5 DF Directory Facilitator
6 GSI Grid Security Infrastructure
7 GT Globus Toolkit
8 HAP Home Agent Platform
9 KQML Knowledge Query and Manipulation Language
10 MAS MultiAgent System
11 MTS Message Transport Service
12 OGSA Open Grid Services Architecture
13 PKI Public Key Infrastructure
14 SSL/TLS Secure Socket Layer/Transport Layer Security
15 UDDI Universal Description Discovery and Integration
16 WSRF Web Services Resource Framework
6
DANH MỤC HÌNH VẼ
Hình 1.1. Tính toán lưới với tài nguyên phân tán ............................................. 8
Hình 1.2. Công việc được chuyển sang các nút ít bận hơn............................. 12
Hình 1.3. Kiến trúc phân tầng của lưới ........................................................... 15
Hình 1.4. Mã hóa bản tin sử dụng khóa .......................................................... 16
Hình 1.5. Giải mã thông điệp sử dụng khóa giải ............................................ 17
Hình 1.6. Mã đối xứng .................................................................................... 17
Hình 1.7. Giải thuật mã hóa không đối xứng.................................................. 18
Hình 1.8. Chữ ký điện tử và mã hóa công khai .............................................. 19
Hình 1.9. Giấy chứng nhận ............................................................................. 21
Hình 1.10. Giấy chứng nhận theo chuẩn X509............................................... 22
Hình 1.11. Cấu trúc phân cấp Nhà chứng nhận thẩm quyền .......................... 24
Hình 1.12. Tổ chức ảo..................................................................................... 26
Hình 1.13. Đưa các miền chính sách phân tán vào trong một miền tin tưởng
chung trong tổ chức ảo .................................................................................... 27
Hình 1.14. Bảo mật mức giao vận................................................................... 32
Hình 1.15. Bảo mật mức thông điệp ............................................................... 32
Hình 2.1. Quan hệ giữa OGSA, GT4, WSRF và các dịch vụ web ................. 39
Hình 2.2. Các dịch vụ web .............................................................................. 40
Hình 2.3. Một triệu gọi dịch vụ web điển hình............................................... 42
Hình 2.4. Kiến trúc dịch vụ web ..................................................................... 43
Hình 2.5. Client và server stub được sinh ra từ file WSDL............................ 44
Hình 2.6. Chi tiết một triệu gọi dịch vụ web điển hình .................................. 45
Hình 2.7. Kiến trúc phía server của một ứng dụng dịch vụ web .................... 47
Hình 2.8. Một triệu gọi dịch vụ web phi trạng thái......................................... 49
Hình 2.9. Một triệu gọi dịch vụ web có trạng thái .......................................... 49
Hình 2.10. Cách tiếp cận tài nguyên cho vấn đề trạng thái của dịch vụ web . 50
Hình 2.11. Một dịch vụ web với nhiều tài nguyên, mỗi tài nguyên biểu diễn
một file ............................................................................................................ 51
Hình 2.12. Dịch vụ web – tài nguyên ............................................................. 52
Hình 2.13. Kiến trúc Globus Toolkit 4 ........................................................... 54
Hình 2.14. Ví dụ về việc sử dụng một dịch vụ bởi một dịch vụ khác ............ 56
Hình 2.15. Cơ chế thực hiện của GRAM........................................................ 58
Hình 3.1. Sự phụ thuộc các hành động giữa các tác tử................................... 72
Hình 3.2. Truyền thông giữa các tác tử........................................................... 73
Hình 3.3. Kiến trúc BKGrid 2006................................................................... 79
Hình 3.4. Tác tử hỗ trợ thương lượng sử dụng dịch vụ lưới........................... 83
Hình 4.1. Minh hoạ về giấy chứng nhận, giấy uỷ nhiệm................................ 84
7
Hình 4.2. Kiến trúc môđun quản trị người dùng............................................. 87
Hình 4.3. Kiến trúc Nhà chứng nhận thẩm quyền .......................................... 89
Hình 4.4. Sơ đồ lớp Nhà chứng nhận thẩm quyền.......................................... 90
Hình 4.5. Sơ đồ lớp thành phần Quản lý giấy ủy nhiệm................................. 91
Hình 4.6. Sơ đồ lớp MapService..................................................................... 92
Hình 4.7. Lưu đồ tạo người dùng.................................................................... 93
Hình 4.8. Tương tác giữa môđun đệ trình công việc với môđun quản trị người
dùng................................................................................................................. 95
Hình 4.9. Sơ đồ triển khai thử nghiệm............................................................ 97
Hình 4.10. Xem thông tin về giấy ủy nhiệm................................................... 99
Hình 4.11. Tạo mới giấy ủy nhiệm ............................................................... 100
Hình 4.12. Dịch vụ MathService .................................................................. 101
8
Chương 1. Tổng quan tính toán lưới, bảo mật trên môi trường
lưới
1.1. Tính toán lưới
1.1.1. Giới thiệu về tính toán lưới
Ngày nay, với sự phát triển vượt bậc của khoa học kỹ thuật và công
nghệ, đã xuất hiện những bài toán trong nhiều lĩnh vực đòi hỏi sức mạnh tính
toán mà một máy tính riêng lẻ không thể làm được. Ngoài ra, nhìn chung mọi
người đều muốn có được khả năng chia sẻ tài nguyên trên phạm vi toàn cầu,
khả năng tận dụng các phần mềm cũng như tài nguyên vật lý phân tán cả về
mặt địa lý. Tính toán lưới ra đời nhằm giải quyết các yêu cầu trên.
Hình 1.1. Tính toán lưới với tài nguyên phân tán
Tính toán lưới tuy không còn là một khái niệm quá mới mẻ (được đưa ra
lần đầu tiên vào năm 1998 bởi I. Forster và C. Kesselman [3]), nhưng hiện tại
vẫn phát triển rất mạnh mẽ và còn rất nhiều vấn đề cần giải quyết. Một trong
9
những vấn đề đó là việc đưa ra được một định nghĩa hoàn chỉnh và chuẩn về
lưới.
Từ trước đến nay, mỗi tổ chức, cá nhân tùy theo cách quan niệm và thực
tế xây dựng hệ thống của mình mà đưa ra những định nghĩa khác nhau về
lưới. Chẳng hạn như:
- Định nghĩa 1: Một lưới tính toán là một cơ sở hạ tầng phần cứng và
phần mềm cung cấp khả năng truy nhập nhất quán, tin cậy, qui mô và
rẻ tới các tài nguyên tính toán mạnh.
I. Foster, C. Kesselman (1999)
- Định nghĩa 2: Tính toán lưới liên quan tới việc chia sẻ, điều phối tài
nguyên và giải quyết vấn đề trong phạm vi các tổ chức ảo.
I. Foster, C. Kesselman, S. Tuecke, “Anatomy of the Grid“ (2000)
- Định nghĩa 3: Một lưới là một hệ thống có các đặc trưng:
• Tài nguyên được điều phối một cách phi tập trung
• Sử dụng các giao thức chuẩn, mở và đa năng
• Cung cấp chất lượng dịch vụ không tầm thường
I. Foster‘s Three-Point Checklist (HPCWIRE - 22.07.2002)
Mỗi tác giả khi đưa ra định nghĩa đều đứng trên một số quan niệm nhất
định. Chẳng hạn định nghĩa 1 bị ảnh hưởng một cách sâu sắc bởi các dự án
siêu tính toán (meta-computing) trước đó. Định nghĩa 2 tập trung vào sự quan
trọng của các giao thức như là phương tiện để tương tác giữa các thành phần,
còn định nghĩa 3 “có thể sẽ thích hợp hơn cho các nghiên cứu về lưới có qui
mô rất lớn trong tương lai. Định nghĩa này đã bỏ qua nhiều đóng góp từ các tổ
chức công nghiệp, do đó có lẽ là không xác đáng” (W. Gentzsch, HPCWIRE
05.08.2002).
10
Vì vậy, để có được một cái nhìn toàn diện về lưới, luận văn không đưa ra
một định nghĩa cụ thể nào. Thay vào đó, chúng ta xem xét khái niệm lưới trên
cơ sở các đặc trưng sau:
- Kích thước lớn: theo nghĩa số lượng các tài nguyên tiềm tàng và
khoảng cách về mặt địa lý giữa chúng.
- Phân tán: có độ trễ đáng kể trong truyền dữ liệu và điều này có thể ảnh
hưởng lớn đến ứng dụng.
- Động: các tài nguyên có thể thay đổi khi ứng dụng đang được thực hiện
- Hỗn tạp: kiến trúc và tính chất của các nút lưới có thể là hoàn toàn khác
nhau
- Vượt qua phạm vi một tổ chức: có nhiều trạm và các chính sách truy
nhập có thể khác nhau trên các trạm.
Có thể hình dung đơn giản một lưới bao gồm một tập các tài nguyên đa
dạng (còn gọi là các nút lưới - có thể là PC, cluster, hệ thống lưu trữ, …)
thuộc về nhiều tổ chức nhằm giải quyết một bài toán nào đó
1.1.2. Lợi ích của tính toán lưới
Các lợi ích mà tính toán lưới mang lại bao gồm:
- Khai thác các tài nguyên nhàn rỗi: một trong những lợi ích cơ bản của
tính toán lưới là khả năng chạy ứng dụng trên một tài nguyên khác.
Thống kê cho thấy, đối với các máy tính để bàn, trong một ngày làm
việc thì chỉ có khoảng 5% thời gian là bận, còn lại là rỗi [4]. Việc tận
dụng khoảng thời gian rỗi này để chạy các ứng dụng khác là một việc
làm rất hiệu quả và kinh tế.
- Cung cấp khả năng xử lý song song: khả năng chạy ứng dụng song
song là tính năng thú vị nhất mà tính toán lưới mang lại. Lúc này, một
11
công việc được chia thành nhiều công việc con, các công việc con này
được thực hiện đồng thời trên các tài nguyên khác nhau của lưới. Do
đó, thời gian chạy ứng dụng sẽ được rút ngắn nhiều lần. Tuy nhiên, vấn
đề là không phải ứng dụng nào cũng có thể triển khai theo cách này
được. Cần xem xét các yếu tố như khả năng song song hóa, sự trao đổi
giữa các công việc con khi chạy để đánh giá xem một ứng dụng có thực
sự hiệu quả khi được triển khai trên lưới hay không.
- Giúp truy nhập các tài nguyên khác: ngoài tài nguyên tính toán và lưu
trữ, lưới còn cung cấp các loại tài nguyên khác, chẳng hạn đường
truyền mạng, các phần mềm đắt tiền. Ví dụ như nếu một người dùng
muốn tăng thông lượng kết nối tới Internet để thực hiện khai phá dữ
liệu, anh ta có thể tận dụng các kết nối Internet riêng biệt của các nút
lưới khác để chạy bài toán trên.
- Giúp cân bằng trong sử dụng tài nguyên: lưới cung cấp khả năng lập
lịch, giúp phân bổ các công việc lên các nút một cách hợp lý, tránh tình
trạng bị quá tải ở bất kì một nút nào.
- Giúp hợp tác giữa các tổ chức: sự hợp tác được thể hiện thông qua khái
niệm tổ chức ảo - sự kết hợp nhiều tổ chức thực cùng mục tiêu. Thông
qua mô hình tổ chức ảo, các tổ chức thực có thể chia sẻ tài nguyên như
dữ liệu, các thiết bị đặc biệt.
12
Hình 1.2. Công việc được chuyển sang các nút ít bận hơn
- Mang lại độ tin cậy: khái niệm tin cậy trong tính toán lưới được thể
hiện ở các khía cạnh sau: một là, trong lưới có những tài nguyên tính
toán đắt tiền, cung cấp độ tin cậy cao cho những bài toán được thực
hiện trên chúng. Hai là, lưới cung cấp khả năng lập lịch lại, phân bổ lại
công việc nếu có lỗi xảy ra. Ba là, nếu cần, một công việc có thể được
chạy đồng thời trên nhiều nút, cho nên việc xảy ra lỗi ở một nút sẽ
không làm ảnh hưởng đến kết quả của công việc đó.
1.1.3. Các vấn đề cơ bản của một lưới
Có 4 vấn đề cơ bản được quan tâm và xem xét khi đề cập đến tính toán
lưới [5], đó là:
13
- An toàn và bảo mật (Security): Một nền tảng bảo mật vững chắc sẽ
quyết định sự phát triển của môi trường tính toán lưới. Với tính chất
quy mô lớn, quan hệ chia sẻ tài nguyên giữa nhiều tổ chức, an toàn và
bảo mật luôn phải được coi là một trong những yếu tố hàng đầu trong
lưới. Hai vấn đề quan trọng trong an toàn bảo mật phải xem xét trong
tính toán lưới là:
o Chứng thực người dùng (Authentication)
o Xác thực thẩm quyền (Authorization).
- Lập lịch và quản lý tài nguyên (Resource Management and
Scheduling): Các tài nguyên lưới thường phân tán và không đồng nhất.
Do đó, việc tích hợp, đồng bộ hóa và biểu diễn chúng dưới một dạng
thống nhất là một yêu cầu tất yếu. Trong môi trường tính toán lưới, tại
một thời điểm có thể có rất nhiều ứng dụng cùng truy cập chia sẻ một
hoặc nhiều tài nguyên khác nhau, do vậy cần có một bộ lập lịch nhằm
tối ưu hóa các công việc. Bộ lập lịch phải dựa vào các thông tin trên
toàn bộ lưới để quyết định thứ tự đệ trình công việc.
- Dịch vụ thông tin (Information Service): Đối với một môi trường động
và không đồng nhất như tính toán lưới thì các thông tin về các thành
phần trong lưới sẽ thay đổi liên tục. Chính vì vậy, dịch vụ thông tin cần
cung cấp cơ chế tự động cập nhật và đăng ký các thông tin về toàn hệ
thống như kiến trúc các tài nguyên, các dịch vụ có thể cung cấp trên
lưới, trạng thái của toàn bộ môi trường lưới.
- Quản lý dữ liệu (Data Management): Việc truy cập các nguồn dữ liệu
trên lưới đòi hỏi một khả năng trao đổi, tương tác với các dữ liệu có thể
lên đến giga bytes hoặc hơn thế nữa. Điều này đòi hỏi tính toán lưới
14
phải có các chiến lược lưu trữ cũng như tối ưu hóa các hệ thống lưu
trữ.
1.1.4. Kiến trúc lưới
Theo [6], một lưới bao gồm các thành phần sau (hình 1.3):
- Tầng nền (Fabric): bao gồm các tài nguyên phân tán, các tài nguyên
này có thể có kiến trúc và tính chất rất khác nhau.
- Tầng trung gian lưới (Core Middleware): cung cấp các dịch vụ cơ bản
của lưới như quản lý truy nhập từ xa, định vị tài nguyên, đăng ký và
khám phá tài nguyên, bảo mật.
- Tầng trung gian phía người dùng (User level middleware): bao gồm
môi trường phát triển ứng dụng, các công cụ lập trình và các bộ môi
giới tài nguyên nhằm lựa chọn các tài nguyên phù hợp và thực hiện
công việc trên các tài nguyên đó.
- Các ứng dụng lưới và portal: tầng trên cùng là các ứng dụng lưới được
phát triển bởi các công cụ hỗ trợ. Grid Portal cung cấp giao diện Web
cho các ứng dụng lưới, giúp người dùng có thể đệ trình công việc và
tập hợp kết quả thông qua Web.
15
Hình 1.3. Kiến trúc phân tầng của lưới
1.2. Các khái niệm cơ bản về bảo mật
1.2.1. Một số thuật ngữ cơ bản
Chủ thể: là một thành viên của các hoạt động bảo mật. Đối với môi
trường lưới, chủ thể thường là người dùng, tài nguyên hay các tiến trình thay
mặt cho các tài nguyên đó.
Giấy ủy nhiệm: là thông tin dùng để cung cấp định danh cho chủ thể để
xác định tên và vai trò của chủ thể đó.
Chứng thực: là tiến trình để chủ thể chứng minh định danh của mình cho
đối tượng được yêu cầu. Chứng thực hai bên (bên yêu cầu và bên được yêu
16
cầu) là quá trình hai bên chứng thực lẫn nhau, còn gọi là chứng thực đa
phương.
Đối tượng: là các tài nguyên được bảo vệ bởi một chính sách bảo mật
địa phương cụ thể.
Xác thực thẩm quyền: là tiến trình mà thông qua đó, ta xác định được
một chủ thể có được phép truy nhập và sử dụng tài nguyên hay không.
Miền tin tưởng: là cấu trúc quản lý mức logic, do một chính sách bảo
mật ổn định, đơn lẻ mức địa phương nắm giữ, hay nói cách khác, nó là một
tập các chủ thể và đối tượng được quản lý bởi đơn miền quản trị và chính sách
bảo mật cục bộ.
1.2.2. Mã hóa thông tin sử dụng khóa
Để truyền tin an toàn, thông tin gửi đi sẽ được người gửi mã hóa bằng
khóa mã và người nhận để đọc được thông tin đã được mã hóa này anh(chị) ta
sẽ phải sử dụng khóa giải để giải mã.
Người gửi mã hóa thông tin bằng khóa mã và gửi cho người nhận:
Hình 1.4. Mã hóa bản tin sử dụng khóa
Người nhận sử dụng khóa giải để giải mã thông tin.
17
Hình 1.5. Giải mã thông điệp sử dụng khóa giải
Sau đây, ta sẽ xem xét hai phương pháp mã hóa thông dụng là mã đối
xứng và mã công khai.
1.2.3. Mã hóa đối xứng
Mã hóa đối xứng sử dụng cùng một khóa cho quá trình mã hóa và giải
mã. Trong đó, hàm giải mã là hàm ngược của hàm mã hóa.
Hình 1.6. Mã đối xứng
Mặc dù các phương pháp mã hóa đối xứng thường có tốc độ cao và dễ
cài đặt, nhưng chúng lại có nhiều yếu điểm. Một nhược điểm chính đó là vì cả
người gửi và người nhận đều sử dụng cùng một khóa mã do đó cần phải có sự
trao đổi thông tin thống nhất khóa thông qua một kênh mật. Đây là một vấn
đề lớn trong an toàn và bảo mật.
18
Các hệ thống bảo mật ngày nay thường sử dụng các thuật toán mã hóa
bất đối xứng (các khóa mã và khóa giải khác nhau). Mã hóa công khai là một
giải pháp được sử dụng phổ biến ngày nay.
1.2.4. Mã hóa công khai
Hình 1.7. Giải thuật mã hóa không đối xứng
Nền tảng của mã hóa công khai là khóa mã và khóa giải là khác nhau.
Các khóa này được xây dựng bằng cách chỉ ra một hàm bẫy sập một chiều.
Đồng thời, cũng chỉ ra một cửa bẫy (Trap-door).
Trong hai khóa đó, một khóa được chọn làm khóa bí mật và khóa còn lại
được chọn làm khóa công khai. Khóa bí mật chỉ có một người là chủ nhân của
nó nắm giữ. Khóa công khai được công bố rộng rãi cho bất cứ ai muốn trao
đổi thông tin mật với người sở hữu khóa. Khóa công khai được sử dụng để mã
hóa thông tin và khóa bí mật được sử dụng để giải mã.
Đối với hệ thống mã hóa công khai, độ phức tạp giải mã thường là hàm
mũ trong khi độ phức tạp giải mã của hệ thống mã đối xứng thường chỉ là
tuyến tính. Quá trình giao tiếp giữa hai đối tượng A và B có thể được mô tả
như sau: B sinh ra một cặp khóa bí mật và công khai, khóa bí mật được cất
19
giữ một cách an toàn và được bảo vệ bằng một mật mã còn khóa công khai
được cung cấp rộng rãi. A có thể sử dụng khóa công khai (được phát hành bởi
B) để mã hóa thông tin và gửi cho B. Lúc này, chỉ duy nhất B, người sở hữu
khóa bí mật, có thể giải mã thông tin được bằng khóa công khai.
Ngoài ra, mã công khai còn đảm bảo được tính toàn vẹn của thông tin
được mã hóa và còn được dùng trong các cơ chế xác thực. Tuy nhiên, một
nhược điểm lớn duy nhất của hệ mã hóa công khai này là quá trình giải mã
cũng như mã hóa mất nhiều thời gian.
1.2.5. Chữ ký điện tử
Chữ ký được dùng để xác định tính hợp thức của những văn bản trong
các quá trình giao dịch. Do đó, chữ ký là đặc trưng cho từng cá nhân. Chữ ký
điện tử là một hàm phụ thuộc vào thông tin mà nó ký. Trong giao dịch, chữ ký
điện tử được coi là một thông tin gắn liền với giao dịch.
Hình 1.8. Chữ ký điện tử và mã hóa công khai
20
Chữ ký điện tử cho một thông điệp được sản sinh theo 2 bước:
1. Bản tin đầu tiên được băm sử dụng một hàm băm thích hợp để đảm bảo
tính toàn vẹn của thông tin ban đầu gọi là thông điệp băm. Hàm băm có
chức năng biến đổi các xâu vào có độ dài thay đổi thành những xâu có
độ dài cố định và ngắn hơn các xâu vào rất nhiều.
2. Tiếp đó, bản tin đã được băm này được mã hóa sử dụng khóa bí mật
của người gửi. Kết quả ta thu được một chữ ký điện tử.
Chữ ký điện tử này được gửi kèm với bản tin tới người nhận. Người
nhận sẽ phải thực hiện các công việc sau:
1. Sử dụng khóa công khai của người gửi giải mã chữ ký điện tử để thu
được thông điệp băm của người gửi.
2. Sử dụng thuật toán băm đã được người gửi sử dụng để băm bản tin
nhận được thành một thông điệp băm.
3. So sánh thông điệp băm sau khi băm với thông điệp băm của người gửi.
Nếu chúng khác nhau chứng tỏ nội dung của bản tin nhận được đã bị
thay đổi so với bản tin ban đầu của người gửi. Đồng thời, ta cũng có thể
khẳng định đây là chữ ký điện tử của người gửi bởi vì chữ ký điện tử
được mã hóa bằng khóa bí mật của người gửi và do đó, chỉ khóa công
khai của người gửi mới có thể giải mã được chữ ký điện tử tương ứng.
Việc kết hợp mã hóa công khai với chữ ký điện tử cho phép ta xác định
được tính toàn vẹn của bản tin. Quá trình mô tả như trên chi tập trung vào xác
định tính toàn vẹn của bản tin bởi vì bản tin khi gửi đi không được mã hóa.
Điều này phù hợp với thực tế có những thông tin không cần che giấu nội dung
mà chỉ cần bảo vệ tính toàn vẹn của nội dung (đảm bảo nội dung không bị
thay đổi). Khi cần bảo mật nội dung bản tin, ta chỉ việc mã hóa nội dung của
bản tin.
21
Tuy nhiên, với quá trình như trên không có gì đảm bảo rằng khóa công
khai có đích thực là của người gửi hay không, có thể có một đối tượng khác
giả danh, đánh tráo khoá công khai của người gửi. Chính vì vậy, cần có một
cơ chế để đảm bảo xác nhận được khóa công khai mà ta đang sử dụng đích
thực là của người mà ta cần giao tiếp. Giấy chứng nhận điện tử cho phép ta
giải quyết vấn đề này.
1.2.6. Giấy chứng nhận điện tử và Nhà chứng nhận thẩm quyền
Hình 1.9. Giấy chứng nhận
Một giấy chứng nhận điện tử (gọi tắt là giấy chứng nhận) là một văn bản
điện tử xác nhận một khoá công khai được sở hữu bởi một người cụ thể. Một
giấy chứng nhận được cấp bởi một cơ quan có thẩm quyền gọi là Nhà chứng
nhận thẩm quyền. Những người tham gia giao dịch cần có một kênh liên lạc
bí mật với Nhà chứng nhận thẩm quyền.
Một ví dụ về giao dịch điện tử giữa hai chủ thể A và B, thông qua một
Nhà chứng nhận thẩm quyền S như sau:
Bước 1. Xin các giấy chứng nhận: A trước khi giao dịch gửi khoá công
khai cho S và S sẽ cấp một giấy chứng nhận CA. Thông tin từ A có thể gồm M
= [ZA, Tên, Chu kỳ sử dụng, ...] trong đó có ZA là khoá công khai của A. Giấy
22
chứng nhận CA được S mã hoá sử dụng khoá bí mật của mình EZs(M)). Tương
tự B cũng sẽ được S cấp cho một giấy chứng nhận CB.
Bước 2. Giao dịch điện tử: A tìm giấy chứng nhận CB của B, kiểm định
chữ ký điện tử của S đã kí lên CB. Nếu giấy chứng nhận CB đúng do S phát
hành, A tách khoá công khai của B để mã hoá thông tin của mình và gửi cho
B.
Với việc sử dụng giấy chứng nhận, quá trình chứng thực có sự liên quan
của ba bên A, B, S. Quá trình kiểm chứng rất nghiêm ngặt, S phải chứng minh
là người phát hành các giấy chứng nhận, các thông tin mà A gửi cho B cũng
bảo đảm bí mật, bởi vì nó đã được mã hóa bằng khóa công khai của B, chỉ có
B mới có khóa bí mật để giải mã thông tin từ A.
Chuẩn giấy chứng nhận X509
Đây là khuyến nghị về định dạng của giấy chứng nhận theo chuẩn X509.
Một giấy chứng nhận chuẩn X509 là một văn bản chứa các thông tin theo
định dạng sau:
Hình 1.10. Giấy chứng nhận theo chuẩn X509
23
Subject: đây là tên của đối tượng xin cấp. Nó được mã hoá theo định
dạng tên định danh (Distinguished Name) của đối tượng.
Subject’s public key: bao gồm các thông tin về khoá và thuật toán sử
dụng để sinh ra khoá công khai đó.
Issuer’s Subject: tên định danh của Nhà chứng nhận thẩm quyền.
Digital signature: chữ ký điện tử sinh ra bởi khoá bí mật của Nhà chứng
nhận thẩm quyền. Chữ ký này có thể được kiểm định bằng khoá công khai
của Nhà chứng nhận thẩm quyền.
Tên định danh (Distinguished Name - DN): là tên gồm các cặp giá trị
cách nhau bằng dấu phẩy. Ví dụ: "O=University of Technology, OU=Faculty
of Information Technology, CN=HPC". Một tên định danh có nhiều trường,
trong đó, có một số trường thông dụng là:
- O: tên tổ chức (Organization).
- OU: tên của đơn vị trong tổ chức đó (Organization Unit).
- CN: tên đối tượng, thông thường là tên của người dùng (Common
Name).
- C: đất nước (Country).
Tên định danh cho phép ta xác định được định danh duy nhất của một
đối tượng trong tổ chức.
Cấu trúc phân cấp Nhà chứng nhận thẩm quyền
Mỗi đối tượng tham gia giao tiếp có thể tin tưởng các Nhà chứng nhận
thẩm quyền khác nhau. Trong trường hợp này, cấu trúc phân cấp Nhà chứng
nhận thẩm quyền sẽ cho phép các bên tham gia tin tưởng các Nhà chứng nhận
thẩm quyền khác nhau vẫn có thể thiết lập các mối quan hệ tin cậy trong giao
tiếp.
24
Trong hình 1.9, giấy chứng nhận của Borja được ký bởi Nhà chứng nhận
thẩm quyền FOO. Ngược lại, giấy chứng nhận của Nhà chứng nhận thẩm
quyền FOO được ký bởi Nhà chứng nhận thẩm quyền BAR. Cuối cùng giấy
chứng nhận của BAR được ký bởi chính nó.
Nếu chúng ta nhận được giấy chứng nhận của Borja mà không hoàn toàn
tin tưởng Nhà chứng nhận thẩm quyền FOO, như vậy có nghĩa là giấy chứng
nhận của Borja sẽ không được tin tưởng ngay. Chúng ta có thể kiểm tra xem
giấy chứng nhận của Nhà chứng nhận thẩm quyền FOO có được cấp bởi một
Nhà chứng nhận thẩm quyền mà ta tin tưởng hay không. Nếu Nhà chứng nhận
thẩm quyền BAR nằm trong danh sách tin tưởng của ta, khi đó giấy chứng
nhận của Borja được tin tưởng.
Hình 1.11. Cấu trúc phân cấp Nhà chứng nhận thẩm quyền
25
Tuy nhiên, chú ý rằng Nhà chứng nhận thẩm quyền cấp cao tự ký giấy
chứng nhận của mình. Điều này không hiếm thấy. Giấy chứng nhận này được
gọi là giấy chứng nhận tự ký. Một Nhà chứng nhận thẩm quyền với một giấy
chứng nhận tự ký được gọi là Nhà chứng nhận thẩm quyền gốc, bởi không có
Nhà chứng nhận thẩm quyền nào ở trên nó. Để tin tưởng giấy chứng nhận
được ký bởi một Nhà chứng nhận thẩm quyền, Nhà chứng nhận thẩm quyền
gốc tương ứng phải nằm trong danh sách Nhà chứng nhận thẩm quyền được
tin tưởng.
1.3. Cơ chế bảo mật trong môi trường lưới
Khái niệm tổ chức ảo là một khái niệm rất quan trọng trong tính toán
lưới. Tổ chức ảo là một tổ chức được lập ra động để giải quyết một vấn đề
nào đó. Thành phần của tổ chức ảo bao gồm rất nhiều tài nguyên thuộc về
nhiều tổ chức thực khác nhau trong môi trường lưới và cùng hoạt động vì một
mục tiêu chung. Tùy theo mức độ của vấn đề cần giải quyết mà các tổ chức ảo
có thể rất khác nhau về quy mô, phạm vi hoạt động, thời gian sống. Hình 1.12
minh họa về tổ chức ảo. Có một người dùng cần giải một bài toán lớn về dự
báo thời tiết, anh ta thành lập một tổ chức ảo bằng cách thuê một số nguồn tài
nguyên khác nhau từ một vài tổ chức thực khác nhau. Tương tự như vậy, một
người dùng cần giải một bài toán về dự báo tài chính, anh ta cũng thành lập
một tổ chức ảo để giải quyết bài toán này.
26
Hình 1.12. Tổ chức ảo
Các yêu cầu bảo mật trên môi trường lưới được định hướng để cung cấp
các tổ chức ảo phân tán, rộng lớn để chia sẻ và sử dụng các nguồn tài nguyên
đa dạng trong một mô hình thống nhất. Tuy nhiên, về khía cạnh bảo mật, các
tài nguyên cũng như các thành phần khác tham gia lưới lại bị quản lý bởi các
nội quy và các chính sách của tổ chức thực mà chúng là thành viên. Do vậy,
để các tổ chức ảo truy nhập vào các tài nguyên trong các tổ chức thực, chúng
phải được thiết lập và cộng tác qua mối quan hệ tin tưởng hai bên, tồn tại giữa
người dùng với các tổ chức thực của họ và mối quan hệ giữa người dùng với
các tổ chức ảo. Chúng ta không thể thiết lập quan hệ tin tưởng trực tiếp giữa
các tổ chức thực với tổ chức ảo hay các thành viên mở rộng của nó.
Cơ chế bảo mật lưới giải quyết các trở ngại này bằng cách cho phép có
một tổ chức ảo thống nhất chung một phần chính sách của các tổ chức thực.
Cơ chế được thể hiện như hình vẽ:
27
Hình 1.13. Đưa các miền chính sách phân tán vào trong
một miền tin tưởng chung trong tổ chức ảo
Các tài nguyên và các tổ chức đưa ra các điều khiển chính sách mở rộng
cho một bên thứ ba, các tổ chức ảo, phối hợp các chính sách mở rộng trong
một miền tin tưởng ổn định lâu dài, để cho phép chia sẻ tài nguyên và sử
dụng. Giải pháp tải chồng các chính sách dẫn tới các chức năng chủ yếu sau
mà bảo mật lưới phải thực hiện:
- Hỗ trợ nhiều cơ chế bảo mật khác nhau: Các miền tài nguyên hay các
tổ chức ảo thường đã có sự đầu tư đáng kể trong các cơ chế bảo mật và
cơ sở hạ tầng bảo mật của địa phương họ. Do vậy khó khăn lớn nhất
chính là phải liên kết các công nghệ bảo mật trên các địa phương hơn là
thay thế toàn bộ nó, như thế sẽ rất tốn kém và không có tính kế thừa.
- Khởi tạo động các dịch vụ: Người dùng có thể khởi tạo ra các dịch vụ
mới mà không cần có sự can thiệp của nhà quản trị, ngoài ra các dịch
28
vụ này còn có thể tương tác với nhau. Như vậy là phải có cơ chế định
danh các thực thể lưới, cấp quyền cho các dịch vụ mà không ảnh hưởng
tới các cơ chế bảo mật địa phương. Một ví dụ trong cơ sở hạ tầng bảo
mật lưới, khi một dịch vụ lưới cung cấp cho người dùng, các định danh
về người dùng sử dụng dịch vụ, định danh của dịch vụ, định danh của
hệ thống mà dịch vụ đăng ký trên đó đều được xác định rõ ràng.
- Thiết lập động các miền chứng thực tin tưởng: Việc chứng thực
không chỉ được thiết lập giữa người dùng và tài nguyên trong một tổ
chức ảo mà còn mở rộng giữa các tổ chức ảo với nhau. Như vậy đòi hỏi
phải có một mô hình bảo mật hướng người dùng, cho phép người dùng
tạo ra các thực thể và các miền chính sách để liên kết tài nguyên trong
các tổ chức ảo.
1.4. Các chính sách bảo mật trong môi trường lưới
Sau đây là các chính sách bảo mật giải quyết các yêu cầu trình bày ở
phần trên.
1. Môi trường lưới bảo mật đa miền: Do lưới là một tập hợp không đồng
nhất của các người dùng và tài nguyên cục bộ, cho nên các chính sách
bảo mật cục bộ dành cho các tài nguyên và người dùng cũng khác nhau,
chính sách bảo mật lưới phải đảm bảo tích hợp được tất cả các tập hợp
không đồng nhất này. Nói chung, môi trường lưới không hạn chế hay
không ảnh hưởng tới các chính sách bảo mật địa phương, nhiệm vụ của
chính sách bảo mật lưới là phải tập trung điều khiển các tương tác liên
miền, ánh xạ các hoạt động liên miền vào trong các chính sách bảo mật
địa phương. Ví dụ trong cơ sở hạ tầng lưới, các hoạt động liên miền
được thực hiện bởi các chủ thể sở hữu một giấy chứng nhận lưới theo
chuẩn X509. Trong từng miền cụ thể, các giấy chứng nhận này sẽ được
29
ánh xạ tương ứng với một người dùng cục bộ nào đó thông qua một file
ánh xạ (grid-mapfile), là một bản ghi chứa tên người dùng cục bộ và
định danh của giấy chứng nhận đó.
2. Hoạt động lưới hạn chế trong đơn miền quản trị: Mặc dù lưới là một
tập đa miền quản trị, tuy nhiên các hoạt động đa miền lại phải tuân theo
các chính sách bảo mật địa phương trên đơn miền quản trị. Nói cách
khác, không có hoạt động bảo mật hay dịch vụ lưới nào được đưa vào
các hoạt động địa phương thông qua các chính sách bảo mật của lưới.
3. Các chủ thể toàn cục và cục bộ đều tồn tại: Tại mỗi đơn miền quản trị
đều tồn tại hai chủ thể trên, và chính sách để ánh xạ từ một phần tử toàn
cục vào phần tử cục bộ. Ví dụ, mỗi người dùng đều có hai tên, một tên
toàn cục để hoạt động trên tất cả các tài nguyên, và một tên cục bộ trên
mỗi tài nguyên. Ánh xạ tên toàn cục vào tên cục bộ tạo khả năng đăng
nhập một lần (single-sign-on) trên môi trường lưới. Trong cơ sở hạ tầng
lưới GSI, tên toàn cục chính là tên định danh của giấy chứng nhận
X509, và tên cục bộ là tên người dùng trong hệ điều hành.
4. Chứng thực đa phương: Hoạt động giữa các thực thể định vị trong các
miền tin tưởng khác nhau đòi hỏi chứng thực đa phương, bảo đảm cho
sự an toàn và bí mật của các hoạt động. Ví dụ như trong dịch vụ truyền
file GridFTP, cả client và server đều phải chứng minh định danh của
mình trong lưới, client đòi hỏi server có định danh như mình mong
muốn không, còn server sẽ kiểm tra danh sách các định danh client,
xem client có quyền đăng nhập vào server để sử dụng dịch vụ truyền
file không.
5. Mỗi đối tượng toàn cục được ánh xạ vào đối tượng cục bộ được coi
như chúng đã qua chứng thực địa phương trên đối tượng cục bộ đó.
30
6. Tất cả các quyết định điều khiển được đưa ra đều là cục bộ hay dựa
trên cơ sở của đối tượng cục bộ, hay không có một quyết định điều
khiển nào là toàn cục, áp dụng cho tất cả các tài nguyên cục bộ. Ví dụ,
một người dùng lưới có thể sử dụng dịch vụ truyền file GridFTP tại
một tài nguyên này, nhưng tại các tài nguyên khác trong lưới, anh ta sẽ
không có quyền truy nhập. Anh ta không thể ra lệnh truyền file cho
toàn bộ các tài nguyên trong lưới.
7. Có thể dùng chung tập giấy chứng nhận với các chương trình thay
mặt cho cùng một tiến trình, chạy trên cùng một chủ thể trong cùng một
miền tin tưởng. Như đã biết, tính toán lưới liên quan tới hàng trăm tiến
trình chạy trên một tài nguyên đơn. Chính sách này cho phép mở rộng
cho các ứng dụng song song có kích thước lớn, bằng cách tránh các yêu
cầu phải tạo một giấy chứng nhận duy nhất cho mỗi tiến trình, mà cho
phép các tiến trình song song này dùng chung một tập các giấy chứng
nhận.
1.5. Giới thiệu về hạ tầng bảo mật lưới GSI
An toàn bảo mật là một trong những nền tảng quan trọng nhất trong hệ
thống lưới. Hạ tầng bảo mật lưới GSI được đưa ra để giải quyết những vấn đề
bảo mật còn tồn tại trong tính toán lưới, mà nền tảng chính là những kiến thức
cơ sở về mã mật và bảo mật mà nêu ra ở phần trên. Trong phần này đưa ra
một số đặc điểm của GSI và các cài đặt ứng dụng của nó.
1.5.1. Cơ sở hạ tầng khóa công khai
GSI được xây dựng dựa trên cơ sở hạ tầng khóa công khai PKI. PKI là
tập các thực thể (người dùng và tài nguyên), được phân biệt bởi tên duy nhất
gọi là tên định danh. Chứng thực trong GSI nghĩa là cho mỗi thực thể người
dùng hoặc tài nguyên một tên định danh duy nhất.
31
Để mỗi một thực thể có một định danh duy nhất, GSI đưa ra khái niệm
giấy ủy nhiệm lưới, là một cặp gồm giấy chứng nhận và một khóa mã hóa còn
gọi là khóa bí mật.
Một điều quan trọng trong môi trường PKI, mỗi thực thể phải trao quyền
sở hữu khóa bí mật của mình để bảo đảm sự toàn vẹn của hệ thống. Để bảo
đảm khóa bí mật không bị đánh cắp, có thể sử dụng một số phương pháp:
- Lưu trữ khóa trong một file có quyền truy nhập hạn chế.
- Lưu trữ khóa trong một file đã mã hóa mà khóa mã chỉ được biết bởi
người sử hữu nó.
- Lưu trữ khóa bí mật bằng các thiết bị phần cứng có mật khẩu. Giải
pháp phần cứng cho ta tính bảo mật cao nhất, nhưng nó lại ít được sử
dụng bởi thiếu sự phát triển của phần cứng.
- Sử dụng giấy ủy nhiệm trong một khoảng thời gian sống nhất định thì
nó sẽ không còn hợp lệ nữa. Điều này đòi hỏi thường xuyên phải có tập
mới các giấy ủy nhiệm, bảo vệ khóa bí mật bằng cách hạn chế sự lộ
diện của nó.
1.5.2. Bảo mật mức thông điệp và mức giao vận
GSI cho phép chúng ta thực hiện bảo mật ở hai mức: mức giao vận và
mức thông điệp. Để thấy điểm khác nhau giữa hai mức này, hãy giả sử rằng
chúng ta muốn truyền thông của mình là bí mật. Nếu chúng ta sử dụng bảo
mật mức giao vận, như trên hình 1.14 (bảo mật mức giao vận), toàn bộ truyền
thông được mã hóa. Nếu sử dụng bảo mật mức thông điệp, như trên hình 1.15
(bảo mật mức thông điệp), khi đó chỉ có nội dung của thông điệp SOAP được
mã hóa.
32
Hình 1.14. Bảo mật mức giao vận
Hình 1.15. Bảo mật mức thông điệp
Cả hai mức bảo mật giao vận và thông điệp trong GSI đều dựa trên mật
mã khóa công khai, và do đó có thể đảm bảo tính toàn vẹn, riêng tư và khả
năng chứng thực. Tuy nhiên, không phải tất cả truyền thông cần có cả ba đặc
tính này. Nói chung, hội thoại an toàn phải đảm bảo tối thiểu khả năng chứng
thực. Toàn vẹn thường rất cần thiết, nhưng có thể bỏ qua. Mã hóa có thể được
kích hoạt để đảm bảo tính riêng tư. Khi lập trình dịch vụ bảo mật, chúng ta sẽ
thấy các đặc tính này có thể sử dụng một cách dễ dàng như thêm một vài dòng
mã ở phía client xác định rằng chúng ta muốn toàn vẹn nhưng không mã hóa
trong quá trình truyền thông.
1.5.3. So sánh hiệu năng của bảo mật mức thông điệp với mức giao vận
Bảo mật mức giao vận đã phát triển trong một thời gian dài. Thực tế, rất
có thể chúng ta đã sử dụng mức bảo mật này khi duyệt web, các website an
toàn thường trả lời trên bảo mật mức giao vận.
Bảo mật mức thông điệp trong dịch vụ web tương đối mới, và mặc dù nó
cung cấp nhiều đặc tính hơn so với bảo mật mức giao vận (chẳng hạn như tích
hợp với chuẩn dịch vụ Web), hiệu năng của nó là một vấn đề phải bàn. Do đó
mặc dù bảo mật mức thông điệp có rất nhiều ưu việt, nhiều khi vẫn phải xem
33
xét tới việc sử dụng bảo mật mức giao vận nếu hiệu năng là một vấn đề quan
trọng.
GSI cung cấp hai lược đồ bảo mật mức thông điệp, và một lược đồ mức
giao vận. Sự khác nhau giữa ba lược đồ này được trình bày trong bảng 1.1.
- Thông điệp an toàn: cung cấp bảo mật mức thông điệp và dựa trên
chuẩn bảo mật dịch vụ web (Web Service- WS) đã đề xuất.
- Hội thoại an toàn: cung cấp bảo mật mức thông điệp và dựa trên đặc
tả hội thoại an toàn WS. Khi phương pháp này được chọn, đầu tiên một
ngữ cảnh bảo mật phải được thiết lập giữa client và server. Sau khi một
trao đổi khởi tạo của thông điệp đươc thiết lập trong ngữ cảnh, tất cả
các thông điệp có thể sử dụng lại ngữ cảnh này, kết quả là hiệu năng
cao hơn so với thông điệp an toàn (nếu phần khởi tạo thiết lập ngữ cảnh
được chấp nhận). Hơn nữa, hội thoại an toàn chỉ là một lược đồ hỗ trợ
ủy quyền.
- Bảo mật mức giao vận: cung cấp bảo mật mức giao vận bằng cách sử
dụng công nghệ TLS (thường được gọi là SSL). Nó cung cấp hiệu năng
tốt nhất.
Các lược đồ này không loại trừ lẫn nhau. Ví dụ, chúng ta có thể sử dụng
hội thoại an toàn với các ứng dụng cần ủy nhiệm, và sau đó thêm giao vận an
toàn do chúng ta muốn mã hóa toàn bộ quá trình truyền thông (không chỉ một
phần của thông điệp SOAP). Việc này không dẫn tới bất kỳ dư thừa nào.
Bảng 1.1. So sánh bảo mật mức giao vận và mức thông điệp
Hội thoại an toàn Thông điệp an toàn
Bảo mật tầng
giao vận
Công nghệ WS-SecureConversation WS-Security TLS
Rêng tư (mã
hóa) Có Có Có
34
Hội thoại an toàn Thông điệp an toàn
Bảo mật tầng
giao vận
Toàn vẹn (ký) Có Có Có
Thẩm quyền
nặc danh Có Không Không
Ủy quyền Có Không Không
Hiệu năng Tốt nếu gửi nhiều thông điệp
Tốt nếu gửi ít
thông điệp Tốt nhất
1.5.4. Giấy ủy nhiệm
Trong môi trường lưới, người sử dụng cần được chứng thực nhiều lần
trong khoảng thời gian tương đối ngắn, ví dụ với nhiều tài nguyên lưới cùng
cộng tác với nhau. Đòi hỏi người sử dụng phải gõ mật khẩu nhiều lần trong
chứng thực đa phương là một điều không thuận tiện, đồng thời nó cũng bất lợi
cho vấn đề bảo mật, bởi mỗi lần đó, khóa bí mật sẽ được giải mã, rất dễ bị kẻ
địch đánh cắp. Một cách khác là sử dụng phần mềm, không chỉ nhắc người sử
dụng gõ mật khẩu một lần, mà còn lưu giữ mật khẩu hay khóa bí mật chưa
giải mã cho nhiều mục đích sử dụng khác. Tuy nó rất thuận tiện cho người
dùng, nó lại bất lợi trên quan điểm về bảo mật, khi mà nó để lộ khóa bí mật
trong một khoảng thời gian dài.
GSI giải quyết vấn đề này với khái niệm giấy ủy nhiệm. Mỗi giấy ủy
nhiệm sẽ hoạt động thay mặt người dùng trong một khoảng thời gian ủy
quyền ngắn hạn. Nói cách khác, việc sử dụng giấy ủy nhiệm ngắn hạn thay
thế cho các giấy chứng nhận dài hạn khi chứng thực người dùng.
Giấy ủy nhiệm có giấy chứng nhận và khóa bí mật riêng của nó, được
tạo ra bằng cách kí lên giấy chứng nhận dài hạn của người dùng. Giấy ủy
nhiệm, theo một cách khác, là sự liên kết ngắn hạn giữa tên định danh của
người dùng với một khóa bí mật khác. Giấy chứng nhận thường được lưu trữ
sử dụng mã hóa trong hệ thống file địa phương, thường được bảo vệ bởi
35
quyền truy cập file trong hệ thống, có thể được sử dụng nhiều lần mà không
có sự bất tiện nào. Còn giấy ủy nhiệm dễ bị tổn thương, nó có thời gian sống
ngắn hạn hơn nhiều so với các giấy chứng nhận dài hạn của người dùng,
thông thường là vài giờ.
1.5.5. Sự ủy quyền
Điều này là rất quan trọng trong các ứng dụng phân tán, các ứng dụng
của người dùng có thể thay mặt họ trong môi trường lưới. Một ví dụ, trong
một tính toán phức tạp và kéo dài liên quan tới nhiều tiến trình khác nhau,
người dùng không phải lúc nào cũng có mặt để chứng thực cho mỗi tiến trình.
GSI giải quyết vấn đề này bằng cách cho phép người dùng ủy quyền giấy ủy
nhiệm của mình cho giao dịch các máy từ xa.
Sự ủy quyền cũng tương tự như việc tạo ra các giấy ủy nhiệm, một tập
các giấy chứng nhận dài hạn sẽ được dùng để tạo ra tập các giấy ủy nhiệm
mới, có thời gian sống ngắn hơn. Sự khác nhau là việc tạo ra các giấy ủy
nhiệm xảy ra trong các phiên kết nối đòi hỏi chứng thực GSI, khi các tiến
trình từ xa đòi hỏi giấy ủy nhiệm của người dùng cho chứng thực. Một điều
đáng chú ý nữa là sự ủy quyền có thể là một chuỗi, một người có thể ủy
quyền cho một host A, sau đó tiến trình sử dụng trên host A có thể ủy quyền
cho host B và cứ tiếp tục như vậy.
1.5.6. Chứng thực
GSI hỗ trợ cơ chế cho phép chuyển các tên định danh GSI của người
dùng (ví dụ tên định danh từ giấy chứng nhận của người dùng) vào trong các
định danh địa phương (tài khoản của một người dùng Unix cục bộ).
Việc chứng thực các định danh GSI sẽ chuyển về chứng thực các định
danh địa phương, cùng với việc đó, các chính sách đưa ra cũng nằm trong
phạm vi cục bộ như: quyền truy nhập file, dung lượng đĩa, tốc độ CPU, ...
36
1.5.7. Ứng dụng của GSI
GSI cho phép người dùng và các ứng dụng lưới truy nhập vào các tài
nguyên một cách an toàn. Một số khả năng bảo mật được GSI tập trung hỗ
trợ: cơ chế uỷ quyền và đăng nhập một lần, thẩm quyền và chứng thực đa
phương, các giấy ủy nhiệm thay mặc người dùng trong thời gian ngắn hạn, ...
GSI cũng là thành phần thiết yếu cho một số công cụ như grid-proxy-init để
tạo ra giấy ủy nhiệm từ các giấy chứng nhận, các dịch vụ truyền file GridFTP
và máy chủ thông tin LDAP, đệ trình các ứng dụng từ xa Globus Toolkit
Gram hay Secure Shell (SSH) để kết nối tới các máy từ xa. Ngoài ra, tập các
thư viện bảo mật GSI trong Java Cog Kit tạo điều kiện thuận lợi cho phát
triển các ứng dụng lưới có hỗ trợ bảo mật.
37
Chương 2. An toàn bảo mật trong Globus Toolkit 4
Chương 1 đã giới thiệu tổng quan về tính toán lưới, các yêu cầu về bảo
mật trong môi trường lưới và cơ sở hạ tầng bảo mật lưới GSI. Globus Toolkit
(GT) đã cài đặt cơ sở hạ tầng lưới GSI trong mô hình bảo mật của mình, tích
hợp GSI với OGSA (Open Grid Service Architecture), cho phép tận dụng
được các kỹ thuật và cơ chế bảo mật sẵn có của các dịch vụ Web. GT sử dụng
các cơ chế bảo mật sau của OGSA và dịch vụ Web:
- Sắp đặt các chức năng bảo mật tương tự như các dịch vụ khác của
OGSA. Do đó, chúng có thể được phân bố và sử dụng bất cứ khi nào
ứng dụng yêu cầu.
- Thiết lập các môi trường trình chủ an toàn.
- Cung cấp các chính sách bảo mật để các client (có thể là người dùng
hoặc ứng dụng) có thể dễ dàng tham gia lưới.
- Xác định các tiêu chuẩn trao đổi các mã bảo mật để có thể cung cấp
khả năng liên tác.
Tính đến thời điểm hiện tại, Globus Toolkit 4.03 là phiên bản ổn định
mới nhất của bộ công cụ Globus Toolkit. So với các thế hệ trước, phiên bản
này có nhiều cải tiến quan trọng về mặt kiến trúc và công nghệ.
2.1. Giới thiệu về GT4
2.1.1. GT4, OGSA và WSRF
2.1.1.1. Globus Toolkit 4
Globus Toolkit là một bộ công cụ được phát triển bởi Globus Alliance
[12], nó được sử dụng để phát triển các ứng dụng lưới. Bộ công cụ bao gồm
một số các dịch vụ ở mức cao để giúp việc phát triển các ứng dụng lưới,
38
chẳng hạn bảo mật, khai phá tài nguyên, … Phiên bản mới nhất GT4 hiện tại
triển khai các thành phần cốt lõi dựa trên OGSA.
2.1.1.2. Kiến trúc dịch vụ lưới mở (Open Grid Services Architecture-
OGSA)
Một ứng dụng lưới thường gồm nhiều thành phần, dịch vụ khác nhau,
như dịch vụ quản lý tổ chức ảo, dịch vụ quản lý và khám phá tài nguyên, dịch
vụ quản lý công việc… Ngoài ra, các dịch vụ lưới lại thường xuyên tương tác
với nhau. Càng nhiều dịch vụ, số tương tác giữa chúng càng tăng và sẽ rất dễ
dẫn đến tình trạng hỗn loạn. Nếu mỗi dịch vụ có các cách thức khác nhau để
tương tác với các dịch vụ khác thì vấn đề giao tiếp giữa các dịch vụ lưới trong
một hệ thống sẽ rất phức tạp. Do đó, điều cần thiết là phải có chuẩn chung
định nghĩa giao diện chung cho mỗi loại dịch vụ.
OGSA được phát triển bởi Global Grid Forum[13] nhằm đạt mục tiêu
trên. Nó tiêu chuẩn hóa tất cả các dịch vụ thường có trong một ứng dụng lưới
bằng các qui định các giao diện chuẩn cho các dịch vụ này.
OGSA cần “dịch vụ có trạng thái (stateful service)”: Khi đưa ra một kiến
trúc phân tán mới, ta cần lựa chọn một số phần mềm trung gian phân tán làm
nền tảng trên kiến trúc. Trên lý thuyết, có thể lựa chọn bất cứ phần mềm trung
gian phân tán nào, chẳng hạn RMI, CORBA hay RPC. Tuy nhiên, công nghệ
dịch vụ web đã được lựa chọn do những ưu điểm của nó.
2.1.1.3. Nền tảng dữ liệu dịch vụ web (Web Services Resource
Framework - WSRF)
Mặc dù kiến trúc dịch vụ web là sự lựa chọn tốt nhất, nó vẫn có một
điểm quan trọng không tương thích với các yêu cầu của OGSA – đó là tính
"phi trạng thái", nghĩa là nó không lưu lại kết quả của các lần triệu gọi trước.
39
WSRF được phát triển bởi OASIS [14]. Nó định nghĩa cách mà ta có thể
làm cho dịch vụ web trở nên “có trạng thái", ngoài ra còn bổ sung rất nhiều
tính năng hữu ích [7]. Như thể hiện trên hình 2.1, WSRF được phát triển dựa
trên kiến trúc dịch vụ web nhằm tạo ra một tiếng nói chung lẫn nhau giữa
cộng đồng dịch vụ lưới và cộng đồng dịch vụ web.
Quan hệ giữa OGSA và WSRF rất đơn giản: WSRF cung cấp các dịch
vụ có trạng thái mà OGSA cần. Trong hình 2.1, WSRF xác định các dịch vụ
có trạng thái. Nói cách khác, OGSA là "đặc tả của ngôi nhà", còn WSRF xác
định "bản thiết kế của ngôi nhà đó".
Hình vẽ sau thể hiện quan hệ giữa OGSA, GT4, WSRF và dịch vụ web.
Hình 2.1. Quan hệ giữa OGSA, GT4, WSRF và các dịch vụ web
40
2.1.2. Giới thiệu chung về dịch vụ web
Trước khi xem xét kỹ về WSRF chúng ta phải nắm được những kiến
thức cơ bản về dịch vụ web. Dịch vụ web hiểu một cách đơn giản là một công
nghệ tính toán phân tán (tương tự CORBA, RMI, EJB...), cho phép ta phát
triển các ứng dụng theo kiến trúc client/server.
Hình 2.2. Các dịch vụ web
Trong hình vẽ 2.2, client (chương trình muốn truy nhập các thông tin về
thời tiết) sẽ giao tiếp với một dịch vụ web (trên server), và gửi "service
request" để yêu cầu các thông tin về thời tiết, server sẽ trả lời bằng "service
response". Tất nhiên, đây mới chỉ là một ví dụ rất đơn giản về dịch vụ Web.
Chúng ta sẽ xem xét một cách chi tiết hơn ở phần sau.
Các ưu điểm của dịch vụ web so với các công nghệ tính toán phân tán
truyền thống (RMI, CORBA, EJBs,…) bao gồm:
- Dịch vụ web là độc lập về nền hệ điều hành và ngôn ngữ, bởi vì ta sử
dụng ngôn ngữ XML chuẩn. Điều này có nghĩa là chương trình khách
có thể được lập trình bằng C++ và chạy trên nền hệ điều hành
Windows, trong khi dịch vụ web được lập trình bằng Java và chạy trên
nền hệ điều hành Linux.
- Hầu hết các dịch vụ web sử dụng HTTP cho truyền thông điệp, điều
này là một thuận lợi lớn khi ta phát triển các ứng dụng trên Internet, bởi
vì các tường lửa và proxy trên Internet không làm đảo lộn các truyền
41
thông của HTTP (không giống như CORBA gặp phiền toái với vấn đề
tường lửa).
Tuy nhiên, dịch vụ web có một số nhược điểm, đó là:
- Trước hết, việc truyền toàn bộ dữ liệu bằng XML rõ ràng là không hiệu
quả bằng việc sử dụng mã nhị phân. Để có được tính khả chuyển, nó đã
phải đánh đổi bằng tính hiệu quả.
- Thiếu tính linh động: Hiện tại dịch vụ web là không linh động, khi
chúng chỉ cho phép một số dạng triệu gọi dịch vụ cơ bản. CORBA có
thể cho phép lập trình viên nhiều cách cung cấp dịch vụ hơn như là dịch
vụ vĩnh viễn (persistency), thông báo (notifications), quản lý vòng đời
(lifecycle management).
Ở phần sau, ta sẽ thấy cách mà dịch vụ lưới bổ sung các nhược điểm trên
của dịch vụ web. Tuy nhiên, có một đặc điểm quan trọng để phân biệt dịch vụ
web với các công nghệ tính toán phân tán khác. Trong khi các công nghệ như
CORBA, EJBs hướng vào các hệ thống tính toán phân tán phụ thuộc chặt
(highly-coupled distributed systems), khi mà client và server phải phụ thuộc
vào nhau, dịch vụ web lại thích hợp cho các hệ thống phân tán không phụ
thuộc (losely- coupled systems), khi mà client có thể không biết gì về dịch vụ
web cho tới khi nó triệu gọi các dịch vụ Web. Các hệ thống phân tán phụ
thuộc là lý tưởng cho các ứng dụng Intranet, nhưng lại có hiệu suất thấp trên
môi trường Internet. Điều này giải thích tại sao dịch vụ web thích hợp hơn đối
với các ứng dụng trên Internet nói chung và các ứng dụng trên môi trường
lưới nói riêng.
2.1.2.1. Một triệu gọi dịch vụ web điển hình
Để hiểu rõ hơn về hoạt động của dịch vụ web, hãy theo dõi các bước để
triệu gọi một dịch vụ web.
42
Hình 2.3. Một triệu gọi dịch vụ web điển hình
1. Như đã đề cập trước đó, một client có thể không biết gì về dịch vụ web
mà nó định triệu gọi. Bởi vậy, bước đầu tiên là tìm một dịch vụ web
đáp ứng các đòi hỏi của nó. Ví dụ, nếu quan tâm tới một dịch vụ web
cung cấp thông tin về thời tiết của các thành phố của Mỹ, ta có thể tìm
nó qua bộ đăng ký và khai phá dịch vụ UDDI.
2. Bộ đăng ký UDDI sẽ trả lời cho chúng ta biết server nào cung cấp dịch
vụ mà ta yêu cầu.
3. Khi đã biết về vị trí của dịch vụ web, nhưng vẫn chưa biết triệu gọi
dịch vụ đó như thế nào. Chúng ta phải yêu cầu dịch vụ web mô tả thông
tin về chính nó để biết chính xác phương thức nào cần triệu gọi.
4. Dịch vụ web sẽ trả lời bằng một ngôn ngữ gọi là WSDL.
5. Cuối cùng, chúng ta đã biết dịch vụ web nằm ở đâu và triệu gọi nó như
thế nào. Quá trình triệu gọi được thực hiện bởi một ngôn ngữ gọi là
43
SOAP. Do đó, trước tiên ta phải gửi một yêu cầu SOAP (SOAP
request) để lấy thông tin về thời tiết.
6. Dịch vụ Web sẽ trả lời với một đáp ứng SOAP (SOAP response) chứa
thông tin về thời tiết mà ta yêu cầu. Nó có thể là một thông báo lỗi nếu
yêu cầu SOAP của chúng ta không đúng.
2.1.2.2. Kiến trúc dịch vụ web:
Hình 2.4. Kiến trúc dịch vụ web
- Tầng xử lý dịch vụ (Process): tầng này có thể bao gồm nhiều dịch vụ
web. Ví dụ. khả năng khám phá dịch vụ (thuộc về tầng này của kiến
trúc) cho phép tìm một dịch vụ web cụ thể từ một tập các dịch vụ web.
- Tầng mô tả dịch vụ (Description): một trong những đặc điểm thú vị của
dịch vụ web là nó có khả năng tự mô tả về mình, về những thao tác mà
nó có thể cung cấp, tham số vào ra,… Điều này được thực hiện bằng
ngôn ngữ mô tả dịch vụ web (Web Service Description Language –
WSDL).
- Tầng triệu gọi dịch vụ (Invocation): tầng này chịu trách nhiệm gọi dịch
vụ web giữa client và server sau khi đã nắm được vị trí và phương thức
triệu gọi. SOAP (Simple Object Access Protocol) sẽ được sử dụng để
thông báo cho phía client biết quy cách đưa một yêu cầu đến server và
quy cách của kết quả trả về.
Khai phá, kết hợp, …
WSDL
Web Services Description Language
Giao thức triệu gọi phổ biến là SOAP
nhưng về lý thuyết có thể sử dụng các
giao thức khác
Giao thức truyền thông phổ biến là HTTP,
nhưng về lý thuyết có thể sử dụng các
giao thức khác
44
- Tầng vận chuyển (Transport): tầng này trực tiếp gửi các gói tin giữa 2
phía server và client. Giao thức được sử dụng là HTTP (HyperText
Transfer Protocol).
2.1.2.3. Địa chỉ của dịch vụ web
Các dịch vụ web được xác định bằng các định danh tài nguyên thống
nhất URIs (Uniform Resource Identifiers) tương tự như URL (Uniform
Resource Locator). Chẳng hạn dịch vụ cung cấp thông tin dự báo thời tiết có
địa chỉ URI như sau:
Địa chỉ này giống như một trang web. Tuy nhiên, dịch vụ web được sử
dụng bởi các phần mềm. Nếu người dùng gõ một địa chỉ dịch vụ web URI
vào trong trình duyệt, ta sẽ nhận được một thông báo lỗi. Thực tế, hầu hết các
chương trình ta viết sẽ nhận về URI của dịch vụ web như một tham số dòng
lệnh.
2.1.2.4. Một ứng dụng dịch vụ web
Việc triệu gọi dịch vụ web được thực hiện qua client stub. Vì vậy, trong
lược đồ triệu gọi ở phần trước (hình 2.4), client thường không phải thực hiện
tất cả các bước trong một triệu gọi đơn. Hơn thế nữa, client stub còn có thể
được sinh tự động dựa trên mô tả WSDL của dịch vụ web.
Hình 2.5. Client và server stub được sinh ra từ file WSDL
45
Như vậy thứ tự các sự kiện bên phía client liên quan đến sử dụng dịch
vụ web là như sau:
- Xác định một dịch vụ web đáp ứng các yêu cầu thông qua UDDI.
- Thiết lập mô tả WSDL của dịch vụ web.
- Phát sinh stubs ngay sau đó, cho chúng vào ứng dụng của chúng ta.
- Ứng dụng sẽ sử dụng stubs tại mỗi thời điểm nó triệu gọi dịch vụ web.
Mô hình lập trình phía server cũng rất đơn giản, ta không cần phải viết
một chương trình server phức tạp, tự động thông dịch các yêu cầu SOAP và
đưa ra các đáp ứng SOAP. Chúng ta đơn giản chỉ cài đặt tất cả các chức năng
cho dịch vụ web của chúng ta, sau đó sinh ra một server stub (hay còn được
gọi là skeleton). Server stub sẽ chịu trách nhiệm thông dịch các yêu cầu, đưa
chúng tới cho dịch vụ thực thi. Nó cũng có thể tự động sinh ra mô tả WSDL,
hay các ngôn ngữ mô tả khác (IDL trên CORBA). Việc thực thi phía server và
server stubs được quản lý thông qua một thành phần gọi là trình chứa dịch vụ
web (Web Service container), bảo đảm các yêu cầu HTTP cho dịch vụ web
được trực tiếp tới server stub.
Giả sử rằng chúng ta đã định vị được dịch vụ web, và phát sinh client
stubs từ mô tả WSDL. Ngoài ra, các lập trình viên phía server cũng phải phát
sinh server stubs. Các bước liên quan tới triệu gọi một dịch vụ web được mô
tả như hình 2.6.
Hình 2.6. Chi tiết một triệu gọi dịch vụ web điển hình
46
1. Bất cứ khi nào ứng dụng client cần triệu gọi dịch vụ web, nó sẽ gọi
client stub. Client stub sẽ chuyển triệu gọi địa phương ('local
invocation') vào trong một yêu cầu SOAP phù hợp. Quá trình này được
gọi là marshaling hay serializing.
2. Yêu cầu SOAP được gửi qua mạng thông qua giao thức HTTP. Trình
chứa dịch vụ nhận được các yêu cầu SOAP, và chuyển nó tới server
stub. Server stub sẽ biến đổi các yêu cầu SOAP thành dạng phù hợp để
chương trình thực thi phía server có thể hiểu được (quá trình này được
gọi là unmarshaling hay deserializing).
3. Thực thi dịch vụ sẽ nhận các yêu cầu từ service stub, và tiến hành công
việc mà nó được yêu cầu.
4. Kết quả của các toán tử được yêu cầu được chuyển tới server stub, và
stub sẽ chuyển nó thành các đáp ứng SOAP.
5. Đáp ứng SOAP được gửi qua mạng thông qua giao thức HTTP. Client
stub nhận được các đáp ứng SOAP và chuyển nó về dạng phù hợp để
các ứng dụng client có thể hiểu được.
6. Cuối cùng, ứng dụng nhận được kết quả của triệu gọi dịch vụ web và
sử dụng nó.
2.1.2.5. Dịch vụ web – phía server
Cuối cùng chúng ta cùng xem xét kiến trúc phía server của một ứng
dụng dịch vụ web.
47
Hình 2.7. Kiến trúc phía server của một ứng dụng dịch vụ web
- Dịch vụ web: Như đã đề cập ở trên, dịch vụ web chỉ là một phần mềm
nhỏ để thực hiện một chức năng nào đó, nó có thể được viết bằng một
ngôn ngữ lập trình nào đó, chẳng hạn Java. Tuy nhiên, dịch vụ web lại
không thể hiểu được các thông điệp SOAP và càng không thể tạo ra
được các thông điệp SOAP trả lời, do đó ta cần SOAP engine.
- SOAP engine đơn giản là một phần mềm để xử lý các yêu cầu SOAP và
sinh ra các thông điệp trả lời. Thực tế, người ta thường dùng một SOAP
engine thay vì thực sự sinh ra các server stubs cho mỗi dịch vụ web
riêng lẻ (chú ý rằng, ta vẫn cần các client stubs cho client). Ví dụ cho
một SOAP engine là Apache Axis (thực tế SOAP engin này được sử
dụng trong Globus Toolkit). Tuy nhiên, chức năng của SOAP engine
thường chỉ giới hạn trong việc thao tác SOAP. Để có một chức năng
thực sự như một server có thể nhận các yêu cầu từ các client khác nhau,
ta nhúng SOAP engine trong trong Server ứng dụng.
48
- Server ứng dụng (application server) là phần mềm cung cấp "không
gian sống" cho các ứng dụng có thể truy nhập từ các client khác nhau.
SOAP engine chạy như một ứng dụng trong server ứng dụng này. Ví dụ
cho server ứng dụng là Jakarta Tomcat, một trình chứa JSP và Java
Servlet thường dùng trong Apache Axis của Globus Toolkit. Nhiều
server ứng dụng đã bao gồm các chức năng HTTP, cho nên ta có thể cài
đặt và chạy các dịch vụ web bằng cách cài đặt một SOAP engine cùng
một server ứng dụng. Tuy nhiên, khi một server ứng dụng thiếu các tính
năng HTTP, chúng ta cần có thêm server HTTP.
- Server HTTP: thường được gọi là web server. Nó là một phần mềm biết
cách để xử lý các thông điệp HTTP. Ví dụ: Apache HTTP Server là
một trong những web server thông dụng nhất trên Internet.
2.1.3. WSRF - nền tảng tài nguyên dịch vụ web
Như đã đề cập trong phần trước, dịch vụ web là công nghệ được lựa
chọn bởi các ứng dụng trên Internet với sự ràng buộc "lỏng lẻo" giữa client và
server. Điều này làm cho nó trở thành sự lựa chọn đầu tiên để xây dựng các
ứng dụng lưới. Tuy nhiên dịch vụ web lại có một số nhược điểm nhất định.
Trên thực tế, dịch vụ web thuần túy (được xây dựng bới W3C) không phù hợp
cho việc phát triển các ứng dụng lưới. WSRF, khắc phục các điểm không phù
hợp của dịch vụ web, làm cho nó thích hợp với việc phát triển các ứng dụng
lưới hơn.
2.1.3.1. WSRF - tất cả đều là trạng thái
Các dịch vụ web thuần túy thường là “phi trạng thái”, nghĩa là nó không
thể nhớ các kết quả từ một lần triệu gọi từ các lần triệu gọi khác. Điều này
được minh họa bằng ví dụ trong hình sau. Trong ví dụ này, kết quả của phép
cộng không được lưu lại sau mỗi lần thực hiện.
49
Hình 2.8. Một triệu gọi dịch vụ web phi trạng thái
Tuy nhiên, khả năng “nhớ trạng thái” là một tính chất rất quan trọng đối
với ứng dụng lưới. Ví dụ sau thể hiện một dịch vụ web “có trạng thái”.
Hình 2.9. Một triệu gọi dịch vụ web có trạng thái
50
Giải pháp được đề nghị thực tế lại rất đơn giản: chỉ cần giữ cho dịch vụ
web và thông tin về trạng thái của nó riêng rẽ nhau.
Thay vì đặt trạng thái vào trong dịch vụ web, ta sẽ lưu nó vào trong một
thực thể riêng gọi là tài nguyên, cái mà sẽ lưu giữ tất cả các thông tin về trạng
thái. Mỗi tài nguyên sẽ có một khóa duy nhất, do đó bất cứ khi nào ta muốn
một tương tác liên quan đến trạng thái với một dịch vụ web, chỉ cần chỉ thị
cho dịch vụ web sử dụng tài nguyên cụ thể đó.
Ví dụ với dịch vụ web thực hiện phép cộng ở trên. Hình vẽ dưới đây thể
hiện dịch vụ web này có thể có 3 tài nguyên khác nhau (A, B, C) để lựa chọn.
Nếu ta muốn một giá trị nguyên được “nhớ” từ một lần triệu gọi đến một lần
triệu gọi khác, client chỉ cần chỉ ra nó muốn triệu gọi phương thức với tài
nguyên nào.
Hình 2.10. Cách tiếp cận tài nguyên cho vấn đề trạng thái của dịch vụ web
Trong hình 2.10, ta có thể thấy client muốn thực hiện phép toán cộng với
tài nguyên C. Khi dịch vụ web nhận được yêu cầu thực hiện phép tóan cộng,
nó sẽ đảm bảo việc nhận tài nguyên C để phép cộng được thực hiện thực sự
trên tài nguyên đó. Các tài nguyên tự chúng có thể lưu trong bộ nhớ trong, bộ
nhớ ngoài hay ngay cả trong CSDL. Ngoài ra, cũng cần chú ý cách mà một
51
dịch vụ web có thể truy nhập nhiều tài nguyên. Tất nhiên là các tài nguyên có
thể có kích thước và cấu trúc khác nhau. Một tài nguyên có thể lưu giữ nhiều
giá trị (không chỉ là một số nguyên đơn thuần như ví dụ trên). Chẳng hạn, các
tài nguyên có thể biểu diễn các file:
Hình 2.11. Một dịch vụ web với nhiều tài nguyên,
mỗi tài nguyên biểu diễn một file
Client chỉ ra chính xác dịch vụ web bằng địa chỉ URI, còn để chỉ ra tài
nguyên – cách thường dùng là dùng một kỹ thuật mới gọi là ánh xạ dịch vụ
web (một kỹ thuật linh hoạt để chỉ ra địa chỉ của dịch vụ web hơn là địa chỉ
URI thông thường).
Chú ý rằng, một cặp dịch vụ web với tài nguyên được gọi là dịch vụ web
– tài nguyên. Địa chỉ của một dịch vụ web – tài nguyên cụ thể được gọi là một
endpoint reference (đây là một thuật ngữ trong ánh xạ dịch vụ web).
52
Hình 2.12. Dịch vụ web – tài nguyên
2.1.3.2. Đặc tả WSRF
WSRF là một tập hợp của 4 đặc tả khác nhau liên quan đến quản lý dịch
vụ web – tài nguyên:
Các thuộc tính của dịch vụ web – tài nguyên (WS-
ResourceProperties): Một tài nguyên gồm 0 hoặc nhiều thuộc tính tài
nguyên. Ví dụ, trong hình vẽ trên, mỗi tài nguyên có 3 thuộc tính tài nguyên
là: Filename, Size và Desriptors. WS - ResourceProperties xác định cách các
thuộc tính tài nguyên được định nghĩa và truy nhập. Các thuộc tính nằy được
định nghĩa bằng ngôn ngữ mô tả giao diện dịch vụ web WSDL.
Vòng đời của dịch vụ web – tài nguyên (WS-ResourceLifetime): Các
tài nguyên có vòng đời không tầm thường. Nói cách khác, chúng không phải
là những thực thể tĩnh, được khởi tạo khi server khởi động và bị hủy khi
server tắt. Các tài nguyên có thể được khởi tạo và hủy tại bất kì thời điểm nào.
WS-ResourceLifetime cung cấp các cơ chế cơ bản để quản lý vòng đời tài
nguyên.
53
Nhóm dịch vụ web (WS-ServiceGroup): WS-ServiceGroup chỉ ra một
cách chính xác cách nhóm các dịch vụ web hoặc dịch vụ web - tài nguyên.
Mặc dầu khả năng được cung cấp mới chỉ ở mức cơ bản, tuy nhiên nó là nền
tảng cho những dịch vụ mạnh hơn (chẳng hạn IndexService) cho phép nhóm
các dịch vụ khác nhau và truy nhập chúng thông qua một “lối vào” duy nhất.
Các lỗi cơ bản của dịch vụ web (WS-BaseFaults): đặc tả này cung cấp
một cách thức chuẩn để thông báo lỗi khi có vấn đề xảy ra trong quá trình
triệu gọi dịch vụ web.
2.1.4. Kiến trúc Globus Toolkit 4
Như đã trình bày, WSRF là cơ sở hạ tầng của GT4. Ngoài triển khai
WSRF, GT4 còn bao gồm rất nhiều các thành phần khác mà ta có thể sử dụng
để viết các ứng dụng lưới. Như trong hình 2.13, các thành phần này được chia
thành 5 loại: bảo mật, quản lý dữ liệu, quản lý việc thực hiện công việc, các
dịch vụ thông tin và môi trường chạy ứng dụng. Chú ý rằng, mặc dù GT4 tập
trung vào dịch vụ web nhưng nó vẫn chứa các thành phần không được triển
khai trên nền dịch vụ web, chẳng hạn GridFTP.
Trong hình 2.13, nửa trên thể hiện các thành phần được phát triển dựa
trên kiến trúc dịch vụ web; còn nửa dưới là các thành phần không dựa trên
kiến trúc dịch vụ web.
54
Hình 2.13. Kiến trúc Globus Toolkit 4
- Thành phần bảo mật (Security): sử dụng các thành phần bảo mật, dựa
trên cở sở hạ tầng bảo mật lưới, chúng ta có thể đảm bảo việc truyền
thông sẽ được an toàn.
- Thành phần quản lý dữ liệu (Data Management): các thành phần này
cho phép chúng ta quản trị một tập dữ liệu lớn trong các tổ chức ảo.
Các thành phần cốt lõi của Globus Toolkit, sẽ không thay đối trong tương lai
Các thành phần tạm thời, có thể sẽ còn thay đổi trong tương lai
Các thành phần sẽ được bỏ đi trong tương lai
55
- Thành phần quản lý thực thi (Excution Management): các thành phần
quản lý thực hiện công việc phụ trách việc khởi tạo, theo dõi, quản lý,
lập lịch và tương tác giữa các chương trình trong lưới.
- Thành phần dịch vụ thông tin (Information Services): các dịch vụ thông
tin, thường chỉ các dịch vụ khám phá và theo dõi (Monitoring and
Discovery Services - MDS) bao gồm một tập các thành phần dùng để
tìm và theo dõi tài nguyên trong một tổ chức ảo. Phiên bản non-WS của
MDS là MDS2 vẫn được GT4 hỗ trợ, tuy nhiên nó sẽ bị bỏ đi trong các
phiên bản sau.
- Thành phần Common Runtime: cung cấp tập các thư viện cơ sở và các
công cụ để xây dựng các dịch vụ WS lẫn non-WS
2.2. Các thành phần bảo mật trong GT4
Bảo mật là một trong những vấn đề quan trọng nhất được đặt ra trong
môi trường lưới vì vậy Globus Toolkit 4 chứa đựng nhiều loại thành phần bảo
mật [4]:
- Thành phần xác thực và cấp phép dịch vụ web (WS authentication
and authorization). Globus Toolkit 4 cho phép bảo mật mức thông
điệp và mức giao vận cho các truyền thông SOAP của các dịch vụ
Web. Đồng thời, nó cung cấp một cơ cấu cấp phép cho việc cấp phép
mức container.
- Pre-WS authentication and authorization. Nó bao gồm các API và các
công cụ cho việc xác thực, cấp phép và quản lý giấy chứng nhận.
- Dịch vụ cấp phép cộng đồng (Community Authorization Service -
CAS). CAS cung cấp điều khiển truy xuất tới các tổ chức ảo. Máy chủ
CAS cấp các giấy phép theo các tập con tài nguyên cho thành viên của
56
cộng đồng. Việc cấp phép CAS hiện tại chưa có trong các dịch vụ web,
tuy nhiên nó hỗ trợ cho GridFTP server.
- Dịch vụ ủy quyền (Delegation service). Dịch vụ này cho phép ủy thác
giấy ủy quyền giữa các dịch vụ trên một máy. Dịch vụ ủy quyền cho
phép một giấy ủy quyền được sử dụng bởi nhiều dịch vụ. Đồng thời,
dịch vụ này cũng cung cấp giao diện thay mới giấy ủy quyền và qua đó
có thể gia hạn cho các giấy ủy quyền.
Hình 2.14. Ví dụ về việc sử dụng một dịch vụ bởi một dịch vụ khác
- SimpleCA, đây là một Nhà chứng nhận thẩm quyền đơn giản. Thành
phần này có đầy đủ các chức năng của một môi trường khóa công khai.
Tuy nhiên, thành phần này chủ yếu được sử dụng với mục đích kiểm
thử và minh họa.
57
- MyProxy, thành phần này có nhiệm vụ lưu trữ các giấy ủy quyền
X.509, bảo vệ chúng và cung cấp giao diện cho việc lấy lại các giấy ủy
quyền. MyProxy thực hiện vai trò của một kho chứa các giấy ủy quyền
và nó thường được sử dụng bởi các ứng dụng Web portal.
- GSI-OpenSSH, đây là một phiên bản đã được hiệu chỉnh cho máy chủ
và máy trạm OpenSSH, với việc thêm vào hỗ trợ cho sự xác thực GSI.
GSI-OpenSSH có thể được sử dụng để tạo từ xa một shell trên một hệ
thống ở xa để thực thi các kịch bản vỏ (shell script) hoặc để đưa ra các
lệnh shell một cách tương tác và nó cũng cho phép truyền các file giữa
các hệ thống mà không đòi hỏi về mật khẩu cũng như ID của người
dùng. Tuy nhiên, một sự ủy nhiệm hợp lệ phải được tạo bằng cách sử
dụng lệnh grid-proxy-init.
2.3. Ví dụ minh họa: cài đặt bảo mật trong GRAM
GRAM (Globus Resource Allocation Management) là dịch vụ của GT
cho phép client có thể khởi tạo, quản lý, theo dõi một cách an toàn các nhiệm
vụ tính toán trên các máy ở xa. Việc tiến hành bảo mật đối với GRAM là một
trong những công việc phức tạp nhất bởi vì nó liên quan nhiều đến cả cơ chế
bảo mật địa phương và các client từ xa. Phần này sẽ trình bày việc cài đặt bảo
mật trong GRAM để minh họa cho việc cài đặt bảo mật cho các dịch vụ.
58
Hình 2.15. Cơ chế thực hiện của GRAM
Để có thể thực hiện công việc nhờ GRAM, một client phải mô tả công
việc, chỉ rõ những chi tiết về thư mục thực thi, nơi lưu trữ các đầu ra và đầu
vào… Những mô tả này được gửi tới tài nguyên và kết quả là một thực thể
của dịch vụ quản lý công việc (Managed Job Service - MJS). Một MJS là một
dịch vụ của lưới cho phép khởi tạo công việc, điều khiển, theo dõi công việc.
MJS được tạo bởi một MJS factory service. Về lý thuyết thì ta sẽ có
tương ứng với mỗi tài khoản người dùng một MJS factory service, tuy nhiên
trong thực tế để tránh lãng phí, GT thực thi một dịch vụ là Master Managed
Job Factory Service (MMJFS). Mỗi MMJFS chạy trên mỗi tài nguyên và triệu
gọi Local Managed Job Factory Services (LMJFS) cho mỗi tài khoản người
dùng khi cần thiết. Một dịch vụ là Proxy Router dẫn những yêu cầu từ người
dùng tới LMJFS nếu có hoặc MMJFS nếu LMJFS của người dùng đó không
59
tồn tại. Với MJS factory thì có thể có một hay nhiều thể hiện của MJS chạy
cùng một lúc trên trình chứa.
Như minh họa trên hình 2.15, để thực hiện công việc trên GRAM phải
trải qua 7 bước:
1. Requestor tạo một bản mô tả công việc và ký lên nó với một giấy ủy
nhiệm thích hợp. Yêu cầu này sau đó được gửi tới target resource.
2. Proxy Router service nhận yêu cầu và gửi tới LMJFS nếu có (nhảy tới
bước 6) hoặc gửi tới MMJFS (thực hiện tiếp bước 3).
3. MMJFS xác nhận chữ ký trên yêu cầu sau đó xác định tài khoản cục bộ
mà job sẽ chạy dựa trên tài khoản đó sử dụng grid-mapfile, một file
nằm trên máy cục bộ chứa đựng những thông tin ánh xạ từ GSI vào tài
khoản cục bộ.
4. MMJFS triệu gọi quá trình Setuid Starter để khởi tạo LMJFS. Setuid
Starter là một chương trình có đặc quyền (ví dụ như setuid-root) mà
chức năng duy nhất của nó là khởi tạo một LMJFS đã được cấu hình
sẵn cho một người dùng.
5. Khi LMJFS đã được tạo, nó cần nhận được giấy ủy nhiệm và phải tự
đăng ký với Proxy Router để nó thể nhận được các yêu cầu khác trong
tương lai. LMJFS triệu gọi Grid Resource Identity Mapper (GRIM) để
nhận được giấy ủy nhiệm. GRIM là một chương trình có đặc quyền
truy cập và sinh ra các giấy ủy nhiệm cho LMJFS. Giấy ủy nhiệm này
chứa trong nó định danh người dùng lưới, tên người dùng cục bộ … để
giúp cho requestor có thể đảm bảo đây đúng là LMJFS cần thiết.
6. LMJFS nhận được yêu cầu công việc, LMJFS kiểm định chữ ký trên
yêu cầu để đảm bảo là nó không bị giả mạo và kiểm tra xem requestor
có được quyền truy cập tài khoản người dùng cục bộ mà LMJFS đang
60
chạy. LMJFS khởi tạo một MJS và trả lại tham chiếu dịch vụ đến người
dùng.
7. Requestor kết nối tới MJS để bắt đầu công việc. Requestor và MJS
kiểm chứng lẫn nhau trước khi tiến hành quá trình giao dịch. MJS kiểm
định xem requestor có đủ thẩm quyền để thực thi trong tài khoản cục bộ
hay không còn requestor kiểm định xem MJS có giấy ủy nhiệm (GRIM
credential) hợp lý từ máy chủ hay không, điều này cho phép client
không chỉ xác định được là MJS chạy trên đúng máy chủ mà còn chạy
trên đúng tài khoản.
61
Chương 3. Ứng dụng công nghệ tác tử trong tính toán lưới
3.1. Tác tử
3.1.1. Khái niệm tác tử
3.1.1.1. Tác tử
Tác tử “là một phần mềm máy tính hoạt động trong một môi trường nào
đó, có khả năng linh hoạt, thực hiện các hoạt động tự trị trong môi trường đó
để đạt được các mục tiêu thiết kế” [8]. Chi tiết hơn [9], tác tử:
- Là thực thể giải quyết vấn đề được xác định một cụ thể với các ranh
giới và giao diện được định nghĩa rõ ràng.
- Hoạt động trong một môi trường cụ thể, nhận các đầu vào liên quan đến
sự thay đổi trạng thái của môi trường thông qua các cảm biến và thực
hiện các hành vi phản ứng lại các thay đổi đó.
- Được thiết kế để hoàn thành một vai trò cụ thể, có các mục tiêu xác
định cần đạt được và các khả năng giải quyết vấn đề nhằm đạt mục
tiêu.
- Có khả năng tự trị, có thể điều khiển cả trạng thái bên trong lẫn các
hành vi bên ngoài.
- Hoạt động hướng mục tiêu, có các hành vi linh hoạt để theo đuổi mục
tiêu cần đạt được. Có thể là phản ứng lại các tác động hoặc chủ động
thực hiện các hành vi.
3.1.1.2. Các đặc trưng của tác tử
- Tính tự trị: Một tác tử có thể hoạt động mà không cần sự can thiệp trực
tiếp của con người hoặc các thành phần khác. Điều này đòi hỏi trong
các phần mềm tác tử phải cài đặt các hoạt động có chu kì để tạo ra khả
năng thực thi tự phát, trong đó tác tử phải có khả năng thực hiện các
62
hành động có mức ưu tiên khác nhau và cuối cùng đem lại kết quả
mong muốn cho con người.
- Khả năng phản ứng: Các tác tử có thể nhận thức được môi trường xung
quanh chúng và phản ứng lại sự thay đổi xảy ra trong môi trường đó.
Các hành động của chúng được thực hiện như là kết quả của việc kích
hoạt các luật hoặc của các hoạt động lặp đi lặp lại, chẳng hạn như cập
nhật cơ sở tri thức của tác tử, gửi thông điệp tới các tác tử khác trong
môi trường.
- Khả năng cộng tác: Mỗi tác tử có thể tương tác với các tác tử khác
và/hoặc con người. Đối với hình thức tương tác giữa tác tử và con
người, người sử dụng chỉ rõ những hành động nào sẽ được thực hiện và
tác tử chỉ rõ nó có thể làm cái gì và cung cấp cho người dùng kết quả
như thế nào. Còn sự hợp tác giữa các tác tử là cơ chế mà thông qua đó
các tác tử trao đổi tri thức, các kế hoạch cộng tác giữa chúng để giải
quyết những vấn đề lớn hơn khả năng của mỗi tác tử.
- Khả năng di trú: Các tác tử có thể di chuyển đến các môi trường khác,
tìm kiếm thông tin cần thiết và trả lại kết quả mà người dùng mong
muốn.
3.1.1.3. Phân loại tác tử
Dựa trên các thuộc tính được trình bày ở trên, có thể chia tác tử thành
các loại sau:
- Tác tử tự trị: Các tác tử loại này thường được ứng dụng trong môi
trường phức tạp, không ổn định. Chúng cảm nhận và hành động một
cách tự động nhờ việc nhận thức các mục đích và tác vụ.
63
- Tác tử giải trí: Các tác tử loại này dùng để mô phỏng thế giới thực,
cung cấp các dịch vụ giải trí cho người sử dụng, chẳng hạn trò chơi, các
sản phẩm phim/video.
- Tác tử ủy quyền: Các tác tử loại này thực hiện một tập thao tác đại diện
cho một người sử dụng hoặc các chương trình khác một cách độc lập.
- Tác tử giao diện: Tác tử giao diện hoạt động như một người phụ tá,
cùng cộng tác với người sử dụng trong một môi trường. Tác tử loại này
quan sát, giám sát các hành động của người sử dụng trên giao diện,
“học” điều đó và đưa ra cách tốt hơn để thực hiện các tác vụ. Tác tử
giao diện học để trợ giúp cho người sử dụng theo bốn cách khác nhau:
o Quan sát và bắt chước người sử dụng (học từ người sử dụng).
o Thông qua các phản hồi tích cực và tiêu cực nhận được từ người sử
dụng (học từ người sử dụng).
o Bằng việc nhận được những lời hướng dẫn rõ ràng từ phía người sử
dụng (học từ người sử dụng).
o Bằng việc hỏi lời khuyên từ các tác tử khác. Sự hợp tác giữa tác tử
giao diện với các tác tử khác chỉ giới hạn trong việc hỏi các thông
tin.
- Tác tử cộng tác: Đối với các tác tử loại này, tính tự trị và sự cộng tác
với các tác tử khác được nhấn mạnh. Để có được sự cộng tác với các
tác tử khác, các tác tử này phải thực hiện đàm phán để đạt sự thoả thuận
về cơ chế cộng tác.
- Tác tử động: Tác tử động là phần mềm tính toán có khả năng “di
chuyển” trên các mạng diện rộng như Internet, tương tác với các máy
chủ phân tán, thu thập thông tin và quay về sau khi đã thực hiện các
công việc cho người sử dụng. Khả năng động này đưa đến khái niệm
64
lập trình từ xa (remote programming), trong đó các tác tử tham gia
tương tác đảm nhân cả hai vai trò: cung cấp dịch vụ (server) và khai
thác dịch vụ (client).
- Tác tử phản ứng: Các tác tử phản ứng không xử lý mô hình bên trong
đặc trưng của môi trường, thay vào đó chúng phản ứng lại với sự kích
thích đối với trạng thái hiện tại của môi trường mà chúng hoạt động.
Kiến trúc của các tác tử phản ứng và sự giao tiếp giữa chúng nhìn
chung rất đơn giản. Tuy nhiên, khi xem xét tổng quát hệ thống tác tử,
có thể thấy được sự tương tác phức tạp giữa chúng. Ba nguyên tắc cơ
bản đối với các tác tử phản ứng là:
o Tương tác động giữa các tác tử không thông minh có thể dẫn tới sự
phức tạp.
o Mỗi tác tử phản ứng thường được xem như là một tập hợp các đối
tượng hoạt động một cách độc lập và thực hiện các tác vụ cụ thể,
chẳng hạn cảm biến, mô tơ điều khiển. Giao tiếp giữa các đối tượng
này thường ở mức thấp.
o Một tác tử phản ứng thường làm với biểu diễn dữ liệu cảm biến mức
thô, ngược lại với biểu diễn dữ liệu mức cao thường được sử dụng
bởi các loại tác tử khác.
3.1.1.4. Ứng dụng của tác tử
Tác tử được ứng dụng trên phạm vi rộng lớn trong nhiều lĩnh vực như
sản xuất, giải trí, thương mại điện tử. Đơn cử như:
- Các ứng dụng trợ giúp người sử dụng. Các ứng dụng loại này làm việc
với người sử dụng cuối để nâng cao hiệu suất và giúp người sử dụng
vận hành các hệ thống tính toán phức tạp dễ dàng hơn. Nhìn chung,
chúng giao tiếp với người sử dụng để giúp họ quản lý lịch làm việc, thư
65
điện tử. Chúng có thể giao tiếp với các tác tử khác để thu thập thông
tin. Các ứng dụng trợ giúp khác với các giao diện người sử dụng chuẩn
việc được trao quyền để hành động ít nhất là bán tự động và chúng
không chỉ là một công cụ để con người sử dụng và điều khiển. Có thể
kể đến một vài ứng dụng trợ giúp sau:
o Hệ thống học về hiện trạng của người sử dụng.
o Hệ thống giao diện đa hình thái.
o Các ứng dụng số cá nhân hoặc các ứng dụng giao tiếp thông minh cá
nhân, chẳng hạn thư ký điện thoại số.
- Các ứng dụng phục hồi thông tin. Các hệ thống loại này giúp người sử
dụng tìm kiếm các thông tin mà họ yêu cầu một cách nhanh chóng và
dễ dàng. Điều đó có thể thực hiện được bởi một tập các tác tử với các
chức năng:
o Quản lý đăng ký các dịch vụ.
o Quản lý cơ sở dữ liệu.
o Môi giới thông tin.
o Chỉ dẫn truyền thông.
- Các ứng dụng quản lý dịch vụ. Ví dụ như:
o Các dịch vụ đa phương tiện.
o Các dịch vụ mua/bán, chẳng hạn thông tin, nguyên liệu của hàng
hoá.
o Các dịch vụ quản lý mạng thông minh.
- Các ứng dụng quản lý kinh doanh. Bao gồm:
o Các dịch vụ tài chính.
o Thương mại điện tử.
66
o Quản lý luồng công việc.
o Tự động hoá văn phòng.
Tác tử cũng rất phát triển trong lĩnh vực sản xuất công nghiệp như điều
khiển rô-bốt hay tương tác người máy.
3.1.2. Hệ đa tác tử
Hệ đa tác tử (Multi Agent System - MAS) được định nghĩa như là một
môi trường bao gồm nhiều tác tử, mà về bản chất là độc lập với nhau, phân
tán và có thể không đồng nhất, cùng nhau giải quyết các công việc vượt quá
khả năng của từng tác tử riêng rẽ. Nghiên cứu trong hệ đa tác tử chủ yếu đề
cập đến cách kết hợp thông minh giữa các tác tử, cách chúng kết hợp về tri
thức, mục đích, kỹ năng và kế hoạch hoạt động cùng nhau để giải quyết các
vấn đề.
3.1.2.1. Mô hình
Trong một hệ đa tác tử điển hình, ngoài các tác tử thông thường còn có
các tác tử đặc biệt sau:
Tác tử quản lý đăng ký dịch vụ (Directory Facilitator – DF)
DF cung cấp khả năng quản lý đăng ký cho các tác tử tồn tại trong môi
trường. Nó có nhiệm vụ duy trì, cập nhật thông tin về các tác tử, đóng vai trò
cung cấp thông tin về các tác tử trong môi trường đó.
Mỗi tác tử muốn quảng bá dịch vụ của nó cho những tác tử khác thì đầu
tiên nó phải tìm được DF thích hợp, yêu cầu đăng ký với DF đó, sau đó gửi
những thông tin mô tả dịch vụ của mình tới DF.
Mỗi dịch vụ được đăng ký với DF có những tham số bắt buộc mô tả về
dịch vụ như kiểu dịch vụ, tên dịch vụ, địa chỉ dịch vụ, các thuộc tính của dịch
vụ. Khi không còn cung cấp dịch vụ đó nữa, tác tử sẽ gửi yêu cầu hủy đăng
67
ký dịch vụ tới cho DF, hoặc có thể yêu cầu DF chỉnh sửa thông tin dịch vụ đã
đăng ký.
Mỗi tác tử khi muốn tìm kiếm một dịch vụ nào đó sẽ gửi thông tin tìm
kiếm tới DF. DF không bảo đảm thông tin nó cung cấp là chính xác, vì nó
không có một hạn chế nào đối với những thông tin do các tác tử đăng ký với
nó. Tuy nhiên, DF có quyền giới hạn truy nhập vào thư mục mô tả thông tin
riêng của các tác tử và kiểm tra tất cả các quyền truy nhập của tác tử nhằm
cập nhật thông tin về trạng thái tác tử.
Mỗi DF có khả năng thực hiện một số chức năng sau:
o Nhận đăng ký dịch vụ của một tác tử.
o Hủy đăng ký dịch vụ đối với một tác tử
o Sửa thông tin về dịch vụ của một tác tử
o Tìm kiếm dịch vụ của tác tử
Trong mỗi DF có một cơ chế tìm kiếm. Đầu tiên, DF ưu tiên tìm kiếm
cục bộ trong cơ sở dữ liệu của nó, sau đó sẽ mở rộng phạm vi tìm kiếm đến
những DF khác nếu cần thiết và được phép. Cơ chế tìm kiếm được thực hiện
theo giải thuật tìm kiếm sâu. Khi một DF nhận một yêu cầu tìm kiếm, nó có
thể gọi đến những DF khác đã đăng ký với nó để nhờ tìm kiếm giúp. Thông
điệp yêu cầu tìm kiếm thông tin sẽ được gửi tiếp đi nếu tham số độ sâu tìm
kiếm (max-depth) còn lớn hơn 1 và không có yêu cầu tìm kiếm khác cùng
search-id có độ ưu tiên cao hơn. Nếu yêu cầu tìm kiếm được chuyển tiếp thì
nó sẽ không thay đổi giá trị của tham số search-id khi nhân rộng phạm vi tìm
kiếm. Trước mỗi lần nhân rộng phạm vi tìm kiếm, max-depth sẽ bị trừ đi một
đơn vị.
Tác tử quản lý môi trường (Agent Management System - AMS)
68
AMS là thành phần bắt buộc của mỗi môi trường tác tử, nó tồn tại duy
nhất trong mỗi môi trường và chịu trách nhiệm quản lý hoạt động của môi
trường đó, chẳng hạn như tạo các tác tử, xoá các tác tử, theo dõi sự di trú của
các tác tử trong trường hợp đó là các tác tử động.
AMS có thể yêu cầu một tác tử thực hiện một chức năng nào đó, nó có
quyền “bắt buộc” nếu tác tử từ chối yêu cầu.
AMS quản lý danh sách tất cả các tác tử hiện tại trong môi trường. Nó có
những chức năng cơ bản sau:
o Cho phép một tác tử đăng ký vào môi trường.
o Cho phép một tác tử rời khỏi môi trường.
o Thay đổi thông tin của một tác tử.
o Tìm kiếm thông tin về một tác tử.
o Lấy thông tin về một tác tử.
Ngoài ra, “quyền lực” của AMS trong hệ thống đối với tác tử thể hiện
qua những quyền sau:
o Tạm dừng hoạt động của một tác tử.
o Dừng hẳn một tác tử.
o Tạo tác tử.
o Phục hồi tác tử.
o Yêu cầu tác tử thực hiện một tác vụ.
o Quản lý tài nguyên của môi trường tác tử.
3.1.2.2. Môi trường hoạt động cho hệ đa tác tử (Agent Platform - AP)
Môi trường hoạt động cho hệ đa tác tử là một cơ sở hạ tầng vật lý phục
vụ cho tác tử. AP gồm hệ điều hành, những tiến trình, những phần mềm hỗ
69
trợ tác tử, những thành phần trong một hệ đa tác tử như DF, AMS và các tác
tử. Cần chú ý rằng những tác tử nằm trong một AP không có nghĩa là tác tử
đó nằm trong hệ thống vật lý đó mà có thể nằm ở vùng khác nhưng đăng ký
với AMS.
3.1.2.3. Việc định danh tác tử (Agent Identification - AID)
Mỗi tác tử trong môi trường có một định danh riêng biệt. Mỗi tác tử
trong hệ thống được xác định bằng một định danh, đó là một tập các tham số,
bao gồm:
- Tên: là một tên đi liền với tác tử, là duy nhất và có thể được sử dụng để
tham chiếu đến tác tử thay cho địa chỉ. Một mẫu tên thường gặp là kiểu:
tên_tác_tử@tên_môi_trường
- Địa chỉ: là một tập những địa chỉ mà các thông điệp có thể được gửi
tới. Địa chỉ ở đây là địa chỉ vật lý.
- Tên chú giải: là tham số chứa tập những địa chỉ dịch vụ chú giải. Địa
chỉ dịch vụ chú giải là một dịch vụ được cung cấp bởi AMS, thông qua
chức năng tìm kiếm. Tham số tên chú giải chứa một dãy những địa chỉ
của các AID khác mà thông qua chúng thông điệp có thể đến địa chỉ
của các tác tử đó.
3.1.2.4. Việc đăng ký tác tử
Các trường hợp một tác tử phải đăng ký với AMS bao gồm:
o Tác tử được tạo ra trong AP.
o Tác tử di trú đến AP (đối với các AP hỗ trợ tác tử động).
Một tác tử bắt buộc phải đăng ký với AP, giả sử rằng AP này hỗ trợ việc
đăng ký động và sẵn sàng nhận đăng ký của một tác tử mới. Việc đăng ký
70
động là khi một tác tử đã có một môi trường chính (Home Agent Platform -
HAP) nhưng vẫn muốn đăng ký đến một AP khác như một tác tử địa phương.
Việc đăng ký tác tử liên quan đến đăng ký một AID với AMS. Khi một
tác tử được tạo ra hoặc đăng ký động với một AP, tác tử đó phải đăng ký với
AMS, khi đó nó sẽ sử dụng chức năng đăng ký.
3.1.2.5. Điều phối hoạt động trong hệ đa tác tử
Trong một hệ đa tác tử chia sẻ chung một môi trường hoạt động, tương
tác giữa các tác tử sẽ tăng lên khi số tác tử tăng lên. Một tác tử có thể làm
thay đổi một số đặc tính của môi trường, thay đổi này tác động đến các tác tử
khác, chẳng hạn nó chiếm quyền sử dụng một tài nguyên làm cho các tác tử
khác không truy nhập được tài nguyên này. Khi quyết định của một tác tử làm
ảnh hưởng đến hoạt động của các tác tử khác, sự điều phối giữa các tác tử là
rất cần thiết.
Trước hết, ta sẽ điểm qua một vài định nghĩa về điều phối để hiểu được
khái niệm này.
+ Định nghĩa 1: Điều phối là một cơ chế đảm bảo các tác tử duy trì mối
liên hệ giữa các hoạt động của nó, chẳng hạn như trình tự thực thi. Điều khiển
các thông tin điều phối phải được thực hiện bởi một tác tử thông minh.
Mức độ điều khiển là từ 0 (zero) đến tuyệt đối (total). Đối với tác tử,
không điều khiển tương ứng với tự chủ tuyệt đối, ngược lại điều khiển tuyệt
đối tương ứng với không có tính tự chủ.
+ Định nghĩa 2: Trong hệ đa tác tử, điều phối là quá trình mà trong đó
mỗi tác tử học về các hành động của nó và đoán trước các hành động của các
tác tử khác để cố gắng đảm bảo các hành động liên lạc với nhau trong một
71
mối liên kết thống nhất. Có nghĩa là các hoạt động của mỗi tác tử đều được
thực hiện tốt và không xung đột với các tác tử khác.
Điều phối nhằm mục đích:
- Tránh sự hỗn loạn: Trong các hệ thống tác tử, sự hỗn loạn rất dễ xảy
ra. Không một tác tử nào có thể bao quát hết được môi trường, hệ thống
mà nó thuộc vào do cộng đồng tác tử rất phức tạp. Mỗi tác tử chỉ có
khung nhìn cục bộ, do đó mục đích và kiến thức của chúng có thể xung
đột nhau. Giống như bất kỳ một xã hội phức tạp nào, từng nhóm tác tử
phải được điều phối để đạt được mục đích chung.
- Thỏa mãn những ràng buộc chung: Thông thường mỗi nhóm tác tử
phải thỏa mãn một số ràng buộc chung nếu muốn công việc thành công.
Ví dụ như một hệ thống đa tác tử đang được xây dựng phải thoả mãn
ràng buộc là nằm trong ngân sách định trước. Các tác tử quản lý hệ
thống mạng phải đáp ứng yêu cầu về thời gian, xử lý lỗi trong vòng vài
giây hay xử lý một số vấn đề khác trong vòng vài giờ. Do đó các tác tử
cần điều phối hành vi của chúng để thoả mãn các điều kiện ràng buộc
chung.
- Chia sẻ kinh nghiệm, nguồn tài nguyên và thông tin: Trong hệ đa tác tử,
các tác tử có những khả năng và kiến thức khác nhau. Chúng có các
nguồn thông tin, tài nguyên, mức độ tin cậy, khả năng đáp ứng, các
dịch vụ khác nhau. Trong trường hợp này các tác tử phải được điều
phối, cũng giống như trường hợp các chuyên gia về y học như bác sĩ
gây mê, bác sĩ phẫu thuật, bác sĩ cấp cứu, y tá cùng làm việc với nhau
để cứu chữa cho bệnh nhân. Trong ví dụ này, mỗi chuyên gia có kinh
nghiệm trong lĩnh vực của mình, họ chia sẻ thông tin chung về tình
trạng của bệnh nhân, chia sẻ về nguồn tài nguyên dụng cụ y tế.
72
- Độc lập giữa những hành động của các tác tử: Mục đích của các tác tử
thường hay phụ thuộc lẫn nhau. Xét ví dụ hai tác tử phải giải quyết các
khối công việc sau:
Hình 3.1. Sự phụ thuộc các hành động giữa các tác tử
Có hai tác tử: tác tử 1 có hai khối công việc là A và B, tác tử 2 có khối
công việc là C. Mục đích của chúng là thực hiện một công việc có kết quả
theo thứ tự A, B, C. Rõ ràng để thực hiện được mục đích này các tác tử phụ
thuộc vào nhau: tác tử thứ hai phải đợi tác tử thứ nhất thực hiện xong thì nó
mới có thể thực hiện công việc của mình. Khi hành động của các tác tử phụ
thuộc vào nhau, chúng cần phải điều phối các hoạt động của mình.
- Đảm bảo hiệu năng cao: Ngay cả khi chức năng của các tác tử là độc
lập nhau thì chúng vẫn cần phải điều phối, vì thông tin của tác tử này sẽ
ảnh hưởng đến các tác tử khác. Sự phối hợp với nhau sẽ giúp giải quyết
các bài toán nhanh chóng và dễ dàng hơn.
Điều phối có thể bao gồm cả hợp tác, nhưng cần nhấn mạnh rằng hợp tác
không phải là yêu cầu bắt buộc trong một hệ đa tác tử. Điều phối cũng có thể
không cần sự hợp tác. Ví dụ như có một người đang chạy về phía bạn nhưng
bạn muốn thoát khỏi anh ta, khi đó bạn sẽ điều phối các hành động của mình
đối với anh ta cho phù hợp mà không phải là hợp tác với anh ta.
Để có được khả năng điều phối, các tác tử có thể phải liên lạc với nhau.
Tuy nhiên, điều phối cũng có thể không cần sự liên lạc, các tác tử không cần
cung cấp các mô hình hành vi của mình cho nhau. Trong trường hợp này, sự
73
điều phối đạt được bằng cách tổ chức. Song để điều phối giữa các tác tử được
dễ dàng, chúng nên hợp tác với nhau thông qua việc liên lạc, truyền thông để
có thể biết được về mục đích, ý định, kết quả và trạng thái của nhau.
Trong môi trường phân tán, điều phối còn có các tác dụng:
- Đảm bảo mạng luôn thông suốt: hạn chế sự quá tải trên toàn hệ thống
phân tán.
- Phân định nhiệm vụ và nguồn tài nguyên giữa các tác tử.
- Nhận biết và giải quyết các mối xung đột giữa các mục đích, sự kiện,
hiểu biết, khung nhìn và hành vi của các tác tử.
- Giúp đưa ra kiến trúc cần có của một tác tử mới.
Ngoài ra, sự điều phối giúp các tác tử tránh thực hiện những hoạt động
không cần thiết.
- Tránh livelock: điều phối giúp tránh trường hợp các tác tử hoạt động
liên tục mà không thu được sự tiến bộ nào.
- Tránh deadlock: nhờ điều phối, hiện tượng deadlock được giảm thiểu.
- Tối đa hóa khả năng của mỗi tác tử.
- Đảm bảo sự nhất quán cho hệ thống.
3.1.3. Truyền thông giữa các tác tử
Hình 3.2. Truyền thông giữa các tác tử
74
Truyền thông là cách để các tác tử trao đổi thông tin, trên cơ sở đó chúng
cộng tác với nhau để thực thi công việc. Giao thức truyền thông là nhân tố
quan trọng quyết định chất lượng hợp tác giữa các tác tử. Trong hệ đa tác tử,
các tác tử trao đổi thông tin với nhau bằng nhiều cách: trao đổi trực tiếp bằng
các thông điệp, tự tổ chức trao đổi trong một hệ thống hợp nhất, giao tiếp
thông qua tác tử trợ giúp (facilitator) hay chúng có thể quảng bá các thông
điệp. Một cách khác phổ biến hơn để các tác tử giao tiếp với nhau là thông
qua một kho dữ liệu dùng chung (blackboard), trong đó các thông tin được
gửi vào và lấy ra.
Ngôn ngữ truyền thông giữa các tác tử
Các tác tử có khả năng tương tác với người sử dụng, với các dịch vụ hệ
thống hoặc tác tử khác. Để giao tiếp với nhau thì chúng cần ngôn ngữ. Ngôn
ngữ truy vấn và thao tác tri thức (Knowledge Query and Manipulation
Language - KQML) là ngôn ngữ dùng cho giao tiếp mức thông điệp giữa các
tác tử.
KQML được hiểu như là một giao thức định dạng và xử lý thông điệp,
cung cấp khả năng chia sẻ tri thức giữa các tác tử. Các đặc điểm cơ bản của
KQML là:
- Không trong suốt với nội dung mà chúng mang: Các thông điệp KQML
không chỉ đơn thuần là những câu giao tiếp, chúng còn thể hiện quan
điểm về một nội dung như xác nhận, yêu cầu, truy vấn, trả lời.
- Cơ sở của ngôn ngữ là các biểu hiện (performative): Các biểu hiện
định nghĩa các hành động giữa các tác tử
- Hỗ trợ truyền thông điểm - điểm: xét ở cấp độ một tác tử, sự truyền
thông được coi như là sự truyền thông điệp từ điểm này tới điểm khác.
75
- Cho phép sự góp mặt của các tác tử trợ giúp: Môi trường trong đó các
tác tử giao tiếp với nhau bằng KQML có thể có sự góp mặt của các tác
tử đặc biệt, gọi là các tác tử trợ giúp. Đó là các tác tử hỗ trợ cho các tác
tử khác các chức năng để giải quyết các vấn đề xảy ra, chẳng hạn như
liên hệ giữa các địa chỉ vật lý với các tên tượng trưng, hỗ trợ việc đăng
ký của các tác tử, việc tìm kiếm các dịch vụ, các dịch vụ giao tiếp nâng
cao như chuyển tiếp, môi giới.
KQML định nghĩa một tập các mẫu thông điệp. Sau đây là một ví dụ về
thông điệp KQML:
(ask-if
:sender A
:receiver B
:language Prolog
:ontology foo
:reply- with id1
:content “bar(a,b)” )
Trong ngôn ngữ KQML, ask-if là một biểu hiện. Trong ví dụ trên, một
tác tử có tên là A (:sender) hỏi tác tử B (:receiver) bằng ngôn ngữ Prolog
(:language) về trạng thái thật của “bar(a,b)” (:content). Bất kỳ câu trả lời nào
cho thông điệp KQML này sẽ được nhận dạng bởi id1 (:reply-with). Ontology
tên foo có thể cung cấp thêm thông tin về việc thông dịch :content.
Giả sử rằng B không có khả năng thực hiện các thao tác mà A đề nghị
trong thông điệp trước, khi đó B sẽ trả lời A bằng thông điệp như sau:
(sorry
:sender B
:receiver A
76
:in-reply-to id1
:reply-with id2 )
Tác tử B (:sender) sử dụng biểu hiện sorry để thông tin cho A(:receiver)
biết rằng nó không thể thực hiện việc xác định bar(a,b). Tác tử A sẽ biết được
chính xác thông điệp này muốn nói đến sự xác định nào bởi vì B sử dụng
tham số: in-reply-to với giá trị id1.
3.2. Tiềm năng ứng dụng công nghệ tác tử trong lưới
Cả lưới và tác tử đều là các khái niệm được phát triển từ các hệ phân tán
m
Các file đính kèm theo tài liệu này:
- Luận văn- Bảo mật trong môi trường lưới với tiếp cận hướng tác từ.pdf