Quay lại blog
Bảo mật

Seed phrase của bạn là một điểm lỗi duy nhất

Minh họa phẳng về một khối coin đặt chông chênh trên một tấm thẻ seed phrase đang nứt vỡ, bên cạnh cùng khối coin đó tựa vững vàng trên ba chiếc khóa.

Mười hai từ. Với hầu hết những người đang đọc bài này, đó là toàn bộ mô hình bảo mật: mười hai hoặc hai mươi bốn từ tiếng Anh thông dụng, được tạo ra một lần, ghi lên giấy, kiểm soát mọi thứ họ sở hữu on-chain. Seed phrase BIP39 xứng đáng được ghi nhận thật sự — nó khiến việc sao lưu ví trở nên di động, chuẩn hóa và độc lập với nhà cung cấp. Nhưng nó cũng lặng lẽ trở thành rủi ro tập trung nhất của cả ngành. Seed phrase là một điểm lỗi duy nhất: một bí mật trao mọi thứ cho bất kỳ ai đọc được nó, và chôn vùi mọi thứ nếu người duy nhất biết nó đánh mất nó.

Điểm mấu chốt nói trước: bạn không thể vá lỗi này bằng những chỗ giấu tốt hơn. Mọi cách sắp đặt một seed phrase duy nhất chỉ đánh đổi rủi ro lộ lọt lấy rủi ro thất lạc. Cách khắc phục nằm ở cấu trúc — trải quyền kiểm soát ra nhiều khóa độc lập để không một bí mật đơn lẻ nào có thể rút cạn ví, hoặc khi biến mất, khóa chặt nó vĩnh viễn.

Một bí mật, hai cách thất bại đối nghịch

Seed phrase là chiếc khóa chủ hoàn chỉnh của một ví: nó suy ra một cách tất định mọi khóa riêng và mọi địa chỉ, nên ai nắm những từ đó là kiểm soát số tiền, không cần hỏi thêm điều gì. Đó là một bí mật kiểu vật cầm tay — ai cầm là người đó sở hữu. Không có tài khoản nào để đóng băng, không có việc đặt lại mật khẩu, và không có đường dây hỗ trợ nào có thẩm quyền đảo ngược một giao dịch chuyển tiền.

Một điểm lỗi duy nhất là bất kỳ thành phần nào mà khi bị xâm phạm hoặc thất lạc sẽ kéo sập toàn bộ hệ thống. Chiếu theo định nghĩa đó, mô hình lưu ký bằng một seed duy nhất thất bại theo cả hai hướng cùng một lúc:

  • Lộ lọt. Bất kỳ ai đọc được những từ đó — một tên trộm, một cuộn ảnh đồng bộ lên đám mây, phần mềm độc hại quét ứng dụng ghi chú, một người thân biết bạn cất giữ đồ đạc ở đâu — đều có thể quét sạch ví trong vài phút, từ bất cứ đâu, không thể đảo ngược.
  • Thất lạc. Nếu bản sao duy nhất bị cháy, bị ngập nước, phai mực, hoặc bị vứt đi cùng rác, số coin vẫn hiển thị on-chain mãi mãi nhưng không bao giờ chi tiêu được. Blockchain sẽ vui vẻ cho các cháu của bạn xem số dư; không một ai trong số họ chạm được vào nó.

Điều khó chịu là hai rủi ro này kéo ngược chiều nhau. Tạo thêm nhiều bản sao thì bạn giảm khả năng thất lạc nhưng lại nhân lên khả năng lộ lọt. Giữ một bản sao duy nhất ở một chỗ giấu tuyệt hảo thì bạn làm điều ngược lại. Với một seed phrase duy nhất, bạn chỉ có thể chọn kiểu thất bại nào mình dễ gặp hơn — chứ không thể loại bỏ chính chế độ thất bại đó.

Những vụ mất mát được ghi chép rõ nhất trong ngành

Không điều nào trong đây là giả tưởng. Năm 2013, James Howells, một nhân viên IT ở xứ Wales, đã vứt bỏ một ổ cứng chứa khóa của khoảng 7.500 BTC. Kể từ đó nó nằm chôn vùi trong một bãi rác ở Newport, và cả một thập kỷ với những đề xuất khai quật vẫn không lay chuyển được cả hội đồng địa phương lẫn số coin. Stefan Thomas, một lập trình viên ở San Francisco, giữ một ổ IronKey đã mã hóa chứa khóa của hơn 7.000 BTC một chút — anh đã quên mật khẩu từ nhiều năm trước và, như được đưa tin rộng rãi vào năm 2021, đã dùng hết tám trong mười lần đoán của ổ trước khi nó khóa vĩnh viễn. Ngoài những trường hợp nổi tiếng, các ước tính được trích dẫn rộng rãi của Chainalysis cho rằng lượng bitcoin mất vĩnh viễn vào khoảng 20% tổng số coin từng được đào.

