Fundamentals ·

secp256k1 vs ed25519: Các Đường Cong Elliptic Trong Tiền Mã Hóa


Mọi giao dịch tiền mã hóa đều yêu cầu chữ ký số --- một bằng chứng toán học rằng người gửi tiền thực sự kiểm soát tài khoản. Chữ ký đó được tạo bởi thuật toán dựa trên các thuộc tính của đường cong elliptic. Hai đường cong chiếm ưu thế trong thế giới blockchain là secp256k1ed25519. Chúng phục vụ cùng một mục đích cơ bản, nhưng thiết kế, đặc tính hiệu năng và lịch sử áp dụng rất khác nhau.

Hướng dẫn này giải thích đường cong elliptic làm gì trong mật mã, secp256k1 và ed25519 khác nhau thế nào, và những khác biệt đó có ý nghĩa gì cho việc tạo khóa, bảo mật ví và các blockchain bạn sử dụng.

Đường Cong Elliptic Là Gì?

Đường cong elliptic, trong ngữ cảnh mật mã, là cấu trúc toán học được định nghĩa bởi phương trình dạng y^2 = x^3 + ax + b (cho các đường cong như secp256k1) hoặc dạng liên quan (cho các đường cong như ed25519). Bảo mật của mật mã đường cong elliptic (ECC) dựa trên Bài Toán Logarithm Rời Rạc Đường Cong Elliptic (ECDLP): cho một điểm P trên đường cong và một điểm Q = k * P (trong đó k là số vô hướng và * là phép nhân điểm), việc xác định k từ P và Q là không khả thi về mặt tính toán.

Trong thuật ngữ tiền mã hóa:

  • kprivate key của bạn --- một số bí mật.
  • P là điểm sinh --- một điểm cố định, được biết công khai trên đường cong.
  • Qpublic key của bạn --- được phái sinh từ private key qua phép nhân điểm.

Bất kỳ ai cũng có thể xác minh Q khớp với k * P nếu họ biết cả Q và chữ ký được tạo bằng k, nhưng không ai có thể trích xuất k từ Q. Đây là lý do an toàn khi chia sẻ public key (và địa chỉ phái sinh từ nó) trong khi giữ private key bí mật.

ECC cung cấp bảo mật tương đương RSA với kích thước khóa nhỏ hơn nhiều. Khóa đường cong elliptic 256 bit cung cấp bảo mật tương đương khóa RSA 3.072 bit. Sự nhỏ gọn này rất quan trọng cho blockchain, nơi mỗi byte giao dịch tốn chi phí lưu trữ và băng thông.

secp256k1: Đường Cong Của Bitcoin và Ethereum

secp256k1 là đường cong elliptic được sử dụng bởi Bitcoin, Ethereum và hầu hết blockchain trong hệ sinh thái của chúng. Tên gọi được phân tách như sau:

  • sec --- Standards for Efficient Cryptography
  • p --- Đường cong được định nghĩa trên trường nguyên tố
  • 256 --- Số nguyên tố dài 256 bit
  • k --- Đây là đường cong Koblitz (một lớp cụ thể với lợi ích hiệu quả tính toán)
  • 1 --- Đây là đường cong đầu tiên (và duy nhất) thuộc loại này trong tiêu chuẩn

Phương trình đường cong là: y^2 = x^3 + 7 (trên trường hữu hạn được định nghĩa bởi số nguyên tố p = 2^256 - 2^32 - 977).

Satoshi Nakamoto chọn secp256k1 cho Bitcoin vào năm 2009. Vào thời điểm đó, đây là lựa chọn bất thường. Hầu hết hệ thống sử dụng đường cong NIST P-256 (còn gọi là secp256r1). Chữ "r" trong secp256r1 chỉ ra nó sử dụng seed ngẫu nhiên có thể xác minh cho các tham số, trong khi tham số của secp256k1 được chọn vì hiệu quả tính toán, không phải tính ngẫu nhiên. Một số nhà mật mã từ lâu đã lo ngại rằng các đường cong NIST có thể có tham số bị ảnh hưởng bởi NSA --- mối lo được khuếch đại bởi vụ bê bối Dual_EC_DRBG năm 2013. Secp256k1 tránh hoàn toàn nghi ngờ này vì tham số của nó đơn giản và minh bạch: a = 0, b = 7.

Chữ Ký: ECDSA

