Chúng tôi hiện đang thiết kế một giao thức Cơ chế xác thực phản hồi thách thức (CRAM) đơn giản dựa trên mật mã đối xứng sẽ được sử dụng trên các thiết bị nhúng bị hạn chế sẽ hoạt động trong một mạng tầm ngắn khép kín.
Xác thực lẫn nhau là mong muốn. Khả năng bảo mật được cung cấp bởi các thiết bị hiện chưa được biết. Do đó, chúng tôi chủ yếu tập trung vào việc chỉ sử dụng giao thức AES trong quá trình xác thực. Trong trường hợp chúng tôi cũng có thể sử dụng giao thức MAC, chẳng hạn, chúng tôi sẽ mở rộng nó trong quá trình liên lạc kênh an toàn sau đó.
Chúng tôi giả định rằng cả hai thiết bị đều có khóa đối xứng phù hợp. Thử thách (chg_x) dự định là 16 byte và được tạo ngẫu nhiên bằng cách sử dụng RNG thực.
Luồng thứ tự của giao thức sẽ là:
- $A \rightarrow B : id_A, chg_A $
- $A \leftarrow B : id_B, enc(chg_A), enc(chg_B)$
- $A \rightarrow B : dec(enc(chg_B))$
Thiết bị $A$ sẽ xác minh thử thách của nó trong quá trình trả lời, đồng thời giải mã và gửi thử thách từ thiết bị kia.Mã hóa trên thiết bị $B$ thách thức của nó $chg_B$ được thực hiện để tránh các cuộc tấn công phản chiếu như được chỉ ra trong câu hỏi này.
Đối với kênh an toàn sau đó, chúng tôi dự định sử dụng một $ KDF(K||chg_A) $ để lấy khóa phiên.
Câu hỏi của tôi là:
- giao thức này có đủ cho kịch bản dự định hay vẫn dễ bị tấn công bởi một số cuộc tấn công khác?
- có còn mong muốn có Hash hoặc MAC trong quá trình xác thực ở một số khả năng để giảm bớt các mối đe dọa tiềm ẩn không?