Làm thế nào là khóa trong một giao thức mã hóa khóa riêng được trao đổi?


12

Windows NT đã sử dụng giao thức điểm-điểm trong đó máy khách có thể giao tiếp "an toàn" với máy chủ bằng cách sử dụng mật mã luồng để mã hóa một mảng tin nhắn bằng một số khóa k . Máy chủ cũng mã hóa phản hồi của nó với cùng khóa k . Nhưng làm thế nào nó nhận thức được chìa khóa này?

Tổng quát hơn: nếu Alice và Bob sử dụng một số thuật toán mã hóa / giải mã hoạt động trên cùng một khóa riêng k , thì cách an toàn để trao đổi khóa này là gì? (không sử dụng khóa học khác)

Đây là điều mà tôi luôn tự hỏi mình khi nghiên cứu mật mã khóa riêng.


Câu trả lời:


6

Hầu hết các thuật toán khóa riêng dựa vào tính không khả thi của các tính toán nhất định như tính hệ số của một số thành các yếu tố chính của nó dựa trên cơ sở hạ tầng máy tính hiện tại.

Đồng thời, hầu hết trong số chúng cũng được tính toán chuyên sâu khi được sử dụng để mã hóa và giải mã và do đó toàn bộ dòng tin nhắn không được mã hóa bằng các khóa riêng. Thay vào đó, tin nhắn được mã hóa bằng một số thuật toán khác (ít chuyên sâu hơn) và khóa được sử dụng cho mã hóa đó được mã hóa bằng Khóa riêng.

Tất nhiên, như bạn chỉ ra, trao đổi khóa an toàn vẫn là một vấn đề có thể được giải quyết ở một mức độ nhất định bằng cách:

  • Trao đổi khóa Diffie-Hellman : Sử dụng mô đun khớp để khóa trao đổi an toàn.
  • Trung tâm phân phối đơn / nhiều khóa (KDC) : Sử dụng hệ thống bán vé dựa trên bên thứ ba đáng tin cậy.
  • Giao thức xác thực Kerberos : Một giao thức tương đối phức tạp dựa trên KDC.

7

Bất cứ khi nào Alice và Bob muốn đồng ý về cùng một khóa riêng, phương pháp phổ biến nhất là sử dụng Diffie-Hellman . Nó hoạt động như sau:

  1. Hai giá trị công khai được chọn đầu tiên cho phép nói g = 17 . (Đây thường là những số nguyên tố rất lớn và được mọi người sử dụng giao thức đó biết đến).n= =13g= =17

  2. một= =3b= =7

  3. Một= =gmộtmodnB= =gbmodnMột= =12B= =4MộtB

  4. K= =BmộtmodnK= =MộtbmodnK= =12

Kng

Một vấn đề trong mật mã khóa riêng là tấn công trung gian và đó là một trong những lý do chính để chọn mật mã khóa công khai trên mật mã khóa riêng.


5

Đầu tiên, một điểm của thuật ngữ: những gì bạn mô tả là mã hóa đối xứng và một khóa được chia sẻ giữa những người tham gia thường được gọi là một khóa bí mật; Khóa riêng tư thường có nghĩa là một phần của khóa trong mật mã khóa công khai mà chỉ một người tham gia biết.

Có hai cách để phổ biến một khóa bí mật: nó có thể được vận chuyển theo một cách an toàn vật lý nào đó, hoặc nó có thể được vận chuyển bằng một số hình thức mã hóa khác, mật mã khóa công khai.

Có nhiều cách để trao đổi khóa bí mật không yêu cầu kênh liên lạc bí mật. Phổ biến nhất là giao thức trao đổi khóa Diffie-Hellman. Nguyên tắc của Diffie-Hellman là mỗi người tham gia tạo cặp khóa riêng và có một phép toán xây dựng một số lượng lớn từ một khóa chung và một khóa riêng. Hoạt động toán học này có một tính chất rất thú vị: số lượng lớn có thể được xây dựng từ khóa riêng của Alice và khóa chung của Bob hoặc từ khóa riêng của Bob và khóa chung của Alice; bạn cũng nhận được số tương tự Vì vậy, Alice và Bob trao đổi khóa công khai của họ và cả hai bên đều biết số lượng lớn, sau đó có thể được sử dụng làm khóa bí mật. Một kẻ nghe trộm có thể tìm ra cả khóa công khai, nhưng không thể tìm thấy số lượng lớn từ các khóa công khai.

Trao đổi khóa Diffie-Hellman cho phép hai bên trao đổi một bí mật, bất kể ai đang lắng nghe. Tuy nhiên, nó không xác thực Alice với Bob hoặc ngược lại. Do đó, có thể chấp nhận một cuộc tấn công giữa chừng : Mallory thực hiện trao đổi quan trọng với Alice (người tin rằng cô ấy đang nói chuyện với Bob) và riêng với Bob (người tin rằng anh ta đang nói chuyện với Alice), và do đó phải quyết định hoặc tại ít biết bí mật