Thuật toán chữ ký đi kèm secp256k1 trong Bitcoin và Ethereum là ECDSA --- Elliptic Curve Digital Signature Algorithm. Khi bạn gửi giao dịch Bitcoin hoặc Ethereum, ví sử dụng ECDSA để tạo chữ ký từ private key và hash giao dịch. Các validator trên mạng xác minh chữ ký này bằng public key của bạn.

Chữ ký ECDSA trên secp256k1 là 64 byte (hai giá trị 32 byte, thường gọi là r và s) cộng thêm byte phục hồi mà một số triển khai bao gồm. Chúng mang tính tất định khi sử dụng RFC 6979 (cả Bitcoin và Ethereum đều dùng), nghĩa là cùng một thông điệp và private key luôn tạo ra cùng một chữ ký --- không cần tính ngẫu nhiên khi ký.

Một đặc điểm của ECDSA là tính biến đổi chữ ký: với chữ ký hợp lệ (r, s), cặp (r, -s mod n) cũng hợp lệ. Bitcoin giải quyết vấn đề này bằng BIP66 (mã hóa DER nghiêm ngặt) và sau đó bằng SegWit. Ethereum giải quyết bằng cách bắt buộc dạng chuẩn cho s.

Hiệu Năng

Xác minh secp256k1 trên các triển khai tối ưu (như libsecp256k1, được Bitcoin Core sử dụng) rất nhanh: vài nghìn lần xác minh mỗi giây trên phần cứng hiện đại. Tuy nhiên, ký và xác minh ECDSA vốn phức tạp hơn EdDSA (thuật toán đi kèm ed25519), được thiết kế từ đầu để tối ưu tốc độ.

ed25519: Lựa Chọn Hiện Đại Của Solana

ed25519 là đường cong elliptic được thiết kế bởi Daniel J. Bernstein và cộng sự. Nó được công bố năm 2011, hai năm sau khi Bitcoin ra mắt, và đại diện cho thế hệ thiết kế đường cong mới ưu tiên cả bảo mật và hiệu năng.

Tên gọi đề cập đến dạng đường cong Edwards trên trường nguyên tố 2^255 - 19 (do đó có tên "25519"). Đường cong cụ thể được sử dụng là đường cong Edwards xoắn gọi là "edwards25519," tương đương birationally với Curve25519 (được sử dụng rộng rãi trong trao đổi khóa, ví dụ trong Signal và TLS 1.3).

Solana chọn ed25519 làm đường cong chữ ký, cùng với nhiều blockchain hiện đại khác. Lựa chọn này phản ánh lợi thế về thông lượng của ed25519 --- mối quan tâm quan trọng cho kiến trúc hiệu năng cao của Solana.

Chữ Ký: EdDSA

Thuật toán chữ ký đi kèm ed25519 là EdDSA --- Edwards-curve Digital Signature Algorithm. Cụ thể, Solana sử dụng Ed25519 (EdDSA với edwards25519), tạo ra chữ ký 64 byte.

EdDSA được thiết kế để tránh các nhược điểm của ECDSA:

  • Không cần tính ngẫu nhiên khi ký. Chữ ký EdDSA vốn mang tính tất định --- nonce được phái sinh từ private key và thông điệp qua hàm hash. Với ECDSA, bộ sinh số ngẫu nhiên kém khi ký có thể làm lộ hoàn toàn private key (điều này đã xảy ra với khóa ký PS3 của Sony năm 2010).
  • Không có tính biến đổi chữ ký. Chữ ký EdDSA có một dạng chuẩn duy nhất.
  • Xác minh hàng loạt nhanh hơn. Nhiều chữ ký Ed25519 có thể được xác minh đồng thời nhanh hơn xác minh từng cái --- lợi thế đáng kể cho blockchain thông lượng cao.
  • Triển khai đơn giản hơn. Thuật toán có ít trường hợp đặc biệt và điều kiện rẽ nhánh hơn, giảm bề mặt cho tấn công kênh phụ.

Hiệu Năng

Ed25519 luôn nhanh hơn ECDSA-secp256k1 trong các benchmark. Ký nhanh hơn khoảng 2-3 lần, và xác minh đơn lẻ tương đương, nhưng xác minh hàng loạt là nơi Ed25519 thực sự tỏa sáng --- nó có thể xác minh hàng trăm chữ ký nhanh hơn đáng kể so với xác minh từng cái một. Trên Solana, nơi các block có thể chứa hàng nghìn giao dịch, sự khác biệt hiệu năng này rất đáng kể.

