Mua Crypto
Thị trường
Spot
FuturesBTC
Tiết kiệm
Trung tâm sự kiện
Trung tâm thưởng
Xem thêm
Lễ hội 0 phí
Hash MiMC: Hash MiMC là gì?Hash MiMC là cấu trúc hash mật mã được thiết kế để hoạt động hiệu quả trong hệ thống chứng minh không kiến thức và các môi trường mạch số học khác.MiMC là viết tắt của Minimal MultipliHash MiMC: Hash MiMC là gì?Hash MiMC là cấu trúc hash mật mã được thiết kế để hoạt động hiệu quả trong hệ thống chứng minh không kiến thức và các môi trường mạch số học khác.MiMC là viết tắt của Minimal Multipli

Hash MiMC

2026/10/14 17:45
#Advanced
Humanity
H$0.05862+2.53%
Gravity
G$0.00398+4.10%
PX
PX$0.0113+0.89%
MemeCore
M$0.76744-2.54%
ZKsync
ZK$0.01505+0.56%

Hash MiMC là gì?

Hash MiMC là cấu trúc hash mật mã được thiết kế để hoạt động hiệu quả trong hệ thống chứng minh không kiến thức và các môi trường mạch số học khác.

MiMC là viết tắt của Minimal Multiplicative Complexity (độ phức tạp nhân tối thiểu).

Tên gọi này phản ánh mục tiêu thiết kế chính: sử dụng rất ít phép nhân so với các hàm hash truyền thống khi biểu diễn bên trong mạch.

Trong lĩnh vực crypto, MiMC Hash thường được nhắc đến như một hàm hash thân thiện với ZK dành cho SNARK, STARK, hệ thống MPC và các ứng dụng blockchain tập trung vào quyền riêng tư.

Hồ sơ bài báo MiMC tại ASIACRYPT 2016 mô tả MiMC là đề xuất về mật mã khối và hàm hash mật mã có độ phức tạp nhân thấp.

Không giống SHA-256 hoặc Keccak, MiMC không chủ yếu được thiết kế để băm phần mềm thông thường trên CPU thật nhanh.

MiMC được thiết kế cho các môi trường mà mỗi ràng buộc nhân đều có thể làm tăng chi phí tạo bằng chứng.

Điều này khiến MiMC trở nên quan trọng đối với các hệ thống blockchain sử dụng bằng chứng không kiến thức để chứng minh một mệnh đề mà không tiết lộ dữ liệu riêng tư.

Vì sao MiMC Hash quan trọng trong lĩnh vực crypto?

MiMC Hash quan trọng vì nhiều ứng dụng crypto cần sử dụng hash bên trong mạch zero-knowledge.

Mạch zero-knowledge có thể cần chứng minh người dùng biết một bí mật, sở hữu một cam kết, thuộc về cây Merkle hoặc tuân thủ quy tắc hợp đồng thông minh mà không tiết lộ dữ liệu đầu vào được ẩn.

Các hàm hash truyền thống có thể tốn kém trong những mạch này vì các phép toán bit không tự nhiên có chi phí thấp trong nhiều hệ thống chứng minh trên trường hữu hạn.

MiMC được thiết kế để hoạt động tự nhiên trên trường hữu hạn, là môi trường toán học được nhiều hệ thống chứng minh sử dụng.

Trang tham khảo MiMC giải thích rằng MiMC là một họ mật mã khối và hàm hash được thiết kế riêng cho ứng dụng SNARK.

Điều này hữu ích vì mạch hash có chi phí thấp hơn có thể rút ngắn thời gian tạo bằng chứng, giảm chi phí chứng minh và giúp các ứng dụng bảo mật trở nên thiết thực hơn.

MiMC Hash góp phần định hình nhóm hàm hash thân thiện với ZK nói chung.

Ngay cả khi các hàm hash thân thiện với ZK mới hơn được lựa chọn, MiMC vẫn quan trọng vì đã có lịch sử phát triển lâu dài, được nghiên cứu kỹ và được tham chiếu rộng rãi.

Hash MiMC hoạt động như thế nào?

Hash MiMC được xây dựng từ các phép toán đại số đơn giản trên trường hữu hạn.

Trường hữu hạn là một tập hợp toán học trong đó phép cộng, phép trừ, phép nhân và phép chia tuân theo các quy tắc modulo nghiêm ngặt.

Ý tưởng cốt lõi là lặp lại một hàm lũy thừa đơn giản cùng các hằng số vòng và giá trị giống khóa.

Trang tham khảo MiMC mô tả thành phần cốt lõi là hàm

f(x) = x^3
được tính trên một trường hữu hạn.

Một số cách triển khai sử dụng số mũ khác như

x^5
hoặc
x^7
tùy theo trường và yêu cầu bảo mật.

Đầu vào được biến đổi qua nhiều vòng để đầu ra cuối cùng khó dự đoán nếu không biết mối liên hệ bên trong giữa đầu vào và đầu ra.

Khi được sử dụng làm hàm hash, MiMC thường được đặt trong cấu trúc sponge.

Cấu trúc sponge hấp thụ các phần tử trường đầu vào vào trạng thái nội bộ, sau đó trích xuất các phần tử trường đầu ra từ trạng thái đó.

Mạch MiMCSponge của circomlib triển khai MiMC-2n/n dưới dạng hàm hash sử dụng cấu trúc sponge.

Hash MiMC và độ phức tạp nhân tối thiểu

Độ phức tạp nhân tối thiểu có nghĩa thiết kế hướng đến việc giảm số phép nhân cần thiết để biểu diễn hàm.

Điều này quan trọng vì nhiều hệ thống chứng minh không kiến thức đo chi phí mạch bằng các ràng buộc dạng phép nhân.

