Hai ngày nay mình lục Dusk về lựa chọn mật mã, và phát hiện một quyết định rất dễ bị bỏ qua—việc đổi sang một đường cong elliptic. Hầu hết mọi người thấy không sao, nhưng thực ra nó kéo theo cả một dây chuyền
//
Trước hết nói vì sao không thể dùng thẳng bộ kiểu Bitcoin Ethereum
secp256k1 là đường cong phổ biến nhất trong thế giới ví máy đào, nhưng nó vốn không được thiết kế cho zk proof. Hệ thống chứng minh (ví dụ như BN254 đứng sau Plonk, hay BLS12-381…) đều giới hạn mọi phép toán trong một trường vô hướng (scalar field) cụ thể. Các phép cộng và nhân trong mạch (circuit) đều phải được thực hiện trong trường đó. Trường của secp256k1 không hề khớp với các hệ thống chứng minh này—nếu cố xác thực chữ ký secp256k1 trong mạch, thì phải dựa vào các “phép toán không gốc” để mô phỏng, và chi phí sẽ cao gấp hàng trăm lần so với phép toán gốc—không phải là không làm được, mà là đắt đến mức khó tin
//
JubJub thì ngược lại: nó được tạo ra riêng để giải quyết sự không tương thích này
Đây là một đường cong twisted Edwards. Điểm mấu chốt là trường của nó vừa khớp để nhúng vào trường vô hướng của BLS12-381. Nói cách khác, trong mạch Plonk, ta thực hiện phép toán điểm trên JubJub theo kiểu phép toán gốc, nên chi phí giảm mạnh. Dùng nó để xử lý các thao tác như tạo khóa, ký, mã hóa—khớp “tự nhiên” với hệ thống chứng minh, không cần vòng vo
//
Tiếp theo là lớp “trừu tượng nhóm” (group abstraction) cần giải quyết điều gì
Các đường cong dạng Edwards thường có vấn đề cofactor không bằng 1. Nói đơn giản: cùng một “điểm logic” có thể tương ứng với nhiều biểu diễn byte khác nhau trên đường cong. Từ trước đến nay, chính sự mơ hồ biểu diễn này từng dẫn tới lỗ hổng—kẻ tấn công có thể lợi dụng các tiểu nhóm liên quan tới cofactor, tạo ra một số tình huống biên để vượt qua xác thực. Giải pháp phổ biến trong ngành là bọc thêm một lớp trừu tượng nhóm trên đường cong để loại bỏ sự mơ hồ đó, đảm bảo một điểm chỉ có một cách viết chuẩn duy nhất, chặn kiểu tấn công này từ gốc
//
So với secp256k1—đường cong phổ biến nhất trong thế giới máy đào—thì sẽ thấy rõ ngay: một bên được tối ưu cho hiệu suất xác thực chữ ký và khả năng tương thích hệ sinh thái; bên kia được tối ưu cho chi phí tính toán và ranh giới an toàn bên trong hệ thống chứng minh. Hai thứ này vốn không nhắm tới cùng một mục tiêu. Quyết định đổi đường cong nghe có vẻ kỹ thuật và tinh tế, nhưng thực tế nó quyết định cả đường ống zk phía sau sẽ rẻ hay đắt, sạch sẽ hay để lại lỗ hổng
@Dusk_Foundation $DUSK #dusk
Tại sao đường cong JubJub lại có thể khớp với hệ thống chứng minh của Dusk?
//
Trước hết nói vì sao không thể dùng thẳng bộ kiểu Bitcoin Ethereum
secp256k1 là đường cong phổ biến nhất trong thế giới ví máy đào, nhưng nó vốn không được thiết kế cho zk proof. Hệ thống chứng minh (ví dụ như BN254 đứng sau Plonk, hay BLS12-381…) đều giới hạn mọi phép toán trong một trường vô hướng (scalar field) cụ thể. Các phép cộng và nhân trong mạch (circuit) đều phải được thực hiện trong trường đó. Trường của secp256k1 không hề khớp với các hệ thống chứng minh này—nếu cố xác thực chữ ký secp256k1 trong mạch, thì phải dựa vào các “phép toán không gốc” để mô phỏng, và chi phí sẽ cao gấp hàng trăm lần so với phép toán gốc—không phải là không làm được, mà là đắt đến mức khó tin
//
JubJub thì ngược lại: nó được tạo ra riêng để giải quyết sự không tương thích này
Đây là một đường cong twisted Edwards. Điểm mấu chốt là trường của nó vừa khớp để nhúng vào trường vô hướng của BLS12-381. Nói cách khác, trong mạch Plonk, ta thực hiện phép toán điểm trên JubJub theo kiểu phép toán gốc, nên chi phí giảm mạnh. Dùng nó để xử lý các thao tác như tạo khóa, ký, mã hóa—khớp “tự nhiên” với hệ thống chứng minh, không cần vòng vo
//
Tiếp theo là lớp “trừu tượng nhóm” (group abstraction) cần giải quyết điều gì
Các đường cong dạng Edwards thường có vấn đề cofactor không bằng 1. Nói đơn giản: cùng một “điểm logic” có thể tương ứng với nhiều biểu diễn byte khác nhau trên đường cong. Từ trước đến nay, chính sự mơ hồ biểu diễn này từng dẫn tới lỗ hổng—kẻ tấn công có thể lợi dụng các tiểu nhóm liên quan tới cofactor, tạo ra một số tình huống biên để vượt qua xác thực. Giải pháp phổ biến trong ngành là bọc thêm một lớp trừu tượng nhóm trên đường cong để loại bỏ sự mơ hồ đó, đảm bảo một điểm chỉ có một cách viết chuẩn duy nhất, chặn kiểu tấn công này từ gốc
//
So với secp256k1—đường cong phổ biến nhất trong thế giới máy đào—thì sẽ thấy rõ ngay: một bên được tối ưu cho hiệu suất xác thực chữ ký và khả năng tương thích hệ sinh thái; bên kia được tối ưu cho chi phí tính toán và ranh giới an toàn bên trong hệ thống chứng minh. Hai thứ này vốn không nhắm tới cùng một mục tiêu. Quyết định đổi đường cong nghe có vẻ kỹ thuật và tinh tế, nhưng thực tế nó quyết định cả đường ống zk phía sau sẽ rẻ hay đắt, sạch sẽ hay để lại lỗ hổng
@Dusk_Foundation $DUSK #dusk
Tại sao đường cong JubJub lại có thể khớp với hệ thống chứng minh của Dusk?
A. 域嵌在BLS12-381标量域里运算走原生路径,成本低
B. 它是secp256k1的升级版,兼容性更好
C. 它算力消耗更大,安全性更强
3 ngày còn lại