Trao đổi khóa Diffie Gian Hellman là gì và nó hoạt động như thế nào?

Trao đổi khóa Diffie Gian Hellman là gì và nó hoạt động như thế nào

Trao đổi khóa Diffie-Hellman là một trong những phát triển quan trọng nhất trong mật mã khóa công khai và nó vẫn được thực hiện thường xuyên trong một loạt các giao thức bảo mật khác nhau ngày nay.

Nó cho phép hai bên trước đây chưa gặp nhau thiết lập một cách an toàn một khóa mà họ có thể sử dụng để bảo mật thông tin liên lạc của họ. Trong bài viết này, chúng tôi sẽ giải thích những gì mà Google sử dụng, cách thức hoạt động trên cơ sở từng bước, các biến thể khác nhau của nó, cũng như các lưu ý về bảo mật cần được lưu ý để triển khai an toàn.

Trao đổi khóa Diffie-Hellman là gì?

Trao đổi khóa Diffie-Hellman là phương pháp được sử dụng rộng rãi đầu tiên để phát triển và trao đổi khóa một cách an toàn trên một kênh không an toàn.

Nó có vẻ không thú vị hoặc đột phá trong các điều khoản trên, vì vậy, hãy để Lí đưa ra một ví dụ giải thích tại sao trao đổi khóa Diffie-Hellman là một cột mốc quan trọng trong thế giới tiền mật mã và tại sao ngày nay nó vẫn được sử dụng thường xuyên.

Hãy để nói rằng bạn là một điệp viên bí mật hàng đầu và bạn cần gửi một số thông tin quan trọng đến trụ sở của bạn. Làm thế nào bạn có thể ngăn chặn kẻ thù của bạn nhận được tin nhắn?

Giải pháp phổ biến nhất là mã hóa tin nhắn bằng mã. Cách dễ nhất là sắp xếp trước bất kỳ loại mã và khóa nào bạn dự định sử dụng trước hoặc thực hiện trên kênh liên lạc an toàn.

Hãy để nói rằng bạn là một gián điệp đặc biệt xấu, và bạn và trụ sở của bạn quyết định sử dụng một mật mã dịch chuyển yếu để mã hóa tin nhắn của bạn. Trong mã này, mọi người khác đều trở thành một người bẻ khóa, mọi người bẻ khóa đều trở thành một người khác, mọi người đều trở thành một người, và cứ như vậy, đến tận thế thì.

Theo mật mã dịch chuyển này, tin nhắn của Let Let Nhận lấy bữa tối, trở thành phạm lỗi của Mfu Nhẫn hfu ejoofs. Rất may, trong tình huống giả định của chúng tôi, đối thủ của bạn cũng không đủ năng lực như bạn và không thể bẻ khóa một mã đơn giản như vậy, khiến họ không thể truy cập nội dung của tin nhắn.

Nhưng chuyện gì sẽ xảy ra nếu bạn không thể sắp xếp mã với người nhận trước?

Hãy để nói rằng bạn muốn liên lạc với một điệp viên từ một quốc gia đồng minh mà bạn chưa từng gặp trước đây. Bạn không có một kênh an toàn để nói chuyện với họ. Nếu bạn không mã hóa tin nhắn của mình, thì bất kỳ kẻ thù nào chặn nó cũng sẽ có thể đọc được nội dung. Nếu bạn mã hóa nó mà không thông báo mã cho đồng minh, thì kẻ địch đã thắng, có thể đọc được mã đó, nhưng đồng minh cũng không.

Vấn đề này là một trong những câu hỏi hóc búa lớn nhất về mật mã cho đến những năm 1970:

Làm thế nào bạn có thể trao đổi thông tin một cách an toàn với ai đó nếu bạn có cơ hội chia sẻ chìa khóa trước thời hạn?

Trao đổi khóa Diffie-Hellman là cơ chế được sử dụng công khai đầu tiên để giải quyết vấn đề này. Thuật toán cho phép những người chưa từng gặp trước đây tạo một khóa chia sẻ một cách an toàn, thậm chí qua một kênh không an toàn mà đối thủ có thể đang theo dõi.

Lịch sử trao đổi khóa Diffie-Hellman

Trao đổi khóa Diffie-Hellman bắt nguồn từ những năm 1970. Trong khi lĩnh vực mật mã học đã phát triển đáng kể trong suốt thế kỷ XX, những tiến bộ này chủ yếu tập trung vào lĩnh vực mật mã khóa đối xứng.

