Quay lại blog
MultiSig

MPC vs MultiSig: một so sánh thẳng thắn

Minh họa phẳng đối chiếu MPC — nơi các mảnh khóa hợp nhất off-chain thành một chữ ký — với multisig, nơi chính blockchain kiểm tra hai trong ba khóa.

Hãy hỏi mười kỹ sư bảo mật để phân định câu hỏi MPC vs multisig và bạn sẽ nghe thấy một sự chia rẽ quen thuộc: các nhà cung cấp công nghệ lưu ký nghiêng về MPC, những người kỳ cựu của Bitcoin nghiêng về multisig, và cả hai phe nói mà chẳng ai nghe ai. Phép so sánh này xứng đáng được đối xử tử tế hơn, bởi hai cách tiếp cận giải quyết cùng một vấn đề — không một cá nhân, thiết bị hay máy chủ đơn lẻ nào được phép tự mình chuyển tiền — nhưng ở những nơi khác nhau về bản chất. MPC (multi-party computation, tính toán đa bên) phân chia chính bản thân khóa, bằng mật mã off-chain. Multisig phân chia thẩm quyền, bằng những quy tắc do chính blockchain thực thi.

Chỉ một lựa chọn thiết kế đó đã chi phối gần như mọi khác biệt thực tế: bạn trả bao nhiêu phí, người ngoài có thể xác minh được gì, chuyện gì xảy ra khi một nhà cung cấp biến mất, và ai phải chịu trách nhiệm sau một chữ ký sai lầm. Không cách nào là một bản nâng cấp tuyệt đối so với cách kia. Tính đến thời điểm viết bài này vào tháng 4/2024, cả hai đang bảo vệ hàng chục tỷ đô la, và cả hai đều từng gây ra những thất bại đắt giá. Đây là phiên bản thẳng thắn của phép so sánh.

Hai cách phân chia quyền chi tiêu

Một ví MPC thường được xây trên một sơ đồ chữ ký ngưỡng (threshold signature scheme, TSS). Nó chia một khóa riêng tư thành các mảnh toán học do các bên hoặc thiết bị khác nhau nắm giữ; để ký, những người giữ mảnh chạy một giao thức tương tác và cùng nhau tính ra một chữ ký đơn lẻ, thông thường. Khóa riêng tư đầy đủ không bao giờ tồn tại ở bất kỳ một nơi nào tại bất kỳ khoảnh khắc nào — kể cả khi ví được tạo ra. Blockchain nhìn thấy một địa chỉ bình thường và một chữ ký bình thường, và hoàn toàn không biết rằng có một quorum tham gia.

Multisig đi con đường ngược lại. Mỗi người tham gia nắm giữ một khóa hoàn chỉnh, độc lập, và quy tắc chi tiêu — chẳng hạn 2-of-3 — được mã hóa ở nơi mà mạng lưới có thể thấy và thực thi: trong Bitcoin script, vốn đã hỗ trợ multisig một cách tự nhiên từ năm 2012, hoặc trong một smart contract trên các chain như Ethereum. Một multisig 2-of-3 sẽ không giải phóng tiền trừ khi hai trong ba khóa đã đăng ký mỗi khóa tạo ra chữ ký hợp lệ của riêng nó. Quorum không phải là một lời hứa do phần mềm bạn chạy đưa ra; nó là một quy tắc do sự đồng thuận của chain thực thi.

Cả hai mô hình đều được bán dưới cùng một từ — "ví" — che giấu đi việc các giả định về niềm tin khác nhau đến mức nào. Ở mô hình này, sự đảm bảo đến từ một hiện thực của mật mã tiên tiến mà người ngoài không thể kiểm tra; ở mô hình kia, từ các quy tắc đồng thuận mà ai cũng có thể kiểm tra.

MPC dời quorum vào trong mật mã và yêu cầu bạn tin tưởng vào một hiện thực. Multisig viết quorum thẳng vào chain và để bất kỳ ai cũng xác minh được.
Sơ đồ các mảnh khóa MPC ký off-chain để chain chỉ thấy một chữ ký, so với các khóa multisig ký riêng rẽ với chain thực thi 2 trong 3
Cùng một chính sách 2-of-3, được thực thi ở hai nơi khác nhau: giao thức off-chain so với quy tắc on-chain.

Lập luận ủng hộ MPC

