Điểm:1

Làm cách nào để đảm bảo đúng cách xác thực, bảo mật và chống phát lại cho nhiều tin nhắn bằng khóa chia sẻ trước?

lá cờ ws

Tôi có một thiết bị cần giao tiếp với một máy chủ khác và trao đổi tin nhắn có độ dài cố định. Tất cả lưu lượng truy cập phải được mã hóa và xác thực, đồng thời có khả năng chống lại các cuộc tấn công lặp lại. Thật không may, dựa vào TLS không phải là một tùy chọn, vì vậy tôi cần triển khai một số giao thức tùy chỉnh. Tôi có quyền kiểm soát cả hai thiết bị nên tôi có thể tạo và phân phối khóa dùng chung một cách an toàn $k$.

Tôi nghĩ sẽ sử dụng AEAD với khối mật mã để thực hiện công việc nặng nhọc, chẳng hạn như AES ở chế độ GCM. Vấn đề tôi gặp phải là ngăn chặn các cuộc tấn công phát lại và tôi đã nảy ra ý tưởng sau. Hãy gọi các thiết bị $A$$B$ và xem xét thông tin liên lạc từ $A$ đến $B$ chỉ có.

  • $A$ tạo ra một chuỗi ngẫu nhiên $a$ và gửi nó đến $B$.
  • $B$ tạo ra một chuỗi ngẫu nhiên $b$ và gửi nó đến $A$.
  • Cả hai $A$$B$ tính toán $h=H(k \Vert a \Vert b)$ đối với một số hàm băm mật mã $H$, Và sử dụng $h$ làm vectơ khởi tạo đầu tiên cho lược đồ AEAD.

Bất cứ khi nào $A$ cần gửi tin nhắn $m$ đến $B$, nó mã hóa $m$ để có được bản mã tương ứng $c$, tính toán thẻ xác thực $t$, và gửi $c \Vert t$ đến $A$ (tin nhắn có độ dài cố định nên độ dài của $c \Vert t$ là hằng số). sau đó $A$ gia số $h$ và khởi tạo lại sơ đồ AEAD với IV mới $h$.

Quá trình giải mã cũng tương tự: $B$ nhận được $c \Vert t$, giải mã $c$ vào trong $m$, xác thực tin nhắn bằng cách sử dụng thẻ $t$, gia số $h$và khởi tạo lại lược đồ AEAD với giá trị mới là $h$.

Thông tin liên lạc từ $B$ đến $A$ hoàn toàn đối xứng, ngoại trừ các IV ban đầu là $H(k \Vert b \Vert a)$.

Có bất kỳ lỗ hổng rõ ràng với ý tưởng trên? Tôi có đang phát minh lại bánh xe không? Nếu vậy, giải pháp tiếp theo để giải quyết vấn đề này là gì?