Trong môi trường lập trình thông thường, hàm hash thao tác trên bit có thể nhanh và thiết thực.

Trong mạch ZK, phép toán bit có thể tốn kém vì mạch phải chứng minh từng phép toán được thực hiện chính xác.

MiMC sử dụng phép ánh xạ lũy thừa đại số đơn giản, có thể biểu diễn với ít ràng buộc hơn.

Hồ sơ bài báo MiMC giải thích rằng mục tiêu độ phức tạp nhân thấp bắt nguồn từ các ứng dụng MPC, mã hóa đồng cấu hoàn toàn và chứng minh không kiến thức, nơi các phép tính tuyến tính tương đối ít tốn kém.

Nói đơn giản, MiMC hướng đến việc giảm quy mô phần tốn kém trong quá trình tạo bằng chứng.

Đó là lý do MiMC được gọi là thân thiện với ZK chứ không chỉ đơn thuần là nhanh.

Hash MiMC và bằng chứng không kiến thức

Bằng chứng không kiến thức cho phép một bên chứng minh một mệnh đề là đúng mà không tiết lộ dữ liệu riêng tư làm cơ sở cho mệnh đề đó.

MiMC Hash có thể được dùng bên trong bằng chứng không kiến thức khi mệnh đề liên quan đến cam kết, đường dẫn Merkle, nullifier hoặc dữ liệu tài khoản ẩn.

Bài báo AMAZE năm 2024 về tăng tốc MiMC mô tả MiMC là hàm hash thân thiện với ZK đã trưởng thành, có cấu trúc đại số đơn giản phù hợp với các ứng dụng ZKP.

Mạch ZK có thể dùng MiMC để chứng minh một đầu vào bí mật được băm thành cam kết công khai.

Mạch cũng có thể dùng MiMC để chứng minh một lá thuộc cây Merkle mà không công khai toàn bộ đường dẫn.

Vì MiMC tương thích với phép toán số học, hàm này có thể giảm số lượng ràng buộc so với các hàm hash chủ yếu được xây dựng để tối ưu hiệu suất phần mềm cấp bit.

Số lượng ràng buộc thấp hơn có thể giúp quá trình tạo bằng chứng nhanh và ít tốn kém hơn.

Điều này đặc biệt quan trọng trong hệ thống blockchain, nơi thời gian chứng minh và chi phí xác minh có thể ảnh hưởng đến trải nghiệm thực tế của người dùng.

Hash MiMC và SNARK

SNARK là hệ thống bằng chứng không kiến thức thường biểu diễn phép tính dưới dạng mạch số học.

Trong nhiều thiết lập SNARK, ràng buộc nhân tốn kém hơn phép cộng và các phép toán với hằng số.

Bài nghiên cứu về hàm hash thân thiện với ZK giải thích rằng trong các thiết lập SNARK dựa trên R1CS, chi phí được quyết định bởi số lượng ràng buộc.

MiMC được thiết kế để giữ số lượng ràng buộc ở mức thấp.

Điều này khiến MiMC trở thành lựa chọn hấp dẫn cho các mạch SNARK cần băm lặp đi lặp lại.

Việc băm lặp lại thường gặp trong bằng chứng cây Merkle, hệ thống chuyển tiền riêng tư, hệ thống thông tin xác thực và hệ thống thành viên ẩn danh.

Mức tiết kiệm nhỏ cho mỗi lần hash có thể tạo ra mức tiết kiệm lớn khi mạch phải băm hàng trăm hoặc hàng nghìn lần.

Giá trị của MiMC đối với SNARK đến từ việc sử dụng toán học mà hệ thống chứng minh có thể biểu diễn một cách tự nhiên.

Hash MiMC và STARK

STARK là một họ hệ thống bằng chứng không kiến thức khác, sử dụng dấu vết thực thi đại số và các ràng buộc đa thức.

MiMC cũng có thể được nhắc đến trong bối cảnh STARK vì cấu trúc vòng đại số của hàm này khá đơn giản.

Trang tham khảo MiMC được lưu trữ trên một trang rộng hơn về mật mã khóa đối xứng thân thiện với SNARK, STARK và MPC.

Trong các hệ thống kiểu STARK, bậc của ràng buộc và quy mô dấu vết thực thi có thể ảnh hưởng đáng kể đến hiệu suất.

Hàm vòng đơn giản dựa trên phép lũy thừa có thể dễ biểu diễn hơn hàm hash truyền thống sử dụng nhiều phép toán bit.

Điều này không có nghĩa MiMC luôn là lựa chọn hash STARK tốt nhất.

Điều đó chỉ cho thấy MiMC thuộc nhóm các thành phần mật mã được thiết kế theo hướng biểu diễn số học.

Nhà phát triển nên chọn hàm hash phù hợp với hệ thống chứng minh, trường, mức bảo mật và độ trưởng thành của cách triển khai.

Hash MiMC và trường hữu hạn

Hash MiMC hoạt động trên trường hữu hạn thay vì tập hợp số nguyên thông thường không giới hạn.

Trường hữu hạn cung cấp một không gian toán học cố định, trong đó các giá trị tuần hoàn theo một trường nguyên tố hoặc trường nhị phân.

Trang tham khảo MiMC cho biết phép tính MiMC diễn ra trong

GF(q)
, trong đó
q = p
hoặc
q = 2^n
.

Điều này quan trọng vì nhiều hệ thống chứng minh blockchain sử dụng trường nguyên tố gắn với đường cong elliptic.

Cách triển khai MiMC phải lựa chọn tham số trường cẩn thận.

Số mũ dùng trong hàm vòng cũng phải phù hợp với trường để ánh xạ có được đặc tính mật mã mong muốn.

