+1

[Cryptography p10] Trao đổi khóa an toàn với ECDH

Bài viết được lấy từ https://truongphuoc.wordpress.com/2024/07/31/blockchain-20-2-trao-doi-khoa-an-toan-voi-ecdh/

Lời dẫn

Về việc trao đổi khóa an toàn, trong bài trước mình đã đi qua về Diffie-Hellman. Đó là một cách trao đổi khóa dựa trên bài toán khó là logarit rời rạc. Trong bài toán này chúng ta cùng tìm hiểu một cách trao đổi khóa khác để có một cái nhìn toàn diện hơn nhé.

Bài viết này sử dụng kiến thức của bài hệ mật Elliptic curve, nếu bạn chưa đọc bài đó hay chưa hiểu thì xin hãy đọc nha.

Tính chất của phép nhân trong đường cong Elliptic

Trong đường cong Elliptic, phép nhân chính là phép nhân vô hướng của một số với một điểm, nó có tính chất sau:

Trên đường cong Elliptic, cho hai số nguyên m,nm, n và một điểm GG, ta có

m(nG)=(mn)G=(nm)G=n(mG)m*(n*G) = (m*n)*G = (n*m)*G = n*(m*G)

Giống tính chất giao hoán và kết hợp trong phép nhân phải không nào? Chính nó đó (người ta phải chứng minh đường cong Elliptic có tính chất trên thì mới nói là phép nhân đó).

Elliptic-curve Diffie--Hellman (ECDH)

Thuật toán

Cho đường cong Ep(x1,x2)E_p(x_1, x_2), một điểm cho trước nằm trên đường cong GG, ta gọi GG là điểm sinh.

  1. Chọn khóa
    • An chọn một khóa bí mật của mình là a
    • Bình chọn một khóa bí mật của mình là b
  2. Trao đổi khóa
    • An tính A=aGA = a*G gửi cho Bình
    • Bình tính B=bGB = b*G gửi cho An
  3. Tính toán khóa
    • An tính s1=aB=a(bG)s_1 = a*B = a*(b*G)
    • Bình tính s2=bA=b(aG)s_2 = b*A = b*(a*G)
  4. Như đã nêu ở trên thì a(bG)=b(aG)a*(b*G) = b*(a*G) suy ra s1 = s2 = ss_1 = s_2 = s. Đo đó An và Bình cùng chia sẻ một bí mật chung là ss.
  5. Do bài toán khó là không có phép chia trong đường cong Elliptic, nên người thứ ba là Công rất khó tìm ra
    • aa khi biết aGa*G
    • bb khi biết bGb*G

Sau khi đã chia sẻ khóa bí mật chung, An và Bình có thể sử dụng nó để tính toán key cho một thuật toán mã hóa, ví dụ AES.

Nếu bạn chịu khó đọc bài những kiến thức cơ bản cần thiết trong mật mã học và hệ mật Elliptic curve thì phỏng cũng không khó lắm phải không. Nếu chưa thì các bạn tìm lại đọc nha. Tiếp theo hãy cùng đến một ví dụ cụ thể nào.

Ví dụ

Lý thuyết thì tốt rồi, giờ đến phần ví dụ để thực hành nha. Ta lại chọn đường cong E23(1,1)E_{23}(1, 1), điểm sinh G=(3,10)G = (3,10). An và Bình trao đổi khóa như sau:

  1. Chọn khóa
    • An chọn một khóa bí mật của mình là 33
    • Bình chọn một khóa bí mật của mình là 55
  2. Trao đổi khóa
    • An tính A=3(3,10)=(19,5)A = 3*(3,10) = (19, 5) gửi cho Bình
    • Bình tính B=5(3,10)=(9,16)B = 5*(3,10) = (9,16) gửi cho An
  3. Tính toán khóa
    • An tính s1=aB=3(9,16)=(1,16)s_1 = a*B = 3*(9,16) = (1,16)
    • Bình tính s2=bA=5(19,5)=(1,16)s_2 = b*A = 5*(19,5) = (1,16)

Như vậy An và Bình đã chia sẻ khóa bí mật chung là (1,16)(1,16) rồi phải không nào. Quá là đơn giản.

Bạn có thể tính nhân ở đây

Ưu, nhược điểm của ECHD

