Site icon TAPIT

Chuỗi bài viết đề tài “Giải pháp bảo mật cho thiết bị Datalogger” (P7)

Khi dữ liệu được truyền nhận và lưu trữ qua Internet bằng giao thức HTTP và FTP, dữ liệu có nguy cơ bị rò rỉ hoặc được sửa đổi trái phép. Mật khẩu, khóa mã hóa, thông tin người dùng, thông tin tài khoản, siêu dữ liệu,… là những dữ liệu dễ bị xâm phạm bởi những kẻ tấn công. Một giải pháp tốt để bảo mật dữ liệu trên Internet là sử dụng giao thức Transport Layer Security (TLS)/Secure Sockets Layer (SSL). Công nghệ của SSL đã ra đời từ thời kì đầu phát triển và dần lỗi thời, thời gian sau này được thay thế gần như hoàn toàn bằng TLS. Tại bài viết này, chúng ta sẽ tìm hiểu về giải pháp bảo mật việc truyền nhận dữ liệu qua môi trường Internet bằng SSL/TLS.

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 – Giải pháp bảo mật cập nhật chương trình từ xa. Xem tại đây. 

Phần 7. Giải pháp 5 – Bảo mật dữ liệu truyền nhận qua môi trường Internet bằng TLS/SSL

1. Chứng chỉ và CA

Trong quá trình thực hiện các thuật toán mật mã bất đối xứng, các khóa công khai cần được xác thực khi trao đổi giữa các bên liên lạc, người ta sử dụng một khối dữ liệu được gọi là chứng chỉ. Chứng chỉ được sử dụng để chống lại sử chiếm đoạt và thay thế khóa công khai bởi những kẻ tấn công. Một chứng chỉ sẽ bao gồm phần dữ liệu và phần chữ ký. Phần dữ liệu bao gồm các thông tin chính quan trọng sau: thông tin tổ chức ban hành chứng chỉ; thông tin chứng chỉ, thời gian sử dụng chứng chỉ hợp lệ; khóa công khai của bên cần cấp chứng chỉ. Phần chữ ký xác thực sẽ được ký bởi khóa riêng tư của tổ chức phát hành chứng chỉ (Certificate Authority – CA).   

CA là tổ chức phát hành và chứng thực các loại chứng thư số cho người dùng, doanh nghiệp, server (máy chủ), mã nguồn và phần mềm. Nhà cung cấp chứng chỉ số đóng vai trò là bên thứ 3 (được cả 2 bên tin tưởng) để có thể hỗ trợ cho quá trình trao đổi thông tin an toàn. Hầu hết các chứng chỉ của CA chỉ sử dụng cấu trúc định dạng mã hóa X509 DER.  

2. Giao thức TLS/SSL

Khi dữ liệu được truyền nhận và lưu trữ qua Internet bằng giao thức HTTP và FTP, dữ liệu có nguy cơ bị rò rỉ hoặc được sửa đổi trái phép. Mật khẩu, khóa mã hóa, thông tin người dùng, thông tin tài khoản, siêu dữ liệu,… là những dữ liệu dễ bị xâm phạm bởi những kẻ tấn công. Một giải pháp tốt để bảo mật dữ liệu trên Internet là sử dụng giao thức Transport Layer Security (TLS)/Secure Sockets Layer (SSL). Công nghệ của SSL đã ra đời từ thời kì đầu phát triển và dần lỗi thời, thời gian sau này được thay thế gần như hoàn toàn bằng TLS. 

Các giao thức TLS/SSL được thiết kế để giảm các lỗ hổng vốn có đối với HTTP và FTP bằng cách mã hóa dữ liệu. TLS/SSL đảm bảo tính bí mật và tính toàn vẹn của dữ liệu (thông qua các thuật toán mã hóa) và đảm bảo tính xác thực danh tính của người gửi (thông qua việc sử dụng chứng chỉ). Những website được cài đặt chứng chỉ TLS/SSL sẽ có thể sử dụng giao thức HTTPS và FTPS để thiết lập kết nối bảo mật giữa máy khách và máy chủ.