Không nên sao chép mù quáng một thiết kế MiMC an toàn trong trường này sang trường khác.

Lựa chọn trường, số mũ, số vòng và hằng số đều thuộc về thiết kế bảo mật.

Hash MiMC và hằng số vòng

Hằng số vòng là các giá trị cố định được cộng vào trong các vòng của hoán vị hoặc mật mã MiMC.

Chúng giúp các vòng không trở nên quá đối xứng hoặc dễ dự đoán.

Hằng số tốt nên được tạo theo cách minh bạch để nhà phát triển và kiểm toán viên có thể tin rằng chúng không được chọn với mục đích xấu.

Nhiều cách triển khai tạo hằng số từ chuỗi seed công khai bằng một hàm hash tiêu chuẩn.

Bài nghiên cứu về hàm hash thân thiện với ZK lưu ý rằng các cách triển khai thường tạo hằng số vòng MiMC từ những chuỗi như

MiMC0
và
MiMC1
.

Nhà phát triển nên ghi lại chính xác cách tạo hằng số.

Kiểm toán viên nên xác minh cách triển khai dùng đúng hằng số theo đúng thứ tự.

Hằng số không được ghi chép khiến việc tin cậy vào cách triển khai mật mã trở nên khó khăn hơn.

Hash MiMC và cấu trúc sponge

Cấu trúc sponge là phương pháp phổ biến để xây dựng hàm hash từ một phép hoán vị.

Cấu trúc này có giai đoạn hấp thụ và giai đoạn trích xuất.

Trong giai đoạn hấp thụ, các giá trị đầu vào được trộn vào một phần của trạng thái nội bộ.

Trong giai đoạn trích xuất, các giá trị đầu ra được tạo ra từ trạng thái đã biến đổi.

Bài nghiên cứu về hàm hash thân thiện với ZK giải thích rằng MiMC Hash dựa trên khung sponge, trong đó các khối thông điệp được hấp thụ vào một phần trạng thái rồi biến đổi bằng phép hoán vị MiMC.

Thiết kế sponge hữu ích vì có thể hỗ trợ đầu vào độ dài thay đổi và độ dài đầu ra linh hoạt.

Trong mạch crypto, cấu trúc này có thể giúp băm nhiều phần tử trường thành một cam kết hoặc digest.

Tuy nhiên, cần lựa chọn cẩn thận các tham số sponge như tốc độ, dung lượng, kích thước trường và số vòng.

Hash MiMC so với SHA-256

MiMC Hash và SHA-256 đều là hàm hash mật mã nhưng được tối ưu cho những môi trường khác nhau.

SHA-256 được sử dụng rộng rãi trong phần mềm, phần cứng truyền thống và hệ thống Proof of Work.

MiMC Hash được tối ưu cho mạch số học và hệ thống chứng minh trên trường hữu hạn.

Mạch SHA-256 có thể cần nhiều ràng buộc vì SHA-256 sử dụng phép toán bit, phép xoay bit và logic Boolean.

Trong nhiều môi trường SNARK, mạch MiMC có thể tiết kiệm chi phí hơn nhiều vì các phép toán của MiMC phù hợp với số học trên trường.

Điều này không có nghĩa MiMC nên thay thế SHA-256 trong mọi trường hợp.

MiMC có thể phù hợp hơn khi cần chứng minh hàm hash bên trong mạch ZK.

Với việc băm tệp off-chain thông thường hoặc yêu cầu tương thích với các tiêu chuẩn phổ biến, hàm hash truyền thống có thể vẫn phù hợp hơn.

Hash MiMC so với Keccak

Keccak được sử dụng rộng rãi trong các hệ thống hợp đồng thông minh kiểu Ethereum như một thành phần hash đa dụng.

MiMC thường được chọn khi nhà phát triển cần hàm hash hiệu quả bên trong mạch zero-knowledge.

Khả năng tương thích với Keccak có thể hữu ích khi cần khớp với logic hiện có về địa chỉ, chữ ký hoặc hợp đồng.

Hiệu quả của MiMC có thể hữu ích khi chứng minh các mối quan hệ dữ liệu ẩn trong mạch số học.

Nhà phát triển có thể dùng Keccak bên ngoài mạch và MiMC bên trong mạch nếu thiết kế cần cả tính tương thích lẫn hiệu quả chứng minh.

Cần thiết kế cẩn thận cách kết hợp này vì các hàm hash khác nhau tạo ra cam kết và giả định tin cậy khác nhau.

Người dùng không nên cho rằng digest MiMC và digest Keccak có thể thay thế cho nhau.

Lựa chọn phù hợp phụ thuộc vào nơi tính hash và nội dung cần xác minh.

Hash MiMC so với Poseidon

MiMC và Poseidon đều là các hàm hash thân thiện với ZK.

MiMC ra đời sớm hơn và có ý nghĩa quan trọng trong lịch sử.

Poseidon là hàm hash mới hơn, được thiết kế theo hướng biểu diễn số học và thường được chọn trong các hệ thống ZK hiện đại vì có thể hiệu quả hơn với một số loại đầu vào và hệ thống chứng minh.

Bài nghiên cứu về hàm hash thân thiện với ZK mô tả MiMC là hàm hash thân thiện với ZK đầu tiên và cho biết các hàm hash mới hơn được đề xuất sau đó.

Điều này không khiến MiMC lỗi thời trong mọi trường hợp.

Điều đó có nghĩa nhà phát triển nên so sánh phân tích bảo mật, chi phí mạch, hỗ trợ thư viện, lịch sử kiểm toán, khả năng tương thích trường và yêu cầu của hệ sinh thái.

Các giao thức hiện có có thể tiếp tục dùng MiMC để tương thích với những cam kết và gốc Merkle đã triển khai.