Hãy để ý những người này là ai: một chuyên gia IT và một kỹ sư phần mềm lão luyện, cả hai đều bước vào ngành đủ sớm để hiểu chính xác thứ mình đang nắm giữ. Mô hình lưu ký bằng một khóa duy nhất không trừng phạt sự thiếu hiểu biết — nó trừng phạt sự sai sót rất đỗi con người, và trừng phạt một cách trọn vẹn. Một lỗi lưu trữ giấy tờ mà với khách hàng ngân hàng chỉ tốn một buổi chiều gọi điện, thì với người tự lưu ký lại tốn tất cả, vĩnh viễn.

Một seed phrase kiểm soát toàn bộ số tiền: nếu cụm từ bị sao chép, một người lạ chi tiêu mọi thứ, còn nếu bị thất lạc, số tiền bị đóng băng vĩnh viễn.
Lưu ký bằng một seed: cả hai hướng thất bại đều kết thúc câu chuyện.

Vì sao thêm bản sao lưu không khắc phục được

Lời khuyên tiêu chuẩn sau mỗi câu chuyện mất mát đều giống nhau: hãy sao lưu cho đúng cách. Khắc những từ đó lên thép để lửa và nước không thể phá hủy. Giữ bản sao ở nhiều nơi. Thuê một hộp ký gửi an toàn. Tất cả những điều này đều hợp lý trong giới hạn của nó — nhưng không điều nào chạm tới cấu trúc nền tảng, bởi mỗi bản sao của một seed phrase đều là toàn bộ chiếc khóa. Một tấm thép sống sót qua một trận cháy nhà; nó cũng tồn tại đủ lâu để bị tìm thấy. Mỗi vị trí sao lưu thêm là thêm một nơi mà một bản sao hoàn chỉnh, có thể chi tiêu được của toàn bộ tài sản của bạn đang nằm chờ kẻ đọc nhầm.

Cả ngành đều biết điều này, đó là lý do "sao lưu seed như một dịch vụ" liên tục được thử nghiệm. Vào tháng 5 năm nay, Ledger công bố Recover, một gói đăng ký tùy chọn chia nhỏ một bản sao đã mã hóa của seed thiết bị cho ba bên lưu ký, gắn với việc xác minh danh tính. Làn sóng phản đối từ những người dùng kỹ thuật đến ngay lập tức và ồn ào đến mức Ledger phải tạm hoãn việc triển khai. Khi đó chúng tôi đã viết về bài học mà sự việc này dạy về self-custody; điểm hẹp hơn đáng quan tâm ở đây là vì sao sản phẩm đó tồn tại ngay từ đầu. Một seed duy nhất không có bản sao lưu là một vụ mất mát chỉ chờ ngày xảy ra, và các nhà cung cấp cảm nhận áp lực đó qua các ticket hỗ trợ mỗi ngày. Nhưng việc ráp lại seed thông qua các bên thứ ba không loại bỏ điểm lỗi duy nhất — nó chỉ đánh đổi lấy rủi ro đối tác và rủi ro quy trình, một loại rủi ro mà sự sụp đổ của FTX vào tháng 11 năm ngoái đã định giá cho bất kỳ ai vẫn còn cần đến bài học đó.

Nói cho công bằng, ví phần cứng thực sự giỏi ở đúng điều chúng tuyên bố: giữ khóa tránh xa một máy tính có kết nối internet. Nhưng seed bên trong một ví phần cứng vẫn là một seed duy nhất. Mất cả thiết bị lẫn bản sao lưu trên giấy của nó thì kết cục cũng y hệt như bãi rác kia.

Điều thực sự loại bỏ điểm lỗi duy nhất