HTTPS là giao thức mở rộng của HTTP. Sự khác biệt lớn nhất giữa HTTP và HTTPS đó là chứng chỉ TLS/SSL. Giao thức HTTP sử dụng Port 80, trong khi đó HTTPS sử dụng Port 443 – đây chính là cổng hỗ trợ mã hóa kết nối từ máy khách đến máy chủ, nhằm bảo vệ gói dữ liệu đang được truyền đi.

Hình 1. Giao thức HTTP và giao thức HTTPS

Tương tự như FTP, giao thức FTPS được sử dụng để truyền tệp dựa trên nền TCP. Điểm ưu việt của FTPS là các dữ liệu truyền nhận từ máy khách đến máy chủ, từ khâu chứng thực đến khâu truyền dữ liệu đều được mã hoá. 

Hình 2. Cách thức hoạt động của Implicit FTPS và Explicit FTPS

3. Quá trình TLS bắt tay

Bắt tay TLS là quá trình bao gồm các bước mà cả hai bên bao gồm máy khách và máy chủ phải thực thi nhằm xác nhận danh tính lẫn nhau trước khi trao đổi dữ liệu trên đường truyền TLS. Khi máy chủ và máy khách giao tiếp với nhau lần đầu tiên, hai bên phải xác thực danh tính của nhau và kết thúc bằng việc trao đổi khóa (công khai hoặc bí mật) cho nhau. Các bước thực thi trong quá trình bắt tay TLS bao gồm:

  1. Thông báo “Client Hello”: máy khách bắt đầu thực hiện bắt tay TLS bằng cách gửi thông báo “Client Hello” đến máy chủ. Dữ liệu trong thông báo này sẽ bao gồm phiên bản TLS mà máy khách hỗ trợ, bộ thuật toán máy khách hỗ trợ và một chuỗi các byte ngẫu nhiên mà máy khách sinh ra.
  2. Thông báo “Server Hello”: trả lời lại thông báo từ máy khách, máy chủ gửi lại thông báo “Server Hello” bao gồm chứng chỉ TLS của máy chủ, thuật toán mà máy chủ lựa chọn để mã hóa/giải mã dữ liệu và một chuỗi các byte ngẫu nhiên mà máy chủ sinh ra.
  3. Máy khách xác minh chứng chỉ TLS từ máy chủ. Máy khách gửi một thông báo Change Cipher Spec tới máy chủ để thông báo rằng nó sẽ chuyển sang chế độ mã hóa dữ liệu. Cùng với đó nó cũng sẽ gửi thông báo “Finished” với mục đích yêu cầu kết thúc quá trình bắt tay TLS này.
  4. Để trả lời cho thông báo Change Cipher Spec của máy khách, máy chủ thực hiện tương tự, chuyển trạng thái của mình sang chế độ mã hóa dữ liệu truyền tải. Máy chủ kết thúc quá trình bắt tay TLS bằng cách gửi thông báo “Finished”.

Hình 3. Quá trình bắt tay TLS

Sau quá trình bắt tay, máy khách và máy chủ đã xác thực được danh tính của hai bên và tiếp tục thực hiện việc truy xuất dữ liệu được mã hóa bằng thuật toán đã được lựa chọn từ trước. 

4. Triển khai bảo mật dữ liệu truyền nhận qua môi trường Internet bằng TLS/SSL 

Thiết bị Datalogger sử dụng module 4G SIMCOM A7600C1 để thực hiện chức năng truyền nhận dữ liệu qua môi trường Internet. Tại giải pháp này, chúng tôi thực hiện việc triển khai sử dụng giao thức bảo mật truyền tệp FTPS cho module 4G SIMCOM A7600C1. 

Module A7600C1 hỗ trợ cho nhiều chế độ và phiên bản SSL/TLS như: hỗ trợ chế độ Explicit với SSL, Explicit với TLS và Implicit; hỗ trợ với các phiên bản TLS1.2, TLS1.1, TLS1.0, SSL3.0.

Hình 4. Module SIMCOM A7600C1

a. Thuật toán kết nối thiết bị với máy chủ bằng FTPS

Khởi động nguồn của Module SIM và kiểm tra trạng thái kết nối qua hàm chức năng Sim_checkOK( ). Nếu thành công, tiếp tục kiểm tra cường độ tín hiệu sóng của SIM qua biến RSSI chứa giá trị trả về của hàm chức năng Sim_getSignalQuality( ). Việc kiểm tra RSSI thất bại khi RSSI có giá trị bằng 99, khi đó SIM không thể kết nối được với nhà mạng và thiết bị sẽ thực hiện việc khởi động lại Module SIM.