Giao thức mới có thể chọn một hàm hash thân thiện với ZK khác sau khi đo hiệu suất và xem xét kiểm toán.

Hash MiMC trong cây Merkle

Hash MiMC thường được dùng trong cây Merkle của các hệ thống zero-knowledge.

Cây Merkle gộp nhiều giá trị thành một gốc bằng cách liên tục băm từng cặp nút.

Người dùng có thể chứng minh một lá thuộc cây bằng cách cung cấp đường dẫn Merkle.

Trong mạch ZK, người dùng có thể chứng minh đường dẫn hợp lệ mà không tiết lộ dữ liệu riêng tư không cần thiết.

Nếu mạch dùng hàm hash truyền thống nặng về phép toán bit ở mỗi tầng cây, bằng chứng có thể trở nên tốn kém.

Dùng MiMC có thể giảm chi phí ràng buộc cho mỗi bước hash.

Đó là lý do MiMC xuất hiện trong các thiết kế về quyền riêng tư, danh tính, bỏ phiếu và bằng chứng thành viên.

Bảo mật cây Merkle vẫn phụ thuộc vào việc hash chính xác, xây dựng cây đúng và áp dụng ràng buộc mạch chính xác.

Hash MiMC trong cam kết

Cam kết cho phép người dùng cố định một giá trị mà chưa cần tiết lộ ngay.

MiMC Hash có thể được dùng để tạo cam kết từ giá trị bí mật và dữ liệu ngẫu nhiên.

Ví dụ, giao thức có thể băm giá trị ghi chú bí mật, khóa chủ sở hữu và salt ngẫu nhiên thành một cam kết công khai.

Sau đó, người dùng có thể chứng minh kiến thức về dữ liệu ẩn bên trong mạch ZK.

Nếu hàm hash và giao thức được thiết kế chính xác, cam kết công khai sẽ không tiết lộ đầu vào bí mật.

Mô hình này phổ biến trong các hệ thống crypto bảo vệ quyền riêng tư.

MiMC hữu ích vì có thể kiểm tra hash cam kết bên trong mạch một cách hiệu quả.

Để ngăn các cuộc tấn công đoán giá trị bí mật nhỏ, lược đồ cam kết vẫn cần có đủ dữ liệu ngẫu nhiên.

Hash MiMC trong nullifier

Nullifier là giá trị được dùng để ngăn chi tiêu hoặc nhận thưởng hai lần mà không tiết lộ bí mật ban đầu.

MiMC Hash có thể giúp tạo nullifier từ khóa bí mật, ghi chú hoặc giá trị danh tính.

Giao thức có thể công bố nullifier khi một hành động riêng tư được thực hiện.

Những người dùng khác có thể kiểm tra xem nullifier đó đã xuất hiện trước đây hay chưa.

Bằng chứng không kiến thức có thể chứng minh nullifier được tạo chính xác mà không tiết lộ bí mật nền tảng.

Điều này quan trọng đối với giao dịch riêng tư, yêu cầu nhận thưởng riêng tư và các hành động thành viên ẩn danh.

Nếu hash nullifier sai, người dùng có thể chi tiêu hai lần hoặc mất quyền riêng tư.

MiMC có thể giúp kiểm tra nullifier hiệu quả, nhưng vẫn cần kiểm toán kỹ logic toàn bộ giao thức.

Hash MiMC trong hợp đồng thông minh

Hợp đồng thông minh có thể xác minh bằng chứng liên quan đến cam kết MiMC Hash hoặc gốc Merkle.

Hợp đồng có thể không tính toán lại mọi giá trị ẩn nhưng vẫn có thể xác minh bằng chứng được tạo từ một mạch có các phép toán MiMC.

Một số hợp đồng cũng có thể triển khai MiMC trực tiếp nếu cần băm on-chain.

MiMC on-chain có thể hữu ích khi hợp đồng cần một hàm hash thân thiện với ZK sử dụng số học trên trường.

Tuy nhiên, triển khai mật mã trong hợp đồng thông minh có rủi ro vì sai sót nhỏ cũng có thể làm hỏng bảo mật.

Nếu có thể, nhà phát triển nên ưu tiên các thư viện đã được đánh giá và các cách triển khai đã kiểm toán.

Họ cũng nên xác minh hàm on-chain khớp hoàn toàn với hàm trong mạch.

Sự không khớp giữa MiMC trong mạch và MiMC trong hợp đồng có thể khiến bằng chứng thất bại hoặc tạo ra lỗ hổng bảo mật.

Hash MiMC và Circom

Circom là ngôn ngữ dùng để viết mạch số học cho bằng chứng không kiến thức.

Kho lưu trữ circomlib chứa các mẫu mạch có thể tái sử dụng cho thành phần mật mã và các thành phần mạch khác.

circomlib có triển khai mạch MiMCSponge.

Điều này quan trọng vì nhiều nhà phát triển ZK sử dụng thư viện mạch thay vì tự viết từng thành phần từ đầu.

Dùng thư viện có thể rút ngắn thời gian phát triển nhưng không loại bỏ nhu cầu kiểm toán.

Nhà phát triển cần đảm bảo phiên bản thư viện, tham số, ràng buộc và trường phù hợp với thiết kế giao thức.

Họ cũng nên tránh sao chép các đoạn mã cũ trong hướng dẫn mà không kiểm tra hành vi hiện tại của thư viện.

Trong quá trình phát triển ZK, một hàm thư viện chỉ an toàn khi được sử dụng chính xác trong toàn bộ mạch.

Hash MiMC và mạch thiếu ràng buộc

Mạch thiếu ràng buộc là mạch ZK không thực thi đầy đủ phép tính mà mạch tuyên bố chứng minh.