Cho đến năm 1976, các thuật toán khóa công khai đã xuất hiện trong phạm vi công cộng, khi Whitfield Diffie và Martin Hellman xuất bản bài báo của họ, Hướng đi mới trong Mật mã học. Sự hợp tác đã phác thảo các cơ chế đằng sau một hệ thống mới, được biết đến như là Trao đổi khóa Diffie-Hellman.

Công trình được lấy cảm hứng một phần từ những phát triển trước đó được thực hiện bởi Ralph Merkle. Cái gọi là Merkle Câu đố liên quan đến một bên tạo và gửi một số câu đố mật mã cho bên kia. Những câu đố này sẽ cần một lượng tài nguyên tính toán vừa phải để giải.

Người nhận sẽ chọn ngẫu nhiên một câu đố để giải và sau đó dành nỗ lực cần thiết để hoàn thành nó. Khi câu đố được giải, một mã định danh và khóa phiên được tiết lộ cho người nhận. Người nhận sau đó truyền mã định danh trở lại người gửi ban đầu, cho phép người gửi biết câu đố nào đã được giải.

Vì người gửi ban đầu đã tạo các câu đố, nên số nhận dạng cho họ biết khóa phiên nào mà người nhận đã phát hiện và hai bên có thể sử dụng khóa này để liên lạc an toàn hơn. Nếu kẻ tấn công đang lắng nghe sự tương tác, họ sẽ có quyền truy cập vào tất cả các câu đố, cũng như mã định danh mà người nhận truyền lại cho người gửi ban đầu.

Mã định danh không nói với kẻ tấn công khóa phiên nào đang được sử dụng, vì vậy cách tiếp cận tốt nhất để giải mã thông tin là giải quyết tất cả các câu đố để khám phá khóa phiên chính xác. Vì kẻ tấn công sẽ phải giải quyết trung bình một nửa số câu đố, nên việc phát hiện ra chìa khóa sẽ khó khăn hơn nhiều so với người nhận.

Cách tiếp cận này cung cấp bảo mật hơn, nhưng nó là một giải pháp hoàn hảo. Trao đổi khóa Diffie-Hellman đã lấy một số ý tưởng này và làm cho chúng phức tạp hơn để tạo ra một phương pháp bảo mật của mật mã khóa công khai.

Mặc dù nó được biết đến như là trao đổi khóa Diffie-Hellman, Martin Hellman đã đề xuất rằng thuật toán được đặt tên là trao đổi khóa Diffie-Hellman-Merkle, để phản ánh công việc mà Ralph Merkle đưa vào mật mã khóa công khai.

Người ta đã nghĩ rằng Merkle, Hellman và Diffie là những người đầu tiên phát triển mật mã khóa công khai cho đến năm 1997, khi Chính phủ Anh giải mật công việc được thực hiện vào đầu những năm 1970 bởi James Ellis, Clifford Cox và Malcolm Williamson.

Nó chỉ ra rằng bộ ba đã đưa ra chương trình mã hóa khóa công khai đầu tiên giữa năm 1969 và 1973, nhưng công việc của họ đã được phân loại trong hai thập kỷ. Nó được thực hiện theo Trụ sở Truyền thông Chính phủ (GCHQ), một cơ quan tình báo Anh.

Phát hiện của họ thực sự là thuật toán RSA, vì vậy Diffie, Hellman và Merkle vẫn là những người đầu tiên phát triển trao đổi khóa Diffie-Hellman, nhưng không còn là nhà phát minh đầu tiên của mật mã khóa công khai.

Trao đổi khóa Diffie-Hellman được sử dụng ở đâu?

Mục đích chính của trao đổi khóa Diffie-Hellman là để phát triển an toàn các bí mật được chia sẻ có thể được sử dụng để lấy khóa. Các khóa này sau đó có thể được sử dụng với các thuật toán khóa đối xứng để truyền thông tin theo cách được bảo vệ. Các thuật toán đối xứng có xu hướng được sử dụng để mã hóa phần lớn dữ liệu vì chúng hiệu quả hơn các thuật toán khóa công khai.

Về mặt kỹ thuật, trao đổi khóa Diffie-Hellman có thể được sử dụng để thiết lập khóa công khai và khóa riêng. Tuy nhiên, trong thực tế, RSA có xu hướng được sử dụng thay thế. Điều này là do thuật toán RSA cũng có khả năng ký chứng chỉ khóa công khai, trong khi trao đổi khóa Diffie-Hellman thì không.

