Với sự tiếp cận nhanh chóng của các công nghệ như IoTs, trí tuệ nhân tạo, dữ liệu lớn,… tạo tiền đề cho việc phát triển các ứng dụng thành phố thông minh, đại học thông minh, nhà thông minh. Từ đó, lượng dữ liệu được sinh ra ngày càng lớn, nhu cầu thu thập, xử lý và tổng hợp về máy chủ là rất cần thiết và đang được quan tâm rất nhiều. Thiết bị Datalogger là giải pháp hiệu quả giúp thu thập, điều khiển, xử lý dữ liệu và truyền dữ liệu tự động về máy chủ qua môi trường Internet với các giao thức HTTP, FTP. Song hành với sự phát triển đó, bảo mật dữ liệu giữ vai trò quan trọng không kém.
Tiếp tục với phần 1 của chuỗi bài viết – Tổng quan vấn đề bảo mật trên hệ thống IoT, tại phần 2, mình sẽ phân tích thiết kế phần cứng của thiết bị, từ đó phân tích về hiện trạng bảo mật của thiết bị và kết luận về các vấn đề cần bảo mật trên thiết bị.
Phần 2. Đề xuất giải pháp bảo mật cho thiết bị Datalogger
1. Thiết kế phần cứng
Thiết bị Datalogger được phát triển bởi Công ty TNHH Kỹ thuật TAPIT. Thiết bị được thiết kế kết hợp vi điều khiển 32 bit của hãng STMicroelectronics lõi ARM Cortex – M, bao gồm 512 KBytes bộ nhớ chương trình (Flash) và 128 KBytes bộ nhớ dữ liệu (SRAM), tích hợp sẵn ngoại vi thời gian thực (RTC) và khối ngoại vi tính toán mã Cyclic Redundancy Check (CRC) để kiểm tra tính toàn vẹn dữ liệu. Datalogger tích hợp nhiều ngõ vào số, ngõ ra số và tương tự, phù hợp với nhiều tiêu chuẩn cảm biến công nghiệp khác nhau như RS485, RS232, Pulse Counter, 4-20mA.
Hình 1. Thiết bị Datalogger (Phiên bản thử nghiệm)
Hình 2. Sơ đồ khối kết nối thiết kế phần cứng Thiết bị Datalogger
Thiết kế phần cứng của thiết bị bao gồm các khối thành phần sau:
- Khối nguồn: nguồn điện cung cấp cho hệ thống được lấy từ điện lưới hoặc năng lượng pin mặt trời. Dòng điện sinh ra được đưa qua bộ sạc pin mặt trời vào Acquy. Nguồn lưu trữ tại Acquy được lấy làm nguồn cung cấp cho cả hệ thống. Thiết bị Datalogger sẽ là bộ điều khiển trung tâm bật hoặc tắt nguồn cung cấp từ Acquy cho cảm biến. Nguồn Acquy 12V sẽ qua khối nguồn, hạ áp xuống các mức điện áp 3.3V, 5V để có thể cấp nguồn cho các khối phần cứng khác của thiết bị.
- Khối vi điều khiển: là khối trung tâm xử lý các tác vụ, thiết bị sử dụng vi điều khiển STM32F303RCT6 lõi ARM Cortex – M3, 32 bit với tần số CPU tối đa 72MHz cung cấp hiệu năng mạnh mẽ. Vi điều khiển kết nối với khối nguồn và giao tiếp các khối ngoại vi khác.
- Khối kết nối Internet: tích hợp Module SIM A7600C, kết nối mạng 4G để thiết bị truyền nhận dữ liệu.
- Khối đầu vào số và khối đầu vào tương tự: thiết bị tích hợp 2 kênh đầu vào số có cách ly và 4 kênh đầu vào tương tự chuẩn 4 – 20 mA để giao tiếp với các loại cảm biến công nghiệp hoặc kết nối với các thiết bị khác.
- Khối đầu ra số: tích hợp các đầu ra số có tích hợp relay cách ly để thực hiện chức năng cảnh báo hoặc điều khiển thiết bị ngoại vi khác.
- Khối LED trạng thái: với mục đích hiển thị các trạng thái làm việc của một số khối chức năng trên thiết bị.
2. Cấu trúc chương trình phần mềm trong bộ nhớ thiết bị Datalogger
Thông thường, một chương trình ứng dụng sẽ được lưu trữ ở ngay địa chỉ bắt đầu của bộ nhớ Flash. Khi khởi động, vi điều khiển sẽ bắt đầu thực thi từ vị trí này. Nhưng tại thiết bị Datalogger, tính năng OTA được kết hợp, nên khối bộ nhớ chính của vi điều khiển được thay đổi và chia làm nhiều vùng khác nhau để bổ sung lưu trữ các chương trình như Bộ nạp khởi động người dùng phát triển, Chương trình OTA, Chương trình ứng dụng và Các biến liên kết.
Hình 3. Cấu trúc chương trình trong bộ nhớ thiết bị Datalogger
Chức năng của các thành phần trong cấu trúc chương trình bộ nhớ:
- Bộ nạp khởi động người dùng phát triển sẽ nằm ở vị trí đầu tiên của bộ nhớ chương trình. Mỗi khi vi điều khiển khởi động, Bộ nạp khởi động sẽ được thực thi. Thông qua các biến liên kết, Bộ nạp sẽ quyết định lựa chọn thực thi Chương trình OTA hay Chương trình ứng dụng cho lần khởi động này.
- Các biến liên kết chứa thông tin chương trình cần được thực thi giúp Bộ nạp có thể biết trong lần khởi động tiếp theo, nó sẽ quyết định lựa chọn thực thi chương trình nào. Các biến liên kết cũng chứa thông tin phiên bản chương trình hiện tại để trong quá trình hoạt động, chương trình ứng dụng có thể so sánh với phiên bản trên server, từ đó biết được có phiên bản mới hay không để thực hiện cập nhật.
- Chương trình OTA có nhiệm vụ chính là thực hiện tải tập tin chương trình ứng dụng từ máy chủ quản lý tập tin về và thực hiện thay thế chương trình ứng dụng. Sau đó thay đổi giá trị các biến liên kết và khởi động lại vi điều khiển.
- Chương trình ứng dụng là chương trình thực hiện các chức năng chính của thiết bị Datalogger. Trong chương trình này có tích hợp thêm hàm để kiểm tra phiên bản chương trình trên máy chủ quản lý tập tin. Nếu có phiên bản mới, hàm này sẽ thực hiện thay đổi giá trị các biến liên kết và khởi động lại vi điều khiển. Với thiết bị Datalogger, vùng nhớ dành cho Chương trình ứng dụng được phân chia thành Chương trình ứng dụng A và Chương trình ứng dụng B. Cách phân chia này có mục đích để người dùng có thể luân phiên cập nhật chương trình cho các vị trí A/B để thiết bị luôn duy trì hai phiên bản chương trình ứng dụng mới nhất.
3. Hiện trạng bảo mật
Tính năng chính của Datalogger là thu thập, xử lý và truyền dữ liệu về hệ thống máy chủ theo giao thức HTTP và FTP. Với phiên bản thiết bị nghiên cứu, kiểm nghiệm này, thiết bị chưa được trang bị bất cứ giải pháp bảo mật nào. Tại phần 1 của chuỗi bài viết, mình đã trình bày về các mục tiêu tấn công thường gặp với một hệ thống IoTs bao gồm 1) Đối tượng vật lý; 2) Giao thức; 3) Dữ liệu và 4) Chương trình phần mềm. Mình sẽ phân tích các mục tiêu trên theo thiết kế phần cứng và phần mềm của thiết bị.
- Đối tượng vật lý tại thiết bị có khả năng bị truy cập, đánh cắp và sửa đổi dữ liệu bao gồm: cổng debug chương trình SWD và cổng cấu hình Serial. Cổng debug chương trình SWD là giao diện gỡ lỗi giúp người lập trình tăng khả năng giao tiếp, xây dựng và làm việc với các chương trình trên thiết bị. Cổng cấu hình Serial được sử dụng để cấu hình các thông số như tên thiết bị, ID thiết bị, địa chỉ IP hoặc đường dẫn truy cập hệ thống máy chủ, mật khẩu truy cập máy chủ, đường dẫn tải tệp chương trình ứng dụng cập nhật. Việc cấu hình thông qua bộ truyền nhận nối tiếp bất đồng bộ UART.
Hình 4. Cổng debug chương trình SWD và cổng cấu hình Serial (Phiên bản thử nghiệm)
- Các giao thức được sử dụng tại thiết bị bao gồm:
- Giao thức kết nối 4G-LTE: Thiết bị được thiết kế tích hợp Module SIM A7600C vào khối kết nối Internet với giao thức 4G-LTE, nhằm thực hiện chức năng truyền nhận dữ liệu giữa thiết bị Datalogger với Server của hệ thống.
- Giao thức truyền thông được sử dụng là HTTP và FTP: Thiết bị sau khi thu thập dữ liệu từ các cảm biến, dữ liệu sẽ được xử lý và truyền định kỳ về máy chủ qua môi trường Internet bằng giao thức HTTP và FTP. Ngoài ra, với tính năng cập nhật chương trình từ xa của thiết bị, chương trình ứng dụng được cập nhật từ máy chủ của hệ thống được tải về thông qua giao thức FTP. Dữ liệu trên đường truyền sử dụng 2 giao thức này là loại dữ liệu rõ ràng, không được mã hóa, có thể dễ dàng bị tấn công bất cứ lúc nào.
- Dữ liệu tại thiết bị được lưu trữ trong bộ nhớ Flash của vi điều khiển STM32F303RCT6, bao gồm các dữ liệu quan trọng như dữ liệu đo đạc từ các cảm biến, các thông số cấu hình của thiết bị như tên thiết bị, ID thiết bị, đường dẫn truy cập máy chủ, mật khẩu truy cập máy chủ,… Các dữ liệu quan trọng này đóng vai trò quan trọng trong việc duy trì sự hoạt động ổn định của thiết bị. Dữ liệu thu thập được có giá trị cao đối với cơ quan quản lý thiết bị, do đó những dữ liệu này cần được đề ra các biện pháp bảo mật trong quá trình vận hành.
- Chương trình phần mềm được lưu trữ tại Datalogger bao gồm chương trình thiết bị, chương trình ứng dụng. Đây cũng chính là một mục tiêu thường được nhắm đến, những kẻ tấn công muốn thay đổi, chỉnh sửa hay xóa đi các chương trình phần mềm nhằm làm thay đổi sự vận hành hay đánh hỏng quy trình hoạt động của thiết bị, gây tổn thất lớn đến người dùng.
4. Đề xuất giải pháp bảo mật
Với 4 mục tiêu tấn công bảo mật liên quan đến thiết bị: đối tượng vật lý, giao thức, dữ liệu và chương trình, mình đã phân tích thực trạng các mục tiêu có thể bị tấn công tại Datalogger. Tại mục này, mình đề xuất giải pháp bảo mật dành cho Datalogger dựa trên những thực trạng đó và đảm bảo duy trì được thuộc tính bảo mật là tính bí mật, tính toàn vẹn, tính sẵn sàng và tính xác thực. Các giải pháp được đề ra bao gồm:
- Giải pháp bảo vệ chương trình ứng dụng, dữ liệu tại thiết bị
- Giải pháp bảo vệ thiết bị khi giao tiếp với cổng vật lý
- Giải pháp bảo mật quá trình khởi động của thiết bị
- Giải pháp bảo mật cập nhật chương trình từ xa an toàn
- Giải pháp bảo mật dữ liệu truyền nhận qua môi trường Internet bằng TLS/SSL
Mỗi giải pháp được đề cập đều mang những thuộc tính bảo mật riêng, nhưng khi kết hợp lại tất cả, thiết bị sẽ được cung cấp biện pháp đáp ứng được 4 thuộc tính quan trọng của bảo mật. Chi tiết về các sự đáp ứng các thuộc tính tại các giải pháp được mô tả tại bảng 1 dưới đây.
Bảng 1. Các thuộc tính bảo mật được đáp ứng tại các giải pháp bảo mật
Giải pháp bảo mật | Tính bí mật | Tính toàn vẹn | Tính khả dụng | Tính xác thực |
Chương trình / dữ liệu tại thiết bị | ✓ | |||
Giao tiếp cổng vật lý | ✓ | |||
Quá trình khởi động | ✓ | ✓ | ✓ | |
Chương trình cập nhật từ xa | ✓ | ✓ | ✓ | |
Dữ liệu truyền nhận qua Internet | ✓ | ✓ |
Để triển khai các giải pháp bảo mật trên và thực hiện đo lường các kết quả thực nghiệm, nhóm sử dụng một số công cụ sau:
- Công cụ STM32Programmer: nạp chương trình, kiểm tra các giải pháp baỏ vệ đọc, bảo vệ ghi và kiểm tra độ an toàn các cổng giao tiếp.
- Công cụ lập trình STM32CubeIDE: môi trường lập trình và gỡ lỗi các chương trình khởi động, chương trình ứng dụng và chương trình cập nhật từ xa.
- Công cụ Wireshark: phân tích và kiểm tra các gói tin được mã hóa.
- Công cụ PC Hosh Tools: hỗ trợ các thuật toán hàm băm SHA-1, SHA-256, SHA-384, SHA-512 và các thuật toán khác như MD5 và CRC32.
Vậy là chúng ta đã nắm rõ về thiết kế phần cứng, thiết kế phần mềm, các nguy cơ tấn công trên thiết bị Datalogger; từ đó đề xuất ra các giải pháp bảo mật phù hợp. Tại phần các phần tiếp theo, chúng ta tiếp tục tìm hiểu và hướng dẫn triển khai từng giải pháp bảo mật trên.
Chúc các bạn thành công!
Nguyễn Thùy Nhiên – Đề tài Capstone Project tại TAPIT