Đây là một trong những rủi ro nghiêm trọng nhất khi sử dụng MiMC hoặc bất kỳ hàm hash nào trong mạch.

Hướng dẫn kiểm toán ZK về lỗi ràng buộc MiMC Hash mô tả trường hợp mạch hash MiMC thiếu một ràng buộc do sử dụng toán tử gán thay vì toán tử ràng buộc.

Vấn đề không phải là thiết kế toán học của MiMC tự động bị phá vỡ.

Vấn đề nằm ở chỗ mạch không ràng buộc đầu ra theo phép tính hash dự kiến.

Bài học này quan trọng đối với mọi giao thức ZK.

Một hàm hash mạnh không thể bảo vệ giao thức nếu mạch không thực sự thực thi hàm hash đó.

Nhà phát triển ZK nên kiểm thử các ràng buộc, tiến hành kiểm toán và sử dụng kiểm tra hình thức hoặc dựa trên thuộc tính khi khả thi.

Các thuộc tính bảo mật của Hash MiMC

Hash MiMC hướng đến việc cung cấp các thuộc tính bảo mật mật mã của hàm hash như khả năng chống va chạm và chống tìm ảnh gốc với các tham số được chọn.

Khả năng chống va chạm nghĩa là việc tìm hai đầu vào khác nhau nhưng có cùng đầu ra hash phải khó thực hiện.

Khả năng chống tìm ảnh gốc nghĩa là việc khôi phục đầu vào từ đầu ra hash phải khó thực hiện.

Khả năng chống tìm ảnh gốc thứ hai nghĩa là việc tìm một đầu vào khác có đầu ra hash trùng với đầu vào đã biết phải khó thực hiện.

Các thuộc tính này phụ thuộc vào biến thể MiMC cụ thể, trường, số mũ, số vòng, hằng số và chế độ cấu trúc.

Trang tham khảo MiMC cho biết đến thời điểm phân tích được nêu, chưa tìm thấy tấn công nào đối với MiMC-n/n hoặc MiMC-p/p đủ số vòng, đồng thời ghi nhận một số vấn đề trong các biến thể mật mã khối Feistel.

Nhà phát triển không nên giảm số vòng để tiết kiệm ràng buộc nếu không có cơ sở mật mã vững chắc.

Thay đổi tham số mà không được chuyên gia xem xét có thể làm suy yếu bảo mật.

Hash MiMC và số vòng

Số vòng là số lần áp dụng hàm vòng MiMC.

Thông thường, nhiều vòng hơn sẽ tăng khả năng chống phân tích mật mã nhưng cũng làm tăng chi phí mạch.

Ít vòng hơn có thể cải thiện hiệu suất nhưng làm giảm bảo mật.

Việc chọn tham số MiMC thường dựa trên kích thước trường, số mũ, phân tích bảo mật và loại cấu trúc.

Phần triển khai MiMCSponge của circomlib có chú thích cho thấy cách tính số vòng đối với một trường nguyên tố và lựa chọn số mũ cụ thể.

Điều đó không có nghĩa mọi cách triển khai MiMC đều nên dùng nguyên xi cùng số vòng.

Số vòng phải phù hợp với trường, số mũ, cấu trúc và mục tiêu bảo mật cụ thể.

Giao thức nên ghi rõ tham số MiMC để kiểm toán viên và người dùng có thể xác minh.

Hash MiMC và số mũ

Số mũ là lũy thừa được dùng trong hàm vòng phi tuyến, chẳng hạn

x^3
,
x^5
hoặc
x^7
.

Thiết kế MiMC ban đầu thường được giải thích bằng

x^3
.

Một số trường cần số mũ khác vì phép ánh xạ lũy thừa phải hoạt động phù hợp trong trường đó.

Bài nghiên cứu về hàm hash thân thiện với ZK lưu ý rằng hộp thế

x^3
đôi khi được thay bằng
x^5
hoặc
x^7
trong một số lựa chọn trường.

Điều này thường gặp trong các mạch xây dựng trên trường của những đường cong thân thiện với ghép cặp phổ biến.

Nhà phát triển không nên coi mọi biến thể MiMC là giống nhau.

Thay đổi số mũ sẽ thay đổi hàm mật mã và phân tích bảo mật cần thiết.

Khả năng tương thích giữa các cách triển khai phụ thuộc vào việc sử dụng cùng số mũ và hằng số ở mọi nơi.

Hash MiMC và phân tách miền

Phân tách miền là cách đảm bảo cùng một hàm hash không bị tái sử dụng theo những cách gây nhầm lẫn giữa các mục đích khác nhau trong giao thức.

Giao thức có thể dùng MiMC cho cam kết, nullifier, nút Merkle và giá trị thách thức.

Nếu tất cả các mục đích này dùng cùng định dạng đầu vào mà không được phân tách, có thể phát sinh va chạm bất ngờ hoặc nhầm lẫn trong giao thức.

Các phương pháp phân tách miền có thể sử dụng tiền tố cố định, thẻ, hằng số khác nhau, khóa khác nhau hoặc định dạng đầu vào có cấu trúc.

Phương pháp cụ thể nên phù hợp với hệ thống chứng minh và cách biểu diễn trường.

Phân tách miền tốt giúp việc kiểm toán giao thức dễ dàng hơn.

Việc này cũng giảm nguy cơ một giá trị hợp lệ trong ngữ cảnh này bị tái sử dụng theo cách nguy hiểm trong ngữ cảnh khác.

MiMC là một thành phần mật mã; giao thức an toàn cần thiết kế đầu vào cẩn thận xung quanh thành phần đó.

Hash MiMC và mã hóa phần tử trường

Hash MiMC thường nhận các phần tử trường chứ không trực tiếp nhận chuỗi văn bản bất kỳ.