Thuật toán ElGamal, được sử dụng nhiều trong PGP, dựa trên trao đổi khóa Diffie-Hellman, do đó, bất kỳ giao thức nào sử dụng nó đều thực hiện hiệu quả một loại Diffie-Hellman.

Là một trong những phương pháp phổ biến nhất để phân phối khóa an toàn, trao đổi khóa Diffie-Hellman là thường xuyên được thực hiện trong các giao thức bảo mật như TLS, IPsec, SSH, PGP và nhiều giao thức khác. Điều này làm cho nó trở thành một phần không thể thiếu trong thông tin liên lạc an toàn của chúng tôi.

Là một phần của các giao thức này, trao đổi khóa Diffie-Hellman thường được sử dụng để giúp bảo mật kết nối của bạn với một trang web, để truy cập từ xa vào một máy tính khác và để gửi email được mã hóa

Làm thế nào để trao đổi khóa Diffie-Hellman hoạt động?

Trao đổi khóa Diffie-Hellman rất phức tạp và có thể khó hiểu được cách thức hoạt động của nó. Nó sử dụng số lượng rất lớn và rất nhiều toán học, một cái gì đó mà nhiều người trong chúng ta vẫn sợ hãi từ những bài học trung học dài và nhàm chán.

Để làm cho mọi thứ dễ hiểu hơn một chút, chúng ta sẽ bắt đầu bằng cách giải thích trao đổi khóa Diffie-Hellman với một phép loại suy. Khi bạn có một ý tưởng lớn về cách thức hoạt động của nó, chúng tôi sẽ chuyển sang mô tả kỹ thuật hơn về các quy trình cơ bản.

Sự tương tự tốt nhất cho sơ đồ Diffie-Hellman là nghĩ về hai người trộn sơn. Hãy để sử dụng tiêu chuẩn mật mã và nói rằng tên của họ là Alice và Bob. Cả hai đều đồng ý về một màu ngẫu nhiên để bắt đầu với. Hãy nói rằng họ gửi tin nhắn cho nhau và quyết định màu vàng là màu chung, giống như trong sơ đồ dưới đây:

diffie-hellman-2

se màu riêng của họ. Họ không nói với bên kia sự lựa chọn của họ. Hãy nói rằng Alice chọn màu đỏ, trong khi Bob chọn một hơi xanh hơi xanh.

Bước tiếp theo là cho cả Alice và Bob trộn màu bí mật của họ (đỏ cho Alice, xanh lục cho Bob) với màu vàng mà họ đã đồng ý. Theo sơ đồ, Alice kết thúc với một hỗn hợp cam, trong khi kết quả của Bob thì là màu xanh sâu hơn.

Sau khi trộn xong, họ gửi kết quả cho bên kia. Alice nhận được màu xanh sâu hơn, trong khi Bob được gửi sơn màu cam.

Một khi họ đã nhận được kết quả hỗn hợp từ đối tác của mình, sau đó họ thêm màu bí mật của họ vào đó. Alice lấy màu xanh sâu hơn và thêm màu sơn đỏ bí mật của mình, trong khi Bob thêm màu xanh lục bí mật của mình vào hỗn hợp màu cam mà anh ta vừa nhận được.

Kết quả? Cả hai cùng ra một màu, mà trong trường hợp này là một màu nâu kinh tởm. Nó có thể không phải là loại màu mà bạn muốn sơn phòng khách của bạn, nhưng dù sao nó cũng là một màu được chia sẻ. Màu được chia sẻ này được gọi là bí mật chung.

Phần quan trọng của trao đổi khóa Diffie-Hellman là cả hai bên đều có cùng kết quả, mà không cần phải gửi toàn bộ bí mật chung trên kênh liên lạc. Chọn một màu chung, màu bí mật của riêng họ, trao đổi hỗn hợp và sau đó thêm màu riêng của họ một lần nữa, cho cả hai bên một cách để đi đến cùng một bí mật chung mà không cần phải gửi toàn bộ.

Nếu kẻ tấn công đang lắng nghe trao đổi, tất cả những gì họ có thể truy cập là màu vàng phổ biến mà Alice và Bob bắt đầu, cũng như các màu hỗn hợp được trao đổi. Vì điều này thực sự được thực hiện với số lượng khổng lồ thay vì sơn, những mẩu thông tin này đủ để cuộc tấn công nhận ra một trong những màu bí mật ban đầu, hoặc bí mật chung (về mặt kỹ thuật có thể tính toán bí mật chung từ thông tin này, nhưng trong việc thực hiện an toàn trao đổi khóa Diffie-Hellman, sẽ mất một lượng thời gian và tài nguyên tính toán không khả thi để làm như vậy).

