Xpub: khóa công khai của ví Bitcoin của bạn tiết lộ những gì
Một xpub cho phép tìm ra mọi địa chỉ của một tài khoản Bitcoin, và từ đó toàn bộ lịch sử của nó, mà không thể chi tiêu. Xpub tiết lộ gì, rủi ro của nó và nên đưa cho ai.
Xpub (khóa công khai mở rộng) là khóa công khai của một tài khoản trong ví Bitcoin, từ đó suy ra mọi địa chỉ của tài khoản này: ai nắm giữ nó sẽ thấy mọi khoản thanh toán mà tài khoản này nhận và gửi, nhưng không thể chi tiêu gì.
Một xpub chứa những gì
Tiêu chuẩn BIP32 mô tả các ví xác định phân cấp: một seed duy nhất tạo ra cả một cây khóa. Một khóa mở rộng bổ sung vào khóa một mã chuỗi (chain code), dùng để tính các khóa con của nó. Theo BIP32, biết một khóa công khai mở rộng cho phép dựng lại mọi khóa công khai con không được gia cố (non-hardened) của nó.
Các ví sắp xếp những khóa này theo đường dẫn của BIP44: m / purpose' / coin_type' / account' / change / address_index. Xpub mà ví hiển thị là xpub ở cấp account'. Nó bao gồm hai chuỗi địa chỉ: 0 cho địa chỉ nhận, 1 cho địa chỉ tiền thừa (change), nơi nhận phần tiền thừa trả lại từ chính các giao dịch gửi của bạn.
xpub, ypub hay zpub
Tiền tố cho biết tài khoản dùng loại địa chỉ nào:
| Tiền tố | Tiêu chuẩn | Đường dẫn của tài khoản đầu tiên | Địa chỉ |
|---|---|---|---|
xpub | BIP44 | m/44'/0'/0' | Địa chỉ kiểu cũ, bắt đầu bằng 1 |
ypub | BIP49 | m/49'/0'/0' | SegWit lồng, bắt đầu bằng 3 |
zpub | BIP84 | m/84'/0'/0' | SegWit gốc, bắt đầu bằng bc1q |
Cả ba là cùng một loại khóa: chỉ các byte phiên bản thay đổi, và vì vậy là các chữ cái đầu tiên.
Một xpub tiết lộ những gì
- Mọi địa chỉ của tài khoản, trong quá khứ và tương lai: chúng được suy ra lần lượt từng cái, không giới hạn.
- Toàn bộ lịch sử: mỗi khoản nhận, mỗi khoản gửi, mỗi số tiền, vì blockchain là công khai.
- Số dư của tài khoản, vào bất kỳ lúc nào.
- Không có gì để chi tiêu: không có khóa riêng tư thì không giao dịch nào có thể được ký.
BIP32 tự nêu ra cách dùng này: giao khóa công khai mở rộng của một tài khoản cho một kiểm toán viên cho phép người đó thấy mọi khoản thanh toán vào và ra, mà không truy cập được khóa bí mật nào. Ai có xpub của bạn sẽ có góc nhìn của kiểm toán viên đó, mãi mãi: không thể thu hồi một xpub.
Rủi ro cần biết
Chỉ riêng một xpub thì không thể chi tiêu. Nhưng BIP32 cảnh báo: biết một khóa công khai mở rộng cùng với bất kỳ khóa riêng tư không được gia cố nào sinh ra từ nó cũng tương đương với biết khóa riêng tư mở rộng cha. Nói cách khác, xpub của bạn và khóa riêng tư của chỉ một trong các địa chỉ của bạn là đủ để chi tiêu toàn bộ tài khoản.
Cấp account' được gia cố: một vụ lộ như vậy chỉ giới hạn trong tài khoản liên quan và không chạm tới các tài khoản khác của cùng một seed. Vì vậy, hãy xuất xpub, không bao giờ xuất khóa riêng tư của một địa chỉ, và đừng bao giờ đưa cụm từ khôi phục của bạn cho ai.
Phần mềm tìm địa chỉ như thế nào
Phần mềm đọc một xpub sẽ suy ra các địa chỉ theo thứ tự và dừng lại sau một dãy địa chỉ chưa từng được dùng: BIP44 đặt giới hạn này (gap limit) là 20. Nếu bạn đã tạo hơn 20 địa chỉ liên tiếp mà không dùng, phần mềm theo quy tắc này sẽ không thấy các địa chỉ phía sau.
Để đọc số dư, phần mềm sau đó truy vấn một máy chủ hoặc một nút, từng địa chỉ một. Khi đó máy chủ này biết được mọi địa chỉ của bạn và có thể liên kết chúng với nhau: đó là kiểu lộ thông tin thứ hai, không đến từ chính xpub mà từ cách đọc nó.
Trước khi đưa xpub của bạn
- Hãy tự hỏi ai giữ nó: một ứng dụng giữ xpub của bạn trên máy chủ của mình sẽ biết tài khoản của bạn chừng nào còn giữ nó, và một vụ rò rỉ dữ liệu của ứng dụng đó sẽ làm lộ nó.
- Ưu tiên đọc cục bộ: một ví kết nối với nút của riêng bạn, hoặc một công cụ suy ra địa chỉ trên thiết bị của bạn, không giao xpub cho ai.
- Mỗi mục đích một tài khoản: một tài khoản khác (
account'tiếp theo) có một xpub khác, không tiết lộ gì về các tài khoản còn lại.
CentraFIN đọc xpub của bạn như thế nào
CentraFIN đọc xpub của bạn trên thiết bị của bạn: trình duyệt của bạn suy ra các địa chỉ, đọc số dư của chúng qua một kết nối mã hóa đầu cuối và giữ tất cả trong một két do chính nó mã hóa. Máy chủ của CentraFIN không bao giờ thấy xpub của bạn, một địa chỉ hay một số dư nào. Mỗi địa chỉ luôn được đọc trên cùng một nút, chọn ngẫu nhiên, để không nút nào thấy toàn bộ tài khoản. Chi tiết có ở trang Bitcoin.
Nguồn
- BIP32: ví xác định phân cấp
- BIP44: đường dẫn suy diễn và gap limit
- BIP49: ypub, SegWit lồng
- BIP84: zpub, SegWit gốc
Câu hỏi thường gặp
Có thể đánh cắp bitcoin bằng một xpub không?
Không, nếu chỉ có xpub: nó không cho phép ký. Nếu có thêm khóa riêng tư của một địa chỉ trong tài khoản, thì có: toàn bộ tài khoản.
Một xpub có đủ để xem số dư của tôi không?
Có. Nó cho ra mọi địa chỉ của tài khoản, và blockchain cho ra số dư cùng các giao dịch của chúng.
Nên làm gì nếu xpub của tôi bị lộ?
Không thể thu hồi nó: ai có nó sẽ luôn thấy tài khoản này. Từ nay, hãy dùng một tài khoản mới có xpub chưa từng được chia sẻ. Riêng khoản chuyển từ tài khoản cũ sẽ vẫn hiển thị.
xpub, ypub và zpub khác nhau thế nào?
Ở loại địa chỉ của tài khoản: địa chỉ bắt đầu bằng 1 với xpub, bằng 3 với ypub (SegWit lồng), bằng bc1q với zpub (SegWit gốc).
Làm chủ tài sản của bạn
Tài khoản sẵn sàng trong một phút, không cần mật khẩu.