Trong dự án thử thách mới của tôi, máy chủ của tôi đã từng phát một "củ hành" được tạo thành từ ba lớp được mã hóa bằng AES128 (ECB) - dài 16 byte qua WiFi.
Tôi đang sử dụng Khung báo hiệu WiFi, để chuyển Hành tây qua mạng.
"Củ hành" trông giống như hình bên dưới
Mỗi lớp được mã hóa bằng một khóa khác nhau.
Các khóa của mỗi lớp chỉ được biết bởi máy chủ và thiết bị giải mã chúng. Các phím được làm bằng địa chỉ MAC để đơn giản.
- Lớp đầu tiên luôn là một chuỗi dài 16b ngẫu nhiên, tức là "Xin chào thế giới",
được mã hóa bằng thiết bị 1 khóa
- Lớp thứ hai là lớp đầu tiên được mã hóa bằng khóa thiết bị 2
- Lớp thứ ba là lớp thứ hai được mã hóa bằng khóa thiết bị 3
Để giải mã đúng cách, lớp quảng bá đầu tiên là 3, vì chúng tôi đang giải mã ngược.
Khi "Onion" được tạo, máy chủ sẽ phát lớp 3 trên Khung báo hiệu WiFi và bất kỳ ai nghe được nó đều có thể thử giải mã dữ liệu nhưng chỉ những thiết bị được chọn mới có thể giải mã đúng cách, vì các lớp được mã hóa bằng khóa của chúng .
Khi mỗi người trong số họ giải mã lớp, nó:
- cho phép máy chủ biết qua TCP/IP hàm băm của giá trị được giải mã (xác nhận)
- lấy xuống 'lớp'
- phát phần còn lại của củ hành qua WiFi (Tạo khung đèn hiệu).
Khi tất cả các lớp được giải mã, công việc đã hoàn thành.
Vấn đề là các thiết bị không có tùy chọn để xác nhận xem quá trình giải mã (khóa được sử dụng) có tốt hay không sau khi giải mã, do đó gây ra nhiều lưu lượng truy cập không cần thiết đến máy chủ với các giá trị băm không chính xác (do giải mã sai).
Câu hỏi
Nên làm gì để cho phép các thiết bị xác thực nếu dữ liệu được giải mã là hợp lệ (do đó, khóa là chính xác)?
Lưu ý bên lề:
ECB đã được sử dụng do tính đơn giản của việc triển khai, các thiết bị tham gia vào quá trình giải mã là các cảm biến năng lượng thấp và mật mã này đã sẵn sàng để sử dụng 'ngay lập tức'.