Hãy tưởng tượng có một chiếc chìa khóa vạn năng mở được mọi cánh cửa trong một tòa nhà: cửa chính, văn phòng, két sắt. Giờ hãy tưởng tượng chiếc chìa khóa ấy không thể thay thế. Thợ khóa không thể làm bản sao, còn người quản lý tòa nhà cũng không giữ chìa dự phòng. Trong tiền mã hóa, cụm từ khôi phục có vai trò như vậy. Mất cụm từ này là bạn mất mọi thứ mà nó bảo vệ. Để người khác giữ cụm từ này đồng nghĩa với việc họ sở hữu mọi thứ.
Hướng dẫn này trình bày toàn bộ chủ đề ở một nơi: 12 hoặc 24 từ thực sự mã hóa những gì, chúng trở thành khóa cho hàng chục blockchain như thế nào, cách lưu trữ chúng, những gì có thể và không thể khôi phục bằng chúng, cùng các lỗi chỉ bộc lộ vào ngày bạn khôi phục ví. Nếu chỉ đọc một bài viết về bảo mật ví, hãy đọc bài này.
Giải thích đơn giản
Cụm từ khôi phục (còn gọi là cụm từ ghi nhớ hoặc cụm từ khôi phục) là một danh sách gồm 12 hoặc 24 từ tiếng Anh thông dụng, chẳng hạn như correct horse battery staple. Các từ này kết hợp với nhau để mã hóa bí mật gốc của toàn bộ ví tiền mã hóa của bạn. Đây không phải là mật khẩu do bạn tự chọn. Đó là dạng biểu diễn dễ đọc của một số ngẫu nhiên lớn đến mức không thể đoán bằng tính toán.
Khi khôi phục ví trên thiết bị mới, bạn nhập các từ theo đúng thứ tự, rồi mọi địa chỉ và khóa riêng tư mà ví từng tạo sẽ được khôi phục. Không cần khôi phục tài khoản, gửi yêu cầu hỗ trợ hay chờ đợi. Đó chính là mục đích của cụm từ này, đồng thời cũng là rủi ro đi kèm.
Cụm từ khôi phục thực chất là gì
Quy trình này được chuẩn hóa theo BIP-39 (Đề xuất cải tiến Bitcoin số 39), quy định cách phần mềm ví chuyển dữ liệu ngẫu nhiên thô thành danh sách từ.
- Ví tạo một số ngẫu nhiên gọi là entropy: 128 bit cho cụm từ gồm 12 từ, 256 bit cho cụm từ gồm 24 từ. Tổng cộng có năm độ dài được quy định (128 bit tương ứng 12 từ, 160 bit tương ứng 15 từ, 192 bit tương ứng 18 từ, 224 bit tương ứng 21 từ, 256 bit tương ứng 24 từ).
- Một checksum ngắn được thêm vào. Ví băm entropy bằng SHA-256 rồi lấy vài bit đầu tiên của kết quả: 4 bit với entropy 128 bit, 8 bit với entropy 256 bit.
- Entropy cùng checksum được chia thành các đoạn 11 bit. Mỗi đoạn là một chỉ mục trong danh sách cố định gồm 2,048 từ tiếng Anh, nên mỗi từ mã hóa chính xác 11 bit. Vì vậy, các cụm từ khôi phục luôn gồm những từ có trong từ điển, chứ không phải chuỗi ký tự tùy ý.
- Kết quả là 12 từ với 128 bit entropy hoặc 24 từ với 256 bit entropy.
Trong thực tế, có hai chi tiết thiết kế đáng lưu ý. Bốn chữ cái đầu tiên của mỗi từ trong danh sách đều khác nhau, nên có thể nhập dạng viết tắt mà không gây nhầm lẫn. Checksum cũng giúp phát hiện lỗi gõ: khi ví từ chối cụm từ lúc nhập, điều đó có nghĩa là checksum không khớp. Thường là do có từ sai hoặc sai thứ tự, chứ không phải tiền đã mất.
Danh sách từ này giống nhau trong mọi ví hỗ trợ BIP-39. Nhờ vậy, cụm từ khôi phục Zelcore có thể được khôi phục trên các ví tương thích khác và ngược lại.
Để biết cụm từ khôi phục được khôi phục sẽ đưa những gì trở lại trên thiết bị mới, hãy đọc hướng dẫn đồng bộ Zelcore trên nhiều thiết bị.
Cụm từ gồm 12 từ cung cấp mức bảo mật 128 bit, tương đương với một khóa riêng tư Bitcoin. Cụm từ gồm 24 từ cung cấp mức bảo mật 256 bit. Với phần cứng hiện tại hoặc có thể hình dung trong tương lai, cả hai đều không thể bị vét cạn bằng cách thử lần lượt các khả năng. Vì vậy, việc chọn loại nào tùy thuộc vào mô hình mối đe dọa của bạn và mức độ sẵn lòng ghi lại nhiều từ hơn, chứ không phải vì một loại nào đó “không an toàn”.
Từ các từ đến seed gốc: PBKDF2 và cụm mật khẩu
Các từ không được dùng trực tiếp làm khóa. Chúng là đầu vào của một hàm kéo giãn khóa.
PBKDF2 nhận cụm từ ghi nhớ dưới dạng chuỗi và chạy HMAC-SHA512 trên chuỗi đó 2.048 lần. Muối là từ mnemonic theo sau bởi một cụm mật khẩu tùy chọn, đôi khi được gọi là từ thứ 25. Kết quả là một giá trị 512 bit gọi là seed gốc. Bước kéo giãn khiến việc dò vét cạn trở nên tốn kém, ngay cả khi kẻ tấn công đã biết gần hết cụm từ.
Cụm mật khẩu là điểm khiến nhiều người gặp rắc rối, vì vậy cần hiểu thật chính xác:
- Cụm mật khẩu không được lưu ở đâu cả: không trên ví phần cứng, không trong ứng dụng, cũng không trong bản sao lưu. Nó chỉ tồn tại trong trí nhớ của bạn hoặc trong một bản ghi riêng được viết ra.
- Mỗi cụm mật khẩu khác nhau, kể cả cụm mật khẩu để trống, sẽ tạo ra một seed gốc hoàn toàn khác và do đó là một ví hoàn toàn khác. Hai ví được tạo từ cùng các từ nhưng dùng hai cụm mật khẩu khác nhau không có mối liên hệ mật mã nào với nhau.
- Để trống cụm mật khẩu là hợp lệ và sẽ tạo ra ví tiêu chuẩn mà phần lớn người dùng sử dụng.
Mô hình bảo mật này dùng hai yếu tố: người lấy được các từ nhưng không có cụm mật khẩu sẽ truy cập ví mặc định, nơi bạn có thể để một số dư nhỏ làm ví mồi nhử. Sự đánh đổi rất lớn: quên cụm mật khẩu là không thể khắc phục. Không thể đặt lại và cũng không có cách liên hệ bộ phận hỗ trợ để giải quyết. Từ thứ 25 giải thích khi nào tính năng này đáng dùng; nói ngắn gọn, người mới bắt đầu nên nắm vững cách bảo quản cụm từ khôi phục thông thường trước.
Từ seed gốc đến mọi khóa: BIP-32 và BIP-44
Seed gốc 512 bit được đưa vào HMAC-SHA512 cùng với chuỗi khóa cố định Bitcoin seed. Kết quả được chia làm hai: 256 bit bên trái trở thành khóa riêng tư chính, còn 256 bit bên phải trở thành mã chuỗi, một phần entropy được dùng trong mọi bước dẫn xuất tiếp theo. Hai phần này cùng tạo nên gốc của ví xác định phân cấp (HD) theo định nghĩa của BIP-32.
Từ gốc này, ví dẫn xuất một cây khóa con gần như không giới hạn. Mỗi bước kết hợp khóa cha, mã chuỗi và một số chỉ mục qua một lần chạy HMAC-SHA512 khác. Có hai chế độ:
- Dẫn xuất có tăng cường bảo mật dùng khóa riêng tư của khóa cha. Ngay cả người có khóa công khai mở rộng (xpub) của khóa cha cũng không thể tính ra các khóa con được dẫn xuất theo cách này. Nhờ đó, xpub bị lộ sẽ không làm lộ dây chuyền các khóa riêng tư.
- Dẫn xuất thông thường dùng khóa công khai của khóa cha, cho phép ví chỉ xem và các sàn giao dịch tạo địa chỉ nạp tiền mà không cần chạm đến khóa riêng tư.
BIP-44 chuẩn hóa cấu trúc đường dẫn giữa các đồng tiền:
m / 44' / coin_type' / account' / change / address_index
Giá trị coin_type khác nhau tùy blockchain: Bitcoin là 0, Ethereum là 60, cùng hàng trăm đồng tiền đã đăng ký khác. Dấu nháy đơn ở ba cấp đầu tiên biểu thị dẫn xuất có tăng cường bảo mật, giúp bảo vệ khóa ở cấp tài khoản ngay cả khi xpub ở cấp địa chỉ bị lộ. Cơ chế này cho phép một cụm từ khôi phục sao lưu toàn bộ ví đa chuỗi: mỗi chuỗi nằm ở một đường dẫn khác nhau dưới cùng một gốc. Nhờ đó, Zelcore dẫn xuất tài khoản cho hơn 80 chuỗi từ một cụm từ duy nhất. Bài toán lưu ký đa chuỗi giải thích sâu hơn về vấn đề này.
Vì mọi bước đều có tính xác định, cùng một seed luôn tạo ra cùng các khóa. Chỉ biết khóa riêng tư chính không làm lộ tất cả khóa con, vì mỗi bước dẫn xuất còn cần mã chuỗi. Nhưng cụm từ khôi phục cung cấp cả hai. Ai có cụm từ khôi phục thì có toàn quyền truy cập mọi thứ.
Vì sao mất cụm từ khôi phục đồng nghĩa với mất tài sản vĩnh viễn
Blockchain không có chức năng đặt lại mật khẩu. Không công ty nào giữ bản sao khóa của bạn và không biểu mẫu hỗ trợ nào có thể lấy lại số tiền đã mất. Khi ký một giao dịch blockchain, bạn dùng khóa riêng tư được tạo từ seed của mình để ký. Nếu seed biến mất, các khóa cũng mất theo và số tiền ở những địa chỉ đó bị khóa vĩnh viễn.
Các nhà nghiên cứu ước tính có từ 2.3 đến 3.7 triệu BTC không thể truy cập vĩnh viễn. Phần lớn số này bị mất vì cụm từ khôi phục và khóa riêng tư không được sao lưu đúng cách trong những năm đầu của Bitcoin.
Mã PIN của ví phần cứng không bảo vệ bạn trong trường hợp này. Sau quá nhiều lần nhập sai mã PIN, ví phần cứng sẽ tự xóa dữ liệu. Thiết bị không còn, nhưng cụm từ khôi phục được lưu ngoại tuyến có thể khôi phục ví trên thiết bị mới chỉ trong vài phút. Nếu không có cụm từ đó, chỉ sở hữu thiết bị vật lý là chưa đủ.
Đó là lý do mọi quy trình thiết lập ví nghiêm túc đều yêu cầu bạn ghi cụm từ ra ngay lập tức và xác minh cụm từ trước khi nạp dù chỉ một đồng.
Cụm từ khôi phục khôi phục được những gì và không khôi phục được gì
“Tôi có cụm từ khôi phục rồi, vậy là ổn” đúng với các tài khoản tiêu chuẩn, nhưng không đúng với một số thứ mà nhiều người tưởng rằng cũng được khôi phục.
Có thể khôi phục chỉ bằng cụm từ khôi phục:
- Số dư trên chuỗi và lịch sử giao dịch của mọi tài khoản BIP-44 tiêu chuẩn
- Tất cả địa chỉ được tạo trên các blockchain được hỗ trợ
- Khả năng chi tiêu từ bất kỳ địa chỉ nào trong số đó
Không thể khôi phục bằng cụm từ khôi phục:
- Mã PIN ví phần cứng, nhãn tài khoản tùy chỉnh và các mục trong sổ địa chỉ. Đây là siêu dữ liệu chỉ lưu trên thiết bị.
- Trạng thái kênh Lightning Network. Lightning hoạt động ngoài chuỗi; để khôi phục số dư trong các kênh đang mở, ngoài cụm từ khôi phục còn cần tệp sao lưu kênh tĩnh (SCB).
- Cấu hình chỉ xem dùng đường dẫn dẫn xuất không tiêu chuẩn.
- Dữ liệu riêng của ứng dụng như thẻ danh mục đầu tư, cảnh báo giá và địa chỉ RPC tùy chỉnh. Trong Zelcore, danh bạ và cài đặt sẽ được tạo lại sau khi khôi phục; số dư của bạn không bị ảnh hưởng.
Bạn có thể khôi phục hoàn toàn ví sau khi đặt lại ví phần cứng, miễn là cụm từ khôi phục còn nguyên và bạn chỉ quên mã PIN. Nếu cụm từ khôi phục cũng mất, thiết bị sẽ trở thành vật vô dụng.
Cách lưu trữ cụm từ khôi phục
Khi đã hiểu cụm từ này là gì, bạn sẽ thấy các quy tắc rất dễ nhớ.
Nên làm:
- Ghi cụm từ ra giấy theo đúng thứ tự ngay khi cụm từ xuất hiện trong quá trình thiết lập.
- Hoàn tất bước xác minh mà ví yêu cầu, sau đó thử khôi phục ví thực tế trước khi nạp số tiền đáng kể.
- Cất ít nhất hai bản sao ở những nơi an toàn, tách biệt về mặt vật lý: két chống cháy, két an toàn ở ngân hàng hoặc một địa điểm ngoài nhà đáng tin cậy.
- Nếu lưu trữ dài hạn, hãy khắc cụm từ lên tấm kim loại sao lưu. Thép hoặc titan chịu được nhiệt độ của một vụ cháy nhà thông thường và ngập lụt. Giấy thì không.
Không bao giờ:
- Chụp ảnh cụm từ. Trên hầu hết điện thoại, ảnh sẽ tự động đồng bộ với các dịch vụ đám mây.
- Nhập cụm từ vào ứng dụng, tiện ích mở rộng hoặc trang web, trừ khi bạn đang chủ động khôi phục ví; ngay cả khi đó, hãy xác minh nguồn phần mềm.
- Gửi cụm từ qua email hoặc lưu trong ứng dụng ghi chú, tài liệu đám mây hay trình quản lý mật khẩu trực tuyến.
- Chia sẻ cụm từ với bất kỳ ai. Nhà cung cấp ví, sàn giao dịch hay nhân viên hỗ trợ sẽ không bao giờ yêu cầu cụm từ này. Ai yêu cầu đều đang tìm cách đánh cắp tiền của bạn. Bộ phận hỗ trợ Zelcore sẽ không bao giờ hỏi cụm từ khôi phục của bạn.
Chọn vật liệu lưu trữ phù hợp với rủi ro bạn thực sự gặp phải
Câu hỏi không phải là “bản sao lưu nào tốt nhất” mà là “tôi đang đề phòng điều gì”. Với hầu hết mọi người, rủi ro thực tế không phải là những kẻ tấn công nhắm riêng vào họ, mà là cháy nhà, ngập lụt, trộm cắp và quên mất nơi cất bản sao lưu.
- Giấy rẻ và dễ đọc, nhưng xuống cấp theo thời gian và không chịu được lửa hay nước.
- Kim loại chịu được cả lửa lẫn nước, nhưng đắt hơn và mất nhiều thời gian chuẩn bị. Khi số tài sản nắm giữ đã đủ lớn để việc mất chúng gây tổn thất đáng kể, kim loại là lựa chọn thiết thực.
- Bản sao kỹ thuật số (ảnh, bộ nhớ đám mây, ghi chú trong trình quản lý mật khẩu) khiến seed có thể bị lộ toàn bộ chỉ từ một tài khoản bị xâm nhập. Không nên dùng cách này để lưu seed.
Chia nhỏ cụm từ là cái bẫy
Nhiều người chia đôi danh sách từ rồi cất mỗi nửa ở một nơi, nhưng cách này làm giảm mức độ an toàn. Nếu tìm được một nửa của cụm từ gồm 12 từ, kẻ tấn công có thể thu hẹp không gian tìm kiếm đủ để dò vét. Nếu cần phân tán rủi ro giữa nhiều địa điểm, hãy cất các bản sao đầy đủ riêng biệt hoặc dùng Shamir's Secret Sharing (SLIP-39). Phương pháp này chia bí mật thành N phần, trong đó chỉ cần M phần bất kỳ là có thể khôi phục bí mật, mà không làm giảm độ an toàn của từng phần. Trezor hỗ trợ SLIP-39; các ví khác không phải lúc nào cũng hỗ trợ.
Những nguyên nhân khiến khôi phục thất bại mà ít ai cảnh báo
Những vấn đề này chỉ xuất hiện lúc khôi phục, khi rủi ro ở mức cao nhất.
Quên cụm mật khẩu. Bạn nhập đúng các từ. Ví tạo ra những địa chỉ không có số dư. Không có thông báo lỗi nào xuất hiện. Tiền nằm trong ví được bảo vệ bằng cụm mật khẩu và bạn không thể truy cập. Đây là nguyên nhân mất tài sản không thể khôi phục phổ biến nhất ở những người đã bật cụm mật khẩu nhưng chỉ ghi nhớ trong đầu.
Sai đường dẫn dẫn xuất. Nếu ví dùng BIP-49 (SegWit bọc) hoặc BIP-84 (SegWit gốc) được khôi phục trong ứng dụng mặc định dùng BIP-44, ứng dụng sẽ hiển thị một tập địa chỉ khác dù dùng cùng seed. Số dư có vẻ như đã biến mất. Nếu biết tìm ở đâu, bạn có thể sửa bằng cách đổi đường dẫn dẫn xuất trong phần cài đặt nâng cao của ứng dụng mới.
Ví không tương thích. Không phải ví nào cũng hỗ trợ mọi ngôn ngữ BIP-39 hoặc mọi loại tiền. Nếu khôi phục bằng phần mềm không có đường dẫn của blockchain ban đầu, bạn sẽ không thấy gì. Tiền chưa mất, chỉ bị ẩn cho đến khi bạn dùng phần mềm hỗ trợ blockchain đó.
Kênh Lightning không có SCB. Seed khôi phục được số dư trên chuỗi. Để đóng các kênh đang mở một cách hợp tác, bạn cần tệp SCB. Nếu không có tệp này, các kênh có thể bị buộc đóng; bản sao lưu cũ có thể khiến bên kia đòi khoản phạt thông qua một giao dịch.
Lưu trữ có thể đọc bằng camera. Mã QR chứa seed hoặc ảnh trong thư viện được đồng bộ lên đám mây có thể khiến toàn bộ tài sản bị mất chỉ vì một tài khoản bị xâm nhập. Seed không bao giờ nên tồn tại dưới dạng mà camera hoặc tính năng chụp màn hình có thể gửi lên máy chủ.
Những sai lầm thường gặp nhất
- Lưu trữ kỹ thuật số. Ảnh chụp màn hình, ứng dụng ghi chú, bản nháp và tài liệu đám mây có thể bị phần mềm độc hại hoặc sự cố rò rỉ dữ liệu truy cập. Seed phải được lưu ngoại tuyến.
- Thao túng tâm lý. Những kẻ tự xưng là “bộ phận hỗ trợ” yêu cầu cụm từ của bạn để “xác minh” hoặc “khôi phục” tài khoản luôn là kẻ lừa đảo. Các nguy cơ bảo mật của bạn liệt kê các chiêu thức này.
- Chỉ có một bản sao. Nếu chỉ cất một tờ giấy ở một nơi, chỉ cần một vụ cháy, ngập lụt hoặc trộm cắp là bạn có thể mất tài sản vĩnh viễn.
- Bỏ qua bước thử khôi phục. Dành năm phút lúc này có thể giúp bạn tránh mất tất cả về sau.
- Nhầm cụm từ khôi phục với khóa riêng tư. Khóa riêng tư kiểm soát một địa chỉ. Seed tạo ra tất cả các khóa đó. Mất một khóa đã là rắc rối; mất seed là mất tất cả.
Việc cần làm tiếp theo
- Kiểm tra bản sao lưu ngay hôm nay. Tìm cụm từ và xác nhận từng từ đều đọc được.
- Ghi lại đường dẫn dẫn xuất nếu ví của bạn dùng đường dẫn không tiêu chuẩn. Với BIP-44 thông thường, bạn không cần ghi riêng.
- Cất cụm mật khẩu riêng và thử khôi phục. Nếu dùng cụm mật khẩu, hãy thử khôi phục toàn bộ ít nhất một lần với cả cụm từ khôi phục lẫn cụm mật khẩu.
- Lưu bản sao lưu kênh tĩnh nếu bạn dùng Lightning, ở nơi khác với seed và cập nhật sau mỗi lần mở hoặc đóng kênh.
- Chọn vật liệu lưu trữ phù hợp với giá trị tài sản. Dùng giấy cho số tiền nhỏ trong môi trường ít rủi ro; dùng kim loại khi giá trị tài sản đã đáng kể.
- Lập kế hoạch tự quản lý tài sản. Kế hoạch tự quản lý tài sản cá nhân biến các quy tắc này thành những ngưỡng cụ thể bạn có thể làm theo, còn hướng dẫn Sao lưu và khôi phục ví trình bày các bước chính xác trong Zelcore.
Những điểm chính
- Cụm từ khôi phục là cách mã hóa entropy chính bằng từ ngữ dễ đọc, dùng để tạo mọi khóa trong ví của bạn và được chuẩn hóa theo BIP-39, BIP-32 và BIP-44.
- 12 từ tương đương với 128 bit entropy, 24 từ tương đương với 256 bit. Cả hai đều không thể đoán được trên thực tế.
- Mất cụm từ đồng nghĩa với mất tài sản vĩnh viễn, không thể đảo ngược. Quên cụm mật khẩu cũng vậy.
- Cụm từ khôi phục khôi phục được số dư và địa chỉ. Cụm từ này không khôi phục được mã PIN, nhãn, kênh Lightning hoặc các đường dẫn không theo tiêu chuẩn.
- Hãy giữ ít nhất hai bản sao ngoại tuyến ở những nơi an toàn riêng biệt, ưu tiên kim loại nếu bạn có tài sản đáng kể, không bao giờ chia nhỏ các từ và không bao giờ lưu chúng ở nơi máy ảnh có thể ghi lại hoặc internet có thể truy cập.



