Diffie-Hellman Algorithm là gì? Thuật toán trao đổi khóa Diffie-Hellman

Diffie-Hellman Algorithm là gì Thuật toán trao đổi khóa Diffie-Hellman

Thuật toán trao đổi khóa Diffie – Hellman (DH) là gì?

Thuật toán Diffie – Hellman (DH: Diffie–Hellman Algorithm) là một giao thức trao đổi khóa cho phép hai bên giao tiếp qua kênh công khai để thiết lập bí mật chung mà không cần truyền qua Internet. Diffie–Hellman Algorithm cho phép cả hai sử dụng khóa công khai để mã hóa và giải mã cuộc trò chuyện hoặc dữ liệu của họ bằng mật mã đối xứng (symmetric cryptography).

Diffie – Hellman thường được giải thích bởi hai bên mẫu, Alice và Bob, bắt đầu một cuộc đối thoại. Mỗi người có một phần thông tin mà họ muốn chia sẻ, đồng thời giữ bí mật của nó. Để làm điều đó, họ đồng ý về một phần thông tin lành tính công khai sẽ được trộn lẫn với thông tin đặc quyền của họ khi nó truyền qua một kênh không an toàn. Bí mật của họ được trộn lẫn với thông tin công khai, hoặc khóa công khai, và khi các bí mật được trao đổi, thông tin họ muốn chia sẻ sẽ đi kèm với bí mật chung.

Khi họ giải mã thông điệp của người kia, họ có thể trích xuất thông tin công khai và với kiến ​​thức về bí mật của riêng họ, suy ra thông tin mới được mang theo. Mặc dù có vẻ không phức tạp trong mô tả của phương pháp này, nhưng khi các chuỗi số dài được sử dụng cho các khóa riêng tư và khóa công khai,

DH là một trong những triển khai thực tế đầu tiên của mật mã khóa công khai (PKC – public-key cryptography). Nó được xuất bản vào năm 1976 bởi Whitfield Diffie và Martin Hellman. Những người đóng góp khác được ghi nhận trong việc phát triển Diffie – Hellman Algorithm bao gồm Ralph Merkle và các nhà nghiên cứu trong các cơ quan tình báo của Vương quốc Anh (khoảng năm 1969).

  Stochastic RSI (StochRSI) là gì? Cách hoạt động của Stochastic RSI

Thuật toán trao đổi khóa Diffie Hellman để tạo khóa (Key)

Thuật toán dựa trên Elliptic Curve Cryptography (ECC), một phương pháp thực hiện mật mã khóa công khai dựa trên cấu trúc đại số của các đường cong elliptic trên các trường hữu hạn. Trao đổi khóa Diffie Hellmancũng sử dụng chức năng cửa sập (trapdoor), giống như nhiều cách khác để thực hiện mật mã khóa công khai (public-key cryptography: PKC).

Ý tưởng đơn giản để hiểu về Thuật toán trao đổi khóa Diffie Hellman là như sau.

  1. Bên thứ nhất chọn hai số nguyên tố, gp và nói chúng cho bên thứ hai.
  2. Bên thứ hai sau đó chọn một số bí mật (chúng ta hãy gọi nó là a), và sau đó nó tính ga mod p và gửi kết quả trở lại bên thứ nhất; Chúng ta hãy gọi kết quả là A. Hãy nhớ rằng số bí mật không được gửi cho bất kỳ ai, chỉ có kết quả.
  3. Sau đó, bên thứ nhất cũng làm như vậy; nó chọn một số bí mật b và tính toán kết quả tương tự như B.
  4. Sau đó, kết quả này được gửi cho bên thứ hai.
  5. Bên thứ hai lấy số B nhận được và tính Ba mod p
  6. Bên thứ nhất lấy số A nhận được và tính Ab mod p

Lưu ý: mod là Phép toán modulo hay còn gọi là phép tính chia có dư.

Đây là nơi mà nó sẽ thú vị; câu trả lời ở bước 5 giống với câu trả lời ở bước 4. Điều này có nghĩa là cả hai bên sẽ nhận được cùng một câu trả lời bất kể thứ tự lũy thừa.

(ga mod p)b mod p = gab mod p
(gb mod p)a mod p = gba mod p

Số chúng tôi đến trong bước 4 và 5 sẽ được lấy làm khóa bí mật được chia sẻ. Khóa này có thể được sử dụng để thực hiện bất kỳ mã hóa dữ liệu nào sẽ được truyền đi, chẳng hạn như blowfish, AES , v.v.

  MetaGear trò chơi NFT rất được mong đợi sắp được mainnet để chơi