kelalaka avatar
lá cờ in
Tìm kiếm nhỏ [biện pháp đối phó tấn công lại](https://crypto.stackexchange.com/search?q=replay+attack+countermeasure) và xem [phần cuối của câu trả lời](https://crypto.stackexchange.com/a/ 41327/18298)
Steven avatar
lá cờ ws
Tôi biết rằng có thể tránh các cuộc tấn công phát lại bằng cách thêm dấu thời gian hoặc bộ đếm. Tuy nhiên, thiết bị $A$ không duy trì trạng thái giữa các lần khởi động lại (đó là thiết bị nhúng) và không có đồng hồ bên trong (tôi không muốn dựa vào việc đồng bộ hóa thời gian qua internet vì điều này sẽ phụ thuộc vào việc có kết nối internet đang hoạt động).
kelalaka avatar
lá cờ in
Sau đó, bạn cần chữ ký ...
Steven avatar
lá cờ ws
Bạn có thể vui lòng giải thích về cách chữ ký sẽ giúp chống lại các cuộc tấn công phát lại không? Ngay cả khi một tin nhắn được ký, tôi sẽ chỉ có thể kiểm tra tính xác thực của nó chứ không thể kiểm tra xem nó có được phát lại hay không. Hơn nữa, kế hoạch AEAD mà tôi đang đề xuất đã cung cấp tính xác thực. Có bất cứ điều gì sai với kế hoạch tôi đang đề xuất? Đối với tôi, có vẻ như $h$ nên được đảm bảo là bí mật "mỗi phiên" ngẫu nhiên được chia sẻ giữa $A$ và $B$. Có vấn đề gì khi sử dụng $h$ để khởi tạo IV và tăng IV sau mỗi tin nhắn không?
SAI Peregrinus avatar
lá cờ si
Tại sao dây? Tại sao không phải là giá trị nhị phân có độ dài cố định? Tại sao lại sử dụng hàm băm H thay vì hàm băm có khóa thích hợp hoặc MAC?
Steven avatar
lá cờ ws
@SAIPeregrinus. Các giá trị nhị phân có độ dài cố định là hoàn toàn tốt. Trên thực tế, đó là những gì tôi có trong đầu mặc dù tôi đã viết các chuỗi. Ngoài ra, tôi đã tra cứu các giá trị băm có khóa và có vẻ như về mặt logic, nó phục vụ cùng mục đích với $H$, vì vậy, trong phần mô tả của tôi ở trên $H(k \Vert a \Vert b)$ có thể được thay thế bằng $HMAC(k,a \ Vert b)$. Cảm ơn.
Điểm:1
lá cờ it

Tôi nghĩ đây là điểm quan trọng nhất của bạn (từ các bình luận):

Tôi biết rằng có thể tránh các cuộc tấn công phát lại bằng cách thêm dấu thời gian hoặc bộ đếm. Tuy nhiên thiết bị A không duy trì trạng thái giữa các lần khởi động lại (đó là thiết bị nhúng) và không có đồng hồ bên trong (tôi không muốn dựa vào việc đồng bộ hóa thời gian qua internet vì điều này sẽ phụ thuộc vào việc có kết nối internet đang hoạt động).

Sau đó, mỗi phiên, sử dụng một bộ đếm. Giữa các phiên, sử dụng Diffie-Hellman trao đổi khóa qua mã hóa đối xứng khóa chung của bạn. Điều này cũng sẽ cung cấp cho bạn chuyển tiếp bí mật. Tôi không thể thấy nhiều lợi ích cho cơ chế đề xuất của bạn về điều này.

Về tính đầy đủ: ý nghĩa của bảo mật chuyển tiếp là ngay cả khi khóa dùng chung của bạn bị xâm phạm trong tương lai, thì các thông tin liên lạc trong quá khứ cũng không thể giải mã được. Đây không phải là tài sản mà cơ chế hiện tại của bạn cung cấp.

Steven avatar
lá cờ ws
Cảm ơn bạn. Tôi chỉ muốn đảm bảo rằng tôi hiểu đúng kế hoạch đề xuất của bạn. Bạn đang đề nghị tôi thực hiện trao đổi khóa Diffie-Hellman trong khi sử dụng sơ đồ AEAD với khóa chia sẻ trước của tôi để đảm bảo xác thực (tôi có cần mã hóa ở đây không?). Ở đây, sơ đồ AEAD sẽ cần sử dụng một số IV được mã hóa cứng. Tuy nhiên, khóa DH đã thương lượng $k$ sẽ là bí mật và khác nhau cho mỗi phiên.Sau đó, tôi có thể sử dụng $k$ làm khóa phiên cho một lược đồ AEAD khác để trao đổi thư thực tế. Theo tôi hiểu, mỗi tin nhắn cần một IV khác nhau. Trong trường hợp này, tôi có thể chỉ sử dụng bộ đếm bắt đầu từ $0$ không?
Steven avatar
lá cờ ws
Ngoài ra, có vẻ như toàn bộ phần đầu tiên của giao thức đang thực hiện [trao đổi khóa được xác thực bằng mật khẩu](https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange#Password-authenticated_key_agreement). Nếu đây là trường hợp, chúng ta có thể sử dụng ý tưởng được phác thảo trên Wikipedia không? Cụ thể, $A$ và $B$ đã có một bí mật được chia sẻ trước $s$; họ tính toán khóa phiên $k$ bằng cách sử dụng trao đổi khóa DH. Sau đó, $A$ gửi $hash(s \Vert 0 \Vert k)$ tới $B$ , $B$ sẽ kiểm tra để xác thực $A$. Đối xứng $B$ gửi $hash(s \Vert 1 \Vert k)$ tới $A$. Giao tiếp tiến hành bằng cách sử dụng $k$ làm khóa phiên.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.