ECDSA vs EdDSA: So Sánh Trực Tiếp

Thuộc tính ECDSA (secp256k1) EdDSA (ed25519)
Loại đường cong Short Weierstrass Twisted Edwards
Kích thước khóa 256 bit 256 bit
Kích thước chữ ký 64-65 byte 64 byte
Mức bảo mật ~128 bit ~128 bit
Tốc độ ký Nhanh Nhanh hơn (2-3 lần)
Tốc độ xác minh Nhanh Tương đương (đơn lẻ), nhanh hơn (hàng loạt)
Ký tất định Tùy chọn (RFC 6979) Tích hợp sẵn (theo thiết kế)
Biến đổi chữ ký Có thể (đã giảm thiểu thực tế) Không
Lỗ hổng nonce Có (RNG kém lộ khóa) Không (nonce phái sinh từ khóa + thông điệp)
Áp dụng Bitcoin, Ethereum, BNB Chain, Tron, Dogecoin, Litecoin Solana, XRP (một phần), Cardano, Polkadot

Cả hai thuật toán đều cung cấp khoảng 128 bit bảo mật, nghĩa là kẻ tấn công cần thực hiện khoảng 2^128 phép toán để phá khóa. Điều này vượt xa khả năng của bất kỳ máy tính cổ điển hiện tại hoặc có thể dự kiến nào. Sự khác biệt nằm ở an toàn triển khai và hiệu năng, không phải sức mạnh bảo mật thô.

Để hiểu sâu hơn về cách bảo mật khóa hoạt động trong thực tế, xem Thực Hành Bảo Mật Private Key Tốt Nhất.

Blockchain Nào Dùng Loại Nào?

Lựa chọn đường cong là một trong những quyết định kiến trúc cơ bản nhất mà blockchain đưa ra. Dưới đây là phân tích các mạng lớn:

Các Chain Dùng secp256k1

  • Bitcoin --- Blockchain gốc. Sử dụng ECDSA với secp256k1 cho giao dịch tiêu chuẩn, và chữ ký Schnorr (cũng trên secp256k1) cho Taproot.
  • Ethereum --- ECDSA với secp256k1. Tất cả chain tương thích EVM kế thừa lựa chọn này.
  • BNB Chain --- Tương thích EVM, sử dụng secp256k1.
  • Polygon --- Tương thích EVM, sử dụng secp256k1.
  • ArbitrumOptimism --- Ethereum L2, kế thừa secp256k1.
  • Tron --- Sử dụng secp256k1 với ECDSA.
  • Dogecoin --- Fork của Bitcoin, sử dụng secp256k1.
  • Litecoin --- Fork của Bitcoin, sử dụng secp256k1.
  • Avalanche (C-Chain) --- Tương thích EVM, sử dụng secp256k1.

Các Chain Dùng ed25519

  • Solana --- Sử dụng Ed25519 độc quyền. Đây là lý do cốt lõi Solana có thể xử lý hàng nghìn giao dịch mỗi giây.
  • XRP --- Hỗ trợ cả secp256k1 và ed25519. Người dùng có thể chọn đường cong nào khi tạo khóa.
  • Cardano --- Sử dụng Ed25519 (cụ thể là Ed25519-BIP32, biến thể mở rộng).
  • Polkadot --- Chủ yếu sử dụng Sr25519 (Schnorr trên Ristretto25519), liên quan mật thiết đến ed25519.

Sự phân chia phần lớn mang tính thế hệ. Blockchain được thiết kế trước 2015 thường sử dụng secp256k1 (theo Bitcoin). Blockchain được thiết kế sau 2017 ngày càng ưa chuộng ed25519 hoặc các đường cong liên quan.

Ảnh Hưởng Đến Tạo Khóa

Lựa chọn đường cong elliptic ảnh hưởng trực tiếp đến cách khóa và địa chỉ được tạo. Nếu bạn sử dụng công cụ SafeSeed, sự khác biệt được xử lý tự động, nhưng hiểu nó giúp bạn biết điều gì đang xảy ra bên trong.

