Trao đổi khóa Diffie-Hellman
Giao thức Diffie-Hellman cho phép hai bên thiết lập một khóa bí mật chung trên một kênh không an toàn mà không cần bất kỳ khóa chung nào trước đó, bằng cách trao đổi các giá trị công khai được suy ra từ các số mũ riêng tư.
Definition
Trao đổi khóa Diffie-Hellman là một giao thức trong đó mỗi bên nâng một phần tử sinh chung lên một số mũ riêng tư, trao đổi kết quả, và nâng giá trị nhận được lên số mũ của chính mình, cả hai đều đạt được cùng một khóa bí mật chung mà một kẻ nghe trộm không thể tính toán được một cách khả thi.
Scope
Chủ đề này bao gồm giao thức trao đổi khóa Diffie-Hellman và vấn đề logarit rời rạc làm nền tảng cho tính bảo mật của nó, các giả định Diffie-Hellman tính toán và quyết định, mã hóa ElGamal được xây dựng trên cùng cấu trúc, trao đổi khóa tạm thời để đảm bảo tính bảo mật chuyển tiếp, và mối đe dọa tấn công xen giữa (man-in-the-middle) là động lực cho việc xác thực. Nó không bao gồm RSA (dựa trên phân tích thừa số) và hiện thực hóa Diffie-Hellman bằng đường cong elliptic, vốn được xử lý trong mã hóa đường cong elliptic.
Core questions
- Làm thế nào hai bên có thể thống nhất một khóa bí mật chung trong khi kẻ nghe trộm nhìn thấy tất cả các thông điệp?
- Tại sao bài toán logarit rời rạc khiến khóa bí mật được trao đổi khó phục hồi?
- Sự khác biệt giữa các giả định Diffie-Hellman tính toán và quyết định là gì?
- Diffie-Hellman tạm thời cung cấp tính bảo mật chuyển tiếp như thế nào?
- Tại sao Diffie-Hellman không được xác thực lại dễ bị tấn công xen giữa?
Key concepts
- thỏa thuận khóa bí mật chung
- phần tử sinh và nhóm cyclic
- số mũ riêng tư và công khai
- bài toán logarit rời rạc
- Diffie-Hellman tính toán (CDH)
- Diffie-Hellman quyết định (DDH)
- trao đổi khóa tạm thời và bảo mật chuyển tiếp
- tấn công xen giữa
- mã hóa ElGamal
Key theories
- Độ khó của logarit rời rạc
- Diffie-Hellman an toàn vì, trong khi phép lũy thừa modulo dễ thực hiện, việc phục hồi số mũ riêng tư từ giá trị công khai (logarit rời rạc) được cho là không thể thực hiện được trong các nhóm phù hợp.
- Các giả định Diffie-Hellman tính toán và quyết định
- Tính bảo mật được hình thức hóa thông qua giả định CDH (việc tính toán khóa bí mật chung là khó) và giả định DDH mạnh hơn (khóa bí mật chung không thể phân biệt được với ngẫu nhiên), giả định sau làm nền tảng cho mã hóa kiểu ElGamal được chứng minh là an toàn.
Mechanisms
Trong một nhóm cyclic với phần tử sinh công khai g, Alice chọn một số bí mật a và gửi g^a, Bob chọn b và gửi g^b; mỗi người tính toán khóa bí mật chung g^(ab) bằng cách nâng giá trị nhận được lên số mũ của chính mình. Kẻ nghe trộm nhìn thấy g, g^a và g^b nhưng phải giải quyết bài toán logarit rời rạc hoặc bài toán Diffie-Hellman để tìm g^(ab). Sử dụng các số mũ mới (tạm thời) cho mỗi phiên sẽ mang lại tính bảo mật chuyển tiếp: việc thỏa hiệp các khóa dài hạn sau này không làm lộ các khóa phiên trước đó.
Clinical relevance
Diffie-Hellman là cơ sở của việc thiết lập khóa trong TLS, IPsec/IKE, SSH, Signal và WireGuard. Các biến thể tạm thời (DHE và ECDHE đường cong elliptic) cung cấp tính bảo mật chuyển tiếp, bảo vệ lưu lượng truy cập đã ghi lại khỏi việc thỏa hiệp khóa trong tương lai. Việc xác thực quá trình trao đổi (bằng chứng chỉ hoặc chữ ký) là điều đánh bại cuộc tấn công xen giữa mà Diffie-Hellman thuần túy dễ bị tổn thương.
Evidence & guidelines
Các tham số Diffie-Hellman trường hữu hạn được quy định trong RFC 7919 (các nhóm được đặt tên an toàn); NIST SP 800-56A chuẩn hóa việc thiết lập khóa. Thực hành tốt nhất là sử dụng khóa tạm thời để đảm bảo tính bảo mật chuyển tiếp và các nhóm đã được kiểm tra kỹ lưỡng. Cuộc tấn công Logjam (2015) cho thấy các nhóm 512-bit cấp xuất khẩu yếu và các nhóm 1024-bit được sử dụng lại có thể bị khai thác, thúc đẩy việc chuyển sang các nhóm 2048-bit hoặc đường cong elliptic.
History
Diffie và Hellman đã công bố giao thức trao đổi khóa trong bài báo năm 1976 của họ, mở ra kỷ nguyên mật mã khóa công khai, dựa trên ý tưởng câu đố trước đó của Merkle. (Malcolm Williamson đã khám phá ra một phương pháp tương đương tại GCHQ vào năm 1974.) ElGamal đã tổng quát hóa cấu trúc này thành một lược đồ mã hóa và chữ ký khóa công khai vào năm 1985. Giao thức đã chuyển từ các nhóm trường hữu hạn sang đường cong elliptic và trở thành phương tiện tiêu chuẩn để thiết lập khóa phiên trên internet.
Key figures
- Whitfield Diffie
- Martin Hellman
- Ralph Merkle
- Taher ElGamal
- Malcolm Williamson
Related topics
Seminal works
- diffie1976
- katz2020
- menezes1996
Frequently asked questions
- Bản thân Diffie-Hellman có xác thực các bên không?
- Không. Diffie-Hellman thuần túy thiết lập một khóa bí mật chung nhưng không xác minh ai ở đầu bên kia, vì vậy một kẻ tấn công chủ động có thể thực hiện hai cuộc trao đổi và ngồi ở giữa. Các giao thức thực tế xác thực quá trình trao đổi bằng chứng chỉ, chữ ký hoặc khóa được chia sẻ trước.
- Tính bảo mật chuyển tiếp là gì và Diffie-Hellman cung cấp nó như thế nào?
- Tính bảo mật chuyển tiếp có nghĩa là việc thỏa hiệp các khóa dài hạn sau này không làm lộ các phiên trước đó. Việc sử dụng các số mũ Diffie-Hellman mới, tạm thời cho mỗi phiên và loại bỏ chúng sau đó đảm bảo rằng không có khóa nào được lưu trữ có thể tái tạo lưu lượng truy cập đã ghi trước đó.