Cấu trúc của trao đổi khóa Diffie-Hellman là điều làm cho nó rất hữu ích. Nó cho phép hai bên liên lạc qua một kết nối nguy hiểm tiềm tàng và vẫn đưa ra một bí mật chung mà họ có thể sử dụng để tạo khóa mã hóa cho các liên lạc trong tương lai của họ. Sẽ không có vấn đề gì nếu bất kỳ kẻ tấn công nào đang lắng nghe, bởi vì bí mật được chia sẻ hoàn toàn không bao giờ được gửi qua kết nối.

Các chi tiết kỹ thuật của trao đổi khóa Diffie-Hellman

Thời gian cho một số môn toán

Đừng lo lắng, chúng tôi sẽ làm nó chậm lại và cố gắng làm cho toàn bộ quá trình trở nên dễ hiểu nhất có thể. Nó đi theo một tiền đề tương tự như sự tương tự được hiển thị ở trên, nhưng thay vì trộn và gửi màu, lược đồ Diffie-Hellman thực sự thực hiện các phép tính dựa trên các số nguyên tố cực lớn, sau đó gửi chúng qua.

Để đảm bảo an ninh, khuyến nghị rằng nguyên tố (p) dài ít nhất 2048 bit, tương đương nhị phân của một số thập phân có kích thước này:

415368757628736598425938247569843765827634879128375827365928736 84273684728938572983759283475934875938475928475928739587249587 29873958729835792875982795837529876348273685729843579348795827 93857928739548772397592837592478593867045986792384737826735267 3547623568734869386945673456827659498063849024875809603947902 7945982730187439759284620950293759287049502938058920983945872 0948602984912837502948019371092480193581037995810937501938507913 95710937597019385089103951073058710393701934701938091803984091804 98109380198501398401983509183501983091079180395810395190395180935 8109385019840193580193840198340918093851098309180019

Để ngăn không cho bất cứ ai đầu phát nổ, chúng tôi sẽ chạy giải thích này với số lượng nhỏ hơn nhiều. Hãy nhận ra rằng trao đổi khóa Diffie-Hellman sẽ không an toàn nếu nó sử dụng các số nhỏ như số trong ví dụ của chúng tôi. Chúng tôi chỉ sử dụng những con số nhỏ như vậy để thể hiện khái niệm một cách đơn giản hơn.

Ở dạng cơ bản nhất của trao đổi khóa Diffie-Hellman, Alice và Bob bắt đầu bằng cách quyết định hai số bắt đầu bằng, trái ngược với sơn phổ biến duy nhất trong ví dụ trên. đó là mô đun (p) và cơ sở (g).

Trong sử dụng thực tế, mô đun (p) là một số nguyên tố rất lớn, trong khi cơ sở (g) là tương đối nhỏ để đơn giản hóa các tính toán. Cơ sở (g) có nguồn gốc từ một nhóm tuần hoàn (G) thường được tạo tốt trước khi các bước khác diễn ra.

Ví dụ của chúng tôi, hãy để nói rằng mô-đun (p) Là 17, trong khi cơ sở (g) Là 4.

Một khi họ đã quyết định lẫn nhau về những con số này, Alice giải quyết một số bí mật (một) cho chính mình, trong khi Bob chọn số bí mật của riêng mình (b). Hãy nói rằng họ chọn:

a = 3

b = 6

Alice sau đó thực hiện phép tính sau để đưa cho cô con số mà cô sẽ gửi cho Bob:

A = ga mod p

Trong tính toán trên, mod biểu thị một hoạt động modulo. Đây là những tính toán cơ bản để tìm ra phần còn lại sau khi chia bên trái cho bên phải. Ví dụ:

15 mod 4 = 3

Nếu bạn hiểu cách hoạt động của modulo, bạn có thể tự thực hiện chúng trong các phép tính sau, nếu không bạn có thể sử dụng máy tính trực tuyến.

Vì vậy, hãy để Lừa đưa số của chúng tôi vào công thức:

A = 43 mod 17

A = 64 mod 17

A = 13

Khi chúng tôi làm tương tự cho Bob, chúng tôi nhận được:

B = 46 mod 17

B = 4096 mod 17

B = 16

