Các tác giả Huang Renjie, Liu Feng vàPan Dongbo [2] nhìn nhận vấn đề bảo mật từ hai khía cạnh: thứ nhất là khía cạnhbảo mật trong môi trường mạng, giải pháp cho vấn đề này là OPC UA Serv
Trang 1BUILDING AUTOMATION CONTROL NETWORK)
LUẬN VĂN THẠC SĨ KỸ THUẬT CÔNG NGHỆ THÔNG TIN
Trang 2LỜI CẢM ƠN
Em xin chân thành cám ơn các Thầy cô giáo trong Viện CNTT & TT - Trường Đạihọc Bách khoa Hà Nội đã tạo điều kiện thuận lợi cho em trong quá trình học tập,nghiên cứu và thực hiện luận văn
Đặc biệt, em gửi lời biết ơn sâu sắc đến Thầy giáo PGS.TS Huỳnh Quyết Thắng.Thầy đã chỉ bảo, tạo điều kiện, giúp đỡ em rất nhiều trong quá trình nghiên cứu vàhoàn thiện luận văn
Em cũng chân thành cảm ơn chị ThS Nguyễn Thị Thanh Tú đã cho em những ý kiếnđóng góp giá trị, động viên em trong thời gian thực hiện đề tài
Luận văn chắc chắn sẽ có những thiếu sót, em xin chân thành cám ơn những nhận xétcủa Thầy cô, các bạn để luận văn được hoàn thiện hơn
Trang 3LỜI CAM ĐOAN
Tôi xin cam đoan, dưới sự hướng dẫn của PGS.TS Huỳnh Quyết Thắng, luận văn với
đề tài:
Phát triển hệ thống giám sát và điều khiển dùng OPC UA kết nối với
thiết bị ngoại vi BACnet(BACnet - Building Automation Control network)được hoàn thành với nhận thức của chính tác giả, không sao chép toàn văn của bất kỳcông trình nào khác
Trong quá trình làm luận văn, tôi kế thừa thành tựu của các nhà khoa học với sự trântrọng và biết ơn
Trang 4Mục lục
1.1 Tổng quan về OPC UA 13
1.1.1 OPC (OLE for Process Control) 13
1.1.2 OPC UA (OPC Unified Architecture) 16
1.2 Đặc tả lịch sử và bảo mật trong OPC UA 18
1.2.1 Đặc tả bảo mật 18
1.2.2 Đặc tả lịch sử 21
1.3 Giao thức BACnet 24
1.3.1 Kiến trúc của giao thức BACnet 24
1.3.2 Các kiểu mạng BACnet 25
1.3.3 Đối tượng BACnet và dịch vụ 26
2 Kiến trúc của hệ thống giám sát và điều khiển thiết bị theo đặc tả OPC UA 30 2.1 Thiết kế hệ thống 30
2.1.1 Kiến trúc của ứng dụng OPC UA 30
2.1.2 Các thành phần của Server 32
2.1.3 Các thành phần của Client 34
2.2 Giải pháp bảo mật 34
2.2.1 Secure channel management 35
2.2.2 Session management 37
2.2.3 Security strategy management module 37
2.2.4 User authorization, user authentication và application layer 37
2.3 Lịch sử dữ liệu và sự kiện 37
2.3.1 Lịch sử sự kiện 38
2.3.2 Lịch sử dữ liệu trong khoảng thời gian 39
2.3.3 Lịch sử dữ liệu tại thời điểm chính xác 39
Trang 52.4 Kết nối với thiết bị ngoại vi BACnet 40
2.4.1 Các thuộc tính và tham số 40
2.4.2 Tìm kiếm thiết bị trong mạng 41
2.4.3 Đọc và ghi giá trị 41
3 Cài đặt và thử nghiệm hệ thống 45 3.1 Mô hình hệ thống 45
3.1.1 Mô tả hệ thống 45
3.1.2 Các mục tiêu của hệ thống 46
3.1.3 Kiến trúc ứng dụng 47
3.2 Xây dựng Server 48
3.2.1 Giả lập thiết bị 48
3.2.2 Xây dựng tổng thể Server 50
3.2.3 Cài đặt lưu trữ lịch sử 52
3.2.4 Cài đặt giải pháp bảo mật 53
3.3 Ứng dụng Client 55
3.4 Thực nghiệm chương trình 56
3.4.1 Yêu cầu hệ thống 56
3.4.2 Ứng dụng Server 56
3.4.3 Thử nghiệm bảo mật 57
3.4.4 Thử nghiệm lịch sử 58
3.4.5 Gọi phương thức 61
Trang 6Danh sách hình vẽ
1.1 Kiến trúc truyền thông cổ điển 14
1.2 Kiến trúc truyền thông trong OPC 14
1.3 Tổng quan đặc tả OPC 15
1.4 Nền tảng của OPC UA 16
1.5 Kiến trúc phân tầng OPC UA 17
1.6 Kiến trúc hệ thống OPC UA 18
1.7 Môi trường bảo mật OPC UA 19
1.8 Kiến trúc bảo mật OPC 20
1.9 Mô hình UPC UA Server hỗ trợ việc truy cập lịch sử 22
1.10 Mô hình biến với dữ liệu lịch sử trong không gian địa chỉ 23
1.11 Kiến trúc phân tầng của BACnet 25
1.12 Định dạng Object_Identifier 27
1.13 Định dạng gói tin BACnet/IP 29
2.1 Kiến trúc tổng quát phần mềm OPC UA 31
2.2 Cấu trúc của stack 31
2.3 Các thành phần của Prosys Java SDK 32
2.4 Kiến trúc OPC UA Server 33
2.5 Kiến trúc OPC UA Client 35
2.6 Mô hình bảo mật cho ứng dụng 36
3.1 Kiến trúc tổng thể hệ thống 47
3.2 Kiến trúc ứng dụng 48
3.3 Kiến trúc OPC UA Server Application 48
3.4 Biểu đồ lớp của ObjectSimulator 50
3.5 Biểu đồ lớp của Server 50
3.6 Biểu đồ lớp cho việc lưu trữ lịch sử 52
3.7 Biểu đồ lớp xây dựng bảo mật Session cho ứng dụng 54
Trang 73.8 Giao diện ứng dụng Server 56
3.9 Xác nhận tham số khởi động Server 57
3.10 Lỗi đăng nhập bằng chế độ Anonymous 57
3.11 Đăng nhập Username/Password 58
3.12 Lựa chọn cơ chế Encrypt Server cung cấp 58
3.13 Xem lịch sử sự kiện 59
3.14 Xem lịch sử dữ liệu dạng đồ thị 59
3.15 Xem lịch sử dữ liệu dạng bảng 60
3.16 Ngắt kết nối từ Client đến Server 60
3.17 Truy cập lịch sử sau khi kết nối lại 61
3.18 Gọi phương thức 61
Trang 8Danh sách bảng
1 Danh mục từ viết tắt trong luận văn 8
1.1 Các đặc tả OPC UA 18
1.2 Các đoạn mã thể hiện yêu cầu được thực thi tốt 24
1.3 Các kiểu đối tượng trong chuẩn BACnet 27
1.4 Các thuộc tính của đối tượng Binary Output 28
1.5 Các thuộc tính của đối tượng Analog Output 28
2.1 Các kiểu lịch sử 38
2.2 Các tham số của mô hình lịch sử dữ liệu và sự kiện 38
2.3 Các tham số của lịch sử sự kiện 38
2.4 Các tham số của lịch sử dữ liệu trong một khoảng thời gian 39
2.5 Tham số của lịch sử dữ liệu tại thời điểm chính xác 40
2.6 Các tham số để truy cập thiết bị BACnet 40
2.7 Các phương thức của lớp CPort 41
2.8 Các phương thức của lớp CBACnetServiceReadProperty 43
2.9 Các phương thức của lớp CBACnetServiceWriteProperty 44
3.1 Các thuộc tính và phương thức của lớp ObjectSimulator 49
3.2 Các thành phần của Server 51
3.3 Các thuộc tính và phương thức của lớp EventHistory 53
3.4 Các thuộc tính và tham số của lớp ValueHistory 53
Trang 9Từ viết tắt Từ đầy đủ
ANSI American National Standards Institute
API Application Programming Interface
BACnet Building Automation Control network
COM Component Object Model
DCOM Distributed Component Object Model
DCS Distributed Control System
ERP Enterprise Resource Planning
GUI Graphics User Interface
HDN History Data Node
HEN History Event Node
ISO International Organization for StandardizationLAN Local Area Network
MES Manufacturing Execution System
OPC Object Linking and Embedding (OLE) for Process
ControlOPC A & E OPC Alarms and Events
OPC DA OPC Data Access
OPC HDA OPC Historical Data Access
OPC UA OPC Unified Architecture
PLC Programmable Logic Controller
PTP Point - to - Point
Bảng 1: Danh mục từ viết tắt trong luận văn
Trang 10hệ thống tự động hóa sử dụng Hiện nay, tổ chức OPC Foundation có trên 450 thànhviên, hơn 2500 nhà cung cấp với trên 15000 mẫu sản phẩm đang hoạt động trên thịtrường có sử dụng đặc tả OPC.
Tại Việt Nam, những năm gần đây đã có nhiều nhà máy đang xây dựng và đưa vào vậnhành các hệ thống tự động hóa với trang thiết bị và hệ điều hành của những thươnghiệu nổi tiếng như: Siemens AG, Rockwell Automation, ABB Inc, Advosol Inc, giaotiếp với nhau theo chuẩn OPC Ví dụ như tại các nhà máy giấy, các nhà máy điện,
Các công trình liên quan
Cùng với sự phát triển của các đặc tả OPC, số lượng và chất lượng của các nghiêncứu trong lĩnh vực này cũng tăng nhanh Nhóm nghiên cứu Tae-Jin Park và Seung-HoHong ([11], [12]) đã đưa ra một mô hình điều khiển và đánh giá hiệu năng của hệ thốngchiếu sáng, trong đó các thiết bị kết nối với nhau bằng mạng BACnet MS/TP Mô hìnhnày giúp tiết kiệm được 40% điện năng, và đảm bảo lưu lượng truyền dữ liệu luôn dướimột ngưỡng cho phép Nhóm tác giả Huỳnh Quyết Thắng và Nguyễn Thị Thanh Tú([15]) xây dựng mô hình điều khiển hệ thống điều hòa nhiệt độ Mô hình điều khiểnxây dựng theo đặc tả OPC UA kết nối với hệ thống bên ngoài theo giao thức Modbus
Hệ thống cho phép theo dõi và điều khiển nhằm tối ưu hóa hoạt động của các điều hòanhiệt độ Trong [7], Jang Chuanying, Li He và Liu Zhihong tiến hành phát triển OPC
UA Wrapper phục vụ cho việc tương tác giữa Server/Client theo chuẩn OPC (dựa trêncông nghệ COM/DCOM) với Client/Server theo chuẩn OPC UA
Trang 11Khi vấn đề theo dõi và điều khiển thiết bị cơ bản đã được giải quyết, các nhóm nghiêncứu chú tâm nhiều hơn vào vấn đề bảo mật Các tác giả Huang Renjie, Liu Feng vàPan Dongbo ([2]) nhìn nhận vấn đề bảo mật từ hai khía cạnh: thứ nhất là khía cạnhbảo mật trong môi trường mạng, giải pháp cho vấn đề này là OPC UA Server và OPC
UA Client sẽ được cấu hình với các firewall phù hợp, từ đó ngăn chặn được tấn côngngoài ý muốn; thứ hai là khía cạnh truyền thông bảo mật giữa ứng dụng Client vàServer, giải pháp cho vấn đề này là sử dụng xác thực phiên và kênh truyền bảo mật.Tuy nhiên, các tác giả dừng lại ở mức nghiên cứu lý thuyết, chưa đưa ra cài đặt thửnghiệm cho các phương án này Andreas Fernbach và Wolfgang Kastner ([8]) nghiêncứu và đưa ra các cách thức cài đặt quản lý chứng thực trong các môi trường lập trìnhkhác nhau, đảm bảo an toàn cho xác thực phiên kết nối giữa OPC UA Client và OPC
UA Server Annerose Braune, Stefan Hennig và Sebastian Hegler ([5]) tiến hành càiđặt thử nghiệm, so sánh tốc độ giữa các phương thức truyền thông bảo mật dựa trêncác thuật toán mã hóa dữ liệu cho các ứng dụng OPC UA trên trình duyệt Web Cáccông trình [5],[8] đã đưa ra những kết quả rõ ràng
Lý do lựa chọn đề tài
Với hệ thống giám sát và điều khiển thiết bị, vấn đề bảo mật là một tiêu chí vô cùngquan trọng, bởi nó ảnh hưởng trực tiếp tới sự an toàn của thiết bị, của hệ thống vàcủa những con người làm việc trong những tòa nhà sử dụng hệ thống Tuy nhiên, các
hệ thống giám sát và điều khiển trong thực tế lại chưa chú trọng đến vấn đề này Cáccông trình nghiên cứu chỉ dừng ở mức đưa ra mô hình mà chưa tiến hành thực nghiệmđánh giá
Vấn đề truy cập lịch sử cũng chưa được nghiên cứu một cách kĩ lưỡng Trong các hệthống thật, việc mất kết nối Client - Server là điều rất dễ xảy ra, do đó nhu cầu truycập các thông tin lịch sử là hết sức thực tế, giúp cho việc giám sát hệ thống hiệu quảhơn
Giao thức BACnet đang được nhiều nhà máy tại Việt Nam sử dụng, tuy nhiên các hệthống này đều phải mua từ nhà cung cấp nước ngoài với chi phí cao Các nhà máy cầnmột hệ thống đảm bảo chất lượng với chi phí hợp lý hơn
Đáp ứng các nhu cầu đó, tôi tiến hành xây dựng một hệ thống giám sát và điều khiểnkết nối với thiết bị BACnet, nhưng đặc biệt chú trọng vào hai phần: bảo mật và truycập lịch sử
Trang 12Hướng tiếp cận và các đóng góp của luận văn
Hướng tiếp cận
Hướng xây dựng luận văn có thể chia thành các bước như sau:
• Nghiên cứu các đặc tả về OPC UA, phiên bản được tổ chức OPC Foundation
đưa ra năm 2009,
• Nghiên cứu các mô hình điều khiển thực tế, các công trình nghiên cứu trước đó,
từ đó đánh giá những vấn đề đã làm được và những vấn đề chưa được nghiêncứu kĩ lưỡng trong các ứng dụng OPC UA Tôi nhận thấy vấn đề truy cập lịch
sử trong các ứng dụng OPC UA chưa được quan tâm, vấn đề bảo mật chưa đượccài đặt thực nghiệm trong các ứng dụng
• Xây dựng một ứng dụng theo đặc tả OPC UA kết nối với mạng thiết bị sử dụng
giao thức BACnet, chú trọng vào phần lịch sử dữ liệu của thiết bị và bảo mậttruyền thông giữa OPC UA Server và OPC UA Client
Các đóng góp của luận văn
Dựa trên việc nghiên cứu các tài liệu, tôi tập trung vào các phần quan trọng mà cáccông trình trước đó chưa tập trung: lịch sử dữ liệu và bảo mật Vì vậy, luận văn cónhững đóng góp chính sau:
• Nghiên cứu đặc tả lịch sử (History Access) và đặc tả bảo mật (Security Model)
trong mô hình OPC UA, tìm hiểu giao thức BACnet,
• Xây dựng kiến trúc của một ứng dụng OPC UA, đưa ra giải pháp bảo mật và
lịch sử cho ứng dụng, cách kết nối ứng dụng đến thiết bị BACnet,
• Cài đặt thử nghiệm ứng dụng OPC UA Server dùng để giám sát và điều khiển
thiết bị BACnet, đáp ứng các yêu cầu bảo mật và truy cập lịch sử dữ liệu
Bố cục luận văn
Luận văn gồm 3 chương, với nội dung của mỗi chương như sau:
Chương 1 Cơ sở lý thuyết: Tôi nhắc lại các đặc trưng cơ bản nhất về OPC, OPC
UA, các kiểu đặc tả Sau đó, tôi tập trung vào đặc tả lịch sử và đặc tả bảo mật Phầncuối của chương là lý thuyết về giao thức BACnet
Trang 13Chương 2 Kiến trúc của hệ thống giám sát và điều khiển thiết bị theo đặc tả OPC UA: Tiêu chí của một hệ thống được tôi nêu ra trong chương này Các thành phần
cơ bản của một hệ thống (Server - Client) được phân tích cụ thể Tôi đưa ra mô hìnhcho việc lưu trữ lịch sử dữ liệu, giải pháp đảm bảo an toàn cho hệ thống Vấn đề kếtnối với thiết bị ngoại vi (BACnet) cũng được tôi đề cập đến với mục tiêu áp dụng chonhững hệ thống giám sát và điều khiển trong thực tế
Chương 3 Cài đặt và thử nghiệm hệ thống: Trong chương này, tôi xây dựng ứng dụng
Server theo phân tích trong chương 2 Ứng dụng có giao diện đồ họa (GUI - GraphicsUser Interface) Sau đó, tôi tiến hành thử nghiệm vấn đề bảo mật và lịch sử của ứngdụng Các đánh giá và nhận xét được đưa ra ở phần cuối chương
Cuối cùng là kết luận, định hướng tiếp theo và danh mục các tài liệu tham khảo
Trang 14Chương 1
Cơ sở lý thuyết
Trong chương này, tôi sẽ trình bày các kiến thức về OPC, OPC UA, nghiên cứu tậptrung vào đặc tả bảo mật và truy cập lịch sử trong OPC UA Tôi cũng sẽ trình bàynhững điểm quan trọng nhất của giao thức BACnet
1.1 Tổng quan về OPC UA
1.1.1 OPC (OLE for Process Control)
Giới thiệu về OPC
OPC được đưa ra lần đầu vào năm 1996 Đây là một chuẩn truyền thông trong côngnghiệp cho phép các máy tính có thể kết nối với hệ thống điều khiển phân tán OPC
là một tập hợp nhiều đặc tả dựa trên công nghệ COM/DCOM của Microsoft ChuẩnOPC không những phù hợp cho việc kết nối với các thiết bị trong hệ thống tự động,
mà còn cung cấp cơ chế cho các ứng ở mức cao hơn như các ứng dụng ERP, MES Sựkhác nhau giữa các chuẩn truyền thông cổ điển với chuẩn OPC được thể hiện tronghai hình 1.1 và 1.2 ([14])
Dựa trên kiến trúc Client - Server, OPC Server cung cấp chuẩn giao tiếp với cácđối tượng OPC COM, mỗi OPC Client sẽ trao đổi dữ liệu cũng như điều khiển thiết
bị bằng cách thống nhất Ứng dụng Client có thể kết nối với một hoặc nhiều Serverbởi những nhà cung cấp khác nhau
Các đặc tả OPC
OPC là một tập hợp các đặc tả được thống nhất bởi các nhà cung cấp phần mềm vàphần cứng tự động trên toàn thế giới Nó gồm các chuẩn về đối tượng, phương thức,
Trang 15Hình 1.1: Kiến trúc truyền thông cổ điển
Hình 1.2: Kiến trúc truyền thông trong OPC
các yêu cầu khác nhau của các ứng dụng, cho phép trao đổi dữ liệu hiệu quả giữa thànhphần phần mềm của các nhà sản xuất khác nhau 4 đặc tả chính của OPC là:
• OPC Data Access Specification
• OPC XML - DA Specification
• OPC Historical Data Access (HDA) Specification
• OPC Alarm and Event (A & E) and Batch
Trang 16Tổng quan về đặc tả OPC được thể hiện trong hình 1.3, chi tiết các đặc tả này đượctrình bày trong [14], [16].
Hình 1.3: Tổng quan đặc tả OPC
Các vấn đề với OPC
Kiến trúc OPC có nhiều tiện ích, song nó tồn tại một số vấn đề sau:
• OPC dựa trên công nghệ COM/DCOM của Microsoft, điều này dẫn đến vấn đề
tương thích với các hệ điều hành khác ngoài Windows Vấn đề xác thực firewalltrong các hệ thống phân tán cũng gặp khó khăn, việc trao đổi dữ liệu với cáctầng của ứng dụng ERP, MES cũng rất phức tạp,
• XML Web Services: kích thước của tin nhắn XML yêu cầu dung lượng truyền
lớn, điều này không gây khó khăn cho các ứng dụng Có thể sử dụng việc nén dữliệu nhị phân để tăng hiệu năng, tuy nhiên nó không giải quyết triệt để vấn đề
Trang 17Do đó, chuẩn OPC UA ra đời để đáp ứng tốt hơn yêu cầu của các ứng dụng trong hệthống công nghiệp thực tế Trong phần tiếp theo tôi sẽ trình bày các đặc tả cơ bảnnhất của chuẩn này.
1.1.2 OPC UA (OPC Unified Architecture)
OPC UA (OPC Unified Architecture) là chuẩn được phát triển từ chuẩn OPC, bảnđặc tả đầu tiên về OPC UA được đưa ra năm 2006 bởi OPC Foundation Mục tiêucủa OPC UA là để việc kết nối các thiết bị phần cứng không phụ thuộc vào nền tảnghay công nghệ của nhà sản xuất Các cải tiến của OPC UA so với OPC gồm: mô hìnhthông tin, đa nền tảng, truy cập Internet, cơ chế bảo mật, hiệu năng cao ([14]) Nềntảng xây dựng OPC UA được thể hiện trong hình 1.4 Chức năng cơ bản của mỗi thành
Hình 1.4: Nền tảng của OPC UA
phần:
• Transport: Xác định cơ chế tối ưu hóa cho các use case khác nhau Phiên bản
OPC đầu tiên sử dụng giao thức nhị phân TCP để truyền thông trong mạng nội
bộ và các tiêu chuẩn XML, HTTP cho việc truyền thông trên Internet
• Data modeling: Các quy tắc và các khối xây dựng cơ bản cần thiết để thể hiện
Trang 18một mô hình thông tin với OPC UA Nó là điểm bắt đầu để xây dựng một khônggian địa chỉ cho hệ thống.
• UA Services: Giao diện giữa Server và Client, sử dụng cơ chế giao vận (transport
mechanisms) để trao đổi dữ liệu giữa Server và Client
OPC UA cho phép định nghĩa mô hình thông tin ở các tầng khác nhau của hệ thống,
từ OPC Foundation đến các tổ chức sử dụng và các nhà cung cấp (hình 1.5) Kế thừa
Hình 1.5: Kiến trúc phân tầng OPC UA
các thành công của OPC, OPC UA bao gồm các thành phần cơ bản như Data Access,Alarm and Conditions, Historical Access, Programs specifies Các tổ chức xây dựng
mô hình thông tin dựa trên OPC UA để đáp ứng các yêu cầu riêng của mình
Các đặc tả OPC UA
OPC UA gồm 12 đặc tả, chia làm 2 loại chính: đặc tả thành phần lõi và đặc tả kiểutruy cập: Trong luận văn này, tôi tập trung vào phần 2 và phần 11 của đặc tả OPC
UA (phần 1.2) Chi tiết các đặc tả được trình bày trong [1],[9]
OPC UA sử dụng kiến trúc Client - Server (hình 1.6), tuy nhiên, mỗi Server có thể làClient của một Server khác Hai thành phần cơ bản nhất của OPC UA là không gianđịa chỉ (Address Space) và dịch vụ (Services), dùng trong mọi hệ thống OPC UA
• Không gian địa chỉ: là một vùng thông tin mô hình hóa các đối tượng thực được
OPC Server khai báo để cung cấp cho Client truy cập đến Không gian địa chỉ làtập hợp các node Mỗi node gồm các thuộc tính và tham chiếu đến node khác
Trang 19Đặc tả thành phần lõi Đặc tả kiểu truy cập
Phần 1: Các khái niệm Phần 8: Truy cập dữ liệu
Phần 2: Mô hình bảo mật Phần 9: Cảnh báo và điều kiện
Phần 3: Không gian địa chỉ Phần 10: Các chương trình
• Dịch vụ: Các thủ tục gọi từ xa được thực thi bởi UPC UA Server Client gọi đến
Server và tương tác giữa chúng được thực hiện thông qua các dịch vụ Mỗi dịch
vụ được ánh xạ thành thông điệp thông qua đặc tả ánh xạ dịch vụ Hiện nay,đặc tả ánh xạ thông điệp được cung cấp trong SDK, giúp các nhà phát triển dễdàng hơn trong việc xây dựng hệ thống
1.2 Đặc tả lịch sử và bảo mật trong OPC UA
1.2.1 Đặc tả bảo mật
Môi trường bảo mật các ứng dụng OPC UA
Các ứng dụng OPC UA chạy trong ở nhiều nơi khác nhau, môi trường khác nhau.Client, Server có thể trong cùng một mạng nội bộ, trong hai mạng nội bộ khác nhau,hoặc trong môi trường mạng mở, điều đó dẫn đến việc quản lý người sử dụng và bảnthân ứng dụng gặp nhiều khó khăn Hình 1.7 mô tả tổng quát một môi trường mà ứng
Trang 20dụng OPC UA chạy trên đó Để đảm bảo được việc điểu khiển và giữ được an toàn
Hình 1.7: Môi trường bảo mật OPC UA
cho hệ thống, ứng dụng OPC UA được thiết kế thỏa mãn các mục tiêu sau:
• Xác thực (Authentication): Tất cả các thực thể khi tham gia kết nối đều phải
cung cấp định danh, và được phép kết nối nếu định danh đó được cho phép
• Cấp phép (Authorization): Các thao tác đọc, ghi, hoặc thực thi đều phải được
sự cho phép dựa trên các quyền hạn của ứng dụng Client và của người sử dụng
• Tính bí mật (Confidential): Dữ liệu trao đổi phải được bảo vệ trước các hình
thức tấn công, ví dụ như hình thức nghe trộm Dữ liệu được mã hóa bằng cácthuật toán mã hóa dựa trên khóa công khai - bí mật
• Tính toàn vẹn (Integrity): Dữ liệu người nhận được phải đúng so với dữ liệu từ
người gửi đi
Trang 21• Tính kiểm soát được (Auditability): Dữ liệu nhận phải được sắp xếp theo thứ tự
để hệ thống làm việc theo đúng trình tự hướng tới mục đích của người gửi
• Tính sẵn sàng (Available): dữ liệu phải luôn được sẵn sàng cho các yêu cầu kết
nối, ví dụ như tạo lập thêm một phiên kết nối với Client
Phần tiếp theo sẽ trình bày kiến trúc bảo mật của OPC UA để hướng đến các mụctiêu này
Kiến trúc bảo mật OPC UA
Kiến trúc bảo mật của OPC UA là một giải pháp tổng quát, nó cho phép cài đặt vớicác yêu cầu đa dạng của ứng dụng OPC UA Tùy thuộc vào đặc điểm ứng dụng và nhucầu của hệ thống, giải pháp bảo mật được cài đặt ở các mức khác nhau Kiến trúc bảomật của OPC UA được xây dựng ở tầng ứng dụng (Application Layer) và tầng truyềnthông (Communication Layer), phía trên tầng giao vận (Transport Layer), được mô tảtrong hình 1.8 Một trong những công việc quan trọng của Client và Server là truyền
Hình 1.8: Kiến trúc bảo mật OPC
những thông tin về cài đặt kết nối, các yêu cầu kết nối, tất cả đều được thực hiện trongmỗi phiên được quản lý bởi tầng ứng dụng Tầng ứng dụng đồng thời cũng quản lý cáccông việc như xác thực người sử dụng và cấp phép cho người sử dụng Bằng việc gọicác dịch vụ phiên (Session Services - đặc tả Services), tầng ứng dụng sẽ quản lý việc
Trang 22bảo mật thông qua việc quản lý người sử dụng của mỗi phiên làm việc.
Mỗi phiên làm việc ở tầng ứng dụng giao tiếp thông qua một kênh truyền bảo mật,được quản lý bởi tầng truyền thông Thông tin từ tầng ứng dụng sẽ được chuyển chotầng truyền thông, tại đây thông tin được xử lý nhằm đảm bảo việc giao tiếp là bảomật Mỗi kênh truyền bảo mật được tạo ra cho mỗi phiên truyền thông, tuy nhiên
nó được che giấu với người sử dụng, phiên làm việc Kênh truyền bảo mật đảm bảotính bí mật và tính toàn vẹn dữ liệu thông qua thuật toán mã hóa, chữ kí tin nhắn(Message Signature) và chứng thực điện tử (Digital Certificate) Các dịch vụ bảo mậtkênh truyền được cung cấp bởi Secure Channel Services
Tầng giao vận kiểm soát việc gửi, nhận và truyền dữ liệu nhận được từ tầng truyềnthông Tầng giao vận giúp thực hiện tính kiểm soát được của truyền thông
Các phương pháp mã hóa, trao đổi khóa, các phương pháp tấn công phổ biến trong hệthống OPC UA được trình bày chi tiết trong [2]
1.2.2 Đặc tả lịch sử
Mô hình cung cấp lịch sử dữ liệu
Đặc tả truy cập lịch sử OPC UA (OPC UA Historical Access) định nghĩa cách cungcấp chuỗi dữ liệu thời gian và sự kiện lịch sử Một OPC UA Server hỗ trợ việc truycập lịch sử sẽ cung cấp cho nhiều Client truy cập song song vào lịch sử dữ liệu hoặclịch sử sự kiện khác nhau Hình 1.9 mô tả cấu trúc của một OPC UA Server hỗ trợviệc truy cập lịch sử Bản thân một OPC UA Server có thể cung cấp dữ liệu lịch sử
từ chính nó, hoặc lấy dữ liệu lịch sử từ OPC UA Server khác, hoặc từ Server chỉ phụtrách lưu trữ dữ liệu/lưu trữ sự kiện và điều kiện (OPC Historical Data Access/OPC
A & E Server) Client chỉ cần gửi thông tin về đối tượng cần xem lịch sử, khoảng thờigian, Server sẽ cung cấp các thông tin đó lại cho Client
Các kiểu lịch sử
Lịch sử dữ liệu Các đối tượng lưu trữ giá trị (có thể là kiểu số, kiểu boolean,kiểu String, ) đều là các dữ liệu OPC UA định nghĩa node lịch sử dữ liệu (HDN -HistoricalDataNode) luôn luôn là một phần của một node khác trong không gian địachỉ HDN không thể tự định nghĩa chính nó Các thuộc tính của một HDN gồm:
• Giá trị (Value): giá trị của biến dữ liệu,
• Kiểu dữ liệu (DataType): kiểu dữ liệu của biến,
Trang 23Hình 1.9: Mô hình UPC UA Server hỗ trợ việc truy cập lịch sử
• Mức truy cập (AccessLevel): các kiểu truy cập đến biến lịch sử này cung cấp bởi
Server,
• Historizing: mỗi biến có lịch sử đều có thuộc tính này.
Mỗi HDN có một tham chiếu đến một HistoricalConfigurationType, bao gồm các thông
số cho việc lưu trữ dữ liệu lịch sử của node đó như: bước thời gian, cách gửi giá trị vềClient, khoảng thời gian nhỏ nhất, lớn nhất giữa hai lần lưu lịch sử, Chi tiết đượcnêu trong [3] Hình 1.10 thể hiện cách tổ chức biến với dữ liệu lịch sử trong không gianđịa chỉ
Lịch sử sự kiện Khác với lịch sử dữ liệu, lịch sử sự kiện (HEN - HistoricalEventNode)gắn với một đối tượng hoặc một view Các khái niệm cơ bản của một sự kiện gồm:
• EventNotifier: thể hiện lịch sử các sự kiện,
Trang 24Hình 1.10: Mô hình biến với dữ liệu lịch sử trong không gian địa chỉ
• SourceNode: đối tượng cung cấp thông tin cho EventNotifier để quyết định việc
sự kiện có được sinh ra và ghi lại hay không,
• TargetNode: Đối tượng gắn với các sự kiện, thường là các AlarmNode.
Trong tài liệu [3] thể hiện sơ đồ mô hình lịch sử sự kiện trong không gian địa chỉ, vàcác giải thích chi tiết các thành phần của mô hình đó
Timestamp và HistoryStatusCode
Timestamp Trong OPC UA Historical Access, nhãn thời gian (timestamp) là mộtyêu cầu rất tự nhiên để đáp ứng việc tìm kiếm lịch sử trong một khoảng thời gian.Client gửi các nhãn thời gian và nhận lịch sử dữ liệu/lịch sử sự kiện giữa các nhãn thờigian đó Với từng loại lịch sử, OPC UA Server cung cấp các kiểu nhãn thời gian sau:
• HistoricalDataNode:
– Source: trả về SourceTimeStamp, dùng giá trị này để quyết định các dữ liệulịch sử nào được xử lý,
Trang 25– Server: trả về ServerTimeStamp, dùng giá trị này để quyết định các dữ liệulịch sử nào được xử lý,
– Both: trả về cả SourceTimeStamp và ServerTimeStamp, nhưng dùng TimeStamp để quyết định,
Source-– Neither: không hỗ trợ cho thao tác HistoryRead với HDN
• HistoricalEventNode:
– Source: trả về SourceTimeStamp, dùng giá trị này để quyết định các dữ liệulịch sử nào được xử lý,
– Server: không hỗ trợ HistoryRead với HEN,
– Both: không hỗ trợ HistoryRead với HEN,
– Neither: không hỗ trợ HistoryRead với HEN
HistoryStatusCode StatusCode được sử dụng để thông báo về trạng thái đáp ứngcủa dữ liệu lịch sử tương ứng với yêu cầu từ Client Có 3 trạng thái cơ bản: Tốt (good),không chắc chắn (uncertain) và xấu (bad) thể hiện tình trạng thực thi của Server.Bảng 1.2 ví dụ các trạng thái tốt khi Server thực thi yêu cầu Các trạng thái xấu và
Id Status Code Mô tả trạng thái
Good_NoData Không tồn tại dữ liệu hoặc sự kiện
Good_MoreData Dữ liệu trả về lớn hơn dung lượng có thể đáp ứngGood_EntryInserted Dữ liệu/sự kiện được chèn xong vào lịch sử
Good_EntryReplaced Dữ liệu/sự kiện được thay thế xong trong lịch sử
Bảng 1.2: Các đoạn mã thể hiện yêu cầu được thực thi tốt
không chắc chắn, tài liệu [3] có dẫn đầy đủ
1.3 Giao thức BACnet
1.3.1 Kiến trúc của giao thức BACnet
BACnet (Building Automation Control network) là giao thức cho phép tích hợp nhiều
hệ thống tự động vào một ứng dụng điều khiển duy nhất, thuận tiện cho việc điềukhiển Nó cũng cho phép người sử dụng mở rộng hoặc nâng cấp công nghệ điều khiển
Trang 26với đa dạng nhà cung cấp thiết bị Đây là một chuẩn giao tiếp để xây dựng các hệthống tự dộng theo kiến trúc một - nhiều (front - end).
BACnet được đưa ra lần đầu tiên năm 1991, và hỗ trợ bởi tổ chức ASHRAE (AmericanSociety of Heating, Refrigerating and Air Conditioning Engineers), được coi như mộtchuẩn chính thức của ANSI/ASHRAE/ISO ([6])
Giao thức này định nghĩa một mô hình để xây dựng các hệ thống tự động, mô tả cáchtương tác giữa các thiết bị và hệ thống BACnet dựa trên kiến trúc của mô hình OSI(hình 1.11)
Các giao thức ở tầng ứng dụng và tầng mạng có thể sử dụng để kết nối với mạng
Hình 1.11: Kiến trúc phân tầng của BACnet
LAN, PTP Tầng mạng cung cấp cách kết nối các mạng LAN có kiến trúc không tươngđồng vào cùng một mạng lớn hơn Chuẩn BACnet đưa ra năm 2008 định nghĩa cáckiểu mạng cho tầng liên kết dữ liệu:
Trang 27• BACnet ISO 8802-3 (Ethernet): được phát triển bởi DEC, Intel và Xerox, được
coi là chuẩn có hiệu năng tốt nhất Các mô tả trong ISO 8802-3 đều được chấpnhận và sử dụng trong BACnet Ethernet Ethernet hiệu quả với số lượng thôngđiệp truyền thông ít và trung bình, tuy nhiên, khi số lượng thông điệp lớn, hiệuquả của Ethernet giảm rất nhanh Do đó, trong các hệ thống nhiều thiết bị vàtrao đổi dữ liệu liên tục, Ethernet không thường xuyên được sử dụng
• BACnet ARCNET: được phát triển bởi Datapoint Corporation (hiện nay là
American National Standard (ATA/ANSI 878.1)) Nó đáp ứng yêu cầu về chiphí thấp, tuy nhiên khi thông lượng lớn hơn 2.5 Mbps, ARCNET hoạt độngkhông hiệu quả
• BACnet MS/TP dựa trên chuẩn ở tầng vật lý của EIA-485 Chuẩn EIA-485 được
dùng thông dụng trong các hệ thống điều khiển, do đó việc tương thích với các
hệ thống có sẵn của BACnet MS/TP là rất tốt Kiến trúc MS/TP gồm một hoặcnhiều Master node ngang hàng liên kết với nhau, và liên kết với nhiều Slave node,
sử dụng giao thức Token để đọc/ghi/điều khiển các thiết bị
• BACnet LonTalk: được phát triển bởi Echelon Corporation Đây là chuẩn tương
thích với nhiều thiết bị, chi phí thấp, tuy nhiên tốc độ chậm và giới hạn kíchthước tin nhắn (128 bytes)
• BACnet/IP: tập hợp nhiều mạng IP vào chung một mạng BACnet Mỗi thiết
bị có một địa chỉ IP, và sử dụng địa chỉ đó để giao tiếp với nhau ở tầng mạng.BACnet/IP sử dụng các gói tin UDP (giao thức không hướng kết nối) bởi cácgói tin UDP thuận tiện hơn cho việc gửi các tin broadcast so với gói tin TCP.Ngày nay, các hệ thống BACnet chủ yếu sử dụng BACnet/IP bởi nó dễ mở rộng
và tương thích với nhiều loại mạng
• BACnet PTP (Point-to-Point): sử dụng cơ chế truyền EIA-232 full duplex Ứng
dụng sử dụng BACnet PTP dễ mở rộng (thêm thiết bị), tương thích với các hệthống khác Tuy nhiên khoảng cách giữa các thiết bị bị giới hạn
1.3.3 Đối tượng BACnet và dịch vụ
Trong mạng BACnet, mỗi node là một thiết bị (Device) Mỗi thiết bị gồm các đốitượng BACnet định nghĩa 20 kiểu đối tượng, một số kiểu chính được nêu trong bảng1.3
Trang 28Mỗi đối tượng BACnet có một thuộc tính Object_Name và Object_Identifier Dịch
Analog Input Event EnrollmentAnalog Output File
Analog Value GroupBinary Input LoopBinary Output Multi-state InputBinary Value Multi-state OutputCalendar Notification ClassCommand Program
Device ScheduleBảng 1.3: Các kiểu đối tượng trong chuẩn BACnet
vụ Who-Has, I-Have dùng để tìm Object_Identifier thông qua Object_Name Dịch vụWho-Is, I-Am dùng để xác định địa chỉ của một Device thông qua Device_Identifier,hoặc dùng để thông báo (tin nhắn quảng bá) rằng một thiết bị mới được kết nối vàomạng Who-Has, I-Have dùng được cho cả Device và Object, còn Who-Is, I-Am chỉdùng được với các Device Các loại dịch vụ của BACnet ở tầng ứng dụng được trìnhbày trong [6]
Một Object_Identifier gồm 4 bytes với 2 trường: Object_Type và Object_Instance(hình 1.12)
Hình 1.12: Định dạng Object_Identifier
Binary Type và Analog Type
Binary Type và Analog Type là hai hiểu quan trọng nhất trong các kiểu đối tượng củaBACnet Mặc định, kiểu Binary dùng để định nghĩa trạng thái của thiết bị, còn kiểuAnalog dùng để lưu giá trị của thiết bị Ví dụ với thiết bị điều hòa, Binary thể hiện
Trang 29trạng thái bật/tắt, còn Analog thể hiện giá trị nhiệt độ Các thuộc tính chính của haikiểu đối tượng này được mô tả trong bảng 1.5 và bảng 1.4.
Object Identifier Binary Output, 0Object Name "State of Device"
Object Type Binary OutputOut of Service False
Present Value ActiveInactive Text "OFF"
Active Text "ON"
.Bảng 1.4: Các thuộc tính của đối tượng Binary Output
Object Identifier Analog Output, 0Object Name "Temperature"
Object Type Analog OutputOut of Service False
Present Value 29 .Bảng 1.5: Các thuộc tính của đối tượng Analog Output
Gói tin BACnet/IP
Các thiết bị trong mạng BACnet/IP truyền thông sử dụng các gói tin IP hoặc IPX,được chuyển tiếp bởi các IP/IPX router trong mạng nội bộ, sử dụng PADs (Package-Assembler-Disassemblers) để giải mã
Cổng mặc định cho gói tin UDP cho mạng BACnet/IP là 47808 (0xBAC0) Định dạnggói tin BACnet/IP được thể hiện trong hình 1.13
Trường BVLC Type (1 byte), trường BVLC (BACnet Virtual Link Control) Function(1 byte) là kiểu và định danh của dịch vụ BACnet Các trường NPDU, APDU tùy thuộcvào giá trị trong trường BVLC Các kiểu packet thông dụng: OUN (Original-Unicast-NPDU, mã 0x0A), OBN (Original-Broadcast-NPDU, mã 0x0B), FN (Fowarded-NPDU,
mã 0x04)
Trang 30Hình 1.13: Định dạng gói tin BACnet/IP
Kết chương
Trong trương này, tôi đã trình bày các đặc điểm cơ bản nhất của OPC UA, trình bàycác phần quan trọng trong đặc tả bảo mật và đặc tả truy cập lịch sử của OPC UA,giới thiệu giao thức BACnet Đây là những kiến thức quan trọng để tôi tiếp tục trìnhbày những kết quả trong chương tiếp theo
Trang 31Chương 2
Kiến trúc của hệ thống giám sát và điều khiển thiết bị theo đặc tả OPC UA
Ở chương này, tôi sẽ trình bày kiến trúc của hệ thống giám sát và điều khiển thiết bịvới các thành phần: OPC UA Server và OPC UA Client Sau đó, tôi tiến hành phântích chi tiết các thành phần này Tiếp theo, tôi đưa ra giải pháp lưu trữ lịch sử và giảipháp bảo mật cho hệ thống Vấn đề kết nối với thiết bị BACnet sẽ được trình bày ởcuối chương
2.1 Thiết kế hệ thống
2.1.1 Kiến trúc của ứng dụng OPC UA
Một ứng dụng OPC UA luôn bao gồm các tác vụ: quản lý kết nối, thiết lập và xử lýcác thông điệp, bảo mật truyền thông Có thể chia các tác vụ này thành hai phần: mứccao như quản lý kết nối và xử lý các thông điệp, mức thấp bao gồm mã hóa, bảo mật
và truyền thông điệp Phần mức cao được đóng gói thành các bộ phát triển phần mềm(Software Development Kit), phần mức thấp được đáp ứng bởi các ngăn xếp (ProtocolStack) Việc phát triển phần mềm OPC UA ở phần trên của SDK (hình 2.1)
Ngăn xếp Ngăn xếp (stack) đảm nhiệm các chức năng ở mức thấp như mã hóa dữliệu, bảo mật, truyền thông điệp Nó gần như ẩn đối với các nhà phát triển ứng dụng.Cấu trúc của một stack được thể hiện trong hình 2.2 Trong phạm vi luận văn này, tôi
Trang 32Hình 2.1: Kiến trúc tổng quát phần mềm OPC UA
Hình 2.2: Cấu trúc của stack
sử dụng SDK của ProsysOPC (http://www.prosysopc.com/) để xây dựng ứng dụngthử nghiệm SDK này phục vụ cho ngôn ngữ Java Cấu trúc của SDK bao gồm 3 thànhphần chính (hình 2.3)
• Đặc tả OPC UA
• Đặc tả chung
Trang 33• Client/Server API
Mỗi thành phần quản lý và cung cấp các tác vụ khác nhau cho việc phát triển ứngdụng Trên trang chủ của ProsysOPC (http://www.prosysopc.com/) có trình bày chitiết chức năng của các thành phần này
Hình 2.3: Các thành phần của Prosys Java SDK
2.1.2 Các thành phần của Server
Kiến trúc OPC UA Server mô hình hóa điểm cuối cùng phía Server của tương tác Client
- Server Các thành phần chính của OPC UA Server và cách chúng tương tác được thểhiện trong hình 2.4 (tham khảo [4]) Một OPC UA Server gồm các thành phần: đốitượng thực, ứng dụng Server, không gian địa chỉ, các thực thể publisher/subscriber
Đối tượng thực Đối tượng phần mềm hoặc vật lý mà OPC UA Server có thể truycập được, ví dụ như các thiết bị vật lý Trong mô hình của luận văn này, đối tượngthực chính là điều hòa giả lập