Trao đổi khóa mật mã

Jan 01 2023
Trước đây chúng ta đã thảo luận về sự khác biệt giữa mã hóa đối xứng và bất đối xứng, và hôm nay chúng ta sẽ nói về cách các khóa thực sự được trao đổi. Nói chung, các giao thức trao đổi khóa mật mã hoặc trao đổi khóa mã hóa (EKE) hoạt động bằng cách cho phép hai bên tạo bí mật chung mà không tiết lộ bí mật cho bất kỳ bên thứ ba nào.

Trước đây chúng ta đã thảo luận về sự khác biệt giữa mã hóa đối xứng và bất đối xứng, và hôm nay chúng ta sẽ nói về cách các khóa thực sự được trao đổi.

Nói chung, các giao thức trao đổi khóa mật mã hoặc trao đổi khóa mã hóa (EKE) hoạt động bằng cách cho phép hai bên tạo bí mật chung mà không tiết lộ bí mật cho bất kỳ bên thứ ba nào. Điều này thường được thực hiện bằng cách sử dụng kết hợp mật mã khóa công khai và thuật toán toán học. Sau đó, bí mật được chia sẻ có thể được sử dụng làm khóa cho mật mã đối xứng, cho phép hai bên giao tiếp an toàn.

Cách sử dụng

Vì phương pháp sử dụng khóa chung, nên đương nhiên nó chỉ áp dụng cho mã hóa bất đối xứng, vì trong mã hóa đối xứng, các khóa không được chia sẻ - đã biết và thỏa thuận trước.

Trao đổi khóa mật mã là một phương pháp trao đổi khóa mật mã an toàn qua mạng. Đó là một khía cạnh cơ bản của nhiều giao thức mật mã, vì nó cho phép hai bên thiết lập một bí mật chung có thể được sử dụng để liên lạc với nhau một cách an toàn.

Trao đổi được sử dụng trong nhiều ứng dụng, bao gồm liên lạc an toàn, giao dịch trực tuyến an toàn và kiểm soát truy cập. Nó thường được sử dụng để thiết lập kết nối an toàn giữa hai bên, chẳng hạn như máy khách và máy chủ hoặc giữa hai thiết bị. Vì vậy, trước khi có thể gửi bất kỳ tệp nào một cách an toàn qua các giao thức như FTPS, HTTPS và SFTP, hai bên liên lạc trước tiên phải tham gia trao đổi khóa.

Tổng quan

Ở dạng EKE chung nhất, ít nhất một bên mã hóa khóa công khai tạm thời (một lần) bằng mật khẩu và gửi nó cho bên thứ hai, bên này giải mã và sử dụng nó để thương lượng khóa dùng chung với bên thứ nhất.

Một biến thể khác của sơ đồ này tồn tại, được gọi là Augmented-EKE. Các phương pháp tăng cường có thêm mục tiêu là đảm bảo rằng dữ liệu xác minh mật khẩu bị đánh cắp từ máy chủ không thể bị kẻ tấn công sử dụng để giả dạng máy khách, trừ khi kẻ tấn công xác định mật khẩu trước (ví dụ: bằng cách thực hiện tấn công vũ phu vào dữ liệu bị đánh cắp).

Hai thuật toán trao đổi khóa phổ biến nhất là RSA và Diffie-Hellman (nay là Diffie-Helmlman-Merkle). Có lẽ sẽ không quá lời khi nói rằng sự ra đời của hai giao thức trao đổi khóa này đã thúc đẩy sự phát triển của Internet, đặc biệt là trong lĩnh vực kinh doanh. Đó là bởi vì hai giao thức này cho phép máy khách và máy chủ, cũng như máy chủ và máy chủ, trao đổi các khóa mật mã qua một phương tiện không an toàn (Internet) và đến lượt chúng, cho phép chúng giao dịch điện tử một cách an toàn.

Gần đây, sự xuất hiện của mật mã đường cong elliptic đã giới thiệu các giao thức trao đổi mới như ECDH (Elliptic Curve Diffie-Hellman) và ECDHE (Elliptic Curve Diffie-Hellman Ephemeral).

Chúng ta sẽ tập trung vào dòng Diffie-Hellman, được gọi là DH-EKE, đã tồn tại qua nhiều cuộc tấn công trong nhiều năm và dẫn đến các biến thể cải tiến.

Diffie-Hellman

Năm 1976, Whitfield Diffie và Martin Hellman công bố một giao thức mật mã gọi là trao đổi khóa Diffie–Hellman (D–H) dựa trên các khái niệm do nghiên cứu sinh tiến sĩ của Hellman là Ralph Merkle phát triển. Giao thức cho phép người dùng trao đổi khóa bí mật một cách an toàn ngay cả khi đối thủ đang theo dõi kênh liên lạc đó. Nó dựa trên ý tưởng sử dụng phép lũy thừa trong một trường hữu hạn để tạo ra một bí mật chung có thể được sử dụng để mã hóa và giải mã các tin nhắn.

Dưới đây là một ví dụ về quy trình trao đổi khóa Diffie-Hellman và như được minh họa trong sơ đồ bên dưới:

Alice và Bob đồng ý về một trường hữu hạn và một số nguyên tố trong trường đó (điều này được gọi là “mô đun”). Giả sử họ chọn trường hữu hạn GF(23), p và số nguyên tố 5, g .

  1. Alice chọn một số nguyên bí mật, “a”, và Bob chọn một số nguyên bí mật, “b”. Những số nguyên này sẽ được sử dụng để tạo bí mật chung.
  2. Alice tính A = 5^a mod 23 và gửi A cho Bob. Bob tính B = 5^b mod 23 và gửi B cho Alice.
  3. Alice tính toán bí mật được chia sẻ bằng cách thực hiện phép tính sau: sharedSecret = B^a mod 23. Bob tính toán bí mật được chia sẻ bằng phép tính tương tự: sharedSecret = A^b mod 23.
  4. Cả Alice và Bob giờ đây đều có bí mật chung mà họ có thể sử dụng làm chìa khóa để mã hóa và giải mã tin nhắn.