Hình 5. Khởi động module SIM và kiểm tra tín hiệu RSSI

Khi việc kiểm tra RSSI thành công, các bước cấu hình FTPS được thiết lập. Thiết lập định dạng dữ liệu file được truyền tải dạng binary hay ASCII qua hàm FTP_setFileType( ). Nếu thành công, cấu hình thời gian tối đa cho FTP Server (20s – 180s) thông qua hàm FTP_setRspTimeout( ). Nếu thành công, hàm FTP_Start( ) được sử dụng để khởi động dịch vụ FTPS. Hàm FTP_loginServer( ) được sử dụng để đăng nhập vào máy chủ FTPS. Nếu một trong các bước không được thực hiện thành công, quá trình OTA sẽ được bỏ qua. 

Hình 6. Thuật toán thiết lập, khởi động và đăng nhập máy chủ FTPS

b. Thuật toán tải tập tin bằng FTPS

Phương án cập nhật chương trình từ xa được lựa chọn là sử dụng hai phân vùng A và B chứa hai chương trình với phiên bản gần nhất và cập nhật xen kẽ nhau. Trong trường hợp cập nhật thất bại thì thiết bị sẽ quay về phiên bản gần nhất.

Xác định tên đầy đủ của tập tin, cũng chính phiên bản tập tin sẽ tải về bằng cách kết hợp tên phiên bản của tập tin và vị trí tập tin sẽ được lưu vào bộ nhớ. Nếu chương trình hiện tại đang ở vị trí FW0 thì sẽ tải tập tin được biên dịch cho vị trí FW1, và nếu chương trình hiện tại đang ở vị trí FW1 thì sẽ tải tập tin được biên dịch cho vị trí FW0.

Hình 7. Thuật toán xác định tên tập tin và vị trí lưu trữ

5. Kết quả 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

Tại giải pháp này, nhóm đề tài thực hiện việc khởi động giao thức FTPS tại Module SIM thành công; đăng nhập hệ thống máy chủ FTPS thành công và thực hiện việc tải tệp chương trình ứng dụng thành công. 

Nhận xét: Kiểm nghiệm thành công.

Hình 8. Khởi động module SIM và kiểm tra cường độ tín hiệu RSSI

 

Hình 9. Cấu hình file truyền tải, khởi động FTPS và đăng nhập máy chủ

 

Hình 10. Tải file thành công bằng giao thức FTPS

Đi từ việc phân tích hiện trạng bảo mật tại Datalogger được phát triển bởi Công ty TNHH Kỹ thuật TAPIT, đề tài đã đạt được những kết quả cụ thể về việc đề xuất và triển khai thử nghiệm thành công.

Vậy là chúng ta đã đi qua 5 giải pháp bảo mật cho thiết bị Datalogger – 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. Việc đề xuất giải pháp bảo mật cho một thiết bị cụ thể và đảm bảo được các thuộc tính bảo mật được phát huy là một điều khó khăn. Tại chuỗi bài viết này, đi từ việc phân tích hiện trạng bảo mật của thiết bị, mình đã đề xuất các giải pháp phù hợp tại thời điểm hiện tại cho Datalogger. Cơ sở lý thuyết và cách thức triển khai các bước cho từng giải pháp được trình bày cụ thể cùng các kết quả đạt được của đề tài.

Mình hy vọng qua chuỗi bài viết này, các bạn có cái nhìn tổng quát về các nguy cơ bảo mật thường gặp, các giải pháp bảo mật cho thiết bị Datalogger nói chung và các thiết bị Nhúng/IoTs nói riêng.

Chúc các bạn thành công!

Nguyễn Thùy Nhiên – Đề tài Capstone Project tại TAPIT

Tìm hiểu thêm:
Tổng hợp hướng dẫn Internet of Things với NodeMCU ESP8266 và ESP32
Tổng hợp các bài hướng dẫn Lập trình vi điều khiển STM32
[HỌC ONLINE: LẬP TRÌNH VI ĐIỀU KHIỂN STM32, VI XỬ LÝ ARM CORTEX – M]
Fanpage TAPIT: TAPIT – AIoT Learning