Thuật toán tạo khóa là một tập hợp các quy tắc và phép toán được sử dụng để tạo ra các khóa mật mã, dùng để mã hóa và giải mã dữ liệu hoặc tạo chữ ký số. Chúng đóng vai trò quan trọng trong việc bảo mật thông tin trong các hệ thống truyền thông và lưu trữ dữ liệu. Hãy cùng Block24 tìm hiểu cụ thể hơn qua bài viết sau nhé.
Thuật toán tạo khóa là gì?
Thuật toán tạo khóa là quy trình toán học tạo ra các khóa mã hóa, giúp đảm bảo tính bảo mật, xác thực và riêng tư trong các hệ thống như blockchain, email, VPN, và các giao thức truyền dữ liệu an toàn.
Trong lĩnh vực blockchain, thuật toán tạo khóa tạo ra một cặp khóa gồm khóa riêng (private key) và khóa công khai (public key). Cặp khóa này phục vụ cho việc mã hóa, giải mã, ký và xác minh chữ ký số, mang lại tính riêng tư, toàn vẹn và xác thực của dữ liệu.

Cách hoạt động của thuật toán tạo khóa
Quy trình hoạt động của thuật toán tạo khóa diễn ra như sau:
- Tạo Private key: Thuật toán tạo khóa bắt đầu bằng việc tạo ra một số nguyên ngẫu nhiên rất lớn, gọi là private key. Ví dụ: Trong Bitcoin, private key là một số nguyên 256 bit. Private key phải được sinh ra hoàn toàn ngẫu nhiên và bảo mật, nếu không hacker có thể đoán được.
- Tạo Public key từ Private key: Sau khi có private key, hệ thống sẽ dùng một thuật toán mã hóa bất đối xứng như ECDSA hoặc EdDSA để tạo ra public key. Tùy theo thuật toán, quá trình này sẽ khác nhau về mặt toán học, nhưng đều dựa trên các phép toán tính điểm trên đường cong elliptic.
- Tạo địa chỉ ví từ public key: Trong blockchain (như Bitcoin, Ethereum), Public key tiếp tục được băm (hash) để tạo ra địa chỉ ví crypto, chính là chuỗi ký tự bạn dùng để nhận coin/token/NFT.

Các thuật toán tạo khóa ECDSA và EdDSA
Có hai thuật toán tạo khóa phổ biến trong lĩnh vực mật mã và blockchain đó là: ECDSA và EdDSA.
ECDSA
ECDSA (Elliptic Curve Digital Signature Algorithm) là thuật toán chữ ký số dựa trên đường cong elliptic (Elliptic Curve Cryptography – ECC). Thuật toán này được sử dụng rộng rãi trong nhiều hệ thống blockchain, tiêu biểu là Bitcoin và Ethereum.
Quy trình tạo khóa trong ECDSA bao gồm các bước sau:
- Tạo Private Key: Một số nguyên ngẫu nhiên được chọn trong khoảng từ 1 đến n−1, trong đó n là số điểm trên đường cong elliptic được chọn.
- Tạo Public Key: Là một điểm trên đường cong elliptic, được tính bằng cách nhân Private Key với một điểm sinh (generator point) G đã được xác định sẵn theo đường cong elliptic.
Cụ thể: Public Key = Private Key×𝐺
Trong Bitcoin, đường cong elliptic được sử dụng là secp256k1, có cấu trúc đặc biệt giúp tối ưu hiệu suất và bảo mật. Private Key trong Bitcoin là một con số rất lớn, dài đến 256 bit, tức là nó có thể được biểu diễn dưới dạng một dãy số nhị phân gồm 256 chữ số.

