Vấn đề này đã xuất hiện trong một bài kiểm tra trước đây.
Trong các giao thức PAKE (trao đổi khóa được xác thực bằng mật khẩu), $A$ và $B$ xác thực từng
khác do biết mật khẩu dùng chung quá yếu để kẻ tấn công có thể thử
đoán lặp đi lặp lại để cố gắng tìm ra nó bằng cách biết cách một thông báo của giao thức được
được xây dựng. Không có chữ ký mật mã hoặc bí mật chia sẻ thay thế hoặc đáng tin cậy
bên thứ ba mà họ có thể sử dụng. Một giao thức như vậy thường hoạt động như sau:
• Giai đoạn 1: $A$ và $B$ trao đổi dữ liệu mà họ đã tạo cho phiên này và các giá trị
họ đã tính toán từ giá trị này và giá trị giả định của riêng họ cho mật khẩu $p_{AB}$.
Lưu ý rằng nếu họ là A và B, họ sẽ biết như nhau $p_{AB}$ nhưng nếu một hoặc
cả hai đều giả mạo các giá trị mà họ cho rằng có thể sẽ khác. Từ
những tính toán này cả hai đều có được một khóa $k_A$ hoặc $k_B$, sẽ giống nhau nếu họ
giá trị mật khẩu là như nhau.
¢ Giai đoạn 2: Họ so sánh $k_A$ và $k_B$ bằng cách trao đổi thông điệp cho phép họ
để xem họ có đồng ý không, nhưng đừng tiết lộ $k_A$ hoặc $k_B$ với thế giới, và không cho phép một trong hai
bên để nghĩ rằng họ đồng ý khi họ không.
Tại sao nên $A$ không gửi, như một phần của giao thức này, $hash(p_{AB}, N)$, ở đâu $N$ là một nonce được biết đến
đến $B$ cho đến khi cô ấy chắc chắn rằng $B$ không phải là một kẻ mạo danh và thực sự biết $p_{AB}$? Mở rộng điều này để
hướng dẫn chung về những thông báo của biểu mẫu băm ($X$) không nên được gửi từ $A$ đến
$B$ ở đâu $X$ liên quan đến $p_{AB}$ trong xây dựng của nó.
Bây giờ hãy nghĩ đến việc thực hiện Giai đoạn 2 thôi. Làm thế nào bạn có thể sử dụng băm để đạt được
mục tiêu của Giai đoạn 2, theo cách mà nếu $A$ hoặc $B$ đã thực sự nói chuyện với một kẻ mạo danh
với một mật khẩu khác trong Giai đoạn 1, kẻ mạo danh không thể thao túng các tin nhắn để
làm cho cô ấy hoặc anh ấy nghĩ rằng giao thức đã hoàn thành thành công.
Nỗ lực của tôi:
một) $A$ không nên gửi $hash(p_{AB}, N)$ như một kẻ mạo danh $I_B$ có thể sử dụng lại cùng một nonce và gửi $hash(p_{AB}, N)$ quay lại A, giả vờ biết mật khẩu $p_{AB}$
b) $X$ không nên $p_{AB}$ (của riêng nó). Nó cũng phải chứa một số loại nhận dạng cho mỗi người dùng, duy nhất cho những gì người dùng khác gửi tức là. nếu Alice gửi $hash(X_1)$ và Bob gửi $hash(X_2)$, $X_1 \neq X_2$. Vừa đủ chưa? Tôi không thể nghĩ về bất cứ điều gì khác.
c) Để thực hiện giai đoạn 2, yêu cầu Alice gửi $hash(E_{k_A}(Alice|k_A))$ và Bob gửi $hash(E_{k_B}(Bob|k_B))$. Ở đâu $E_k$ là một chức năng mã hóa, được mã hóa bằng khóa $k$. Điều này có đúng không?