Alice sau đó gửi kết quả của mình (Một) cho Bob, trong khi Bob gửi hình của anh ấy (B) đến Alice. Alice sau đó tính toán bí mật được chia sẻ (S) sử dụng số cô nhận được từ Bob (B) và số bí mật của cô ấy (một), sử dụng công thức sau:

S = Ba mod p

S = 163 mod 17

S = 4.096 mod 17

S = 16

Sau đó, Bob thực hiện những gì về cơ bản là cùng một phép tính, nhưng với số mà Alice đã gửi cho anh ta (Một), cũng như số bí mật của riêng mình (b):

S = = Mộtb mod p

S = 136 mod 17

S = 4,826,809 mod 17

s = 16

Như bạn có thể thấy, cả hai bên đã kết thúc với cùng một kết quả cho S, 16. Đây là bí mật được chia sẻ, điều mà chỉ Alice và Bob biết. Sau đó, họ có thể sử dụng điều này để thiết lập một khóa để mã hóa đối xứng, cho phép họ gửi thông tin giữa họ một cách an toàn theo cách mà chỉ họ mới có thể truy cập nó.

Lưu ý rằng mặc dù BS giống nhau trong ví dụ trên, đây chỉ là sự trùng hợp dựa trên những con số nhỏ được chọn cho hình minh họa này. Thông thường, các giá trị này sẽ không giống nhau khi thực hiện trao đổi khóa Diffie-Hellman.

Mặc dù phần lớn dữ liệu trên được gửi qua kênh ở dạng văn bản rõ ràng (p, g, A B) và có thể được đọc bởi những kẻ tấn công tiềm năng, bí mật chung (S) không bao giờ được truyền đi. Sẽ không thực tế nếu kẻ tấn công tính toán bí mật chung (S) hoặc một trong những số bí mật (mộtb) từ thông tin được gửi trong Cleartext.

Tất nhiên, điều này giả định rằng trao đổi khóa Diffie-Hellman được thực hiện đúng và sử dụng đủ số lượng lớn. Miễn là các điều khoản này được tuân thủ, trao đổi khóa Diffie-Hellman được coi là một cách an toàn để thiết lập một bí mật chung có thể được sử dụng để bảo đảm thông tin liên lạc trong tương lai.

Thiết lập khóa chung giữa nhiều bên

Trao đổi khóa Diffie-Hellman cũng có thể được sử dụng để thiết lập khóa dùng chung với số lượng người tham gia nhiều hơn. Nó hoạt động theo cách tương tự, ngoại trừ các vòng tính toán tiếp theo là cần thiết cho mỗi bên để thêm số bí mật của họ và kết thúc với cùng một bí mật được chia sẻ.

Giống như trong phiên bản hai bên của trao đổi khóa Diffie-Hellman, một số phần thông tin được gửi qua các kênh không an toàn, nhưng không đủ để kẻ tấn công có thể tính toán bí mật được chia sẻ.

Tại sao trao đổi khóa Diffie-Hellman an toàn?

Ở cấp độ toán học, trao đổi khóa Diffie-Hellman dựa trên các chức năng một chiều làm cơ sở cho bảo mật của nó. Đây là những phép tính đơn giản để thực hiện theo một cách, nhưng khó tính toán hơn nhiều.

Cụ thể hơn, nó dựa vào vấn đề Diffie-Hellman, giả định rằng theo các tham số phù hợp, không thể tính được gab từ các giá trị riêng biệt của g, gmộtgb. Hiện tại không có cách nào được biết đến công khai để dễ dàng tìm thấy gab từ các giá trị khác, đó là lý do tại sao trao đổi khóa Diffie-Hellman được coi là an toàn, mặc dù thực tế là những kẻ tấn công có thể chặn các giá trị p, g, Một, và B.

Xác thực & trao đổi khóa Diffie-Hellman

Trong thế giới thực, trao đổi khóa Diffie-Hellman hiếm khi được sử dụng bởi chính nó. Lý do chính đằng sau điều này là nó không cung cấp xác thực, khiến người dùng dễ bị tấn công giữa chừng.

Những cuộc tấn công này có thể diễn ra khi trao đổi khóa Diffie-Hellman được thực hiện bởi chính nó, bởi vì nó không có phương tiện để xác minh xem bên kia có liên quan thực sự là họ nói họ là ai không. Không có bất kỳ hình thức xác thực, Người dùng thực sự có thể đang kết nối với những kẻ tấn công khi họ nghĩ rằng họ đang liên lạc với một bên đáng tin cậy.