Những ưu điểm của MPC là có thật, và chúng lý giải vì sao phần lớn hoạt động lưu ký của các tổ chức đang chạy trên nó.

  • Độ phủ chain gần như miễn phí. Về nguyên tắc, một hiện thực threshold-ECDSA duy nhất bao phủ mọi chain chấp nhận chữ ký ECDSA. Không cần viết, kiểm toán và triển khai một contract riêng cho từng chain — một chi phí thực sự đối với các sản phẩm multisig, vốn phải hiện thực lại mô hình của mình trên mỗi mạng lưới mà chúng hỗ trợ.
  • Địa chỉ trông bình thường. Một ví MPC trả phí như chữ ký đơn và không tiết lộ gì về chính sách của nó on-chain. Trước khi taproot được kích hoạt vào năm 2021, các giao dịch chi tiêu multisig của Bitcoin có kích thước thấy rõ là lớn hơn và tốn kém hơn so với giao dịch chữ ký đơn; MPC chưa bao giờ gặp vấn đề đó.
  • Các mảnh có thể được xoay vòng. Việc làm mới chủ động (proactive refresh) cho phép những người giữ mảnh ngẫu nhiên hóa lại các mảnh của họ mà không cần chuyển tiền hay đổi địa chỉ nạp, nên kẻ tấn công phải chiếm được một quorum số mảnh trong vòng một cửa sổ xoay vòng thay vì trải qua nhiều năm.
  • Không có rủi ro smart contract. Không có gì được triển khai on-chain, nên không có mã contract nào để khai thác. Sự cố Parity năm 2017 — một lỗi trong một thư viện multisig dùng chung đã đóng băng hàng trăm triệu đô la ETH — là câu chuyện cảnh tỉnh mà mọi nhà cung cấp MPC đều viện dẫn, và đó là một dẫn chứng công bằng.

Nơi MPC gãy đổ

Những điểm yếu cũng mang tính cấu trúc không kém, và chúng ít được quảng bá hơn.

Mật mã thực sự khó. Threshold ECDSA là một giao thức tương tác, nhiều vòng với những cạnh sắc, và các sai sót đã lọt tới môi trường production. Năm 2023, các nhà nghiên cứu bảo mật đã công bố những cuộc tấn công trích xuất khóa khả thi nhắm vào một số hiện thực ký ngưỡng được triển khai rộng rãi — lỗi nằm trong mã nguồn, không phải ở nền toán học bên dưới, nhưng người dùng của những ví bị ảnh hưởng vẫn phải hứng chịu như nhau. Giả định cốt lõi của một người dùng multisig là "chain xác minh chữ ký một cách chính xác." Giả định cốt lõi của một người dùng MPC là "nhà cung cấp của tôi đã hiện thực đúng một giao thức mật mã tinh vi." Đó không phải là hai giả định cùng cỡ.

Không ai bên ngoài có thể xác minh quorum. Một địa chỉ MPC trông giống như bất kỳ địa chỉ nào khác, nghĩa là cái ngưỡng ghi trong tài liệu tiếp thị không thể được kiểm chứng on-chain. Sự cố Multichain vào tháng 7/2023 đã cụ thể hóa điều này: khoảng 125 triệu đô la đã rời khỏi các địa chỉ của dự án, và những phát ngôn sau đó từ đội ngũ cho thấy rằng các máy chủ nắm giữ chất liệu khóa của nó thực chất đã nằm dưới quyền kiểm soát của một người duy nhất suốt từ đầu. Dù cho sơ đồ kiến trúc có hứa hẹn điều gì, thực tế vận hành là một điểm lỗi duy nhất — và không người ngoài nào có thể phát hiện điều đó từ chain.

Việc khôi phục thường phải đi qua nhà cung cấp. Hầu hết các hệ thống MPC trong môi trường production đều gắn chặt với một nhà cung cấp: các mảnh nằm trong những định dạng độc quyền, việc ký cần dịch vụ điều phối của nhà cung cấp, và việc khôi phục phụ thuộc vào việc bộ công cụ của nhà cung cấp tiếp tục tồn tại. Một số nhà cung cấp cho phép xuất khóa offline; nhiều nhà cung cấp thì không. Nếu khả năng khôi phục không cần nhà cung cấp là điều quan trọng với bạn, hãy yêu cầu một buổi trình diễn trước khi nạp tiền vào ví, chứ không phải sau đó.

