Một giải pháp bảo mật cho giao thức Modbus TCP phịng chống cơng vào hệ thống SCADA sử dụng giao thức Nguyễn Văn Xuân1*, Hoàng Đức Trọng1, Vũ Thanh Hải2, Nguyễn Tăng Cường1 Học viện Kỹ thuật Quân Trường Đại học Điện lực Ngày nhận 15.9.2015, ngày chuyển phản biện 18.9.2015, ngày nhận phản biện 19.10.2015, ngày chấp nhận đăng 27.10.2015 Giao thức Modbus sử dụng rộng rãi hệ thống công nghiệp quan trọng, hệ thống điều khiển giám sát thu thập liệu (SCADA - Supervisory control and data acquisition) Với nhu cầu phát triển, mở rộng ngày tăng mạng công nghiệp, Modbus kết nối với Internet sử dụng giao thức TCP/IP (Transmission control protocol/Internet protocol) giao thức truyền tải liệu khác Sử dụng sở hạ tầng Internet tạo lỗ hổng, nguy dễ bị công gây thiệt hại khơng mong muốn Trong báo trình bày kỹ thuật ứng dụng mật mã khóa đối xứng AES (Advanced encryption standard) bảo mật cho giao thức Modbus TCP/IP Giải pháp làm giảm đáng kể lỗ hổng, tăng cường tính bảo mật, xác thực, tồn vẹn gói tin cho giao thức Modbus TCP/IP, để phịng chống công vào hệ thống SCADA sử dụng giao thức Từ khóa: an ninh mạng, bảo mật giao thức Modbus, mã hóa AES, Modbus TCP/IP Chỉ số phân loại 2.2 Đặt vấn đề A security solution for Modbus TCP protocol to prevent attacks on SCADA system using this protocol Summary Modbus protocol is widely deployed in critical industrial systems or supervisory control and data acquisition (SCADA) systems With the increasing demands on industrial networks, the Modbus protocol is also connected over the Internet using TCP/IP protocol or other transmission protocol Using the Internet infrastructure, the systems are likely vulnerable to risks, which causes unpredictabe damages In this paper, the author propose a solution of symmetric key cipher AES for high-secured Modbus TCP/IP protocol This approach aims at reducing vulnerabilities, enhancing security, authentication and integrity in Modbus TCP/IP protocol to prevent cyber attacks on SCADA systems using this protocol Keywords: AES, cyber security, Modbus TCP/IP, secure modbus protocol Classification number 2.2 *Tác giả liên hệ: Email: nguyenvanxuanirf@yahoo.com 4(1) 1.2016 15 Hệ thống SCADA sử dụng rộng rãi cơng nghiệp tự động hóa, sở hạ tầng quan trọng như: nhà máy hóa chất, trạm phát điện, mạng lưới truyền tải phân phối điện, mạng lưới phân phối nước xử lý chất thải, hệ thống thủy lợi, lò phản ứng tổng hợp hạt nhân… Các hệ thống SCADA có ý nghĩa chiến lược nên xảy lỗi trục trặc hậu lớn Một hệ thống SCADA cho phép kết nối liên thông nhiều mạng thông qua nhiều loại giao thức, bao gồm giao thức Internet (IP) [1] Phạm vi kết nối rộng làm cho hệ thống SCADA có thêm nhiều lỗ hổng, với lỗ hổng sẵn có hệ thống SCADA, làm chúng dễ bị công kẻ có ý đồ xấu Trong thiết kế truyền thống hệ thống SCADA, mối quan tâm hiệu suất, hiệu hệ thống An ninh hệ thống SCADA quan tâm xuất nhiều cố an ninh Ví dụ tháng 3.2000, thông tin liên lạc trạm bơm dịch vụ nước Maroochy Úc bị mất, trạm bơm không hoạt động được, hệ thống bị công gây cố [2] Vào tháng 8.2003, sâu máy tính vượt qua tường lửa (firewall), xâm nhập vào hệ thống điều khiển SCADA nhà máy điện hạt nhân DavisBesse Ohio [3] Xu hướng lên đến đỉnh điểm với Stuxnet [4] công vào hệ thống SCADA phát vào tháng 7.2010 Đây phần mềm độc hại, công tinh vi vào loại PLC (Programmable logic controller), sửa đổi kiểm soát chúng, gây bất thường hệ thống Hệ thống SCADA ban đầu xây dựng giả thiết tất thành phần hoạt động mạng hợp pháp Các hệ thống khơng có biện pháp bảo vệ để chống lại công có chủ đích Các thành phần mạng khơng có xác thực danh tính, xác thực truy nhập, khơng thể xác minh nội dung thơng điệp có hợp lệ hay không hợp lệ nên tất liệu truyền qua mạng rõ, khơng có mã hóa Giao thức Modbus, Modbus TCP nằm số đó, theo xu hướng cơng nghệ Modbus TCP sử dụng rộng rãi hệ thống SCADA để giao tiếp thành phần mạng Từ lý nêu trên, việc nghiên cứu ứng dụng tiêu chuẩn mã hóa tiên tiến AES để bảo mật cho giao thức Modbus TCP, nhằm ngăn chặn cơng có chủ đích vào hệ thống SCADA sử dụng giao thức cần thiết Hình 1: giao thức Modbus đối chiếu với mơ hình OSI Cơ chế giao tiếp: giao thức Modbus giao chế yêu cầu/đáp ứng, có thiết bị Master (thiết bị chủ) gửi yêu cầu, thiết bị Slave (thiết bị tớ) đáp ứng liệu trả lời thực hành động định theo yêu cầu (hình 2) Kết hợp mã hàm (function code) liệu, Modbus thực loạt lệnh như: đọc giá trị ghi; ghi giá trị cho ghi; đọc giá trị nhóm ghi liên tiếp; ghi giá trị cho nhóm ghi liên tiếp; đọc trị đầu vào; ghi giá trị đầu Nội dung Giao thức Modbus Modbus [5] thiết kế vào năm 1979 hãng Modicon (sau thuộc Schneilder Automation) Hiện nay, Modbus giao thức phổ biến sử dụng hệ thống điều khiển công nghiệp Theo khảo sát “American Control Engineering magazine”, 40% số hệ thống điều khiển công nghiệp quan trọng triển khai giao thức Modbus Thành cơng Modbus nhờ tương đối dễ sử dụng, tiêu chuẩn mở, phân phối miễn phí hỗ trợ rộng rãi thành viên tổ chức Modbus, hoạt động đến ngày Theo mơ hình OSI (Open systems interconnection) Modbus thực chất chuẩn giao thức dịch vụ thuộc lớp ứng dụng, thực vận chuyển qua TCP/IP hay qua đường truyền RS232/ RS485 (hình 1) 4(1) 1.2016 Hình 2: chế giao tiếp giao thức Modbus Địa trạm mạng Modbus từ 0-247, địa địa gửi quảng bá Cấu trúc thơng điệp Modbus: Modbus có chế độ truyền RTU ASCII Trong chế độ truyền RTU (Modbus RTU, hình 3) byte thơng điệp truyền bit nhị phân, khởi đầu kết thúc điện khoảng nghỉ chu kỳ ký tự Chế độ truyền ASCII (Modbus ASCII, hình 4) byte thông điệp truyền ký tự ASCII ký tự số hexa biểu diễn byte đó, ký tự khởi đầu ‘:’, ký tự kết thúc CR LF Mỗi thông điệp định dạng đơn giản gồm phần khởi đầu, kết thúc, địa chỉ, 16 mã hàm, liệu, mã kiểm lỗi để kiểm tra thơng điệp có bị lỗi truyền không Khởi đầu Địa Mã hàm Dữ liệu Mã CRC (Cyclic redundancy Check) Kết thúc ( ) bit bit nx8 bit 16 bit ( ) Hình 3: cấu trúc điện Modbus RTU Khởi đầu Địa ký tự ký tự Mã hàm Dữ liệu Mã RLC (Longitudial redundancy check) Kết thúc ký tự n ký tự ký tự ký tự CR+LF Hình 4: cấu trúc điện Modbus ASCII Modbus TCP/IP: Modbus TCP/IP (Modbus TCP) [6] đơn giản giao thức Modbus RTU sử dụng giao diện TCP để truyền tải Ethernet Tức họ giao thức TCP/IP dùng để truyền xác thông điệp giao thức Modbus Modbus TCP nhúng thông điệp (khung liệu) Modbus chuẩn vào phần liệu gói TCP mà khơng có kiểm tra, xác thực giao thức Modbus (hình 5) Phần kiểm lỗi (checksum) Modbus khơng sử dụng, thay vào sử dụng kiểm lỗi TCP/IP để bảo toàn liệu Mã hàm liệu Modbus chuyển thành phần liệu TCP, khơng có thay đổi bổ sung thêm byte phía trước chia thành trường sau: Ứng dụng Modbus mạng công nghiệp: Modbus thường triển khai giao tiếp PLC HMI (Human machine interface), PLC chủ thiết bị tớ PLCs, HMIs, Drivers, Sensors, I/O devices… hỗ trợ tối đa 247 thiết bị bus (hình 6) Một triển khai phổ biến khác sử dụng Modbus TCP/IP vùng DMZ SCADA (Demilitarized Zone SCADA - vùng cho truy cập từ bên ngoài), mạng LAN (Local area network) giám sát có HMI chủ có khả quản lý tập trung số PLC chủ, PLC chủ số kết nối bus thiết bị khác, để thực vịng qt (hình 6) l Transaction Identifier (2 bytes): sử dụng để phân biệt thơng điệp có nhiều thơng điệp khác truyền từ kết nối TCP Protocol Identifier (2 bytes): trường đặt với Modbus, giá trị khác mở rộng cho tương lai l Length (2 bytes): cho biết độ dài trường lại gồm Unit ID, Function code, Data l Unit ID (1 byte): có giá trị từ 0-255, sử dụng để nhận dạng thiết bị mạng Modbus TCP có ý nghĩa trường địa (address) Modbus chuẩn l Dữ liệu Modbus TCP sau tạo hình giao thức TCP gửi nhận qua cổng 502 dành riêng cho Modbus Hình 6: Modbus sử dụng mạng cơng nghiệp Những lo ngại an ninh: i) thiếu xác thực: Modbus, Modbus TCP yêu cầu sử dụng địa chỉ, mã hàm liệu liên quan, chúng xác minh thơng điệp có hợp lệ hay không hợp lệ nên dễ bị công giả mạo thông điệp, sửa đổi thông điệp ; ii) thơng điệp khơng mã hóa: địa mã hàm thông điệp truyền dạng tường minh dễ dàng giả mạo, bắt giữ, sửa đổi gửi lặp lại thông điệp nhiều lần Có thể chặn bắt thơng tin truyền thơng đến/đi từ thiết bị Modbus mạng tiết lộ thơng tin quan trọng liên quan đến cấu hình sử dụng thiết bị; iii) Modbus TCP khơng có kiểm lỗi (checksum) cho thơng điệp tầng ứng dụng nên dễ dàng tạo lệnh giả mạo, với mã hàm liệu checksum tự động tạo tầng vận chuyển TCP; iv) khơng có chế ngăn chặn gửi thông điệp quảng bá, tất thiết bị mạng Modbus nhận thông điệp phát có nghĩa thơng điệp quảng bá sử dụng cho công từ chối dịch vụ DoS (Denial of service) Những mối lo ngại an ninh khắc phục Hình 5: tạo thơng điệp Modbus TCP 4(1) 1.2016 17 bổ sung thêm bảo mật, chứng thực cho giao thức, mục “Bảo mật cho giao thức Modbus TCP” trình bày sau giải vấn đề Tiêu chuẩn mã hóa tiên tiến AES Từ thời cổ đại nay, mật mã tảng an tồn thơng tin [7] Mật mã AES (Advanced encryption standard, hay tiêu chuẩn mã hóa tiên tiến) thuật tốn mã hóa khối Chính phủ Hoa Kỳ áp dụng làm tiêu chuẩn mã hóa Giống tiêu chuẩn tiền nhiệm DES (Data encryption standard), AES áp dụng rộng rãi toàn giới AES DES thuật tốn mã hóa khóa đối xứng (mã hóa, giải mã khóa), DES với khóa 56 bit, AES với khóa 128 bit, nhiên DES biến thể 3DES (mã hóa DES lần) có độ an tồn khơng cao khóa ngắn dễ bị công vét cạn, nên AES dần thay cho DES 3DES nên phép biến đổi ngược Add row key Các phép biến đổi ngược bên phải hình giải mã AES gồm 10 vịng thực theo chiều ngược lại Kích thước khóa ban đầu 128 bit (16 byte) AES dùng hàm mở rộng khóa (Expand key) để mở rộng kích thước khóa thành 44 word 32 bit 44 word chia thành 11 cụm khóa con, khóa (128 bit) hay word làm tham số vào cho 11 thao tác Add row key 128 bit rõ 128 bit khóa tổ chức thành khối ma trận 4x4 phần tử byte xếp theo cột Nền tảng thuật tốn mã hóa khóa đối xứng đại nói chung, mã hóa DES, AES nói riêng sử dụng phép biến đổi thay S-Box phép hoán vị P, phép toán lặp lặp lại nhiều lần DES lặp lại 16 vòng, AES 128, 192, 256 bit lặp lại 10, 12, 14 vòng Kết hợp phép biến đổi thay S-Box phép hoán vị P tạo tính chất quan trọng mã hóa tính khuếch tán (diffusion) tính gây lẫn (confusion): l Tính khuếch tán: bít rõ tác động đến tất bít mã, hay nói cách khác, bit mã chịu tác động tất bit rõ Tính chất làm giảm tối đa mối liên quan rõ mã, ngăn chặn việc suy khóa Tính gây lẫn: làm phức tạp hóa mối liên quan rõ, mã khóa Do ngăn chặn việc suy khóa có mã l Mã hóa AES [8] sử dụng phép biến đổi để mã hóa khối liệu 128 bit là: Add row key, Substitute bytes, Shift rows, Mix columns Mỗi phép biến đổi nhận tham số đầu vào có kích thước 128 bít cho kết có kích thước 128 bit AES thực phép biến đổi 10 vòng lặp bên trái hình giai đoạn mã hóa, bên phải thực ngược lại giai đoạn giải mã Các phép biến đổi Substitute bytes, Shift rows, Mix columns có phép biến đổi ngược tương ứng Inverse sub bytes, Inverse shift rows, Inverse mix cols Riêng phép biến đổi Add row key đơn giản phép XOR 4(1) 1.2016 Hình 7: q trình mã hóa/giải mã AES Phép biến đổi Add row key: khóa kết hợp với khối liệu vào, khóa có độ dài giống liệu vào Q trình kết hợp thực cách XOR bít khóa với bít khối liệu vào Substitute bytes: byte khối đầu vào thay tra bảng S-Box có kích thước (16x16) byte Đây q trình phi tuyến thuật toán Hộp S-box tạo từ phép biến đổi khả nghịch trường hữu hạn GF (28) (The finite field of order 28) có tính chất phi tuyến Tương tự phép biến đổi nghịch Inverse sub bytes thực tra bảng IS-BOX, chi tiết bảng S-BOX, ISBOX, trường hữu hạn GF(28) xem tài liệu [8] Shift rows: hàng khối liệu vào dịch vòng số bước định Hàng đầu giữ 18 nguyên, byte hàng thứ dịch vịng trái vị trí Tương tự, hàng thứ dịch vòng vị trí Do vậy, cột khối đầu bước bao gồm byte đủ cột khối đầu vào Phép biến đổi ngược Inverse shift rows thực ngược lại, dòng giữ nguyên, dòng 2, dịch vòng phải tương ứng byte, byte byte Mix columns: cột khối liệu vào (ma trận 4x4) tương ứng hệ số đa thức f(x) bậc (với hệ số tự ứng byte cột) Đa thức nhân với đa thức a(x) = 3x3 + x2 + x + 2, sau thực phép chia modulo cho đa thức n(x) = x4 + 1, kết phép modulo đa thức bậc c(x) = f(x).a(x) mod n(x), byte hệ số đa thức c(x) thay tương ứng cho byte cột tạo đa thức f(x) khối liệu Các phép cộng nhân đa thức thực trường GF(28) Phép biến đổi ngược Inverse mix cols, thực tương tự cột khối liệu vào nhân với đa thức b(x) = 11x3 + 13x2 + 9x + 14, sau thực phép chia modulo cho đa thức n(x) = x4 + 1, cuối thu hệ số đa thức kết quả, hệ số thay cho cột tương ứng Chi tiết chứng minh phép biến đổi Inverse mix cols phép biến đổi ngược Mix columns xem tài liệu [8] Hàm mở rộng khóa (Expand key): 16 byte khóa ký hiệu là: k0, k1, k2… k15 xếp lại thành ma trận 4x4, sau phép mở rộng khóa (tạo khóa con) thực hình Hình 8: thuật tốn tạo khóa w0 đến w44 Từ từ (word) đầu vào w0w1w2w3, w0 = (k0, k1, 4(1) 1.2016 k2, k3)… w3 = (k12, k13, k14, k15) lần lặp thao tác sinh từ w4w5w6w7, lần lặp thứ 2, từ w4w5w6w7 sinh w8w9w10w11, lần lặp thứ 10 sinh từ cuối w40w41w42w43 (hình 8) Trong lần lặp để sinh từ, từ sinh theo quy tắc wi = wi-4 ⊕ g, với g = SubWord(RotWord(wi-4, wi-3, wi-2, wi-1)) ⊕ Rcon[i/4], I = 4, 8, 12…40; từ sinh theo quy tắc wj = wj-1 ⊕ wj-4, j = i + 1, i + 2, i + Trong đó, RotWord dịch vịng trái byte Giả sử từ đầu vào có byte [b0, b1, b2, b3] kết RotWord [b1, b2, b3, b0]; SubWord thay byte từ đầu vào cách tra cứu bảng S-Box thao tác Substitute bytes; Rcon mảng số Mảng gồm 10 từ ứng với 10 vòng AES, byte phần tử Rcon[j] (RC[ j], 0, 0, 0) với RC[ j] mảng 10 byte hexa sau: j 10 RC[ j] 01 02 04 08 10 20 40 80 1B 36 Bảo mật cho giao thức Modbus TCP Carcano cộng [9] chứng minh tính thiếu xác thực giao thức SCADA tạo hội cho mã độc hại dễ dàng công vào cảm biến, cấu chấp hành hệ thống SCADA Tường lửa hệ thống phát xâm nhập bảo vệ, phát công vào hệ thống SCADA Tuy nhiên, hacker cố gắng tạo mã độc hại vượt qua vịng kiểm soát an ninh Do vậy, cách tốt để giải mối đe dọa an ninh giải tận gốc cách thiết kế lại giao thức có bảo mật với độ an tồn cao Nhưng giải pháp khó thực hiện, địi hỏi thay đổi đáng kể kiến trúc cấu hình hệ thống điều khiển Thay vào đó, chúng tơi đề xuất cách tiếp cận thực tế hơn, bổ sung thêm chế bảo mật cho giao thức để khắc phục lỗ hổng Trong báo này, lựa chọn giao thức Modbus TCP sử dụng phổ biến hệ thống SCADA để nghiên cứu Mục đích bảo mật cho giao thức Modbus TCP nhằm đáp ứng yêu cầu bảo mật sau đây: i) bí mật: có người nhận xác thực lấy nội dung thông tin chứa đựng thông điệp; ii) xác thực: người nhận cần có khả xác định người gửi kiểm tra xem người gửi có thực gửi thơng tin hay khơng; iii) tồn vẹn: người nhận cần có khả xác định thơng tin có bị thay đổi bên thứ 19 hay không; iv) chống lặp lại: không cho phép bên thứ chép lại thông điệp gửi nhiều lần đến người nhận mà người nhận không biết; v) không từ chối: người gửi từ chối việc gửi thơng tin Tính bí mật: tất thơng điệp trao đổi Master Slave mã hóa AES-128 bit có Master, Slave có khóa bí mật SCk nên bên thứ có thơng điệp trung gian giải mã nội dung khóa SCk Cơ chế bảo mật giao thức Modbus TCP thực hình Tính chứng thực: thực kết hợp mã CRC thơng điệp mã hóa tồn thơng điệp trước truyền Khi Slave nhận thông điệp tiến hành giải mã tính lại CRC thông điệp khớp với CRC thông điệp gửi chắn thơng điệp Master Tính chứng thực chống lại tất hình thức cơng mạo danh Master gửi lệnh cho Slave, giả sử bên thứ mạo danh Master gửi thông điệp cho Slave khóa bí mật SCk nên bên thứ phải gửi thông điệp theo truyền thống theo sơ đồ hình với khóa bí mật khác SCk gửi thơng điệp khác, Slave nhận thơng điệp tiến hành giải mã với khóa bí mật SCk, tính lại CRC so sánh với CRC thông điệp thấy không khớp nên biết thông điệp Master gửi loại bỏ Xác suất bên thứ gửi ngẫu nhiên thông điệp để Slave giải mã tính CRC khớp với CRC thơng điệp nhỏ Hình 9: trình bảo mật cho giao thức Modbus TCP Trong đó, trường S (độ dài 2byte) mã số định danh thông điệp Master chèn vào, thơng điệp gửi đi, có mã số khác nhau, giúp chống lại công phát lại thông điệp; trường CRC hàm băm CRC 16 bit (với đa thức sinh là: x16 + x2 + x) trường: S, mã hàm, liệu 16 bit mã CRC chèn vào cuối thông điệp để tạo chế xác thực, chống sửa đổi gói tin Lưu ý thông điệp Modbus giao thức TCP/IP truyền tải đảm bảo xác khơng bị lỗi nên mục đích trường CRC khơng để kiểm tra lỗi truyền thơng điệp mà dùng cho mục đích xác thực, phát việc sửa đổi thông điệp Giao thức Modbus TCP thực trao đổi thông điệp Master Slave theo chế yêu cầu/đáp ứng (hình 2), Master thực mã hóa tồn trường S, mã hàm, liệu mã CRC khóa bí mật SCk (chỉ Master Slave có), gửi cho Slave Slave nhận thơng điệp mã hóa tiến hành giải mã khóa SCk, sau tính lại CRC so sánh với CRC thông điệp nhận được, tiếp đến kiểm tra mã số định danh thông điệp S có trùng với thơng điệp cũ khơng, tất hợp lệ lọc mã hàm, liệu để định trả lời yều cầu Master Slave trả lời Master tiến hành tương tự Master gửi yều cầu cho Slave, khác mã định danh thông điệp không Slave tạo mà lấy từ thông điệp Master tăng thêm đơn vị Quá trình giao tiếp Master Slave thực hình đảm bảo số tính chất sau: 4(1) 1.2016 l l Tính tồn vẹn gói tin: giả sử bên thứ nhận thông điệp trung gian (bản mã) muốn sửa đổi nội dung thơng điệp khơng có khóa bí mật SCk để giải mã, sửa nội dung, tính lại CRC, mã hóa lại gửi cho Slave nên buộc phải sửa đổi mã theo cách khác, Slave nhận thơng điệp này, giải mã tính lại CRC thấy khơng khớp với CRC thơng điệp gửi đi, từ biết nội dung thông điệp bị thay đổi l Chống lặp lại: thông điệp gửi đi, trước mã hóa Master chèn mã số định danh thơng điệp (khác lần truyền) vào trường S Do đó, bên thứ nhận thông điệp trung gian, giả mạo Master phát lại thơng điệp cho Slave, Slave nhận thơng điệp có số định danh loại bỏ thơng điệp thứ Cũng chèn thêm mã số định danh thông điệp khác cho lần truyền, mà thông điệp Master gửi giống khác mã số này, cho mã hoàn tồn khác (tính chất phân tán AES) nên gây khó khăn cho bên thứ muốn giải mã, thu thập thông tin từ thông điệp l l 20 Không từ chối: Master Slave có khóa bí mật SCk nên lý thuyết, thơng điệp gửi khơng kết luận xác Master hay Slave Tuy nhiên, hệ thống SCADA sử dụng Modbus TCP giao chế yêu cầu/đáp ứng nên Slave bị động không gửi thông điệp Master không yêu cầu, Slave nhận thông điệp yêu cầu có địa chỉ, mã định danh thơng điệp S, CRC… hợp lệ chứng tỏ thơng điệp phải Master gửi (Master từ chối gửi yêu cầu này) Cài đặt thử nghiệm giao thức bảo mật Modbus TCP Mơ hình hệ thống thử nghiệm giao thức bảo mật Modbus TCP/IP cho hệ SCADA sau: dòng, áp, tần số biến tần Các lệnh gửi theo giao thức bảo mật Modbus TCP Để mã hóa phần liêu Modbus TCP, sử dụng hàm chuẩn hóa cho mã hóa AES thư viện “System.Security.Cryptography” C# [10], để gửi/ nhận gói tin Modbus TCP sử dụng hàm thư viện nModbus [11] Từ tài liệu biến tần VFD-B [12] có số lệnh điều khiển giám sát (bảng 1) Bảng 1: số thao tác điều khiển Chức Mã hàm Địa ghi Giá trị Bật động 06H 2000H 0002H Tắt động 06H 2000H 0001H Đặt tần số 06H 2001H Giá trị cần đặt(0->60) Bảng 2: số thao tác đọc Chức Hình 10: mơ hình thử nghiệm giao thức bảo mật Modbus TCP Trong hình 10, máy tính đóng vai trị thiết bị Master Board nhúng ARM Tiny 6410 thiết bị Slave giao tiếp với máy tính qua giao thức bảo mật Modbus TCP mạng LAN Board nhúng ARM kết nối với biến tần VFD-B Delta qua chuẩn RS458 giao thức Modbus RTU Biến tần VFD-B Delta cấu hình để sử dụng truyền thông Modbus RTU chuẩn điều khiển động pha (hình 11) Mã hàm Địa ghi Số từ cần đọc Đọc tần số 03H 2103H 0001H Đọc dòng 03H 2104H 0001H Đọc điện áp 03H 2106H 0001H Trong bảng 1, 2, phần mã hàm, địa ghi, giá trị/số từ cần đọc, phần liệu (PDU Protocol data unit) Modbus TCP [13] Như vậy, độ dài phần PDU có byte khối liệu mã hóa AES tối thiểu 128 bit (16 byte) kết hợp trình bảo mật cho giao thức Modbus TCP (hình 9) cần thực sau: trước tiên chèn mã định danh thông điệp byte, chèn tiếp byte liệu với thao tác tương ứng bảng 1, trên, tiếp chèn thêm byte giá trị khơng, tính CRC 16 bít 14 byte chèn vào cuối ta khối liệu 16 byte ký hiệu M Khối liệu M mã hóa AES với khóa bí mật SCk cho mã C Bản mã C tiếp tục bổ sung thêm byte (hình 5) cuối thơng điệp gửi cho Slave (Board Tiny 6410) qua giao thức TCP/IP với cổng 502 Giao diện chương trình điều khiển, giám sát máy tính thể hình 12 Hình 11: mơ hình thực tế thử nghiệm bảo mật Modbus TCP Chương trình máy tính: chương trình giám sát điều khiển máy tính thiết kế C# 2008 phần mềm Microsoft visual studio, thực điều khiển, giám sát số chức biến tần VFD-B sau: gửi lệnh bật/tắt động tới biến tần; gửi lệnh đặt tần số cho biến tần; gửi lệnh đọc 4(1) 1.2016 Hình 12: giao diện điều khiển máy tính 21 Chương trình Board Tiny 6410: Tiny 6410 [14] board nhúng sản xuất phân phối hãng Friendly ARM Board có vi xử lý Samsung S3C6410A ARM1176JZF-S, xung nhịp tối đa đạt 667 MHz, với RAM: 256 MB DDR RAM, GB nhớ NAND Flash Board nhúng cài hệ điều hành mã nguồn mở Linux 2.6 số thư viện hỗ trợ để chạy ứng dụng viết tảng QT 4.7 Chương trình giao tiếp board Tiny 6410 với máy tính qua mạng LAN sử dụng giao thức TCP/IP chương trình mã hóa/giải mã AES lập trình QT 4.7 cài đặt hệ điều hành Ubuntu 12.4 Lưu đồ thuật tốn chương trình board Tiny 6410 thể hình 13 hợp lệ tiến hành lọc lấy mã hàm liệu thơng điệp tạo gói Modbus RTU chuẩn sau gửi thông điệp chuẩn cho biến tần, đợi biến tần trả lời Sau có liệu trả lời từ biến tần, lấy thơng tin tạo khung bảo mật Modbus TCP (hình 9) trả lời cho Master - máy tính Một số kết thử nghiệm: đặt chu kỳ quét chương trình điều khiển giám sát máy tính 500 ms, thời gian time out: 1.200 ms Kết chương trình giám sát thu hiển thị giao diện: tần số, điện áp, dòng điện đọc từ biến tần khớp với thông tin xem biến tần khơng xảy lỗi Trong q trình đó, giao diện liên tục thay đổi tốc độ động bật tắt cách di chuyển trượt để gửi lệnh đặt lại tần số biến tần, nhấn vào nút start, stop So sánh thời gian đáp ứng, độ dài thông điệp giao thức Modbus TCP giao thức Modbus TCP có bảo mật bảng 3, Bảng 3: thời gian đáp ứng thông điệp Các tham số Chu kỳ quét (ms) Modbus TCP Bảo mật Modbus TCP 500 500 Thời gian time out (ms) 1.200 1.200 Thời gian đáp ứng (ms) 29 32 Thời gian đáp ứng thơng điệp tính từ lúc Master bắt đầu gửi thông điệp yêu cầu nhận xong thông điệp trả lời Bảng cho thấy độ trễ đáp ứng 29 ms cho Modbus TCP, 32 ms bảo mật Modbus TCP Một khác biệt không lớn (3 ms) cho chu kỳ quét 500 ms thời gian timeout 1.200 ms, độ trễ giảm thiết bị thử nghiệm có tốc độ cao board Tiny 6410 Bảng 4: độ dài thông điệp gửi cho gói TCP Các hàm chức Hình 13: lưu đồ thuật tốn board Tiny 6410 Chức board Tiny 6410 thực kết nối với máy tính qua mạng LAN, để nhận tồn lệnh từ máy tính (Master) gửi xuống giao thức bảo mật Modbus TCP/IP Sau tiến hành giải mã, kiểm tra tính xác thực, tồn vẹn kiểm tra thơng điệp có bị lặp lại khơng Nếu u cầu kiểm tra khơng hợp lệ hiển thị cảnh báo lên hình LCD loại bỏ thơng điệp Nếu tất kiểm tra 4(1) 1.2016 Modbus TCP Bảo mật Modbus TCP Mã hàm 06 với gói yêu cầu 12 byte 23 byte Mã hàm 06 với gói trả lời 12 byte 23 byte Mã hàm 03 với gói yêu cầu 12 byte 23 byte Mã hàm 03 với gói trả lời 11 byte 23 byte Bảng so sánh kích thước phần liệu Modbus TCP gói bảo mật Modbus TCP cho mã hàm 03, 06 Các gói Modbus TCP có bảo mật lớn so với gói tin Modbus TCP thường tương ứng Tuy nhiên, kích thước tăng lên vấn đề trọng yếu mạng SCADA với băng thông thấp Thử nghiệm cơng giả mạo khơng có khóa bí mật SCk đơn giản sau: cách thay đổi khóa 22 bí mật giao diện nhấn nút start, stop, quan sát không thấy động thay đổi trạng thái hình LCD board Tiny 6410 hiển thị thơng báo nhận gói tin không hợp lệ, điều chứng tỏ công giả mạo Master phát Tiếp tục sử dụng tính debug C#, để sửa đổi nội dung mã, thay mã thông điệp rõ, sau gửi yêu cho board Tiny 6410, ghi lại toàn mã gửi lại cho board Tiny 6410 cho kết tương tự trường hợp công giả mạo đơn giản Kết luận Kết hợp tiêu chuẩn mã hóa tiên tiến AES yêu cầu hệ thống truyền thông an toàn, tác giả xây dựng thử nghiệm thành cơng giao thức Modbus TCP có thêm bảo mật, xác thực tầng ứng dụng có khả khắc phục lỗ hổng bảo mật giao thức Mỗi thơng điệp giao thức mã hóa, xác thực chống lại dạng công xem trộm, giả mạo thiết bị Master gửi thông điệp cho thiết bị Slave, sửa nội dung thông điệp trước thiết bị Slave nhận được, gửi lặp lại thông điệp cho thiết bị Slave nhiều lần Giao thức Modbus TCP có bảo mật tầng ứng dụng, thử nghiệm chạy tốt hệ thống mạng gồm máy tính (Master) kết nối mạng LAN với board Tiny 6410 (Slave), board Tiny kết nối với biến tần VFD-B Delta, biến tần sử dụng để điều khiển động pha 4(1) 1.2016 Tài liệu tham khảo [1] Igure V.M, Williams R.D (2006), “Security and SCADA protocols”, 5th International Topical Meeting on Nuclear Plant Instrumentation Controls, and Human Machine Interface Technology (NPIC and HMIT), pp.560-567, USA [2] Slay J, Miller M (2008), “Lessons learned from the Maroochy Water Breach”, Critical Infrastructure Protection, Vol.253, pp.73-82 [3] Ryu D, Kim H, Um K (2009), “Reducing security vulnerabilities for critical infrastructure”, Journal of Loss Prevention in the Process Industries, Vol.22, pp.1020-1024 [4] Falliere N, Murchu L.O, Chien E (2010), W32.Stuxnet Dossier, Symantec Report version 1.3 [5] Modbus IDA (2004), Modbus application protocol specification v1.1a [6] Modbus IDA (2004), Modbus messaging on TCP/IP implementation guide v1.0a [7] Simon Singh (1999), The Code Book, New York [8] William Stallings (2005), Cryptography and Network Security Principles and Practices, 4th-Edition, Prentice Hall [9] Carcano A, Nai Fovino I, Masera M, Trombetta A (2008), “SCADA malware: A proof of concept”, Presented at the Third International Workshop on Critical Information Infrastructure Security [10]ghttps://msdn.microsoft.com/enus/library/system.security cryptography(v=vs.110).aspx [11]ghttp://ftp.icpdas.com/pub/cd/8000cd/napdos/modbus/ nmodbus/nmodbus_api_manual_v1.2_en.pdf [12] http://prom-electric.ru/data/uploads/manuals/ delta_vfd-b_ manual_en.pdf [13] Hoàng Minh Sơn (2004), Mạng truyền thông công nghiệp, Nhà xuất Khoa học Kỹ thuật [14] http://www.friendlyarm.net/products/tiny6410 23 ... khiển giám sát (bảng 1) Bảng 1: số thao tác điều khiển Chức Mã hàm Địa ghi Giá trị Bật động 06H 2000H 0002H Tắt động 06H 2000H 0001H Đặt tần số 06H 2001H Giá trị cần đặt(0->60) Bảng 2: số thao... 28) có tính chất phi tuyến Tương tự phép biến đổi nghịch Inverse sub bytes thực tra bảng IS-BOX, chi tiết bảng S-BOX, ISBOX, trường hữu hạn GF(28) xem tài liệu [8] Shift rows: hàng khối liệu... tương ứng bảng 1, trên, tiếp chèn thêm byte giá trị khơng, tính CRC 16 bít 14 byte chèn vào cuối ta khối liệu 16 byte ký hiệu M Khối liệu M mã hóa AES với khóa bí mật SCk cho mã C Bản mã C tiếp