Trao đổi và thiết lập khóa
Các giao thức thiết lập khóa cho phép các bên thống nhất về một khóa bí mật chung mới, liên kết khóa đó với các danh tính đã được xác thực để giao tiếp tiếp theo có thể được bảo vệ bằng mật mã đối xứng nhanh.
Definition
Thiết lập khóa là một giao thức mà qua đó hai hoặc nhiều bên đạt được một khóa bí mật chung; trong thỏa thuận khóa, cả hai bên đều đóng góp vào khóa, trong khi trong vận chuyển khóa, một bên tạo và gửi khóa một cách an toàn.
Scope
Chủ đề này bao gồm các giao thức trao đổi khóa được xác thực (AKE): thỏa thuận khóa so với vận chuyển khóa, các mối đe dọa mà chúng phải chống lại (tấn công xen giữa, phát lại, mạo danh do lộ khóa), các thuộc tính bảo mật như bảo mật chuyển tiếp và kiểm soát khóa đóng góp, và các mô hình hình thức (Bellare-Rogaway, Canetti-Krawczyk) được sử dụng để phân tích chúng. Nó đề cập đến cách xác thực được thêm vào Diffie-Hellman thô. Nó không bao gồm toán học của các vấn đề cơ bản và các giao thức kênh đã triển khai, được xử lý riêng.
Core questions
- Những thuộc tính bảo mật nào mà một giao thức trao đổi khóa được xác thực phải đảm bảo?
- Xác thực được xếp lớp lên một giao thức thỏa thuận khóa thô như Diffie-Hellman như thế nào?
- Bảo mật chuyển tiếp là gì và việc lựa chọn các khóa tạm thời cung cấp nó như thế nào?
- Các mô hình hình thức nắm bắt một kẻ tấn công chủ động kiểm soát mạng như thế nào?
- Những cuộc tấn công nào (xen giữa, phát lại, mạo danh do lộ khóa, chia sẻ khóa không xác định) mà các giao thức phải chống lại?
Key concepts
- thỏa thuận khóa so với vận chuyển khóa
- trao đổi khóa được xác thực
- bảo mật chuyển tiếp
- khóa tạm thời
- tấn công xen giữa
- mạo danh do lộ khóa
- tấn công chia sẻ khóa không xác định
- mô hình Bellare-Rogaway và Canetti-Krawczyk
- hàm dẫn xuất khóa
Key theories
- Trao đổi khóa được xác thực
- Thỏa thuận khóa thô cung cấp một khóa bí mật chung nhưng không đảm bảo danh tính của đối tác; các giao thức AKE thêm xác thực (thông qua chữ ký, chứng chỉ hoặc khóa được chia sẻ trước) để mỗi bên biết rằng nó chia sẻ khóa với đối tác dự định chứ không phải kẻ mạo danh.
- Bảo mật chuyển tiếp và độ mới của khóa phiên
- Sử dụng vật liệu khóa tạm thời mới cho mỗi phiên và kết hợp nó với các khóa xác thực dài hạn tạo ra một khóa phiên vẫn bí mật ngay cả khi các khóa dài hạn sau này bị lộ, đồng thời chống lại việc phát lại các phiên cũ.
Mechanisms
Một AKE điển hình kết hợp trao đổi Diffie-Hellman tạm thời với xác thực: các bên trao đổi các giá trị công khai tạm thời và chứng minh danh tính của họ bằng cách ký dữ liệu bản ghi hoặc bằng cách sử dụng khóa dài hạn được chia sẻ trước hoặc được chứng nhận. Khóa bí mật chung thu được được chuyển qua một hàm dẫn xuất khóa với một hàm băm bản ghi để liên kết nó với phiên, đánh bại các cuộc tấn công phát lại và chia sẻ khóa không xác định, đồng thời cung cấp các khóa phiên mới, được xác thực.
Clinical relevance
Thiết lập khóa là hành động mở đầu của hầu hết mọi phiên bảo mật: bắt tay TLS 1.3, Signal X3DH và Double Ratchet, IPsec IKEv2, SSH và WireGuard đều chạy các trao đổi khóa được xác thực trước khi bất kỳ dữ liệu nào được truyền. Tính đúng đắn của chúng quyết định liệu kẻ tấn công có thể mạo danh máy chủ hoặc âm thầm nằm giữa hai bên hay không.
Evidence & guidelines
Các lược đồ thiết lập khóa được chuẩn hóa trong NIST SP 800-56A/B và được phân tích trong các mô hình như Bellare-Rogaway và Canetti-Krawczyk. Các giao thức hiện đại (TLS 1.3, khung Noise) yêu cầu các trao đổi tạm thời bảo mật chuyển tiếp và đã nhận được phân tích bảo mật chính thức. Các trao đổi khóa tĩnh cũ không có bảo mật chuyển tiếp không được khuyến khích.
History
Trao đổi khóa được xác thực phát triển từ giao thức Diffie-Hellman năm 1976 và sự nhận ra rằng nó cần xác thực để chống lại những kẻ tấn công chủ động. Những năm 1990-2000 đã tạo ra các mô hình bảo mật nghiêm ngặt (Bellare-Rogaway 1993, Canetti-Krawczyk 2001) và các giao thức kiểu station-to-station và MQV. Các bài học đã được củng cố trong bắt tay TLS 1.3 được phân tích chính thức và khung giao thức Noise.
Key figures
- Whitfield Diffie
- Martin Hellman
- Mihir Bellare
- Phillip Rogaway
- Ran Canetti
- Hugo Krawczyk
Related topics
Seminal works
- diffie1976
- katz2020
- menezes1996
Frequently asked questions
- Sự khác biệt giữa thỏa thuận khóa và vận chuyển khóa là gì?
- Trong thỏa thuận khóa (như Diffie-Hellman), cả hai bên đều đóng góp tính ngẫu nhiên nên không bên nào tự mình xác định khóa cuối cùng. Trong vận chuyển khóa, một bên tạo khóa và gửi nó được mã hóa dưới khóa công khai của bên kia. Thỏa thuận hỗ trợ bảo mật chuyển tiếp một cách tự nhiên hơn.
- Tại sao việc thiết lập một khóa một lần không đủ cho một phiên dài?
- Các khóa có thời gian tồn tại dài làm tăng khả năng bị lộ nếu bị xâm phạm và có thể bị suy yếu do phân tích mật mã hoặc quan sát của kẻ tấn công. Các giao thức định kỳ tạo lại khóa hoặc 'ratchet' (như trong Signal) để việc xâm phạm một khóa phiên không làm lộ các tin nhắn trong quá khứ hoặc tương lai.