Điều này đặt ra vấn đề mã hóa dữ liệu.

Nhà phát triển phải quyết định cách chuyển byte, địa chỉ, số lượng, mã định danh và khóa công khai thành phần tử trường.

Mã hóa kém có thể gây mơ hồ, cắt cụt, tràn số hoặc nhầm lẫn giữa các giao thức.

Ví dụ, hai mảng byte khác nhau không nên vô tình ánh xạ thành cùng một chuỗi phần tử trường, trừ khi giao thức chủ ý cho phép điều đó.

Khi cần, phải mã hóa độ dài đầu vào hoặc sử dụng cách khác để đảm bảo đầu vào không mơ hồ.

Mọi cách triển khai phải thống nhất về thứ tự byte, padding, phép giảm modulo và ranh giới trường.

Nhiều lỗi MiMC xuất phát từ sai sót tích hợp chứ không phải ý tưởng hash cốt lõi.

Hash MiMC và hiệu suất

Hash MiMC hiệu quả trong mạch số học vì giảm thiểu các phép toán dạng nhân tốn kém.

Điều này có thể giảm thời gian tạo bằng chứng và quy mô mạch.

Bài báo AMAZE năm 2024 nêu rằng các hàm hash mật mã tiêu chuẩn như SHA-2 có thể kém hiệu quả trong lĩnh vực ZKP, còn hàm hash thân thiện với ZK được xây dựng để tối ưu hiệu quả cho ZKP.

Bài báo này cũng trình bày các cách triển khai MiMC được tối ưu hóa cho phần cứng trong ứng dụng ZK và báo cáo mức cải thiện hiệu suất so với cách triển khai CPU tiêu chuẩn trong môi trường thử nghiệm của nghiên cứu.

Điều này cho thấy MiMC vẫn có ý nghĩa trong nghiên cứu hiện nay về phần cứng và hiệu suất ZK.

Tuy nhiên, cần đo hiệu suất trong hệ thống mục tiêu thực tế.

Hàm hash hiệu quả trong một hệ thống chứng minh có thể không tối ưu trong hệ thống khác.

Việc đo hiệu suất nên tính đến thời gian prover, chi phí verifier, số lượng ràng buộc, bộ nhớ, độ trưởng thành của cách triển khai và lịch sử kiểm toán.

Hash MiMC và yêu cầu kiểm toán

Cần kiểm toán Hash MiMC khi sử dụng trong các hệ thống crypto thực tế.

Kiểm toán viên nên xem xét tham số toán học, ràng buộc mạch, mã hóa đầu vào, phân tách miền, ngôn ngữ triển khai và logic xác minh của hợp đồng thông minh.

Họ cần xác nhận đầu ra mạch được ràng buộc với phép tính MiMC dự kiến.

Họ nên so sánh bộ vector kiểm thử giữa mã off-chain, mã mạch và mã on-chain.

Họ cần kiểm tra hằng số được tạo và lưu trữ chính xác hay chưa.

Họ nên xem xét số vòng có phù hợp với trường và số mũ hay không.

Họ cần kiểm thử các trường hợp biên như đầu vào bằng 0, phần tử trường lớn nhất, đầu vào lặp lại và dữ liệu có độ dài thay đổi.

Thành phần mật mã chỉ an toàn khi toàn bộ cách triển khai an toàn.

Hash MiMC và vector kiểm thử

Vector kiểm thử là các ví dụ đầu vào-đầu ra đã biết, dùng để xác minh cách triển khai hoạt động chính xác.

Các cách triển khai MiMC nên công bố hoặc tích hợp vector kiểm thử cho đúng biến thể đang sử dụng.

Vector kiểm thử giúp nhà phát triển so sánh cách triển khai trong mạch, JavaScript, Rust, Solidity hoặc backend prover.

Nếu hai cách triển khai tạo đầu ra khác nhau cho cùng đầu vào, ít nhất một cách đang dùng tham số khác hoặc có lỗi.

Vector kiểm thử nên bao gồm đầu vào thông thường, đầu vào bằng 0, giá trị biên và ví dụ sponge nhiều đầu vào.

Vector cũng nên nêu rõ trường, số mũ, số vòng, hằng số, thứ tự đầu vào, thứ tự đầu ra và cách mã hóa.

Không có vector kiểm thử thì khó phát hiện lỗi tích hợp hơn.

Trong hệ thống ZK, vector kiểm thử là một phần của thực tiễn kỹ thuật cơ bản.

Hash MiMC và an toàn ví crypto

Hầu hết người dùng crypto không tương tác trực tiếp với Hash MiMC.

Họ có thể sử dụng các ứng dụng vận hành MiMC bên trong những mạch ZK ẩn.

Ví có thể chỉ hiển thị bước tạo bằng chứng, thao tác nhận thưởng hoặc giao dịch riêng tư.

Người dùng không cần cung cấp seed phrase hoặc private key để tìm hiểu về MiMC hay sử dụng ứng dụng ZK.

Hướng dẫn của FTC về lừa đảo crypto cảnh báo rằng kẻ lừa đảo sử dụng cơ hội giả và yêu cầu thanh toán bằng crypto để chiếm đoạt tiền.

Người dùng nên cảnh giác với trình tạo bằng chứng giả, công cụ bảo mật giả và trang hỗ trợ ví giả mạo.

Ứng dụng ZK hợp pháp không nên yêu cầu người dùng tiết lộ cụm từ khôi phục ví.

MiMC Hash là công cụ mật mã, không phải lý do để tin tưởng phần mềm không rõ nguồn gốc với thông tin bí mật của ví.

Hash MiMC và vấn đề thuế

Bản thân Hash MiMC không tạo ra sự kiện chịu thuế.