Thuật toán trao đổi khóa Diffie Hellman

  1. key = (YA)XB mod q -> điều này giống như tính toán của B
  1. Các yếu tố công cộng toàn cầu
  • q: q là số nguyên tố
  • a: a <q α là căn nguyên của q
  1. Tạo khóa cho người dùng A
  • Chọn một Khóa riêng XA Tại đây, XA <q
  • Bây giờ, Tính toán khóa công khai YA Tại đây, YA = aXA mod q
  1. Tạo khóa cho người dùng B
  • Chọn một Khóa riêng XB Tại đây, XB <q
  • Bây giờ, Tính toán khóa công khai YB Tại đây, YB = aXB mod q
  1. Tính toán khóa bí mật theo A
  • Key = (YB)XA mod q
  1. Tính toán khóa bí mật theo B
  • key =(YA)XB mod q

Ví dụ

  1. Alice và Bob đều sử dụng số công khai P = 23, G = 5
  2. Alice đã chọn khóa cá nhân a = 4 và Bob chọn b = 3 làm khóa cá nhân
  3. Cả Alice và Bob bây giờ tính giá trị của x và y như sau:
  • Alice:    x = (54 mod 23) = 4
  • Bob:    y = (53 mod 23) = 10
  1. Bây giờ, cả Alice và Bob đều trao đổi số công khai với nhau.
  2. Alice và Bob bây giờ tính toán các khóa đối xứng
  • Alice: ka = ya mod p = 104 mod 23 = 18
  • Bob: kb = xb mod p = 43 mod 23 = 18
  1. 18 là khóa bí mật dùng chung.

Sử dụng thuật toán Diffie Hellman

Ngoài việc sử dụng thuật toán tạo khóa công khai, có một số nơi khác có thể sử dụng Thuật toán Diffie Hellman:

  • Mã hóa (Encryption): Thuật toán trao đổi khóa Diffie Hellman có thể được sử dụng để mã hóa; một trong những kế hoạch đầu tiên cần làm là mã hóa ElGamal. Một ví dụ hiện đại về nó được gọi là Lược đồ mã hóa tích hợp (IES: Integrated Encryption Scheme), cung cấp bảo mật chống lại các cuộc tấn công văn bản thuần túy và khay nhớ tạm được chọn.
  • Thỏa thuận xác thực bằng mật khẩu (Password Authenticated Agreement): Khi hai bên chia sẻ mật khẩu, thỏa thuận khóa xác thực bằng mật khẩu có thể được sử dụng để ngăn chặn cuộc tấn công trung gian (Man in the middle attack). Thỏa thuận quan trọng này có thể ở dạng Diffie-Hellman. Giao thức mật khẩu từ xa an toàn (SRPP: Secure Remote Password Protocol) là một ví dụ điển hình dựa trên kỹ thuật này.
  • Chuyển tiếp bí mật (Forward Secrecy): Các giao thức dựa trên bí mật chuyển tiếp có thể tạo các cặp khóa mới cho mỗi phiên mới và chúng có thể tự động loại bỏ chúng khi phiên kết thúc. Trong các giao thức Secrecychuyển tiếp này, thường xuyên, trao đổi khóa Diffie Hellman được sử dụng.
  Zero-day Attack là gì? Tìm hiểu tấn công lỗ hổng Zero-day

Ưu điểm của Thuật toán trao đổi khóa Diffie Hellman

  • Người gửi và người nhận không cần biết trước về nhau.
  • Sau khi các khóa được trao đổi, việc truyền dữ liệu có thể được thực hiện thông qua một kênh không an toàn.
  • Việc chia sẻ khóa bí mật là an toàn.

Nhược điểm của Thuật toán trao đổi khóa Diffie Hellman

  • Thuật toán không thể bị kiện vì bất kỳ trao đổi khóa bất đối xứng nào.
  • Tương tự, nó không thể được sử dụng để ký chữ ký điện tử.
  • Vì nó không xác thực bất kỳ bên nào trong quá trình truyền, trao đổi khóa Diffie Hellman dễ bị tấn công giữa các bên.

Sự kết luận

Trao đổi khóa Diffie Hellman đã được chứng minh là một hệ thống trao đổi khóa hữu ích do những ưu điểm của nó. Mặc dù rất khó để ai đó rình mò mạng để giải mã dữ liệu và lấy chìa khóa, nhưng vẫn có thể xảy ra nếu các con số được tạo ra không hoàn toàn ngẫu nhiên.

Ngoài ra, hệ thống trao đổi chìa khóa có thể bị thực hiện một cuộc tấn công ở giữa; Để tránh điều đó, cả hai bên nên hết sức cẩn thận khi bắt đầu trao đổi.

Theo: educba

Khuyến cáo: Thông tin trên bài viết này chỉ mang tính tham khảo, không có bất kỳ lời khuyên nào về mua bán, đầu tư. Bạn hãy tự nghiên cứu trước khi thực hiện bất kỳ hình thức đầu tư nào.

Nội dung đề xuất