Trong quá trình vận hành của các thiết bị Nhúng và IoTs, nhiều bài toán mà các nhà phát triển đang gặp phải như: bổ sung các tính năng mới, cập nhật tính năng bảo mật, nâng cấp hay sửa các lỗi còn tồn đọng trong bản chương trình hiện tại,… Cập nhật chương trình từ xa đang là một giải pháp được sử dụng khá phổ biến vì sự tiện lợi hơn so với thao tác cập nhật chương trình thủ công trực tiếp trước đây. Tại phần này của chuỗi bài viết, chúng ta cùng tìm hiểu Giải pháp bảo mật Cập nhật chương trình từ xa.
Các bạn tham khảo nội dung các phần trước của chuỗi bài viết:
? Phần 1: Tổng quan vấn đề bảo mật trên các hệ thống IoT. Xem tại đây.
? Phần 2: Đề xuất giải pháp bảo mật cho thiết bị Datalogger. Xem tại đây.
? Phần 3: Giải pháp 1 – Bảo vệ chương trình ứng dụng và dữ liệu tại thiết bị. Xem tại đây.
? Phần 4. Giải pháp 2 – Bảo vệ khi giao tiếp cổng vật lý. Xem tại đây.
? Phần 5. Giải pháp 3 – Bảo mật quá trình khởi động của thiết bị. Xem tại đây.
Phần 6. Giải pháp 4 – Bảo mật Cập nhật chương trình từ xa
1. Quá trình cập nhật chương trình từ xa
Chương trình cập nhật được truyền tải trên đường truyền Internet, đây chính là mấu chốt sinh ra nhiều lỗ hổng bảo mật trong quá trình cập nhật như: kẻ tấn công chèn mã độc trong quá trình cập nhật; nội dung chương trình có thể bị rò rỉ khi truyền tải; chương trình ứng dụng của thiết bị có thể bị hạ cấp xuống phiên bản cũ, nơi có nhiều lỗ hổng bảo mật tồn tại.
Hình 1. Mô hình tổ chức bộ nhớ cho cập nhật chương trình trên thiết bị Datalogger
Với mô hình tổ chức bộ nhớ này thì có hai phân vùng dành cho chương trình ứng dụng với hai phiên bản khác nhau. Thiết bị 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 mới 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.
Quá trình cập nhật chương trình an toàn liên quan đến hai thực thể: chủ sở hữu chương trình ứng dụng và thiết bị được cập nhật. Kênh liên lạc là yếu tố không an toàn. Tại giải pháp này, chương trình sẽ được kiểm tra các yếu tố như tính bí mật, toàn vẹn, xác thực trước khi thiết bị hoạt động với chương trình phiên bản mới và đảm bảo thiết bị sẽ không sử dụng ứng dụng phiên bản cũ.
Hình 2. Cấu trúc cập nhật chương trình an toàn
Một cách tổng quát, quá trình cập nhật chương trình từ xa thường trải qua các bước sau:
- Bước 1: Ngươì phát triển tạo ra chương trình ứng dụng mới cho thiết bị nhúng.
- Bước 2: Đưa tập tin chứa chương trình ứng dụng mới lên máy chủ quản lý tập tin chương trình (FTP Server)
- Bước 3: Trong thiết bị nhúng, định kỳ vi điều khiển gửi các lệnh AT để Module Internet thực thi, kiểm tra phiên bản mới của chương trình ứng dụng trên máy chủ.
- Bước 4: Module Internet tải tập tin chương trình mới từ FTP server về cho vi điều khiển
- Bước 5: Vi điều khiển thay thế chương trình ứng dụng đang chạy bằng chương trình ứng dụng mới
2. Triển khai giải pháp bảo mật cập nhật chương trình từ xa
2.1. Quá trình chuẩn bị chương trình ứng dụng phiên bản mới
Quy trình xây dựng chương trình ứng dụng tại giải pháp cập nhật an toàn có các bước thực hiện tương đồng với giải pháp khởi động an toàn, cụ thể hơn tại các bước:
- Bước 1: Tạo khóa công khai và khóa bí mật bằng công cụ Host tool. Lưu khóa công khai vào vùng nhớ chương trình khởi động.
- Bước 2: Thực hiện hàm băm với chương trình ứng dụng để tạo ra giá trị băm chương trình ứng dụng.
- Bước 3: Thực hiện băm với khối dữ liệu gồm Giá trị băm của chương trình ứng dụng với một phần dữ liệu Meta (magic, size, version).
- Bước 4: Thực hiện ký lên chuỗi giá trị băm dữ liệu Meta vừa nhận được bằng khóa bí mật, ta được chuỗi giá trị chữ ký dữ liệu Meta.
- Bước 5: Mã hóa chương trình sử dụng thuật toán AES. AES là một thuật toán mã hóa khối được chính phủ Hoa kỳ áp dụng làm tiêu chuẩn mã hóa. Bước này được thực hiện nếu có yêu cầu mã hóa chương trình ứng dụng.
- Bước 6: Lưu các chuỗi dữ liệu gồm giá trị băm của chương trình ứng dụng, giá trị băm của dữ liệu Meta và chữ ký dữ liệu Meta vào đầu chương trình ứng dụng trong bộ nhớ, ta được một tệp chương trình ứng dụng hoàn chỉnh.
Hình 3. Quy trình xây dựng chương trình ứng dụng phiên bản mới
2.2. Bảo mật quá trình cập nhật chương trình từ xa
Quy trình thực hiện cập nhật chương trình được thể hiện cụ thể tại hình dưới đây. Quy trình này đảm bảo được các yếu tố đã được đề ra:
- Đảm bảo tính xác thực chương trình ứng dụng được cập nhật thông qua xác minh được chữ ký của dữ liệu Meta bởi khóa công khai.
- Đảm bảo tính toàn vẹn thông qua bước tính giá trị băm của chương trình ứng dụng và so sánh với giá trị băm chương trình ứng dụng tại dữ liệu Meta.
- Đảm bảo tính bí mật dựa vào việc mã hóa và giải mã chương trình ứng dụng bởi thuật toán AES. Ngoài ra, có thể thiết lập kênh liên lạc an toàn như sử dụng giao thức TLS/SSL. Trong đề tài này, giao thức TLS/SSL được lựa chọn sử dụng để mã hóa dữ liệu trong quá trình truyền tệp chương trình ứng dụng qua môi trường Internet. Cụ thể hơn về việc triển khai TLS/SSL sẽ được trình bày ở mục 3.5.4.
- Tránh hạ cấp phiên bản chương trình ứng dụng. Sau khi chương trình được xác thực thành công, thiết bị sẽ kiểm tra phiên bản của chương trình. Kiểm tra thành công nếu phiên bản cập nhật là phiên bản cao hơn phiên bản hiện hành, nếu không thành công, thiết bị sẽ bỏ qua quá trình cập nhật và hoạt động với phiên bản hiện tại.
Hình 4. Quy trình thực hiện cập nhật chương trình an toàn
2.3. Các bước thực hiện bảo mật quá trình cập nhật từ xa:
- Bước 1: Khi có cập nhật chương trình xảy ra, chương trình OTA tại thiết bị sẽ tải tệp chứa chương trình ứng dụng vào vùng nhớ Chương trình ứng dụng cũ hơn trong bộ nhớ Flash.
- Bước 2: Chương trình OTA thực hiện việc xác minh và đảm bảo tính xác thực của chữ ký, giá trị băm của chương trình ứng dụng mới với khóa công khai nhận được.
- Bước 3: Nếu xác thực thành công, đến bước 4, nếu không thành công, đến bước 7.
- Bước 4: Tiếp tục kiểm tra phiên bản của chương trình ứng dụng có cao hơn phiên bản hiện tại hay không. Nếu cao hơn, đến bước 5, nếu không hãy đến bước 7.
- Bước 5: Kiểm tra chương trình ứng dụng đã được mã hóa chưa. Nếu chưa được mã hóa thì thực hiện giải mã bằng các thuật toán giải mã.
- Bước 6: Tính giá trị băm của chương trình ứng dụng và so sánh với giá trị băm được lưu tại dữ liệu Meta. Nếu so sánh hợp lệ, thực hiện việc chuyển đổi ứng dụng đang hoạt động. Nếu không hợp lệ hãy đến bước 7.
- Bước 7: Quá trình bảo mật cập nhật thất bại, thiết bị trở lại với việc sử dụng phiên bản hiện tại.
3. Kết quả giải pháp bảo mật cập nhật chương trình
Quá trình xây dựng chương trình ứng dụng kết hợp với dữ liệu Meta và chữ ký của Meta tương tự với quá trình xây dựng chương trình trong giải pháp bảo mật quá trình khởi động của thiết bị.
Giao diện tải chương trình ứng dụng lên hệ thống máy chủ như hình 4.8. Nhóm đề tài đã thực hiện việc tải chương trình ứng dụng phiên bản mới, lưu trữ được vào bộ nhớ Flash và chương trình khởi chạy thành công.
Nhận xét: Kiểm nghiệm thành công.
Hình 5. Giao diện tải tệp chương trình ứng dụng phiên bản mới lên hệ thống máy chủ
Hình 6. Kiểm nghiệm tải chương trình ứng dụng phiên bản mới
Trong bài viết này, mình tiếp tục hướng dẫn các bạn các bước triển khai của giải pháp bảo mật thứ 4 – Bảo mật Cập nhật chương trình từ xa. Các bạn nhớ đón chờ Giải pháp thứ 5 – Bảo mật dữ liệu truyền nhận qua môi trường Internet bằng TLS/SSL trong phần tiếp theo nhé!
Chúc các bạn thành công!
Nguyễn Thùy Nhiên – Đề tài Capstone Project tại TAPIT