Mã hóa có xác thực trả về hai thứ cùng lúc: bản mã che giấu nội dung, và một thẻ cho phép bên nhận phát hiện sửa đổi. Trước đây các chức năng này được lắp từ những mảnh riêng rẽ, và cách ghép tồi tạo ra những hỏng hóc tinh vi. Các cấu trúc hiện đại quy định cách ghép và những điều kiện để nó đúng. Từ có xác thực ở đây nói về thẻ, không nói về một con người.

Cả hai bảo đảm chỉ áp dụng cho gói được bảo vệ, và không mở rộng ra bất cứ thứ gì bên ngoài.

Hai bảo đảm trong một cấu trúc

Mã hóa trả lời câu hỏi một người quan sát có đọc được hay không; tính toàn vẹn trả lời câu hỏi nó đã bị sửa hay chưa. Đường hầm cần cả hai, vì nội dung bị sửa tệ hơn nội dung không đọc được. AEAD quy định cách kết hợp chúng dưới một khóa, cùng với dữ liệu liên kết được xác thực nhưng không mã hóa. Bên nhận từ chối đầu vào không qua được kiểm tra.

Dữ liệu liên kết ràng buộc các trường nhìn thấy vào phép kiểm tra. Trường nào được đưa vào tùy thuộc giao thức, và đó không phải lời hứa rằng mọi địa chỉ bên ngoài đã thành bí mật: một trường có thể được thẻ che phủ mà vẫn đọc được trên đường truyền.

Nonce không phải chi tiết nhỏ

Khóa và nonce phải được xử lý đúng, và việc dùng lại nonce thất bại một cách nặng nề. Lặp lại một nonce dưới cùng một khóa có thể phơi bày quan hệ giữa các thông điệp và phá hỏng hoàn toàn bảo đảm toàn vẹn. Vì vậy giao thức, chứ không phải ứng dụng, sở hữu việc sinh và thứ tự nonce.

Đây là điều kiện của bảo đảm, không phải gợi ý triển khai. Nonce cẩu thả không cho thuộc tính đã quảng cáo.

Bảo vệ chống phát lại là trạng thái riêng

Một gói cũ hợp lệ vẫn có thể bị phát lại trong khi thẻ của nó còn nguyên, vì thẻ chứng minh tính xác thực chứ không phải độ mới. Xử lý phát lại cần trạng thái riêng: số thứ tự, một cửa sổ và quy tắc về việc chấp nhận gì. Trạng thái đó sống trong phần triển khai giao thức và không liên quan đến việc chọn mật mã. Một đường hầm mã hóa mạnh nhưng không có bảo vệ phát lại vẫn chấp nhận lưu lượng của hôm qua.

Hai cơ chế phối hợp mà không phải là một, và cái này có thể đúng trong khi cái kia vắng mặt.

Điều thẻ không cho bạn biết

Danh tính của đối tác được thiết lập bằng chứng chỉ hoặc khóa chia sẻ trước, không phải nhờ mật mã có xác thực. Định tuyến, phân giải tên và chính sách ghi nhật ký của nhà vận hành nằm ngoài ranh giới mật mã. Một cuộc đàm phán thuật toán thành công chỉ nói rằng hai đầu đã đồng ý một bộ, đó là chuyện tương thích, không phải chất lượng triển khai ở bất kỳ bên nào.

Với người dùng: hãy chọn một cấu hình giao thức được duy trì và hỗ trợ. AEAD là một thuộc tính của cấu hình đó, không phải lời mời tự tay dựng mã hóa quanh một đường hầm.

Ghi lại bộ nào đã được đàm phán, bảo vệ phát lại có bật không và các bên được nhận diện thế nào. Ba sự kiện, ba bảo đảm khác nhau.

Bài viết liên quan