Vì lý do này, việc trao đổi khóa Diffie-Hellman thường được thực hiện cùng với một số phương tiện xác thực. Điều này thường liên quan đến việc sử dụng chứng chỉ kỹ thuật số và thuật toán khóa công khai, chẳng hạn như RSA, để xác minh danh tính của mỗi bên.

Biến thể của trao đổi khóa Diffie-Hellman

Việc trao đổi khóa Diffie-Hellman có thể được thực hiện theo một số cách khác nhau và nó cũng đã cung cấp cơ sở cho một số thuật toán khác. Một số triển khai này cung cấp ủy quyền, trong khi những triển khai khác có các tính năng mã hóa khác nhau như bảo mật hoàn hảo về phía trước.

Đường cong Elliptic Diffie-Hellman

Đường cong Elliptic Diffie-Hellman tận dụng cấu trúc đại số của các đường cong elip để cho phép việc triển khai của nó đạt được mức độ bảo mật tương tự với kích thước khóa nhỏ hơn. Khóa đường cong elip 224 bit cung cấp mức bảo mật tương đương với khóa RSA 2048 bit. Điều này có thể làm cho trao đổi hiệu quả hơn và giảm yêu cầu lưu trữ.

Ngoài chiều dài khóa nhỏ hơn và thực tế là nó phụ thuộc vào các thuộc tính của các đường cong elip, Diffie-Hellman đường cong elip hoạt động theo cách tương tự như trao đổi khóa Diffie-Hellman tiêu chuẩn.

TLS   

TLS, một giao thức được sử dụng để bảo mật phần lớn internet, có thể sử dụng trao đổi Diffie-Hellman theo ba cách khác nhau: ẩn danh, tĩnh và phù du. Trong thực tế, chỉ nên thực hiện Diffie-Hellman phù du, bởi vì các tùy chọn khác có vấn đề bảo mật.

  • Người vô danh Diffie-Hellman – Phiên bản trao đổi khóa Diffie-Hellman này không sử dụng bất kỳ xác thực nào, khiến nó dễ bị tấn công giữa chừng. Nó không nên được sử dụng hoặc thực hiện.
  • Tĩnh Diffie-Hellman – Tĩnh Diffie-Hellman sử dụng chứng chỉ để xác thực máy chủ. Nó không xác thực ứng dụng khách theo mặc định và cũng không cung cấp bảo mật chuyển tiếp.
  • Phù du Diffie-Hellman – Đây được coi là triển khai an toàn nhất vì nó cung cấp bí mật hoàn hảo về phía trước. Nó thường được kết hợp với một thuật toán như DSA hoặc RSA để xác thực một hoặc cả hai bên trong kết nối. Ephemeral Diffie-Hellman sử dụng các cặp khóa khác nhau mỗi khi giao thức được chạy. Điều này mang lại cho kết nối bí mật hoàn hảo về phía trước, bởi vì ngay cả khi một khóa bị xâm phạm trong tương lai, nó có thể được sử dụng để giải mã tất cả các tin nhắn trong quá khứ.

ElGamal

ElGamal là một thuật toán khóa công khai được xây dựng dựa trên trao đổi khóa Diffie-Hellman. Giống như Diffie-Hellman, nó không chứa các điều khoản để tự xác thực và thường được kết hợp với các cơ chế khác cho mục đích này.

ElGamal chủ yếu được sử dụng trong PGP, GNU Privacy Guard và các hệ thống khác vì đối thủ chính của nó, RSA, đã được cấp bằng sáng chế. Bằng sáng chế của RSA đã hết hạn vào năm 2000, cho phép nó được thực hiện tự do sau ngày đó. Kể từ đó, ElGamal không được triển khai thường xuyên.

STS

Giao thức Station-to-Station (STS) cũng dựa trên trao đổi khóa Diffie-Hellman. Nó có một kế hoạch thỏa thuận quan trọng khác, tuy nhiên nó cung cấp sự bảo vệ chống lại các cuộc tấn công trung gian cũng như bí mật hoàn hảo về phía trước.

Nó yêu cầu cả hai bên trong kết nối phải có một cặp khóa, được sử dụng để xác thực mỗi bên. Nếu các bên đã biết nhau, thì chứng chỉ có thể được sử dụng để xác thực danh tính của cả hai bên.

Trao đổi khóa Diffie-Hellman & RSA