MultiSig — lưu ký đa chữ ký — thay đổi cấu trúc thay vì chỗ giấu. Một ví MultiSig yêu cầu M trong N khóa độc lập để phê duyệt bất kỳ giao dịch nào: 2-of-3, 3-of-5, v.v. Không một khóa đơn lẻ nào có thể di chuyển số tiền, và việc phá hủy bất kỳ một khóa đơn lẻ nào cũng không thể đóng băng chúng. Điểm lỗi duy nhất không phải được giấu kỹ hơn; nó ngừng tồn tại.

Nếu làm đúng, mỗi trong số N khóa được tạo ra như một seed phrase BIP39 tiêu chuẩn riêng, trên thiết bị riêng của nó, cất giữ ở nơi riêng của nó — và mỗi khóa có thể thuộc về một người khác nhau. Một ví 2-of-3 với các khóa nằm ở hai thành phố và trong tay hai người thì không có địa điểm, không có thiết bị, và không có cá nhân nào mà sự cố của họ là chí mạng.

Nói cho công bằng với các phương án thay thế: ví MPC theo đuổi cùng mục tiêu bằng phép toán khác, chia một khóa thành các mảnh cùng nhau tính ra một chữ ký — một thiết kế hợp lý với những đánh đổi riêng của nó quanh tính minh bạch của giao thức và khả năng khôi phục. Các bên lưu ký loại bỏ hoàn toàn việc quản lý khóa, điều mà một số tổ chức thực sự cần, đổi lại là phải tin tưởng bên lưu ký. Ưu điểm riêng của MultiSig là chính chuỗi thực thi quy tắc: bất kỳ ai cũng có thể xác minh ngưỡng chi tiêu on-chain, và việc khôi phục không phụ thuộc vào việc một công ty nào đó phải tiếp tục hoạt động. Chính khả năng xác minh đó là lý do MultiSig của Ownbit giữ các contract on-chain của mình ở dạng mã nguồn mở dù ứng dụng thì không, và là lý do mỗi khóa cosigner trong một ví Ownbit là một cụm từ BIP39 thuần túy mà bạn có thể khôi phục bằng các công cụ tiêu chuẩn.

Một ví 2-of-3 sống sót được với đời thực

Đây là cách bố trí chúng tôi khuyến nghị thường xuyên nhất, chỉ dùng điện thoại và không gì khác:

  1. Khóa 1 — chiếc điện thoại hằng ngày của bạn. Ứng dụng ví giữ một seed và điều phối các giao dịch.
  2. Khóa 2 — một điện thoại dư làm ví lạnh. Một chiếc máy cũ, đã xóa sạch và giữ ngoại tuyến vĩnh viễn, giữ seed thứ hai. Các giao dịch chưa ký đi vào và chữ ký đi ra dưới dạng mã QR, nên khóa này không bao giờ chạm vào mạng. Quy trình ví lạnh của Ownbit tồn tại chính là vì điều này, mà không cần mua thêm phần cứng nào.
  3. Khóa 3 — một seed sao lưu ở nơi khác. Seed phrase thứ ba nằm trên giấy hoặc thép ở một địa điểm thứ hai, hoặc ở chỗ một thành viên gia đình mà bạn tin tưởng.

Giờ hãy lần lượt đi qua các tình huống thất bại. Một trận cháy nhà cuốn đi cả điện thoại hằng ngày lẫn điện thoại lạnh? Khóa 3 cộng với các thiết bị thay thế khôi phục lại quyền kiểm soát 2-of-3. Một tên trộm tìm thấy seed sao lưu? Một mình nó chẳng ký được gì, và bạn thong thả luân chuyển số tiền sang một ví mới theo lịch của riêng mình. Điện thoại bị đánh cắp ở sân bay? Cũng câu trả lời đó. Trong một MultiSig 2-of-3, mất bất kỳ một khóa nào cũng có thể sống sót và đánh cắp bất kỳ một khóa nào cũng vô giá trị — hai rủi ro từng kéo ngược chiều nhau dưới một seed duy nhất giờ đều được cùng một cấu trúc hấp thụ.

Mục tiêu không phải là khiến việc mất khóa trở nên bất khả thi. Mà là khiến bất kỳ một mất mát đơn lẻ nào cũng có thể sống sót, và bất kỳ một vụ trộm đơn lẻ nào cũng trở nên vô dụng.
Trong một MultiSig 2-of-3, hai khóa còn lại vẫn chi tiêu được sau khi mất một khóa, trong khi một tên trộm cầm một khóa đánh cắp thì không thể chi tiêu.
2-of-3: mất một khóa vẫn sống sót, một khóa bị đánh cắp thì vô dụng.

