Khóa công khai là gì?
Khóa công khai là phần có thể chia sẻ của một cặp khóa mật mã bất đối xứng. Trong các hệ thống chữ ký số được nhiều blockchain sử dụng, khóa riêng tư tạo chữ ký còn khóa công khai tương ứng cho phép bên khác kiểm tra chữ ký đó mà không biết khóa riêng tư.
Định nghĩa này chủ ý hẹp hơn cách nói khóa công khai “chứng minh một người là ai”. Việc xác minh chữ ký thành công chỉ cho thấy chữ ký hợp lệ đối với dữ liệu cụ thể dưới một khóa cụ thể. Muốn gắn khóa đó với một cá nhân, tổ chức hoặc giao dịch dự kiến cần có thông tin nằm ngoài thuật toán chữ ký. Tiêu chuẩn chữ ký số của NIST cũng tách biệt việc tạo chữ ký bằng khóa riêng tư với việc xác minh bằng khóa công khai. NIST FIPS 186-5
Từ một giá trị riêng tư đến khóa có thể xác minh
Phép toán chính xác phụ thuộc vào cơ chế chữ ký. Trong hệ thống đường cong elliptic, khóa riêng tư là một số nằm trong phạm vi cho phép, còn khóa công khai là một điểm trên đường cong được tính từ số đó và các tham số miền đã thống nhất. SEC 1 mô tả quan hệ này bằng Q = dG, trong đó d là khóa riêng tư và G là điểm cơ sở của đường cong. Tài liệu cũng quy định việc xác thực khóa công khai vì một chuỗi byte bất kỳ không tự động là điểm hợp lệ trên đường cong. SEC 1: Elliptic Curve Cryptography
Phép tính này được thiết kế để thực hiện được theo chiều từ khóa riêng tư sang khóa công khai, trong khi việc khôi phục giá trị riêng tư từ một khóa công khai được tạo đúng cách là bất khả thi về mặt tính toán theo các giả định của cơ chế. Tuy nhiên, mức bảo đảm vẫn phụ thuộc vào việc tạo khóa đúng cách, tham số được phê duyệt, cách triển khai và cách quản lý khóa; bản thân “mật mã khóa công khai” không bảo đảm mọi ví hoặc thiết bị đều được triển khai chính xác.
Khóa công khai cũng có thể dùng các cách mã hóa khác nhau mà không đại diện cho quyền ký khác nhau. Chẳng hạn, Bitcoin có dạng mã hóa nén và không nén cho khóa công khai đường cong elliptic. Chuỗi byte tuần tự hóa khác nhau và địa chỉ được suy ra từ các byte đó có thể khác nhau, dù cả hai đều mô tả cùng một điểm trên đường cong. Bitcoin Developer Guide: wallets
Việc xác minh chữ ký chứng minh điều gì?
Một quy trình ký đơn giản gồm bốn bước:
- Phần mềm ví chuẩn bị dữ liệu mà mạng lưới yêu cầu được ủy quyền.
- Thuật toán ký kết hợp dữ liệu đó với khóa riêng tư để tạo chữ ký.
- Bên xác minh áp dụng thuật toán xác minh tương ứng cho dữ liệu đã ký, chữ ký và khóa công khai.
- Mạng lưới kiểm tra riêng các quy tắc khác, chẳng hạn định dạng giao dịch, điều kiện chi tiêu, số dư hoặc nonce.
Việc thay đổi dữ liệu đã ký thường khiến chữ ký ban đầu không còn vượt qua xác minh. Tuy vậy, một chữ ký hợp lệ không cho biết hành động đó có lợi hay không, giao diện có hiển thị đầy đủ chỉ dẫn hay không hoặc chủ khóa có chủ ý chấp nhận hệ quả ngoài đời thực hay không. Chữ ký chỉ là một đầu vào của cơ chế ủy quyền mạng lưới, không phải tuyên bố phổ quát về danh tính hay mức độ đáng tin cậy.
Khóa công khai, địa chỉ blockchain và tài khoản
Các thuật ngữ này mô tả những lớp khác nhau:
- Khóa công khai: dữ liệu mật mã dùng để xác minh hoặc thực hiện các thao tác khóa công khai khác.
- Địa chỉ blockchain: mã định danh theo từng mạng lưới, thường được tạo bằng quy tắc băm hoặc mã hóa, hoặc từ dữ liệu triển khai khác.
- Tài khoản: bản ghi cấp mạng lưới hoặc cơ chế ủy quyền gắn với một địa chỉ.
Với tài khoản Ethereum do bên ngoài sở hữu (EOA), địa chỉ là 20 byte cuối của giá trị băm Keccak-256 của khóa công khai. Địa chỉ hợp đồng Ethereum được tạo theo quy tắc khác và tài khoản hợp đồng không có khóa riêng tư của riêng nó. Ethereum cũng dùng khóa BLS cho validator, tách biệt với cặp khóa EOA. Những ví dụ này cho thấy địa chỉ Ethereum không phải lúc nào cũng có thể được coi là khóa công khai, thậm chí không phải lúc nào cũng là bằng chứng về quan hệ một-một với một cặp khóa. Ethereum accounts
Bitcoin cho thấy một biến thể khác: các loại địa chỉ phổ biến mã hóa thông tin về tập lệnh chi tiêu hoặc cam kết băm thay vì đưa khóa công khai thô ra làm địa chỉ. Khóa công khai có thể chỉ xuất hiện khi đầu ra liên quan được chi tiêu. Vì vậy, cách tạo địa chỉ và thời điểm lộ khóa phụ thuộc vào mạng lưới và loại đầu ra, chứ không theo một quy tắc chung cho mọi blockchain.
Khóa công khai thông thường và khóa công khai mở rộng
Khóa công khai thông thường đại diện cho một thành viên trong cặp khóa. Khóa công khai mở rộng theo BIP-32 kết hợp khóa công khai với mã chuỗi và siêu dữ liệu suy ra. Khóa này có thể suy ra các khóa công khai con trên nhánh không tăng cường mà không cần khóa riêng tư tương ứng. Tính năng đó có thể hỗ trợ hệ thống chỉ nhận hoặc theo dõi, nhưng cũng tiết lộ một nhóm khóa công khai có liên quan cho bất kỳ ai nhận được khóa công khai mở rộng. BIP-32: Hierarchical Deterministic Wallets
Khóa công khai mở rộng không thể suy ra khóa con tăng cường và không nên được coi là vô hại chỉ vì không thể ký. BIP-32 còn mô tả một điều kiện xâm phạm nghiêm trọng hơn: việc để lộ khóa công khai mở rộng cùng với khóa riêng tư con không tăng cường tương ứng có thể làm lộ khóa riêng tư tổ tiên và anh em trong cùng nhánh. Đây là đặc tính của cơ chế suy ra đó, không phải đặc tính của mọi khóa công khai thông thường.
Khóa công khai bảo vệ và không bảo vệ quyền riêng tư ở đâu?
Việc công khai một khóa công khai thông thường không làm lộ khóa riêng tư theo giả định về độ khó của cơ chế mật mã. Tuy nhiên, điều đó vẫn có thể ảnh hưởng đến quyền riêng tư. Tái sử dụng khóa hoặc địa chỉ, công bố khóa công khai mở rộng hay liên kết địa chỉ qua hoạt động giao dịch có thể khiến những hoạt động vốn tách biệt trở nên dễ đối chiếu hơn.
Khóa công khai cũng thường không che giấu nội dung giao dịch blockchain. Mật mã khóa công khai bao gồm các cơ chế mã hóa và thỏa thuận khóa, nhưng vai trò của khóa ký trong ủy quyền giao dịch là xác minh chữ ký. Việc một mạng lưới có mã hóa dữ liệu hay không là câu hỏi riêng về giao thức.
Câu hỏi thường gặp
Hai địa chỉ có thể dùng cùng một khóa công khai không?
Có thể, tùy vào mạng lưới và định dạng địa chỉ. Cách mã hóa hoặc tập lệnh khác nhau có thể tạo ra những biểu diễn địa chỉ khác nhau nhưng liên quan đến cùng một khóa. Ứng dụng nên tuân theo quy tắc của từng mạng lưới thay vì giả định luôn có quan hệ một địa chỉ với một khóa.
Chỉ có khóa công khai đã đủ để chi tiêu tài sản mã hóa chưa?
Thông thường là chưa. Khóa công khai cho phép xác minh; để ủy quyền cho khoản chi tiêu do khóa kiểm soát cần chữ ký hợp lệ hoặc phải đáp ứng các quy tắc chi tiêu áp dụng của mạng lưới. Tài khoản do hợp đồng kiểm soát và cơ chế đa chữ ký có thể áp dụng những quy tắc không thể rút gọn về một khóa công khai duy nhất.
Khái niệm liên quan
Để xem phần so sánh chi tiết hơn, hãy đọc Khóa riêng tư và khóa công khai khác nhau thế nào?.
Tìm hiểu khóa riêng tư, địa chỉ blockchain, cụm từ hạt giống và ví tiền mã hóa, hoặc quay lại Thuật ngữ tiền mã hóa.
Nguồn
- NIST FIPS 186-5: Digital Signature Standard — quá trình tạo chữ ký, xác minh và các cơ chế chữ ký được phê duyệt.
- NIST SP 800-57 Part 1 Rev. 5 — các loại khóa công khai/riêng tư và ranh giới quản lý khóa.
- SEC 1 Version 2.0 — tạo cặp khóa đường cong elliptic, xác thực khóa công khai và thao tác chữ ký.
- Ethereum: accounts — khóa EOA, cách suy ra địa chỉ, tài khoản hợp đồng và khóa validator.
- BIP-32 — cách suy ra khóa công khai thông thường, tăng cường và mở rộng.
- Bitcoin Developer Guide: wallets — cách mã hóa khóa, quan hệ với địa chỉ và hành vi của ví HD.
© 2025 OKX. Bài viết này có thể được sao chép hoặc phân phối toàn bộ, hoặc trích dẫn các đoạn không quá 100 từ, miễn là không sử dụng cho mục đích thương mại. Mọi bản sao hoặc phân phối toàn bộ bài viết phải ghi rõ: “Bài viết này thuộc bản quyền © 2025 OKX và được sử dụng có sự cho phép.” Nếu trích dẫn, vui lòng ghi tên bài viết và nguồn tham khảo, ví dụ: “Tên bài viết, [tên tác giả nếu có], © 2025 OKX.” Một số nội dung có thể được tạo ra hoặc hỗ trợ bởi công cụ trí tuệ nhân tạo (AI). Nghiêm cấm các tác phẩm phái sinh hoặc hình thức sử dụng khác đối với bài viết này.



