- vừa được xem lúc

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

0 0 7

Người đăng: Hoàng Trường Phước

Theo Viblo Asia

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/

Bình luận

Bài viết tương tự

- vừa được xem lúc

Mật mã học: Phần 1 - Mã hóa Caesar

Khái niệm mã hóa dữ liệu và giải mã. Mã hóa dữ liệu là tiến trình che dấu dữ liệu thật (plaintext), nghĩa là chuyển dữ liệu thật thành dữ liệu không có ý nghĩa hoặc có ý nghĩa khác xa với dữ liệu thật

0 0 54

- vừa được xem lúc

Thực hành mã hóa và giải mã thuật toán Simplified AES

Tương tự bài viết trước về thuật toán Simplified DES, mình sẽ không thảo luận về lý thuyết của tiêu chuẩn mã hóa dữ liệu Advanced Encryption Standard - AES, hay cụ thể là Simplified AES. Thay vào đó,

0 0 175

- vừa được xem lúc

Hệ mã hóa RSA và chữ ký số

Bài viết gốc: https://manhhomienbienthuy.bitbucket.io/2017/Feb/20/rsa-cryptosystem-and-digital-signature.html (đã xin phép tác giả ).

0 0 66

- vừa được xem lúc

Thực hành mã hóa và giải mã thuật toán Simplified DES

Ở bài viết này, mình sẽ không thảo luận về lý thuyết của tiêu chuẩn mã hóa dữ liệu (Data Encryption Standard - DES), hay cụ thể là Simplified DES. Thay vào đó, mình sẽ thực hành mã hóa bằng tay từng b

0 0 160

- vừa được xem lúc

Thuật toán mã hoá khối và một số trường hợp tấn công trong CTF (Phần 1)

Mã hoá luôn là một trong những biện pháp hiệu quả nhất trong việc đảm bảo tính bí mật của thông tin. Các thuật toán mã hoá được ứng dụng rộng rãi, tồn tại trong nhiều sản phẩm công nghệ.

0 0 24

- vừa được xem lúc

Mã hoá thay thế liệu đã hết thời?

Từ xưa rất xưa ấy, theo sự phát triển của văn hoá và tri thức thì tư duy của con người cũng ngày càng phức tạp hơn. Nhưng trong một xã hội nơi có rất nhiều người, rất nhiều nhóm người chung sống cùng

0 0 22