Những cái giá thành thật

MultiSig không miễn phí. Mỗi lần chi tiêu cần một chữ ký thứ hai, điều này thêm một bước phối hợp — chấp nhận được với tiền tiết kiệm, phiền toái với tiền cà phê, và đó là lý do một ví nóng nhỏ dùng một khóa duy nhất vẫn có chỗ đứng chính đáng bên cạnh một két MultiSig. Trên một số chuỗi, các giao dịch MultiSig tốn phí nhiều hơn đôi chút. Và giờ bạn có ba seed phrase để cất giữ cho tốt thay vì một; sự kỷ luật không biến mất, nó phân tán ra. Điều thay đổi là hậu quả của một sai sót: một lỗi từng là chí mạng nay trở thành một sự cố có thể sửa chữa.

Còn có một lợi ích lặng lẽ hơn nữa. Vì các khóa có thể thuộc về những người khác nhau, MultiSig là nền tảng tự nhiên cho việc thừa kế: người thừa kế có thể giữ một khóa ngay hôm nay mà không thể chi tiêu ngay hôm nay, và không ai từng phải chia sẻ seed phrase khi còn sống. Điều đó xứng đáng có một bài viết riêng — còn bây giờ, luận điểm này tự nó đã đủ vững. Nếu toàn bộ tài sản ròng on-chain của bạn phụ thuộc vào một chuỗi từ ngữ vừa phải giữ bí mật vừa phải an toàn cùng một lúc, thì câu hỏi không phải là liệu cách sắp đặt đó có thể thất bại hay không, mà là nó thất bại theo hướng nào trước.

Câu hỏi thường gặp

Điều gì xảy ra nếu ai đó tìm thấy seed phrase của tôi?

Họ kiểm soát hoàn toàn chiếc ví. Một seed phrase tái tạo lại mọi khóa riêng, nên người tìm thấy có thể chuyển mọi thứ tới các địa chỉ mà họ kiểm soát trong vài phút, và các giao dịch chuyển tiền on-chain không thể đảo ngược. Chuyển ngay số tiền sang một ví mới là cách phòng vệ duy nhất — và chỉ khi bạn phát hiện ra việc lộ lọt kịp thời.

Một bản sao lưu seed phrase bằng kim loại đã đủ chưa?

Kim loại giải quyết độ bền — cháy, ngập nước và mực phai — nhưng không giải quyết tính bảo mật hay sự tập trung. Một tấm thép vẫn là một bản sao hoàn chỉnh, có thể chi tiêu được của chiếc ví của bạn nằm ở một chỗ có thể bị tìm thấy. Nó là một thành phần tốt của một kế hoạch lưu trữ và là một sự thay thế tồi cho việc loại bỏ hoàn toàn điểm lỗi duy nhất.

MultiSig có nghĩa là tôi không còn seed phrase nữa không?

Không — bạn có nhiều seed phrase. Trong một MultiSig tiêu chuẩn, mỗi khóa cosigner là một seed phrase BIP39 riêng của nó, được tạo ra và cất giữ độc lập. Khác biệt là không một khóa đơn lẻ nào trong số đó có thể chi tiêu số tiền, hoặc khi bị mất, đóng băng chúng; chỉ có ngưỡng, chẳng hạn 2-of-3, mới có quyền năng đó.

Chẳng phải một passphrase BIP39 ("từ thứ 25") đã đủ để bảo vệ rồi sao?

Một passphrase bảo vệ chống lại việc ai đó tìm thấy seed đã ghi ra, đó là một giá trị thật. Nhưng nó thêm một thứ thứ hai mà bạn có thể đánh mất: quên passphrase thì riêng seed không khôi phục được gì. Nó làm chỗ giấu sâu hơn; nó không loại bỏ điểm lỗi duy nhất theo cách mà các khóa MultiSig độc lập làm được.

Nếu bạn muốn thay đổi cấu trúc hơn là cứ nâng cấp mãi các chỗ giấu, MultiSig của Ownbit thiết lập một ví 2-of-3 trải trên điện thoại của bạn, một chiếc máy dư ngoại tuyến, và một seed sao lưu — mỗi khóa là một cụm từ BIP39 tiêu chuẩn mà bạn có thể khôi phục không cần đến máy chủ của chúng tôi. Trang quy trình ví lạnh chỉ ra từng bước cách thiết lập việc ký ngoại tuyến dựa trên QR.