Như chúng ta đã thảo luận trước đó, trao đổi khóa Diffie-Hellman thường được thực hiện cùng với RSA hoặc các thuật toán khác để cung cấp xác thực cho kết nối. Nếu bạn quen thuộc với RSA, bạn có thể tự hỏi tại sao mọi người cũng bận tâm sử dụng trao đổi khóa Diffie-Hellman, vì RSA cho phép các bên chưa từng gặp nhau giao tiếp an toàn.

RSA cho phép người dùng mã hóa tin nhắn bằng khóa chung công khai của họ, do đó họ chỉ có thể được giải mã bằng khóa riêng phù hợp. Tuy nhiên, trong thực tế, RSA không được sử dụng để mã hóa toàn bộ thông tin liên lạc, điều này sẽ quá kém hiệu quả.

Thay vào đó, RSA thường chỉ được sử dụng như một phương tiện để xác thực cả hai bên. Nó làm điều này với chứng chỉ kỹ thuật số của mỗi bên, sẽ được xác nhận bởi cơ quan chứng nhận để chứng minh rằng chủ sở hữu chứng chỉ thực sự là người họ nói và khóa công khai trên chứng chỉ thực sự thuộc về họ.

Để xác thực lẫn nhau, mỗi bên sẽ ký một tin nhắn bằng khóa riêng của họ và sau đó gửi cho đối tác liên lạc của họ. Mỗi người nhận có thể xác minh danh tính của bên kia bằng cách kiểm tra các tin nhắn đã ký so với khóa chung trên chứng nhận kỹ thuật số đối tác truyền thông của họ (xem bài viết được đề cập ở trên về RSA để biết thêm chi tiết về cách thức hoạt động của nó, đặc biệt là Ký tin nhắn phần).

Bây giờ cả hai bên đã được xác thực, về mặt kỹ thuật, có thể tiếp tục sử dụng RSA để gửi tin nhắn được mã hóa một cách an toàn giữa họ, tuy nhiên điều đó sẽ không hiệu quả.

Để giải quyết vấn đề không hiệu quả này, nhiều giao thức bảo mật sử dụng một thuật toán như trao đổi khóa Diffie-Hellman để đưa ra một bí mật chung có thể được sử dụng để thiết lập khóa đối xứng được chia sẻ. Khóa đối xứng này sau đó được sử dụng trong thuật toán khóa đối xứng, như AES, để mã hóa dữ liệu rằng hai bên có ý định gửi an toàn giữa họ.

Nó có vẻ như là một quá trình phức tạp và phức tạp, nhưng cuối cùng nó nhanh hơn và ít đòi hỏi hơn về tài nguyên khi so sánh với việc sử dụng thuật toán khóa công khai cho toàn bộ trao đổi. Đây là vì Mã hóa khóa đối xứng là các lệnh có độ lớn hiệu quả hơn mã hóa khóa công khai.

Ngoài những thiếu hiệu quả mà chúng tôi vừa đề cập, có một số nhược điểm khác sẽ đến từ việc chỉ sử dụng RSA. RSA cần đệm để đảm bảo an toàn, do đó, một thuật toán bổ sung sẽ cần được triển khai phù hợp cùng với nó để làm cho nó an toàn.

RSA doesn cung cấp bí mật hoàn hảo về phía trước, hoặc, đó là một bất lợi khác khi so sánh với trao đổi khóa Diffie-Hellman phù du. Nói chung, những lý do này là tại sao, trong nhiều tình huống, tốt nhất là chỉ áp dụng RSA kết hợp với trao đổi khóa Diffie-Hellman.

Ngoài ra, trao đổi khóa Diffie-Hellman có thể được kết hợp với một thuật toán như Tiêu chuẩn Chữ ký số (DSS) để cung cấp xác thực, trao đổi khóa, bảo mật và kiểm tra tính toàn vẹn của dữ liệu. Trong tình huống như vậy, RSA là không cần thiết để bảo mật kết nối.

Vấn đề bảo mật của trao đổi khóa Diffie-Hellman

Tính bảo mật của trao đổi khóa Diffie-Hellman phụ thuộc vào cách thức triển khai, cũng như các số được chọn cho nó. Như chúng tôi đã trình bày ở trên, nó không có cách nào để xác thực bên kia, nhưng trong thực tế, các cơ chế khác được sử dụng để đảm bảo rằng bên kia trong kết nối không phải là kẻ mạo danh.

Các thông số để lựa chọn số