Ưu điểm của ECDSA là tính bảo mật cao với độ dài khóa ngắn (so với các thuật toán mật mã khác), tiết kiệm không gian lưu trữ và chi phí tính toán. Tuy nhiên, nhược điểm là nếu một chữ ký sử dụng lại giá trị "nonce" (số ngẫu nhiên duy nhất dùng một lần) hoặc bị rò rỉ một phần, Private Key có thể bị lộ, điều này đã từng xảy ra trong một số ví crypto bị lỗi trên Android.
Cụ thể là sự cố năm 2013 liên quan đến Java RNG trên Android, xuất phát từ lỗi trong quá trình sinh nonce không đủ ngẫu nhiên, dẫn đến việc rò rỉ private key trong các ví Bitcoin sử dụng ECDSA.
EdDSA
EdDS (Edwards-curve Digital Signature Algorithm) tương tự như ECDSA nhưng là phiên bản tiên tiến hơn và được thiết kế để giải quyết những điểm yếu của ECDSA, đặc biệt là vấn đề quản lý nonce.
Quá trình tạo khóa trong EdDSA diễn ra như sau:
- Tạo Private Key: Từ Seed phrase (được tạo từ các ứng dụng ví crypto), thuật toán áp dụng hash (hàm băm, ví dụ như SHA-512) để sinh ra một Private key được chuẩn hóa.
- Tạo Public Key: Là một điểm trên đường cong elliptic, được tính từ Private key theo công thức gần giống như ECDSA nhưng dùng các phép toán trên đường cong Edwards.
EdDSA hiện đang được sử dụng trong các hệ thống blockchain mới như Monero, Algorand, và một số ứng dụng của Ethereum như Layer 2 (các blockchain zk-rollup như zkSync, StarkNet) hoặc smart contract (như giao thức Semaphore). Đặc điểm chung của các blockchain và ứng dụng này là yêu cầu hiệu suất và tính bảo mật cao.
Các BIP liên quan: BIP32, BIP39, và BIP44
BIP32, BIP39 và BIP44 là ba đề xuất Bitcoin quan trọng, nền tảng giúp chuẩn hóa cách tạo khóa và cấu trúc ví crypto. Dưới đây là bảng tóm tắt thông tin về các BIP này.
BIP | Tên đầy đủ | Chức năng chính | Giá trị/Ý nghĩa |
BIP32 | Hierarchical Deterministic Wallets | Tạo ra cấu trúc dạng cây phân cấp của nhiều cặp khóa, xuất phát từ một seed duy nhất (cây dẫn xuất) | Cho phép tạo nhiều địa chỉ ví từ 1 mã khóa gốc (seed phrase), hỗ trợ backup & quản lý ví dễ dàng |
BIP39 | Mnemonic code for generating seed | Quy định cách chuyển 12-24 từ thành một chuỗi seed nhị phân | Giúp người dùng dễ ghi nhớ và cất giữ, là nền tảng đầu vào cho BIP32 |
BIP44 | Multi-Account Hierarchy for HD Wallets | Quy định rõ cách dẫn xuất khóa theo cấu trúc chuẩn (m/44'/coin_type'/account'/change/address_index) | Giúp tạo ra các ví đa chain, đa tài khoản |
Ứng dụng của thuật toán tạo khóa
Thuật toán tạo khóa đóng vai trò cốt lõi trong bảo mật và cách vận hành của các hệ thống sử dụng mật mã học, đặc biệt là trong lĩnh vực blockchain. Một số ứng dụng tiêu biểu:
- Tạo ví Crypto: Thuật toán tạo khóa được dùng để tạo ra một cặp mã khóa (Private key & Public key) và địa chỉ ví đi kèm. Private key dùng để ký giao dịch, chứng minh quyền sở hữu tài sản, Public key dùng để tạo địa chỉ ví, cho phép nhận tài sản số để lưu trữ.
- Tạo chữ ký số: Thuật toán tạo khóa là nền tảng để triển khai các thuật toán chữ ký số như ECDSA hoặc EdDSA. Người dùng sử dụng Private key để ký giao dịch, còn blockchain sử dụng Public key để xác minh tính hợp lệ của chữ ký. Tạo ra một quy trình đảm bảo tính bảo mật, toàn vẹn và an toàn.
- Quản lý nhiều tài khoản bằng 1 seed phrase: Nhờ BIP32 và BIP44, các HD Wallets được tạo ra cho phép người dùng quản lý hoặc phục hồi nhiều tài khoản ví chỉ với một seed phrase.
- Tương thích giữa các ví: Vì phần lớn ví sử dụng chung chuẩn tạo khóa (BIP32/39/44) nên người dùng có thể nhập seed phrase vào nhiều loại ví khác nhau (Ledger, Trezor, MetaMask, Trust Wallet...). Điều này có nghĩa là bạn có thể khôi phục ví trên nhiều nền tảng mà vẫn giữ nguyên địa chỉ và tài sản.
- Xác thực người dùng và danh tính: Trong các ứng dụng Web3, người dùng chỉ cần đăng nhập bằng ví crypto non-custodial. Thay vì đăng ký/đăng nhập bằng tài khoản như cách thông thường (cần username, passwords, KYC,...), việc ký một thông điệp bằng Private key chính là hành động xác thực.

FAQ
Thuật toán tạo khóa có giống mã hóa mật khẩu không?
Không giống. Thuật toán tạo khóa tạo ra cặp khóa phục vụ cho chữ ký số và xác thực. Còn mã hóa mật khẩu (password hashing) chỉ dùng để lưu trữ mật khẩu một cách an toàn, không liên quan đến chữ ký số hay tạo địa chỉ ví.
Thuật toán tạo khóa có ứng dụng nào khác ngoài blockchain không?
Có. Ngoài blockchain, thuật toán tạo khóa còn dùng trong:
- Giao thức bảo mật mạng (SSL/TLS).
- Xác thực 2 yếu tố (2FA).
- Email mã hóa (PGP).
- Hệ thống VPN, SSH…
ECDSA, EdDSA, BIP32, BIP39, BIP44 đều là thuật toán tạo khóa phải không?
Không hoàn toàn. Chỉ có ECDSA, EdDSA là thuật toán tạo khóa, còn BIP32, BIP39, BIP44 là các tiêu chuẩn mở rộng cho quản lý khóa và ví, được xây dựng trên nền tảng thuật toán tạo khóa.
ECDSA và EdDSA thường được sử dụng trong blockchain nào?
ECDSA được dùng trong Bitcoin, Ethereum, BNB Chain, Litecoin,… Còn EdDSA dùng trong Solana, Polkadot,...
EdDSA có gì khác so với ECDSA?
Một số điểm khác biệt của 2 dạng thuật toán này:
- Hiệu năng: EdDSA nhanh và hiệu quả hơn.
- Bảo mật: EdDSA an toàn hơn trước một số dạng tấn công..
- Thiết kế: EdDSA đơn giản, dễ triển khai hơn ECDSA.
- Đường cong tính toán sử dụng: EdDSA dùng đường cong Edwards (Ed25519), còn ECDSA dùng secp256k1.
Bình luận
Chưa có bình luận