Back to Home

Diffie-Hellman Key Exchange - Giao thức trao đổi khóa

Diffie-Hellman Key Exchange là một thuật toán trao đổi khóa mật mã, giúp hai bên (Alice Bob) chia sẻ một khóa bí mật chung qua kênh không an toàn mà không cần truyền trực tiếp khóa này.

Trong thực tế, khi trao đổi thông tin trên internet, chúng ta luôn phải bảo mật thông tin để tránh bị nghe lén hoặc nhìn trộm bằng cách mã hóa thông tin truyền tải trước khi gửi. Bên đầu nhận sẽ giải mã thông tin và đọc lại bản gốc. Nhưng một khi đầu gửi mã hóa thì đầu nhận phải có chìa khóa để giải mã. Giả sử như đầu nhận và đầu gửi không có cách nào để gặp trực tiếp nhau và thiết lập trao đổi khóa. Như vậy, làm cách nào họ có thể vẫn trao đổi chìa khóa thông qua internet?

Xin mượn một bức hình từ wiki để dễ liên tưởng về giải thuật này

Alice và Bob cùng công khai đồng thuật dùng màu vàng là màu chung. Alice có màu bí mật là màu đỏ, Bob có màu bí mật là màu xanh lá cây. Cả hai tự pha chế màu bí mật của mình bằng cách lấy màu dùng chung pha với màu bí mật của mình và gửi kết quả cho nhau. Alice gửi màu cam cho Bob và Bob gửi màu xanh da trời cho Alice. Sau khi nhận được màu của nhau, tiếp tục dùng màu bí mật của mình để pha chung với màu nhận được. Cuối cùng, cả Alice vào Bob đều có màu bí mật đồng thuận là màu nâu=vàng+đỏ+xanh lá cây. Với giả định là màu đã pha trộn sẽ không thể bị tách ra thành màu thành phần, rõ ràng, kẻ nghe lén chỉ có thể biết màu vàng (công khai), màu cam (khi Alice gửi cho Bob) và màu xanh dương (khi Bob gửi Alice). Kẻ tấn công không thể biết các màu bí mật là gì (kể cả đối phương cũng không biết màu bí mật riêng của nhau).

Dựa vào mô tả trên, Whitfield DiffieMartin Hellman đưa ra thuật toán trao đổi khóa vào năm 1976. Thuật này trở thành đồ được áp dụng trên nhiều cấu trúc đại số khác nhau.

Diffie-Hellman trên trường số nguyên tố

Thỏa thuận chung:

  • Trường số nguyên tố Fp\mathbb F_p

  • Phần tử sinh generator gg của nhóm nhân modulo pp

Quá trình trao đổi khóa giữa Alice và Bob:

  • Alice chọn số ngẫu nhiên bí mật 1ap11 \le a \le p-1, tính x=gamodpx = g^a \mod p

  • Bobchọn số ngẫu nhiên bí mật 1bp11 \le b \le p-1, tính y=gbmodpy=g^b \mod p

  • Alice gửi xx cho Bob

  • Bob gửi yy cho Alice

  • Alice nhận được yy, tính bí mật chung k=ya=(gb)a=gab(modp)k = y^a=(g^b)^a = g^{ab} \quad (\mod p)

  • Bob nhận được xx, tính bí mật chung k=xb=(ga)b=gab(modp)k = x^b=(g^a)^b = g^{ab} \quad (\mod p)

Diffie-Hellman trên đường cong elliptic

Elliptic Curve Diffie-Hellman (ECDH) là một phiên bản của giao thức Diffie-Hellman (DH) truyền thống, sử dụng toán học trên đường cong elliptic thay vì trên trường số nguyên tố vì một số lợi ích:

  • Độ an toàn cao hơn: Với cùng độ dài khóa, ECDH cung cấp độ an toàn cao hơn so với Diffie-Hellman truyền thống.

  • Hiệu suất tốt hơn: Yêu cầu ít tài nguyên tính toán hơn, giúp giảm tải cho CPU và tiết kiệm năng lượng.

  • Khóa ngắn hơn: ECDH có thể đạt được độ an toàn tương đương với khóa dài hơn trong Diffie-Hellman

Thỏa thuận chung:

  • Phương trình đường cong elliptic được định nghĩa trên trường hữu hạn Fp\mathbb F_p

  • Điểm sinh GG với bậc nn: nG=OnG = O

Quá trình trao đổi khóa giữa Alice và Bob:

  • Alice chọn số ngẫu nhiên bí mật 1ap11 \le a \le p-1, tính điểm A=aGA = aG

  • Bob chọn số ngẫu nhiên bí mật 1bp11 \le b \le p-1, tính điểm B=bGB=bG

  • Alice gửi AA cho Bob

  • Bob gửi BB cho Alice

  • Alice nhận được BB, tính bí mật chung K=aB=a(bG)=abGK = aB=a(bG)=abG

  • Bob nhận được AA, tính bí mật chung K=bA=b(aG)=abGK=bA=b(aG)=abG

Demo

Comments

0/300

Leave name/email blank to comment anonymously

No comments yet. Be the first to comment!