Khi kẻ tấn công có thể chặn và tiêm tin nhắn, cần nhiều mật mã hơn để những người tham gia xác thực lẫn nhau. (Kẻ tấn công thụ động có nghĩa là giao thức vận chuyển cơ bản cung cấp xác thực.) Cách dễ dàng là mỗi người tham gia đã biết khóa công khai của nhau. Nếu Alice biết khóa công khai của Bob:

  • Alice có thể xác thực Bob bằng cách gửi cho anh một thách thức: một giá trị ngẫu nhiên (một nonce ) mã hóa với khóa công khai của Bob. Nếu Bob có thể giải mã giá trị đó và gửi lại, Alice biết rằng cô ấy thực sự đang nói chuyện với Bob.
  • Bob có thể xác thực với Alice bằng cách gửi cho cô ấy một tin nhắn được ký bằng khóa công khai của anh ấy. Alice xác minh chữ ký để kiểm tra xem cô ấy thực sự đang nói chuyện với Bob.

Có nhiều biến thể sử dụng một trong các phương thức này (hoặc một biến thể khác) theo một hướng và phương pháp tương tự hoặc khác theo hướng khác hoặc chỉ xác thực theo một hướng. Ví dụ: SSL / TLS (lớp mật mã cho nhiều giao thức như HTTPS, SMTPS, IMAPS, v.v.) có thể sử dụng một số kết hợp mật mã khác nhau và thường xác thực máy chủ với máy khách nhưng cũng có thể tùy chọn xác thực máy khách. Diffie-Hellman chậm và cồng kềnh cho ứng dụng này; thuật toán rộng rãi nhất với phân phối khóa công khai là RSA .

Tất nhiên, Alice và Bob có thể không biết khóa công khai của nhau trước đó. Vì vậy, thay vào đó họ dựa vào chuỗi tin cậy: Bob gửi cho Alice khóa công khai của anh ta, cùng với một tuyên bố đã ký từ bên thứ ba khẳng định rằng khóa này thực sự là khóa chung của Bob. Tuyên bố đã ký này được gọi là chứng chỉ và phần thứ ba là cơ quan cấp chứng chỉ . Bên thứ ba có thể được biết đến với Bob, hoặc danh tính của bên đó có thể được xác nhận bởi bên thứ tư, v.v. Cuối cùng, chuỗi tin cậy này (phiếu mua hàng của phiếu mua hàng Dominique cho Charlie, người đã nhận chứng từ cho Bob) phải đến bên Ron mà Bob đã tin tưởng, nghĩa là Bob có khóa công khai của Ron và tin tưởng Ron chỉ ký chứng nhận hợp lệ.

Có những giao thức không dựa vào mật mã khóa công khai. Cụ thể, giao thức Kerberos được sử dụng trong cả mạng dựa trên unix và Windows để thiết lập kết nối giữa máy khách và máy chủ. Kerberos sử dụng một máy chủ xác thực trung tâm được gọi là trung tâm phân phối khóa (KDC). KDC phải có mật khẩu người dùng được lưu trữ trong cơ sở dữ liệu và khách hàng thường nhắc người dùng nhập mật khẩu. Để tránh lộ mật khẩu, giao thức không sử dụng trực tiếp mật khẩu mà là hàm băm mật mã hay nói chung là hàm dẫn xuất chính được áp dụng cho mật khẩu.

Với bí mật được chia sẻ này, khách hàng và KDC thiết lập một kênh an toàn và KDC gửi cho khách hàng một vé Ticket. Vé chứa khóa phiên (tức là khóa bí mật mới được tạo), cũng như bản sao của khóa được mã hóa bằng một khóa đối xứng khác được chia sẻ giữa KDC và máy chủ mà khách hàng muốn liên hệ. Sau đó, khách hàng chuyển tiếp bản sao được mã hóa này đến máy chủ. Máy chủ giải mã thông báo này để lấy khóa phiên và tạo ra một thông báo mà nó mã hóa bằng khóa phiên và gửi lại cho máy khách. Sau đó, máy khách khởi tạo một kênh bảo mật với máy chủ, được mã hóa bằng khóa phiên và bắt đầu bằng cách hiển thị rằng nó có thể giải mã nonce: điều này xác thực ứng dụng khách với máy chủ. Thiết lập phiên Kerberos là một biến thể của giao thức Needham-Schroeder .

¹ Trong ý nghĩa đó nhà mật mã đã cố gắng rất nhiều, nhưng cách tốt nhất mà họ đã tìm thấy để làm điều đó đòi hỏi phải có một số lượng không thể thực hiện sức mạnh tính toán.



3

Luôn có giải pháp tầm thường: người dùng gặp gỡ và trao đổi khóa. Điều này không thực tế cho nhiều trường hợp, nhưng có thể.

Ngoài giao thức trao đổi khóa Diffie-Hellman (DH), còn có các giao thức phân phối khóa lượng tử . Một trong những giao thức QKD được biết đến nhiều nhất là giao thức Bennett-Brassard, BB84 .

P= =NP

Mặt khác, cuộc tấn công MITM cũng là một vấn đề đối với BB84 và người ta phải cho rằng người dùng sử dụng kênh được xác thực để khắc phục vấn đề này (nhưng điều này thường yêu cầu họ phải chia sẻ khóa xác thực và chúng tôi sẽ quay lại hình vuông).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.