Securityintermediatearticle30 min read

Trusted Setup là gì? - Bài toán người thợ khóa duy nhất

Trusted setup là gì? Tìm hiểu cách một nghi thức tạo bí mật một lần bảo vệ zk-SNARK, vì sao toxic waste phải bị tiêu hủy, và sự khác biệt giữa Groth16, PLONK và thiết lập minh bạch.

Vietcardano teamTeam

Đội ngũ biên tập VietCardanoCommunity — các chuyên gia blockchain và Cardano, cung cấp nội dung giáo dục và nghiên cứu chuyên sâu cho cộng đồng.

Published 31 tháng 8, 2026Updated 30 tháng 8, 2026

Tìm hiểu "trusted setup là gì" – tại sao một nghi thức tạo tham số bí mật lại quyết định độ an toàn của toàn bộ hệ thống zero-knowledge proof, và vì sao "toxic waste" (chất thải độc hại) phải bị tiêu hủy.

Hãy tưởng tượng một ngôi làng chỉ tin tưởng vào một thợ khóa. Năm trước, anh ta đã tạo ra một khuôn chính để có thể cắt ra một chìa khóa cho mỗi cửa trong làng. Tiện lợi – một chìa khóa, mở được bất kỳ ngôi nhà nào. Nhưng ngay khi thợ khóa giữ một bản sao của khuôn, cả làng đều nằm trong tay một người. Nếu anh ta làm ra một chìa khóa giả, mọi ngôi nhà sẽ mở ra. Kết quả an toàn duy nhất là khuôn được tạo ra, dùng để cắt tất cả các chìa, rồi bị hủy hoại vĩnh viễn.

Đây chính là bản chất của trusted setup. Trong thế giới bằng chứng không tiết lộ (ZK), "trusted setup là gì" là một trong những câu hỏi quan trọng nhất mà người mới bắt đầu phải trả lời – vì nó là bí mật ẩn giấu ở trung tâm của một số thuật toán mã hóa mạnh nhất đang được sử dụng hiện nay.


Người cắt khóa duy nhất: Một ngôi làng gặp nguy hiểm

Chúng ta hãy cùng nghĩ về thợ khóa. Vấn đề của làng không nằm ở kỹ năng của thợ khóa, mà ở quyền lực của ông ta. Ai nắm giữ khuôn chính là người có khả năng mở bất kỳ ngôi nhà nào. An ninh của toàn hệ thống chỉ còn dựa vào một điểm tin cậy duy nhất: "Ông có thực sự phá hủy khuôn không?"

Trong mật mã học, khuôn chính được gọi là tham số bí mật, thường được viết là τ (tau). Các tham số công khai mà mọi người sử dụng – proving key và verification key – được xây dựng từ τ, nhưng được giấu kín một cách cẩn thận để không ai có thể đảo ngược để tìm ra bí mật.

Sự nguy hiểm tàn khốc của trusted setup: bí mật phải tồn tại trong thời gian ngắn, được sử dụng và sau đó biến mất. Nếu dù chỉ một bản sao còn tồn tại, kẻ tấn công có thể tạo ra bằng chứng cho những tuyên bố sai – giống như cắt một chìa khóa để mở một cánh cửa mà họ không được phép mở.

Kho báu bí mật đó có một cái tên nổi tiếng trong cộng đồng ZK: toxic waste. Giữ nó không chỉ làm suy yếu hệ thống mà còn khiến nó bị phá vỡ.


Từ người khóa đến toán học: Bản chất của trusted setup

Một SNARK không tiết lộ kiến thức cho phép người chứng minh thuyết phục người xác minh rằng một tuyên bố là đúng mà không tiết lộ lý do. Tuy nhiên, hầu hết các SNARK thực tế (như Groth16 nổi tiếng) cần một trusted setup một lần, phụ thuộc vào bí mật trước khi có thể chạy.

Setup này tạo ra một structured reference string (SRS) – một tập các tham số công khai – cùng với một proving key và một verification key. Bảo đảm an toàn rất đơn giản: miễn là sự ngẫu nhiên bí mật dùng để xây dựng chúng bị phá hủy, hệ thống sẽ hoạt động bình thường.

Nếu một người duy nhất tạo ra bí mật đó và giữ nó, bạn lại gặp vấn đề người cắt khóa duy nhất – một người có thể giả mạo mọi thứ.

Bài toán người thợ khóa duy nhất: một thợ khóa giữ khuôn chính (toxic waste), rủi ro làm chìa giả mọi cửa

