Tóm tắt nhanh
Digital Signature là cơ chế mật mã học cho phép chứng minh quyền sở hữu mà không tiết lộ private key. Trong blockchain, mọi giao dịch đều phải được ký bằng private key của người gửi — node mạng xác minh chữ ký bằng public key tương ứng. Bitcoin và Ethereum dùng ECDSA với đường cong secp256k1; các chain mới hơn dùng Ed25519 hoặc BLS Signature.
1Digital Signature là gì?
Digital Signature (chữ ký số) là một đoạn dữ liệu mật mã gắn với một message, chứng minh hai điều cùng lúc:
- Authentication: message được tạo bởi người sở hữu private key cụ thể.
- Integrity: message không bị thay đổi sau khi ký.
Trong ngữ cảnh blockchain, "message" là transaction — gồm địa chỉ người nhận, số lượng token, nonce, gas fee. Khi bạn nhấn "Confirm" trong ví MetaMask hay Phantom, ví đang dùng private key của bạn để tạo digital signature cho transaction đó.
Toàn bộ node trong mạng blockchain đều xác minh chữ ký trước khi chấp nhận transaction vào mempool. Không có chữ ký hợp lệ → transaction bị từ chối ngay lập tức, không thể giả mạo hay chi tiêu token của người khác.
2Public Key Cryptography — nền tảng
Digital Signature xây dựng trên Public Key Cryptography (mật mã khóa công khai hay asymmetric cryptography). Hệ thống này có hai khóa liên kết toán học:
- Private Key: số bí mật, chỉ chủ sở hữu biết. Dùng để ký.
- Public Key: tính từ private key qua hàm một chiều. Chia sẻ công khai. Dùng để xác minh.
Tính chất then chốt: biết public key không thể tính ngược ra private key trong thời gian thực tế. Đây là "trapdoor function" — dễ tính một chiều, cực khó đảo ngược.
Trong mật mã học blockchain, private key thường là số ngẫu nhiên 256-bit (~10⁷⁷ khả năng). Public key và địa chỉ ví đều được derive từ private key qua các hàm toán học không thể đảo ngược. Mất private key = mất quyền truy cập vĩnh viễn.
Từ private key đến địa chỉ Ethereum
- Private key: số ngẫu nhiên 256-bit
- Public key: nhân vô hướng với generator point G trên đường cong secp256k1 → điểm 512-bit
- Keccak-256(public key) → lấy 20 byte cuối → địa chỉ Ethereum (0x...)
3ECDSA — thuật toán Bitcoin & Ethereum
ECDSA (Elliptic Curve Digital Signature Algorithm) là thuật toán chữ ký số sử dụng toán học đường cong elliptic. Bitcoin và Ethereum đều dùng đường cong secp256k1 — được định nghĩa bởi phương trình y² = x³ + 7 trên trường số nguyên tố.
Đường cong elliptic có một số tính chất hữu ích:
- Group operation: có thể "cộng" hai điểm trên đường cong để ra điểm thứ ba.
- Scalar multiplication: từ điểm G, tính k×G (nhân G với scalar k) rất nhanh.
- Discrete Log Problem: biết G và k×G, tìm k là bài toán cực khó (exponential time với máy tính cổ điển).
Private key chính là scalar k. Public key là điểm k×G. Bảo mật ECDSA dựa hoàn toàn vào độ khó của Elliptic Curve Discrete Logarithm Problem (ECDLP).
4Quá trình ký và xác minh giao dịch
Bước ký (Sign)
- Hash transaction:
z = Keccak256(transaction_data) - Chọn nonce ngẫu nhiên k (số dùng một lần — critical!)
- Tính R = (k×G).x mod n
- Tính S = k⁻¹(z + R×private_key) mod n
- Chữ ký = (R, S) — hai số 32 byte mỗi số, tổng 64 byte + 1 byte recovery flag
Bước xác minh (Verify)
- Hash lại transaction:
z = Keccak256(transaction_data) - Tính u1 = z×S⁻¹ mod n, u2 = R×S⁻¹ mod n
- Tính điểm P = u1×G + u2×PublicKey
- Nếu P.x mod n == R → chữ ký hợp lệ
Bất kỳ node nào trên mạng đều thực hiện bước verify này độc lập. Không cần tin tưởng bất kỳ bên trung gian nào.
5Bảo mật: tại sao không thể giả mạo
Bảo mật của ECDSA có ba lớp:
- ECDLP hardness: biết public key (k×G), tìm k là bài toán mà máy tính tốt nhất hiện tại cần hàng tỷ năm. Không gian private key là 2²⁵⁶ ≈ 10⁷⁷.
- Hash pre-image resistance: không thể tạo transaction giả có cùng hash z mà không biết nội dung thật — nhờ tính chất của hash function.
- Nonce randomness: mỗi chữ ký dùng nonce k khác nhau → hai chữ ký của cùng một key trông hoàn toàn khác nhau, không leak thông tin về private key.
Mối đe dọa từ máy tính lượng tử
Thuật toán Shor chạy trên máy tính lượng tử đủ mạnh có thể phá ECDLP. Ước tính cần ~4000 logical qubit ổn định để phá secp256k1 — máy tính lượng tử hiện tại (2025) có ~1000 noisy qubit, còn cách xa mốc đó. Ethereum Roadmap đang nghiên cứu quantum-resistant signature trong giai đoạn Splurge.
6Ed25519 — thế hệ mới
Ed25519 là thuật toán chữ ký dựa trên Edwards-curve Digital Signature Algorithm (EdDSA) với đường cong Curve25519 được thiết kế bởi Daniel Bernstein năm 2011. Solana, Cardano, NEAR, Polkadot đều dùng Ed25519.
| Tiêu chí | ECDSA (secp256k1) | Ed25519 |
|---|---|---|
| Tốc độ ký | ~50k sig/s | ~100k sig/s |
| Tốc độ verify | ~20k verify/s | ~70k verify/s |
| Kích thước chữ ký | 64–71 bytes | 64 bytes cố định |
| Deterministic | Không (cần random k) | Có (k derive từ private key + message) |
| Timing attack | Dễ bị nếu implement sai | Kháng timing attack by design |
| Dùng trong | Bitcoin, Ethereum | Solana, Cardano, NEAR |
Ed25519 deterministic là ưu điểm lớn: nonce k không ngẫu nhiên mà được tính từ Hash(private_key + message). Điều này loại bỏ hoàn toàn rủi ro tái sử dụng nonce, vốn là nguyên nhân gây lỗ hổng nghiêm trọng với ECDSA nếu random number generator bị lỗi.
7Multisig và Threshold Signature
Multisig (m-of-n) là cơ chế yêu cầu m trong tổng số n key phải ký trước khi transaction được chấp nhận. Ví dụ: 2-of-3 multisig yêu cầu ít nhất 2 trong 3 private key ký.
Bitcoin hỗ trợ multisig native qua P2SH và P2WSH script. Ethereum dùng smart contract multisig như Gnosis Safe — phổ biến cho treasury quản lý hàng trăm triệu USD của DAO.
Threshold Signature (TSS)
TSS là phiên bản nâng cao của multisig: m-of-n người ký cùng tạo ra một chữ ký duy nhất mà không ai trong số họ giữ toàn bộ private key. Quá trình ký dùng Multi-Party Computation (MPC).
Ưu điểm TSS so với multisig on-chain:
- Chỉ submit 1 chữ ký lên blockchain → gas fee như transaction thông thường.
- Không lộ số lượng người ký hay cấu trúc m-of-n → tăng privacy.
- Dùng được với bất kỳ chain nào hỗ trợ ECDSA, không cần chain hỗ trợ multisig native.
TSS là công nghệ cốt lõi của nhiều cross-chain bridge và custodial solution như Fireblocks, Qredo.
8BLS Signature — aggregate nhiều chữ ký
BLS Signature (Boneh-Lynn-Shacham) là thuật toán chữ ký số đặc biệt có tính chất aggregation: nhiều chữ ký từ nhiều key khác nhau có thể gộp thành một chữ ký duy nhất cùng kích thước.
Ethereum Proof of Stake dùng BLS12-381 cho validator signature vì lý do này: mạng có 1 triệu+ validator, mỗi epoch mỗi validator phải attest một block. Nếu lưu riêng lẻ, mỗi block cần hàng gigabyte chữ ký. Với BLS aggregation, toàn bộ chữ ký của epoch được nén thành một BLS aggregate signature ~96 bytes.
9Schnorr Signature trong Bitcoin Taproot
Schnorr Signature là thuật toán chữ ký số được thiết kế bởi Claus Schnorr năm 1989, được coi là đơn giản và an toàn hơn ECDSA về mặt lý thuyết. Bitcoin đã enable Schnorr qua upgrade Taproot (BIP340) vào tháng 11/2021.
Ưu điểm Schnorr so với ECDSA trong Bitcoin:
- Linearity: nhiều chữ ký Schnorr có thể cộng tuyến tính — cho phép MuSig (multi-signature) trông như single-sig on-chain.
- Batch verification: xác minh nhiều chữ ký Schnorr cùng lúc nhanh hơn xác minh từng cái riêng lẻ — giúp node sync block nhanh hơn.
- Smaller multisig: với Taproot và MuSig2, giao dịch multisig phức tạp có cùng footprint on-chain với giao dịch đơn giản.
Taproot kết hợp Schnorr với MAST (Merklized Alternative Script Trees — dùng Merkle Tree) để ẩn các điều kiện spending phức tạp cho đến khi thực sự cần dùng, tăng privacy và giảm on-chain footprint.
10Câu hỏi thường gặp
Digital Signature là cơ chế mật mã cho phép chứng minh quyền sở hữu và tính toàn vẹn dữ liệu mà không tiết lộ private key. Người ký dùng private key tạo chữ ký; bất kỳ ai cũng dùng public key tương ứng để xác minh chữ ký hợp lệ.
ECDSA (Elliptic Curve Digital Signature Algorithm) là thuật toán chữ ký số dựa trên đường cong elliptic. Bitcoin và Ethereum dùng ECDSA với đường cong secp256k1. Private key là số 256-bit; public key là điểm trên đường cong tính từ private key qua phép nhân vô hướng k×G.
Bảo mật ECDSA dựa trên bài toán Discrete Logarithm trên đường cong elliptic — không có thuật toán cổ điển nào giải được trong thời gian hợp lý. Biết public key không thể tính ngược ra private key; không gian private key là 2²⁵⁶ ≈ 10⁷⁷ khả năng.
Ed25519 dùng Edwards Curve25519, nhanh hơn ECDSA 2–3 lần, deterministic (nonce k được tính từ key + message, không cần random), an toàn hơn trước timing attack. Solana, Cardano dùng Ed25519. Ethereum vẫn dùng ECDSA secp256k1 để tương thích ngược.
TSS cho phép m-of-n người ký cùng tạo ra một chữ ký duy nhất mà không ai giữ toàn bộ private key, dùng Multi-Party Computation. Khác với multisig on-chain, TSS chỉ submit một chữ ký — tiết kiệm gas, ẩn cấu trúc signing và dùng được trên mọi chain hỗ trợ ECDSA.