Đây là thành phần mật mã được sử dụng bên trong phần mềm và giao thức.

Tuy nhiên, giao dịch được thực hiện qua các ứng dụng ZK sử dụng MiMC có thể liên quan đến tài sản kỹ thuật số.

Trang tài sản kỹ thuật số chính thức của IRS cho biết giao dịch tài sản kỹ thuật số có thể cần được báo cáo và thu nhập từ tài sản kỹ thuật số có thể bị đánh thuế.

Khi sử dụng ứng dụng crypto, người dùng nên lưu hồ sơ chuyển tiền, hoán đổi, nhận thưởng, phần thưởng, phí, dấu thời gian, địa chỉ ví và hash giao dịch.

Công cụ tập trung vào quyền riêng tư có thể khiến việc tự lưu hồ sơ cá nhân trở nên khó khăn hơn nếu người dùng không lưu dữ liệu của mình.

Người dùng không nên cho rằng giao dịch zero-knowledge loại bỏ nghĩa vụ báo cáo.

Người có hoạt động crypto đáng kể nên tham khảo chuyên gia thuế đủ chuyên môn.

Lợi ích của Hash MiMC

Hash MiMC có thể giảm chi phí băm bên trong nhiều mạch zero-knowledge.

MiMC sử dụng phép toán đơn giản trên trường hữu hạn, phù hợp với các ràng buộc kiểu SNARK.

Hàm có mục tiêu thiết kế rõ ràng, tập trung vào độ phức tạp nhân thấp.

MiMC có thể hỗ trợ cây Merkle, cam kết, nullifier và bằng chứng thành viên riêng tư.

MiMC đã được nghiên cứu từ khi công bố tại ASIACRYPT 2016.

MiMC có các cách triển khai thực tế trong thư viện mạch ZK.

Hàm vẫn có ý nghĩa trong nghiên cứu hiện nay về tăng tốc ZK.

Lợi ích chính là khả năng băm mật mã hiệu quả khi cần chứng minh hàm hash bên trong mạch số học.

Rủi ro và hạn chế của Hash MiMC

Hash MiMC không phải lựa chọn thay thế phổ quát cho mọi hàm hash.

MiMC ít được chuẩn hóa trong môi trường phần mềm thông thường hơn các hàm hash truyền thống phổ biến.

MiMC cần được lựa chọn cẩn thận về trường, số mũ, số vòng, hằng số và cấu trúc.

MiMC có thể không an toàn nếu nhà phát triển sao chép cách triển khai mà không hiểu trường mục tiêu.

MiMC có thể không an toàn nếu mạch thiếu ràng buộc.

MiMC có thể không an toàn nếu cách triển khai off-chain và on-chain không khớp chính xác.

Trong một số hệ thống chứng minh hiện đại, MiMC có thể kém hiệu quả hơn các hàm hash thân thiện với ZK mới hơn.

Hạn chế lớn nhất là bảo mật của MiMC phụ thuộc vào cách sử dụng chính xác, chứ không chỉ vào tên gọi “MiMC”.

Cách đánh giá Hash MiMC trong một dự án crypto

Trước tiên, hãy kiểm tra dự án sử dụng biến thể MiMC nào.

Xem xét trường hữu hạn, số mũ, số vòng, hằng số, tốc độ, dung lượng và độ dài đầu ra.

Kiểm tra cách triển khai đến từ thư viện đã được đánh giá hay từ mã tùy chỉnh.

Tìm vector kiểm thử công khai khớp với cách triển khai trong mạch và hợp đồng thông minh.

Kiểm tra dự án đã được kiểm toán bởi chuyên gia hiểu về mạch zero-knowledge hay chưa.

Xem xét MiMC được dùng cho cam kết, cây Merkle, nullifier, chữ ký, thử thách ngẫu nhiên hay mục đích khác.

Kiểm tra đầu vào có được mã hóa với khả năng phân tách miền và chuyển đổi sang phần tử trường không mơ hồ hay không.

Nên thận trọng với dự án không thể giải thích rõ ràng các tham số MiMC.

Các lỗi thường gặp khi dùng Hash MiMC

Một lỗi phổ biến là cho rằng mọi cách triển khai MiMC đều tương thích.

Một lỗi khác là thay đổi trường hoặc số mũ mà không được xem xét về bảo mật.

Lỗi thứ ba là giảm số vòng để tiết kiệm ràng buộc.

Lỗi thứ tư là sử dụng hằng số vòng không được ghi chép.

Lỗi thứ năm là quên phân tách miền giữa các mục đích sử dụng trong giao thức.

Lỗi thứ sáu là để mã mạch và mã hợp đồng thông minh không khớp nhau.

Lỗi thứ bảy là dùng phép gán ở nơi cần có ràng buộc mạch.

Lỗi thứ tám là xem MiMC như hàm thay thế đa dụng cho các hàm hash tiêu chuẩn bên ngoài bối cảnh ZK.

Thực tiễn tốt nhất dành cho nhà phát triển

Chỉ sử dụng MiMC khi hàm phù hợp với hệ thống chứng minh và nhu cầu giao thức.

Nếu có thể, hãy sử dụng cách triển khai đã được đánh giá.

Ghi lại trường, số mũ, hằng số, số vòng, tham số sponge và quy tắc mã hóa.

Công bố vector kiểm thử cho mọi cách triển khai được hỗ trợ.

Xác minh mọi đầu ra mạch đều được ràng buộc chính xác.

Sử dụng phân tách miền cho các vai trò khác nhau trong giao thức.

Kiểm toán cả thiết kế mật mã lẫn chi tiết triển khai.

Đo hiệu suất MiMC so với các hàm hash thân thiện với ZK khác trước khi chọn cho giao thức mới.

Tóm tắt SEO và AEO về Hash MiMC

MiMC Hash là một họ hàm hash mật mã thân thiện với ZK, được thiết kế nhằm đạt độ phức tạp nhân thấp.

Hàm được giới thiệu để mã hóa và băm hiệu quả trong các môi trường như MPC, mã hóa đồng cấu hoàn toàn và bằng chứng không kiến thức.

MiMC hoạt động trên trường hữu hạn và thường sử dụng các hàm lũy thừa đơn giản như

x^3
,
x^5
hoặc
x^7
, tùy theo trường và biến thể.

Hash MiMC thường được xây dựng bằng cấu trúc sponge, hấp thụ các phần tử trường đầu vào và trích xuất các phần tử trường đầu ra.

Trong lĩnh vực crypto, MiMC được dùng cho cây Merkle thân thiện với ZK, cam kết, nullifier, bằng chứng thành viên và giao thức bảo vệ quyền riêng tư.

MiMC khác với SHA-256 và Keccak vì được tối ưu cho mạch số học thay vì hoạt động băm phần mềm thông thường ở cấp bit.

Các rủi ro chính của MiMC gồm tham số sai, mạch thiếu ràng buộc, hằng số không phù hợp, mã hóa kém, thiếu phân tách miền và các cách triển khai không khớp nhau.

Cách sử dụng Hash MiMC thận trọng nhất là dựa vào tham số đã kiểm toán, thư viện được đánh giá, vector kiểm thử công khai và các ràng buộc mạch đầy đủ.

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

Hash MiMC là gì?

Hash MiMC là cấu trúc hash mật mã được thiết kế để hoạt động hiệu quả trong mạch chứng minh không kiến thức và các môi trường số học khác.

MiMC là viết tắt của từ gì?

MiMC là viết tắt của Minimal Multiplicative Complexity (độ phức tạp nhân tối thiểu).

Vì sao Hash MiMC được gọi là thân thiện với ZK?

Hash MiMC được gọi là thân thiện với ZK vì sử dụng các phép toán số học có thể được biểu diễn hiệu quả bên trong nhiều mạch chứng minh không kiến thức.

Hash MiMC có giống SHA-256 không?

Không. Hash MiMC được thiết kế cho mạch trên trường hữu hạn, còn SHA-256 là hàm hash truyền thống hướng đến phép toán bit, được sử dụng rộng rãi trong phần mềm thông thường và hệ thống Proof of Work.

Hash MiMC được sử dụng ở đâu trong crypto?

Hash MiMC được dùng trong mạch ZK cho cây Merkle, cam kết, nullifier, bằng chứng thành viên và logic ứng dụng bảo vệ quyền riêng tư.

Hash MiMC có hoạt động trên trường hữu hạn không?

Có. Hash MiMC được thiết kế để hoạt động trên các trường hữu hạn, chẳng hạn trường nguyên tố được nhiều hệ thống chứng minh sử dụng.

Hash MiMC luôn an toàn không?

Không. Bảo mật của MiMC phụ thuộc vào biến thể, trường, số mũ, số vòng, hằng số, cấu trúc và tính chính xác của cách triển khai.

Có thể dùng Hash MiMC trong hợp đồng thông minh không?

Có thể triển khai hoặc xác minh MiMC trong hệ thống hợp đồng thông minh, nhưng cách triển khai on-chain phải khớp chính xác với cách triển khai trong mạch.

Rủi ro chính khi dùng Hash MiMC trong mạch là gì?

Một rủi ro lớn là mạch thiếu ràng buộc, khiến bằng chứng không thực sự thực thi phép tính hash MiMC dự kiến.

Dự án ZK mới nào cũng nên dùng Hash MiMC không?

Không. Dự án ZK mới nên so sánh MiMC với các hàm hash thân thiện với ZK khác và lựa chọn dựa trên bảo mật, hiệu suất, khả năng tương thích trường, hỗ trợ thư viện và nhu cầu kiểm toán.

Kết luận

Hash MiMC là một thành phần mật mã quan trọng trong lịch sử và thực tiễn của các hệ thống crypto zero-knowledge.

MiMC được thiết kế để giảm chi phí băm bên trong mạch số học bằng cách giảm thiểu các phép toán cần nhiều phép nhân.

Điều này khiến MiMC hữu ích cho SNARK, các thiết kế liên quan đến STARK, hệ thống MPC, cam kết, cây Merkle, nullifier và bằng chứng thành viên riêng tư.

Điểm mạnh của MiMC đến từ đại số đơn giản trên trường hữu hạn và mục tiêu nâng cao hiệu quả ZK.

Rủi ro của MiMC xuất phát từ việc mọi tham số và chi tiết triển khai đều quan trọng.

Cách triển khai MiMC phải lựa chọn đúng trường, số mũ, số vòng, hằng số, tham số sponge, cách mã hóa đầu vào và phương pháp phân tách miền.

Mạch ZK sử dụng MiMC cũng phải ràng buộc chính xác phép tính.

Đối với người dùng, MiMC thường không hiển thị vì chạy bên trong hệ thống chứng minh của ứng dụng.

Đối với nhà phát triển, MiMC là công cụ mạnh nhưng đòi hỏi kỹ thuật cẩn trọng và được kiểm toán.

Cách hiểu phù hợp nhất về Hash MiMC là một hàm hash chuyên biệt, thân thiện với ZK, giúp giao thức crypto chứng minh các phép tính riêng tư một cách hiệu quả, nhưng chỉ khi tham số và ràng buộc mạch được triển khai chính xác.
BTC ETFs See $679M in Outflows
BTC ETFs See $679M in OutflowsBTC ETFs See $679M in Outflows
Citi sees BTC at $113K. What do institutions see?