Ưu

  • Bảo mật: Sử dụng cơ sở là đường cong Elliptic nên rất bảo mật.
  • Nhanh: Khóa rất ngắn, chỉ là một điểm, nên dữ liệu truyền đi ít hơn suy ra nhanh hơn

Nhược

  • Có thể bị tấn công man-in-the-middle

ECHD vs HD

1. Bảo mật

  • ECDH:
    • Cơ sở toán học: Sử dụng bài toán logarit rời rạc trên đường cong elliptic.
    • Độ dài khóa: Cung cấp bảo mật tương đương với khóa ngắn hơn. Ví dụ, khóa ECC 256-bit tương đương với khóa RSA 3072-bit và khóa DH 3072-bit.
    • Khả năng chống tấn công lượng tử: Hiện tại được cho là khó hơn để phá vỡ so với các thuật toán dựa trên số nguyên lớn như RSA và HD.
  • HD (Diffie-Hellman truyền thống):
    • Cơ sở toán học: Sử dụng bài toán logarit rời rạc trong nhóm số nguyên lớn.
    • Độ dài khóa: Yêu cầu khóa dài hơn để đạt mức độ bảo mật tương đương. Ví dụ, khóa 3072-bit để đạt mức độ bảo mật tương đương với khóa ECC 256-bit.
    • Khả năng chống tấn công lượng tử: Dễ bị tấn công bởi các máy tính lượng tử (tấn công Shor's algorithm).

2. Hiệu suất

  • ECDH:
    • Hiệu quả tính toán: Do sử dụng khóa ngắn hơn, các phép toán trên đường cong elliptic thường nhanh hơn và tốn ít tài nguyên hơn.
    • Yêu cầu tài nguyên: Thích hợp cho các thiết bị có tài nguyên hạn chế như thiết bị di động, IoT.
  • HD (Diffie-Hellman truyền thống):
    • Hiệu quả tính toán: Với khóa dài hơn, các phép toán chậm hơn và yêu cầu nhiều tài nguyên hơn.
    • Yêu cầu tài nguyên: Ít thích hợp hơn cho các thiết bị có tài nguyên hạn chế.

3. Độ phức tạp

  • ECDH:
    • Phức tạp hơn về toán học: Đường cong elliptic và các phép toán liên quan phức tạp hơn so với các thuật toán dựa trên số nguyên lớn.
    • Khả năng triển khai: Đòi hỏi kiến thức chuyên môn cao hơn và dễ mắc phải lỗi nếu không được triển khai đúng cách.
  • HD (Diffie-Hellman truyền thống):
    • Đơn giản hơn về toán học: Sử dụng các phép toán dễ hiểu và triển khai hơn.
    • Khả năng triển khai: Ít đòi hỏi kiến thức chuyên môn sâu rộng, dễ triển khai hơn.

4. Ứng dụng

  • ECDH:
    • Ứng dụng hiện đại: Được sử dụng rộng rãi trong các giao thức bảo mật hiện đại như TLS, SSH, và các hệ thống mã hóa trên thiết bị di động.
    • Tiêu chuẩn: Đã được chuẩn hóa và chấp nhận rộng rãi.
  • HD (Diffie-Hellman truyền thống):
    • Ứng dụng truyền thống: Vẫn được sử dụng trong nhiều giao thức bảo mật, nhưng đang dần bị thay thế bởi ECDH trong các ứng dụng đòi hỏi hiệu suất cao hơn.
    • Tiêu chuẩn: Đã được chuẩn hóa và sử dụng rộng rãi từ trước đến nay.

Kết luận

Thế là ta đã đi qua về DH và ECDH rồi, cũng đơn giản dễ hiểu phải không nào. Mình xin nhắc lại nếu bạn thấy khó hiểu hay chưa biết về cơ sở toán học, mình khuyên các bạn nên đọc lại từ bài hệ mật bất đối xứng để có cái nhìn toàn diện, tổng quan và đi sâu vào từng bài toán nhé. Đến bài này nó đơn giản tại vì mình đã đi qua những phần khó khăn rồi 🤣

Link bài viết gốc https://truongphuoc.wordpress.com/2024/07/31/blockchain-20-2-trao-doi-khoa-an-toan-voi-ecdh/


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí