bởi: Johan

lý lịch

Lỗ hổng Frozen Heart "Bingxin" được nhóm Trail of Bits đặt tên, trong đó Frozen là viết tắt của ForRging Of ZEro kNowledge proofs và Heart đề cập đến phép biến đổi Fiat-Shamir, vốn là cốt lõi của nhiều hệ thống chứng minh. Lỗ hổng này đề cập đến vấn đề bảo mật xảy ra khi áp dụng phép chuyển đổi "Fiat-Shamir yếu", phép chuyển đổi này chỉ băm một phần thông báo của người chứng minh mà không băm thông tin công khai (chẳng hạn như tham số, đầu vào công khai, v.v.).

Dưới đây chúng tôi sẽ tiến hành phân tích toàn diện về lỗ hổng này. Đầu tiên chúng ta hãy nói về việc chuyển đổi Fiat-Shamir là gì.

Biến đổi Fiat-Shamir

Phép biến đổi Fiat-Shamir, còn được gọi là Fiat-Shamir Heuristic hoặc Fiat-Shamir Paradigm, là một phép biến đổi được Fiat và Shamir đề xuất vào năm 1986 để chuyển đổi các giao thức chứng minh không có kiến ​​thức tương tác thành các giao thức bằng chứng không có kiến ​​thức không tương tác. Nó đạt được sự chuyển đổi này bằng cách thay thế các thử thách ngẫu nhiên trong giao thức bằng đầu ra của hàm băm. Bằng cách này, người chứng minh có thể tạo bằng chứng và gửi nó cho người xác minh mà không cần phản hồi và thử thách tương tác.

Bằng chứng Schnorr là một giao thức chứng minh không có kiến ​​thức tương tác cho phép người chứng minh chứng minh với người xác minh rằng một tuyên bố nhất định là đúng mà không tiết lộ chi tiết của tuyên bố đó và người xác minh có thể tiến hành xác minh tương tác. Nó thường được sử dụng khi người chứng minh biết một giá trị bí mật nhưng không tiết lộ giá trị bí mật đó.

Bằng chứng tương tác Schnorr có thể được chuyển đổi thành không tương tác bằng cách sử dụng phép biến đổi Fiat-Shamir.

Schnorr có thể được thực hiện trên các trường hữu hạn hoặc đường cong elip (EC). Các thông số kỹ thuật về cơ bản là giống nhau, chỉ khác nhóm tuần hoàn cơ bản. Dưới đây chúng tôi chủ yếu mô tả hai quá trình này dưới dạng trường hữu hạn [1]:

* Mô tả ký hiệu:

  • Alice: Danh tính giả định của người tục ngữ trong giao thức

  • Bob: Danh tính giả định của người xác thực trong giao thức

  • a |

  • a || b: kết nối giữa a và b

  • [a, b]: phạm vi số nguyên, bao gồm a và b

  • t: Số bit trong thử thách được Bob chọn

  • H: Hàm băm mật mã an toàn

  • p: số nguyên tố lớn

  • q: hệ số nguyên tố lớn của p-1, tức là q p-1

  • Zp*: nhóm số nguyên modulo p

  • Gq: nhóm con của Zp* có bậc nguyên tố q

  • g: bộ tạo Gq

  • g^d: g được nâng lên lũy thừa d

  • a mod b: a modulo b

  • Fp: trường hữu hạn gồm p phần tử, trong đó p là số nguyên tố

Triển khai dựa trên các trường hữu hạn

1. Tương tác

Đầu tiên, Alice tính A = g^a mod p, trong đó khóa riêng a nhận giá trị [0, q-1], sau đó tiết lộ khóa chung A;

Sau đó, Alice chứng minh cho Bob rằng cô ấy biết khóa riêng a tương ứng với A mà không tiết lộ:

Nếu kiểm tra là đúng thì có thể chứng minh rằng Alice biết a. Nguyên lý như sau:

Lý do tại sao Bob cần tạo một c ngẫu nhiên ở đây là vì nếu kẻ tấn công biết giá trị này trước khi tiết lộ A, thì anh ta có thể giả mạo bằng chứng mà không cần biết a thật. Kẻ tấn công giả mạo (A, V, r) như sau:

1) Tạo giá trị ngẫu nhiên r

2) Cách tính V không thay đổi, giả sử

Sau khi Người xác minh nhận được ba tham số này và thay thế chúng vào công thức xác minh, nó có thể vượt qua quá trình xác minh. Nhưng chúng ta hãy chú ý đến quá trình tạo ra một số tham số không liên quan gì đến giá trị bí mật a cần chứng minh.
2. Không tương tác

Việc chuyển đổi không tương tác cũng rất dễ dàng, trên cơ sở tương tác, thay đổi quá trình tạo c ngẫu nhiên của Bob thành dạng tham số Hash:

Thực hiện dựa trên đường cong elip

Đầu tiên, Alice tính A = G x [a], trong đó khóa riêng a nhận giá trị [0, n-1], sau đó tiết lộ khóa chung A;

Sau đó, Alice chứng minh cho Bob rằng cô ấy biết khóa riêng a tương ứng với A mà không tiết lộ:

Nếu kiểm tra là đúng thì có thể chứng minh rằng Alice biết a. Nguyên lý như sau:

Phương pháp triển khai không tương tác cũng giống như phương pháp triển khai dựa trên các trường hữu hạn nêu trên và sẽ không được mô tả chi tiết.

Biến đổi Fiat-Shamir yếu

Trong quá trình triển khai không tương tác ở trên, các số ngẫu nhiên:

Đó là một cách tạo chính xác và an toàn, nhưng thật không may, trong một số bài báo trước đây, quy trình này không được mô tả chặt chẽ mà được mô tả đơn giản là:

Có một vấn đề bảo mật, chúng tôi gọi đó là phép biến đổi Fiat-Shamir yếu, có thể được sử dụng để giả mạo bằng chứng và đánh lừa người xác minh bằng cách tính toán trước A.

Xây dựng lại các tham số (A, r) bằng cách sử dụng:

1. Tạo giá trị ngẫu nhiên

2. Tính a=(v-r)/c, cách tính không thay đổi

3. Tính toán

Chúng ta có thể thấy A trở thành một tham số không liên quan gì đến a và được thay thế vào phương trình xác minh:

có thể bằng V.

Điều này có nghĩa là kẻ tấn công có thể vượt qua xác minh giao thức mà không cần biết giá trị bí mật.

Ngoài ra còn có một số bài báo [3] mô tả quá trình này như sau:

Nội dung thể hiện là như nhau.

Lỗ hổng Bingxin

Nhóm Trail of Bits đã xuất bản một bài báo [2] chỉ ra rằng việc triển khai Fiat-Sharmir trong các hệ thống ZKP như Bulletproofs và Plonk có lỗ hổng, cho phép người dùng độc hại giả mạo bằng chứng cho các tuyên bố ngẫu nhiên.

Lấy Plonk làm ví dụ, thuật toán Fiat-Shamir được sử dụng để tạo ra các số ngẫu nhiên ở các Vòng 2, 3, 4 và 5 do bằng chứng tạo ra.

Trong bài báo [3], nhiều triển khai nguồn mở của các hệ thống chứng minh không có kiến ​​thức hiện đại đã được nghiên cứu và phát hiện ra rằng 36 biến đổi Fiat-Shamir yếu đã sử dụng, bao gồm Bulletproofs, Plonk, Spartan và Wesolowski's VDF, v.v. Kẻ tấn công có thể tạo ra bằng chứng vượt qua quá trình xác minh mà không cần biết bí mật bằng chứng hợp lệ.

Ví dụ về lỗ hổng

1. gặm nhấm

Ở đây fs là một trường hợp tính toán Fiat-Shamir. Khi bằng chứng Round2 tính toán tham số z(X), thông tin bằng chứng có thể bị giả mạo vì đầu vào công khai không bị ràng buộc bởi thử thách.

2. cáu kỉnh

Ngoài ra, vì không bao gồm publicSignals nên thông tin chứng nhận có thể bị giả mạo.

Tóm tắt

Từ nội dung được tiết lộ, chúng ta có thể thấy tính linh hoạt và phạm vi rộng của lỗ hổng này. Nó sẽ gây tổn hại nghiêm trọng cho các bằng chứng không có kiến ​​thức. Trong các ứng dụng thực tế, chúng ta cần chú ý xem xét tính đúng đắn của việc triển khai Fiat-Shamir và bổ sung dữ liệu nhân chứng công khai. với nó. Trong quá trình tạo số ngẫu nhiên, kẻ tấn công có thể tránh giả mạo bằng chứng.

Cuối cùng, chúng tôi xin cảm ơn Safeheron, nhà cung cấp dịch vụ tự quản lý tài sản kỹ thuật số một cửa hàng đầu, vì đã cung cấp lời khuyên kỹ thuật chuyên nghiệp.

Tài liệu tham khảo:

[1]. https://datatracker.ietf.org/doc/html/rfc8235

[2]. https://blog.trailofbits.com/2022/04/13/part-1-coored-disclosure-of-vulnerabilities-affecting-girault-bulletproofs-and-plonk/

[3]. https://eprint.iacr.org/2023/691.pdf