# Alice's side of thNote that in this example, the shared secret is the same for both Alice and Bob, even though they used different secret integers to generate it. This is because the shared secret is generated using a mathematical function that is commutative, meaning that the order of the operands does not affect the result. This property is what allows Alice and Bob to establish a shared secret without revealing their secret integers to each other.e key exchange

# Choose finite field and prime number
field = GF(23)
prime = 5

# Choose secret integer
secretA = 6

# Compute A and send to Bob
A = (prime ^ secretA) mod field
send A to Bob

# Receive B from Bob
B = receive from Bob

# Compute shared secret
sharedSecret = (B ^ secretA) mod field

# Bob's side of the key exchange

# Choose secret integer
secretB = 15

# Compute B and send to Alice
B = (prime ^ secretB) mod field
send B to Alice

# Receive A from Alice
A = receive from Alice

# Compute shared secret
sharedSecret = (A ^ secretB) mod field

Thuộc tính này cho phép Alice và Bob thiết lập một bí mật chung mà không tiết lộ số nguyên bí mật của họ cho nhau.

Lý do tại sao trao đổi DH hoạt động, là mật mã logarit rời rạc, dựa trên độ khó giải quyết vấn đề logarit rời rạc.

Tóm lại, đây là một bài toán liên quan đến việc tìm số nguyên “x” trong phương trình “g^x = y mod p”, trong đó “g” và “y” đã biết và “p” là một số nguyên tố. Vấn đề này được coi là khó giải vì không có thuật toán hiệu quả đã biết để tìm giá trị của “x” cho các giá trị tùy ý của “g”, “y” và “p”.

Nhìn chung, trong khi Diffie-Hellman là một giao thức trao đổi khóa hiệu quả và được sử dụng rộng rãi, tuy nhiên, có một số hạn chế thực tế, điều này làm cho Elliptic Curve Diffie-Hellman (ECDH) trở thành một lựa chọn thích hợp hơn, nếu có thể.

Đường cong elip Diffie-Hellman (ECDH)

Đường cong elip Diffie-Hellman (ECDH) là một biến thể của giao thức trao đổi khóa Diffie-Hellman sử dụng mật mã đường cong elip thay vì lũy thừa truyền thống trong một trường hữu hạn. ECDH có một số ưu điểm so với Diffie-Hellman thông thường:

  1. ECDH hiệu quả hơn: Các phép toán trên đường cong elip thường nhanh hơn và yêu cầu ít sức mạnh tính toán hơn so với các phép toán trong trường hữu hạn, khiến ECDH hiệu quả hơn so với Diffie-Hellman thông thường. Đọc thêm về cách thức hoạt động và ưu điểm của nó trong bài viết trước .
  2. ECDH an toàn hơn: Mật mã đường cong elip thường được coi là an toàn hơn mật mã trường hữu hạn, vì nó có khả năng chống lại các loại tấn công nhất định cao hơn.
  3. Khóa ECDH ngắn hơn: Vì các thao tác trên đường cong elip sử dụng số lượng nhỏ hơn nên khóa ECDH thường ngắn hơn so với khóa Diffie-Hellman thông thường, giúp chúng dễ dàng truyền và lưu trữ hơn.
  4. ECDH có kích thước khóa nhỏ hơn: Do hoạt động của đường cong elip hiệu quả và an toàn hơn nên ECDH có thể đạt được mức độ bảo mật tương tự như Diffie-Hellman thông thường với kích thước khóa nhỏ hơn. Điều này có thể đặc biệt hữu ích trong các ứng dụng mà kích thước khóa là yếu tố hạn chế, chẳng hạn như trong một số loại thiết bị phần cứng.

Đường cong elip Diffie-Hellman phù du (ECDHE)

Elliptic Curve Diffie-Hellman Ephemeral (ECDHE) là một biến thể của Elliptic Curve Diffie-Hellman (ECDH), sử dụng các khóa phù du.

Trong ECDHE, mỗi bên tạo một cặp khóa mới, tồn tại trong thời gian ngắn cho mỗi phiên, thay vì sử dụng cặp khóa tĩnh tồn tại lâu dài như trong ECDH. Điều này có một số lợi thế:

  1. Cải thiện bảo mật: Vì ECDHE sử dụng các khóa tạm thời chỉ được sử dụng cho một phiên duy nhất nên nó có khả năng chống lại một số loại tấn công nhất định, chẳng hạn như tấn công lặp lại, trong đó kẻ tấn công chiếm được và sử dụng lại khóa từ phiên trước đó.
  2. Chuyển tiếp bí mật: Trong ECDHE, bí mật được chia sẻ được lấy từ các khóa tạm thời, các khóa này sẽ bị loại bỏ sau phiên. Điều này có nghĩa là ngay cả khi kẻ tấn công có được một bản sao của các khóa tạm thời, chúng sẽ không thể giải mã thông tin liên lạc trong quá khứ vì bí mật được chia sẻ không còn được biết nữa.
  3. Quản lý khóa đơn giản hóa: Trong ECDHE, mỗi bên tạo một cặp khóa mới cho mỗi phiên, thay vì quản lý một cặp khóa tĩnh tồn tại lâu dài. Điều này có thể đơn giản hóa việc quản lý khóa và giảm nguy cơ thỏa hiệp khóa.