Nếu việc triển khai trao đổi khóa Diffie-Hellman trong thế giới thực sử dụng những con số nhỏ như trong ví dụ của chúng tôi, nó sẽ khiến quá trình trao đổi trở nên tầm thường đối với kẻ tấn công bị bẻ khóa. Nhưng nó không chỉ là kích thước của những con số quan trọng – những con số cũng cần phải đủ ngẫu nhiên. Nếu một trình tạo số ngẫu nhiên tạo ra một đầu ra có thể dự đoán được, nó hoàn toàn có thể làm suy yếu tính bảo mật của trao đổi khóa Diffie-Hellman.

Con số p nên dài 2048 bit để đảm bảo an ninh. Cơ sở, g, có thể là một số tương đối nhỏ như 2, nhưng nó cần phải đến từ một thứ tự G có yếu tố chính lớn

Cuộc tấn công Logjam

Trao đổi khóa Diffie-Hellman được thiết kế trên cơ sở vấn đề logarit rời rạc rất khó giải quyết. Cơ chế được biết đến công khai hiệu quả nhất để tìm giải pháp là thuật toán sàng trường số.

Các khả năng của thuật toán này đã được tính đến khi trao đổi khóa Diffie-Hellman được thiết kế. Đến năm 1992, người ta biết rằng đối với một nhóm nhất định, G, ba trong số bốn bước liên quan đến thuật toán có khả năng có thể được tính toán trước. Nếu tiến trình này được lưu, bước cuối cùng có thể được tính trong thời gian tương đối ngắn.

Điều này cũng không liên quan cho đến khi nhận ra rằng một phần đáng kể lưu lượng truy cập internet sử dụng cùng các nhóm có 1024 bit hoặc nhỏ hơn. Vào năm 2015, một nhóm học thuật đã thực hiện các tính toán cho số nguyên tố 512 bit phổ biến nhất được sử dụng bởi trao đổi khóa Diffie-Hellman trong TLS.

Họ cũng có thể hạ cấp 80% máy chủ TLS hỗ trợ DHE-XUẤT, để họ chấp nhận trao đổi khóa Diffie-Hellman cấp 512 bit cho kết nối. Điều này có nghĩa rằng mỗi máy chủ này dễ bị tấn công từ một kẻ thù có nguồn lực tốt.

Các nhà nghiên cứu tiếp tục ngoại suy kết quả của họ, ước tính rằng một quốc gia có thể phá vỡ một nguyên tố 1024 bit. Bằng cách phá vỡ số nguyên tố 1024 bit được sử dụng phổ biến nhất, nhóm học thuật ước tính rằng một kẻ thù có thể giám sát 18% trong số một triệu trang web HTTPS phổ biến nhất.

Họ tiếp tục nói rằng một nguyên tố thứ hai sẽ cho phép đối thủ giải mã các kết nối của 66% máy chủ VPN và 26% máy chủ SSH. Sau đó trong báo cáo, các học giả cho rằng NSA có thể đã có những khả năng này.

Một bài đọc gần đây về các rò rỉ NSA được công bố cho thấy rằng các cuộc tấn công của cơ quan vào các VPN phù hợp với việc đạt được một sự phá vỡ như vậy.

Mặc dù có lỗ hổng này, trao đổi khóa Diffie-Hellman vẫn có thể được bảo mật nếu được thực hiện đúng. Miễn là khóa 2048 bit được sử dụng, cuộc tấn công Logjam sẽ không hoạt động. Các trình duyệt cập nhật cũng được bảo mật từ cuộc tấn công này.

Trao đổi khóa Diffie-Hellman có an toàn không?

Mặc dù trao đổi khóa Diffie-Hellman có vẻ phức tạp, nhưng đây là một phần cơ bản của việc trao đổi dữ liệu trực tuyến một cách an toàn. Miễn là nó được triển khai cùng với một phương thức xác thực phù hợp và các số đã được chọn đúng, nó không bị coi là dễ bị tấn công.

Trao đổi khóa Diffie-Hellman là một phương pháp sáng tạo để giúp hai bên chưa biết liên lạc an toàn khi nó được phát triển vào những năm 1970. Trong khi chúng tôi hiện đang triển khai các phiên bản mới hơn với các phím lớn hơn để bảo vệ chống lại công nghệ hiện đại bản thân giao thức có vẻ như sẽ tiếp tục được bảo mật cho đến khi máy tính lượng tử xuất hiện và các cuộc tấn công tiên tiến sẽ đi kèm với nó.

Công nghệ kinh doanh an ninh mạng bởi TheDigitalArtist được cấp phép theo Muff