Tạo Khóa secp256k1

  1. Tạo số ngẫu nhiên 256 bit (private key). Nó phải nằm giữa 1 và n - 1, trong đó n là bậc của secp256k1 (~2^256).
  2. Tính public key: nhân private key với điểm sinh G trên secp256k1. Kết quả là một điểm (x, y) trên đường cong.
  3. Public key không nén là 65 byte (tiền tố 04 + 32 byte x + 32 byte y). Dạng nén là 33 byte (tiền tố 02 hoặc 03 + 32 byte x).
  4. Hash public key để tạo địa chỉ (SHA-256 + RIPEMD-160 cho Bitcoin; Keccak-256 cho Ethereum).

Bạn có thể tạo khóa secp256k1 bằng Bitcoin Private Key Generator hoặc Ethereum Private Key Generator.

Tạo Khóa ed25519

  1. Tạo seed ngẫu nhiên 32 byte (không giống BIP39 seed --- đây là nguyên liệu khóa thô).
  2. Hash seed bằng SHA-512 để tạo 64 byte. 32 byte đầu (với các bit cụ thể được kẹp) trở thành số vô hướng dùng để ký. 32 byte sau được dùng cho tạo nonce khi ký.
  3. Tính public key: nhân số vô hướng với điểm cơ sở B trên edwards25519. Kết quả là điểm nén 32 byte.
  4. Định dạng địa chỉ tùy theo chain. Trên Solana, public key (mã hóa Base58) chính là địa chỉ.

Bạn có thể tạo khóa ed25519 bằng Solana Private Key Generator.

Ảnh Hưởng Cross-Curve

Vì secp256k1 và ed25519 không tương thích toán học, private key hợp lệ trên đường cong này không có mối quan hệ có ý nghĩa với khóa trên đường cong kia. Khi bạn khôi phục seed phrase trong ví hỗ trợ cả Bitcoin và Solana, ví chạy hai quy trình phái sinh hoàn toàn riêng biệt từ cùng master seed --- một sử dụng secp256k1 cho tài khoản Bitcoin/Ethereum, và một sử dụng ed25519 cho tài khoản Solana. Seed chung là kết nối duy nhất giữa chúng.

Đây là lý do derivation path bao gồm loại coin: path của Bitcoin (m/44'/0'/0'/0/0) và path của Solana (m/44'/501'/0'/0') rẽ nhánh tại cấp coin-type, và mỗi nhánh sử dụng đường cong tương ứng. Để giải thích kỹ về cách derivation path hoạt động xuyên chain, đọc HD Wallet và Derivation Path Giải Thích.

Còn Máy Tính Lượng Tử Thì Sao?

Cả secp256k1 và ed25519 đều dễ bị tổn thương như nhau trước máy tính lượng tử đủ mạnh chạy thuật toán Shor, có thể giải bài toán logarithm rời rạc trong thời gian đa thức. Không đường cong nào "chống lượng tử tốt hơn" đường cong kia. Cộng đồng mật mã đang phát triển các lược đồ chữ ký hậu lượng tử, nhưng chưa có blockchain lớn nào chuyển sang sử dụng. Để đánh giá hiện tại, xem Máy Tính Lượng Tử và Mối Đe Dọa Tiền Mã Hóa.

Chọn Công Cụ Phù Hợp

Là người dùng, bạn không trực tiếp chọn giữa secp256k1 và ed25519. Blockchain bạn sử dụng đưa ra lựa chọn đó cho bạn. Bitcoin và Ethereum bắt buộc secp256k1. Solana bắt buộc ed25519. Điều bạn có thể chọn là sử dụng công cụ triển khai đúng đường cong mà chain yêu cầu.

Các trình tạo SafeSeed xử lý điều này tự động. Bitcoin Seed Phrase Generator phái sinh khóa secp256k1. Ethereum Seed Phrase Generator cũng vậy. Solana Seed Phrase Generator phái sinh khóa ed25519. Tất cả đều chạy hoàn toàn phía client, sử dụng Web Crypto API của trình duyệt để sinh số ngẫu nhiên an toàn. Không có dữ liệu private key nào rời khỏi thiết bị của bạn.

Hiểu đường cong bên dưới blockchain không thay đổi cách bạn sử dụng ví hàng ngày. Nhưng nó giúp bạn hiểu tại sao địa chỉ Solana trông khác Ethereum, tại sao bạn không thể sử dụng private key Solana thô trên Ethereum, và tại sao các giả định bảo mật đằng sau tài sản của bạn mạnh mẽ như vậy. Những đường cong này là nền tảng toán học của quyền sở hữu tiền mã hóa --- vô hình trong sử dụng bình thường, nhưng hoàn toàn là nền móng.