Hình 1: Bài toán người thợ khóa duy nhất — một người giữ khuôn chính


Vấn đề toxic waste

Đây là phần không thoải mái. Để xây dựng các tham số công khai an toàn, một người (hoặc một quá trình) phải tạo ra một bí mật trước. Bí mật đó là τ. Mọi thứ đều tin rằng τ đã biến mất.

Rủi ro này không phải là giả định. Trong lễ Sprout ban đầu của Zcash (năm 2016), chỉ có sáu người tham gia tạo ra các tham số cho các giao dịch được bảo vệ. Nếu tất cả sáu người đó hợp tác với nhau – hoặc nếu một trong số họ không thể xóa phần của mình trong khi những người còn lại chia sẻ – một kẻ tấn công có thể làm giả giá trị được bảo vệ.

Đó là lý do tại sao "một người giữ chìa khóa chính" rất nguy hiểm. Nó buộc bạn tin tưởng vào một người, không phải vào một quy trình.


Cách sửa: Nghi thức đa bên (ZK ceremony)

Nhận thức đột phá: bạn không cần phải tin tưởng vào một thợ khóa. Bạn có thể khiến cả làng tham gia – và miễn là mỗi người trong làng giữ bí mật của riêng họ, thì không ai có thể tái tạo khuôn chính.

Đây là multi-party computation (MPC ceremony), được gọi trong cộng đồng là ZK ceremony.

Đây là cách suy nghĩ:

  1. Người tham gia 1 tạo ra một bí mật, trộn nó vào, sau đó hủy bỏ phần của họ.
  2. Người tham gia 2 lấy kết quả, thêm bí mật của họ, hủy bỏ phần của họ.
  3. … và cứ thế, cho hàng chục hoặc hàng trăm người.

Cuối cùng, các tham số công khai cuối cùng là sự kết hợp của bí mật của mọi người. Để lấy lại khuôn chính, một kẻ tấn công phải biết mỗi mảnh của từng người tham gia. Nếu chỉ có một người – ở bất kỳ vị trí nào trong chuỗi – trung thực và hủy bỏ mảnh của mình, các tham số cuối cùng sẽ được bảo mật.

Mô hình bảo mật được gọi là "1-of-n": trong số n người tham gia, ít nhất một người phải trung thực.

Trong Powers of Tau (2017–2018) của Zcash, đã thu thập 87 đóng góp cho các tham số không phụ thuộc circuit trong giai đoạn 1. Trong KZG ceremony (2023) của Ethereum Foundation, đã thu thập 141,416 đóng góp trong suốt 208 ngày cho cấu trúc commitment dựa trên blob trong EIP-4844. Với sự tham gia đa dạng hơn – các thiết bị, hệ điều hành và thậm chí các nguồn entropy vật lý khác nhau – cam kết sẽ càng mạnh mẽ hơn.
Nghi thức đa bên: nhiều người tham gia thêm bí mật, một người trung thực là đủ để bảo vệ tham số

Hình 2: Nghi thức đa bên — chỉ cần một người trung thực


Groth16: Một ceremony duy nhất cho mỗi circuit

Không phải tất cả trusted setup đều giống nhau. Groth16 – công cụ mạnh mẽ của SNARK nằm sau Zcash Sapling và vô số rollups – yêu cầu một trusted setup cho từng circuit. Điều đó có nghĩa là:

  • Mỗi khi bạn viết một circuit mới (một chương trình mới), bạn phải thực hiện một ceremony mới.

Đây là trade-off của setup Groth16 – bằng chứng nhỏ, nhưng một "ceremony cắt khóa" mới cho mỗi cửa bạn muốn bảo vệ. Đối với một chuỗi ổn định có giá trị cao (như thanh toán được bảo vệ của Zcash), đó là một cái giá đáng trả.


PLONK: Thiết lập universal

PLONK (2019) giải quyết vấn đề "mỗi circuit lại cần một ceremony mới" bằng một trusted setup universal và có thể cập nhật.

  • Một ceremony (như Powers of Tau) tạo ra các tham số phục vụ cho bất kỳ circuit nào, cho đến một giới hạn kích thước cố định.
  • Thêm một circuit mới sau đó? Không cần ceremony mới – các tham số hiện có vẫn hoạt động.
  • Chi phí: các bằng chứng lớn hơn (khoảng 400–800 byte) và xác minh tốn kém hơn một chút trên chain.

Lý do mà các đội như Aztec và zkSync có thể cải tiến nhanh chóng là vì họ thiết lập một lần, sau đó phát hành nhiều circuit mà không cần lặp lại ceremony.