Trách nhiệm giải trình mỏng hơn. Đầu ra của một buổi ký MPC là một chữ ký tổng hợp duy nhất. Chain không thể cho thấy những người tham gia nào đã phê duyệt một giao dịch; mọi sự quy trách nhiệm nếu có đều nằm trong nhật ký (log) của nhà cung cấp, thứ mà nhà cung cấp kiểm soát.

Bảng điểm cho thấy multisig khiến quorum, danh tính người ký và khả năng khôi phục không cần nhà cung cấp trở nên xác minh được, trong khi MPC giữ chúng ở trạng thái không xác minh được nhưng lại giữ chính sách ở chế độ riêng tư
Điều mà một người quan sát bên ngoài thực sự có thể kiểm tra. Mỗi cách tiếp cận thắng ở những hàng khác nhau.

Lập luận ủng hộ multisig — và những cái giá thẳng thắn của nó

Trong phép so sánh MPC vs multisig, multisig on-chain đảo ngược gần như toàn bộ những đặc tính này. Chính sách là công khai và được thực thi bằng đồng thuận, nên một kiểm toán viên, một đồng sáng lập, hay một tòa án đều có thể xác nhận quorum mà không cần tin vào bảng điều khiển của bất kỳ ai. Mỗi lần phê duyệt là một chữ ký riêng biệt từ một khóa riêng biệt, nên sau một sự cố bạn biết chính xác những khóa nào đã ký. Và bởi vì các khóa là những khóa thông thường — trong MultiSig của Ownbit, mỗi người tham gia là một seed phrase BIP39 tiêu chuẩn — việc khôi phục không phụ thuộc vào sự tồn tại tiếp diễn của bất kỳ công ty nào. Multisig của Bitcoin đã bảo vệ tài sản theo cách này suốt hơn một thập kỷ.

Những cái giá cũng cụ thể không kém. Nhiều chữ ký hơn nghĩa là giao dịch lớn hơn và phí cao hơn, mặc dù taproot đã thu hẹp khoảng cách đó trên Bitcoin. Chính sách mà các kiểm toán viên yêu thích cũng đồng thời phơi bày cho đối thủ: một ví 2-of-3 quảng cáo chính bản chất của nó. Multisig phải được hiện thực riêng cho từng chain — Bitcoin script, contract EVM, sơ đồ gốc của TRON, chương trình Solana — và chất lượng thay đổi tùy theo từng hiện thực. Và trên các chain smart contract, chính bản thân contract là bề mặt tấn công, đó là lý do vì sao mã contract multisig nên là mã nguồn mở và có thể được kiểm toán độc lập; Ownbit công bố các contract multisig của mình đúng vì lý do đó.

MPC vs multisig: cách lựa chọn

Hãy chọn MPC khi quy trình vận hành chính là sản phẩm: một bàn giao dịch đẩy hàng trăm lượt ký tự động mỗi ngày trên hàng chục chain, với một đội vận hành, một hợp đồng nhà cung cấp và một SLA. Trong bối cảnh đó, việc ký không phụ thuộc chain và việc xoay vòng mảnh thực sự xứng đáng với độ phức tạp của chúng, và sự phụ thuộc vào nhà cung cấp là một quan hệ kinh doanh đã được thương lượng chứ không phải một tai nạn. Cùng logic ấy áp dụng cho các sàn giao dịch và đơn vị xử lý thanh toán, nơi khối lượng ký khiến việc con người xét duyệt từng giao dịch trở nên bất khả thi trong bất kỳ mô hình nào.

Hãy chọn multisig khi chính sách phải có thể được xác minh bởi những người không hoàn toàn tin tưởng lẫn nhau — các đồng sáng lập, đối tác kinh doanh, thành viên gia đình — hoặc phải sống lâu hơn mọi công ty liên quan. Nếu hai đối tác muốn có bằng chứng, chứ không phải sự cam đoan, rằng không ai trong hai người có thể tự mình chuyển tiền treasury, một multisig 2-of-3 on-chain sẽ cung cấp điều đó — và bất kỳ ai trong hai người đều có thể xác nhận sự sắp xếp này bằng một block explorer, nhiều năm sau, mà không cần xin phép ai. Đối với các tổ chức cần thêm cấu trúc bên trên quorum, Enterprise MultiSig bổ sung vai trò Owner và Signer, trọng số cho từng signer, hạn mức chi tiêu và danh sách địa chỉ được phép (whitelist).

