
Các ứng dụng của khởi động an toàn dành cho hệ thống nhúng
Khởi động an toàn: Bảo vệ hệ thống nhúng của bạn khỏi các mối nguy hiểm.
1. Khởi động an toàn là gì? Định nghĩa và tổng quan về hệ thống nhúng
Khởi động an toàn được định nghĩa là một cơ chế bảo mật quan trọng được thiết kế để bảo vệ các hệ thống nhúng khỏi nhiều mối đe dọa khác nhau, chẳng hạn như sửa đổi bộ nhớ vật lý và tiêm mã độc. Khi người dùng bật thiết bị nhúng, nó sẽ khởi tạo một quy trình khởi động. Quy trình này bao gồm việc thực thi mã khởi động được lưu trữ trên chip của thiết bị và trong một số trường hợp, nó đồng thời khởi chạy mã và ứng dụng bổ sung. Sau khi quy trình khởi động kết thúc, thiết bị sẽ hoạt động.
Tuy nhiên, khi khởi động an toàn được triển khai, mã không chạy chỉ vì nó nằm trên thiết bị. Chức năng chính của khởi động an toàn là đảm bảo rằng chỉ có mã do nhà sản xuất thiết bị ký mới được thực thi. Sau khi mã an toàn bắt đầu thực thi, bất kỳ mã và ứng dụng bổ sung nào sẽ chỉ được phép chạy nếu chữ ký của chúng hợp lệ. Điều này tạo ra một "chuỗi tin cậy" phân cấp, trong đó mỗi lớp mã và ứng dụng chỉ được thực thi nếu khóa chính xác được xác thực.
Về bản chất, khởi động an toàn đóng vai trò như một biện pháp bảo vệ, đảm bảo thiết bị chỉ chạy mã mà nó được thiết kế để chạy.
2. Mức độ quan trọng của cơ chế khởi động an toàn đối với các hệ thống nhúng
Trong thế giới hiện đại ngày nay, các vụ vi phạm liên quan đến người dùng cuối đang gia tăng đáng kể. Các tin tặc đang chuyển trọng tâm từ máy tính để bàn sang người dùng thiết bị di động và các thiết bị nhúng. Chính vì vậy, việc đảm bảo an ninh cho các thiết bị này là rất quan trọng và cơ chế khởi động an toàn đóng vai trò then chốt trong việc đạt được điều này.
Hiện nay có hai mối đe dọa chính đối với điều chỉnh việc khởi động an toàn có thể nhắc đến như sau:
1) Sửa đổi bộ nhớ vật lý: Đây là trường hợp đơn giản nhất mà kẻ tấn công có được quyền truy cập vật lý vào thiết bị, chẳng hạn như hệ thống nhúng có thẻ SD có thể tháo rời. Kẻ tấn công sẽ tháo thẻ SD và sửa đổi tệp (ví dụ: thay đổi mật khẩu và thiết lập lại hệ thống), sau đó cài đặt lại thẻ SD đã thay đổi vào thiết bị. Khi hệ thống khởi động, nó sẽ chạy với các tệp bị xâm phạm, cho phép kẻ tấn công xâm phạm thiết bị.
2) Tiêm mã độc: Trong trường hợp này, lỗ hổng nằm trong phần mềm của thiết bị, chẳng hạn như các trang web được bảo vệ kém, có thể bị kẻ tấn công khai thác để tiêm mã độc hoặc sửa đổi tệp từ xa.
3. Làm thế nào để khởi động an toàn cho các thiết bị dựa trên MPU
Quá trình khởi động an toàn có mục đích đảm bảo tính toàn vẹn của quá trình khởi động bằng cách yêu cầu mỗi giai đoạn khởi động phải xác minh chữ ký của giai đoạn tiếp theo bằng mật mã. Quá trình này thường sẽ bao gồm một số bước như khởi động phần cứng, kích hoạt chế độ bảo mật và xác định khởi động từng bước. Trong bài báo này sẽ lần lượt phân tích từng quy trình.
Đầu tiên cùng phân tích sâu đối với quá trình khởi động phần cứng. Phần cứng chính là phần cốt lõi của khởi động an toàn, bộ vi xử lý (MPU). Để khởi tạo quá trình này, bộ vi xử lý phải có khóa đối xứng hoặc hàm băm của khóa công khai được lưu trữ trong bộ nhớ trong, thường là trong bộ nhớ Lập trình một lần (OTP). Khóa này không thể sửa đổi (dựa trên microfuse), đảm bảo tính bảo mật của khóa.
Tiếp theo là quá trình kích hoạt chế độ bảo mật. Để bật khởi động an toàn, chế độ bảo mật phải được kích hoạt trên MPU. Đây là bước quan trọng đánh dấu thiết bị là an toàn và sẵn sàng khởi động.
Cuối cùng là bước xác minh khởi động từng bước, đây cũng là quá trình đòi hỏi sự chi tiết nhất. Khởi động an toàn yêu cầu mỗi giai đoạn khởi động phải xác minh chữ ký của giai đoạn tiếp theo trước khi tiến hành. Sau đây là cách thức hoạt động của quy trình này dựa trên ví dụ về khởi động an toàn được tích hợp trong Welma Yocto Linux:
– Đầu tiên, mã ROM có quyền truy cập vào khóa gốc (khóa đối xứng hoặc hàm băm của khóa công khai) trong OTP của nó, không thể sửa đổi được.
– Tiếp đó, mã ROM đọc giai đoạn tiếp theo, ví dụ như Trusted Firmware-A (TFA) và xác minh nó với khóa công khai tương ứng với khóa băm. Nếu xác minh không thành công, quá trình khởi động sẽ dừng lại. Nếu xác minh thành công, quá trình khởi động sẽ tiếp tục với các lớp sau (trong ví dụ của chúng tôi là OP-TEE và U-Boot).
– Trong đó, mỗi giai đoạn tiếp theo đều tuân theo một mô hình tương tự, trong đó mã, chữ ký và khóa được sử dụng để xác minh. Bất kỳ lỗi nào cũng sẽ dừng quá trình khởi động, đảm bảo rằng chỉ có mã đáng tin cậy mới được thực thi.
-Cuối cùng, trong thời gian chạy, nếu bất kỳ tệp nào bị sửa đổi, hạt nhân sẽ phát hiện ra tệp đó, dẫn đến lỗi. Các bản cập nhật phải bao gồm các tệp mới và chữ ký tương ứng của chúng để duy trì tính xác thực.
Tuy nhiên, trong quá trình thiết lập chế độ khởi động an toàn sẽ bao gồm một số thách thức chính, các vấn đề này thường đến từ việc khởi động an toàn do nó tùy thuộc vào nhà cung cấp. Tiếp đó việc khởi động an toàn cũng thường cần có các yêu cầu bổ sung và từ đó quá trình triển khai sẽ trở lên phức tạp hơn. Ngoài ra một số yếu tố cũng có thể kể đến như vấn đề quản lý khóa và xoay vòng khóa.
Khởi động an toàn cho bộ vi điều khiển
Nhìn chung, quá trình khởi động an toàn trên các đơn vị vi điều khiển sẽ có cùng nguyên tắc như trên MPU. Tuy nhiên, có thể có những thay đổi dựa trên MCU cụ thể được sử dụng. Một điểm khác biệt đáng kể là MCU có thể không hỗ trợ các quy trình xác minh mã và mật mã mở rộng như MPU. Ngoài ra, khái niệm về khóa gốc vẫn giữ nguyên, những việc luân chuyển khóa trở nên khó khăn hơn trên MCU.
Khởi động an toàn là một tính năng bảo mật cơ bản cho các hệ thống nhúng, bảo vệ chúng khỏi truy cập trái phép và sửa đổi độc hại. Bằng cách xác minh từng giai đoạn của quy trình khởi động bằng mật mã, khởi động an toàn đảm bảo rằng chỉ có mã đáng tin cậy mới chạy trên thiết bị. Mặc dù việc triển khai khởi động an toàn có thể gây ra nhiều thách thức, nhưng đây là một thành phần quan trọng của chiến lược bảo mật mạnh mẽ cho các hệ thống nhúng.
- Khi công nghệ phát triển, việc điều chỉnh khởi động an toàn cho các nền tảng khác nhau và giải quyết các mối đe dọa mới nổi vẫn là ưu tiên hàng đầu để đảm bảo tính toàn vẹn và bảo mật của các thiết bị nhúng.