So sánh Groth16 per-circuit setup và PLONK universal setup

Hình 3: Groth16 per-circuit setup vs PLONK universal setup


Lối thoát minh bạch: STARK

Nếu bạn có thể tránh hoàn toàn việc cắt khóa thì sao? Đó là lời hứa của các transparent setup.

STARK (và các hệ thống kiểu Halo2 sử dụng các IPA commitment) không cần bất kỳ ceremony nào. Không có τ bí mật cần bảo vệ, không có toxic waste, và do đó không có một chìa khóa duy nhất. Các tham số công khai được lấy từ ngẫu nhiên có thể kiểm chứng – bất kỳ ai cũng có thể tái tạo chúng.

Nhược điểm: bằng chứng STARK lớn hơn nhiều (~50–200 KB so với ~200 byte của Groth16), và quá trình chứng minh chậm hơn. Tuy nhiên, chúng cũng chống lại tính toán lượng tử vì chúng chỉ dựa vào hàm hash, không dựa vào pairing trên đường cong elip mà máy tính lượng tử có thể phá vỡ.

Giao thức bảo vệ mới nhất của Zcash, Orchard (NU5, 2022), đã chuyển sang Halo 2, loại bỏ hoàn toàn trusted setup. Thị trường đang dần chuyển từ "tin tưởng một ceremony" sang "không tin tưởng bất kỳ ceremony nào".
Thiết lập tin cậy vs thiết lập minh bạch: SNARK cần nghi thức, STARK không có bí mật

Hình 4: Thiết lập tin cậy vs thiết lập minh bạch


Hỏi đáp

Trusted Setup là gì?

Trusted setup là quá trình tạo các tham số công khai (proving key, verification key) cho một hệ thống chứng minh không tiết lộ bằng cách sử dụng một bí mật ngắn gọi là τ (tau). Bí mật này phải bị hủy bỏ sau khi tạo tham số – nếu bị lộ, kẻ tấn công có thể giả mạo bằng chứng.

Tại sao phải phá hủy bí mật đó?

Vì bí mật (τ) là "khuôn chính". Nếu nó tồn tại, một kẻ tấn công có thể tạo ra các bằng chứng cho những tuyên bố sai, phá vỡ tính soundness của toàn bộ hệ thống.

Rò rỉ có tiết lộ dữ liệu cá nhân của tôi không?

Không. Rò rỉ τ phá vỡ tính soundness (các bằng chứng có thể bị làm giả), nhưng nó không tiết lộ nội dung riêng tư của các giao dịch. Bảo mật (privacy) và soundness là hai bảo đảm khác nhau.

Một người tham gia trung thực thực sự là đủ?

Có – trong một MPC ceremony, các tham số cuối cùng kết hợp tất cả bí mật của mọi người. Để tái tạo bí mật chính, kẻ tấn công cần tất cả chúng. Một người trung thực đã hủy các phần của mình sẽ ngăn chặn cuộc tấn công.

Sự khác biệt giữa setup Groth16 và PLONK là gì?

Groth16 cần một ceremony riêng cho mỗi circuit nhưng cung cấp các bằng chứng nhỏ nhất. PLONK dùng một ceremony chung cho bất kỳ circuit nào có kích thước không quá giới hạn, nhưng phải trả giá bằng các bằng chứng lớn hơn.

Chúng ta có thể tránh hoàn toàn trusted setup không?

Có – các hệ thống kiểu STARK và Halo2 là minh bạch: không có bí mật, không có ceremony, không có toxic waste. Cái giá là các bằng chứng lớn hơn và quá trình chứng minh chậm hơn.

Kết luận

Vấn đề "người cắt khóa duy nhất" là trung tâm của trusted setup. Dù bạn dùng ceremony riêng cho từng circuit của Groth16, thiết lập universal của PLONK, hay bỏ qua hoàn toàn bằng STARK minh bạch, câu hỏi cơ bản luôn giống nhau: Ai giữ khuôn chính, và liệu nó có bị phá hủy không?

Câu trả lời tinh tế của nghi thức đa bên – một người trung thực giữ bí mật của mình, toàn bộ hệ thống sẽ an toàn – là một trong những ý tưởng đẹp nhất trong mật mã học hiện đại. Và sự tiến bước hướng tới các thiết lập minh bạch cho thấy rằng, ngày càng nhiều, người cắt khóa tốt nhất là người không tồn tại.

Tags:

trusted setup là gìceremony zk snarkgroth16 setup