Hai điểm nữa giúp lựa chọn này giữ được sự thẳng thắn. Thứ nhất, hai cách tiếp cận có thể kết hợp: một signer bên trong một multisig on-chain tự nó có thể là một thiết lập MPC, và một số đội nhóm chạy đúng kiểu lai đó. Thứ hai, cả hai cách tiếp cận đều chữa cùng một căn bệnh nền — một seed phrase duy nhất như một điểm lỗi duy nhất — nhưng chúng thay thế nó bằng những thứ khác nhau: multisig bằng nhiều seed phrase tiêu chuẩn mà bạn có thể sao lưu theo bất kỳ cách nào bạn muốn, MPC bằng các mảnh theo định dạng của nhà cung cấp mà bạn sao lưu theo điều kiện của nhà cung cấp.

Vậy nên, bản tóm tắt thẳng thắn của MPC vs multisig là: MPC mua lấy sự linh hoạt vận hành và quyền riêng tư, và trả giá bằng khả năng xác minh và sự phụ thuộc vào nhà cung cấp; multisig mua lấy khả năng xác minh và sự độc lập, và trả giá bằng phí, quyền riêng tư và công sức kỹ thuật cho từng chain. Hãy quyết định bạn muốn trả bằng loại tiền tệ nào — tài sản chỉ thực sự là của bạn nếu các chế độ hỏng hóc là những thứ mà bạn hiểu được.

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

MPC có an toàn hơn multisig không?

Không cách nào an toàn hơn một cách tuyệt đối; chúng hỏng theo những kiểu khác nhau. MPC loại bỏ rủi ro contract on-chain nhưng tập trung niềm tin vào hiện thực giao thức và hạ tầng của nhà cung cấp, và quorum của nó không thể được xác minh từ bên ngoài. Multisig khiến quorum có thể được xác minh công khai và được chain thực thi, nhưng tốn kém hơn về phí và, trên các chain smart contract, thêm vào rủi ro contract. Hãy đánh giá mỗi thiết lập bằng chế độ hỏng tệ nhất của nó, chứ không phải bằng lời tiếp thị hay nhất của nó.

Một ví MPC có seed phrase không?

Thường là không, theo nghĩa tiêu chuẩn. Khóa chỉ tồn tại dưới dạng các mảnh phân tán, nên không có một cụm từ BIP39 duy nhất nào để chép lại. Điều đó loại bỏ một điểm lỗi duy nhất, nhưng việc sao lưu và khôi phục khi đó lại theo định dạng và bộ công cụ độc quyền của nhà cung cấp thay vì một chuẩn mở. Hãy hỏi bạn sẽ khôi phục thế nào nếu nhà cung cấp biến mất, trước khi bạn đặt niềm tin vào một dịch vụ nào.

Bạn có thể khôi phục một ví multisig mà không cần công ty đã tạo ra nó không?

Có, nếu nó được xây trên các chuẩn mở. Một multisig on-chain được xác định bằng các khóa thông thường cộng với một script hoặc contract công khai, nên bất kỳ phần mềm tương thích nào cũng có thể dựng lại nó và chi tiêu từ nó. Các khóa multisig của Ownbit là các seed phrase BIP39 tiêu chuẩn, các contract là mã nguồn mở, và đã có sẵn các hướng dẫn tự khôi phục cho đúng kịch bản này.

Có thể dùng MPC và multisig cùng nhau không?

Có. Chúng hoạt động ở những tầng khác nhau, nên một người tham gia trong một multisig on-chain có thể nắm giữ khóa của mình dưới dạng các mảnh MPC được chia ra trên nhiều thiết bị. Một số tổ chức kết hợp một cụm ký MPC cho vận hành hằng ngày với multisig on-chain cho lớp lưu trữ lạnh sâu nhất, dùng mỗi cách tiếp cận ở nơi mà các đánh đổi của nó phù hợp nhất.

Nếu bạn nghiêng về đầu xác minh được của sự đánh đổi này, Ownbit MultiSig là một cách thiết thực để thử: một multisig 2-of-3 trải trên hai chiếc điện thoại và thiết bị của một thành viên gia đình, mỗi khóa là một seed phrase tiêu chuẩn, các contract mã nguồn mở, và bản dùng thử miễn phí 7 ngày cho người dùng mới. Khóa và tài sản của bạn vẫn là của bạn bất kể trạng thái thành viên.