Cointime

Download App
iOS & Android

Sê-ri ZKP: Lỗ hổng đầu vào bút danh trong Hợp đồng xác minh của Circcom đã được sao chép

Tổng quan

Trước đó, một lỗ hổng chi tiêu gấp đôi trong hợp đồng xác minh bằng chứng không có kiến thức trên Semaphore đã được phát hiện bởi nhà phát triển người Nga, Poma. Vì tò mò, ý định ban đầu của tôi là sao chép PoC của lỗ hổng. Tuy nhiên, do mã lỗ hổng đã cũ và dự án tương đối phức tạp, tôi đã chọn tạo một PoC đơn giản để tái tạo lỗ hổng.

Giới thiệu

Nền tảng của công nghệ Zero Knowledge Proof (ZKP) nằm trong một thuật toán được gọi là “hệ thống bằng chứng”. Bằng cách thực hiện một loạt các tính toán trên tin nhắn, thuật toán tạo ra bằng chứng để chứng minh tính xác thực của tin nhắn. Người nhận có thể xác nhận tính xác thực của tin nhắn bằng cách chỉ xác minh bằng chứng mà không yêu cầu thêm thông tin.

Có nhiều sơ đồ triển khai khác nhau cho công nghệ ZKP mà chúng ta đã thảo luận trong bài viết trước “Tính năng kỹ thuật của các sơ đồ triển khai chính của ZKP”. Trong thử nghiệm này, nền tảng Circcom được sử dụng, sử dụng Groth16 và PlonK làm hệ thống bằng chứng. Trong quá trình phát triển, các nhà phát triển có thể chọn một trong hai hệ thống. Khung phát triển tự động tạo các tham số bằng chứng và hợp đồng xác minh mà không cần sửa đổi mạch.

Nói một cách đơn giản hơn, Circcom tạo dữ liệu nhân chứng và dữ liệu chứng thực ở phía khách hàng và gửi chúng vào hợp đồng. Hợp đồng verifier.sol xác minh dữ liệu đã gửi để xác nhận xem bằng chứng có tuân thủ các quy tắc đã chỉ định hay không. Cách tiếp cận này cho phép xác minh nhanh chóng, hiệu quả và an toàn đồng thời bảo vệ nội dung và quyền riêng tư của thư.

Phân tích lỗ hổng

1. Không có nhiều điều để thảo luận, vì vậy hãy chuyển thẳng sang phần mã có vấn đề. Vui lòng tham khảo chức năng “verifyHash” trong hình bên dưới. Mã được đặt trong hộp màu đỏ cho biết liệu dữ liệu nhân chứng cụ thể đã được sử dụng hay chưa. Phương pháp này thường được sử dụng để ngăn chặn chi tiêu gấp đôi. Tuy nhiên, lỗ hổng đã phát sinh trong dữ liệu nhân chứng “hash1”. Thông thường, một bộ dữ liệu bằng chứng cụ thể chỉ nên tương ứng với một bộ giá trị “hash1” cho mục đích xác minh.

2. Hàm “xác minh” trong hợp đồng “verifier.sol” thực hiện xác minh tính toán đường cong elip trên giá trị đầu vào thông qua hàm “scalar_mul()”. Hàm này tiến hành tính toán trên các đường cong elip sử dụng các tham số đầu vào và so khớp giá trị kết quả với giá trị được chỉ định trong bằng chứng được cung cấp. Do đó, chức năng xác nhận xem giá trị đầu vào có hợp lệ hay không.

3. Trong hợp đồng thông minh Solidity, việc mã hóa Fq bắt buộc phải sử dụng loại uint256. Tuy nhiên, vì giá trị tối đa của uint256 lớn hơn giá trị q, nên một số số nguyên riêng biệt có thể tương ứng với cùng một giá trị Fq sau phép toán modulo. Ví dụ: “s” và “s+q” chỉ cùng một điểm, cụ thể là điểm “sth”. Tương tự, “s+2q”, v.v. cũng là bí danh của điểm “s”. Hiện tượng này được gọi là "Bí danh đầu vào", theo đó các số nguyên này đóng vai trò là bút danh của nhau.

Giá trị “q” được đề cập ở đây liên quan đến thứ tự của nhóm tuần hoàn, biểu thị số lượng giá trị trong cùng một Fq có thể được nhập với nhiều số nguyên lớn. Về bản chất, ngay cả khi giá trị q được thêm vào hàm băm, nó vẫn có thể đáp ứng tiêu chí xác minh. Trong phạm vi của loại uint256, tối đa uint256_max/q số nguyên riêng biệt có thể biểu thị cùng một điểm. Điều này có nghĩa là một bộ bằng chứng có thể có tối đa 5 giá trị hash1 khớp và có thể vượt qua quá trình xác minh của hợp đồng.

Lỗ hổng tái phát

1. Phát triển một mạch cơ bản để nhập hai bộ dữ liệu và tạo dữ liệu nhân chứng, tức là "hash1", được sử dụng trong hợp đồng.

2. Biên dịch mạch để tạo “circuit_final.zkey”, “circuit.wasm” và “verifier.sol”. Sau đó, tạo một tập hợp các bằng chứng, hàm băm tiêu chuẩn và hàm băm bị hỏng.

3. Sau đó, triển khai hợp đồng và sử dụng “checkHash” được tạo trước đó để tiến hành quy trình xác minh. Quá trình xác minh thành công.

4. Tiếp theo, áp dụng dữ liệu nhân chứng giống hệt nhau và “attackHash” đã tạo trước đó. Phát hiện ra thì xác minh cũng thành công. Điều này chứng tỏ rằng một bộ bằng chứng có thể có một số giá trị băm phù hợp đáp ứng các tiêu chí xác minh của hợp đồng. Do đó, lỗ hổng bút danh đầu vào của hợp đồng xác minh Circo đã được sao chép một cách hiệu quả.

Giải pháp cho các lỗ hổng

Lỗ hổng phát sinh từ một bộ bằng chứng có thể có tối đa 5 giá trị băm phù hợp và đáp ứng các yêu cầu xác minh của hợp đồng. Do đó, cách sửa lỗi rất đơn giản: hạn chế tất cả các giá trị băm đầu vào ở một giá trị nhỏ hơn “q”.

Bản tóm tắt

Lỗ hổng bút danh đầu vào là một lỗ hổng thường xuyên gặp phải trong quá trình triển khai mật mã và bằng chứng không kiến thức. Nguyên nhân cơ bản của nó nằm ở chỗ giá trị tương đương với phần dư trong trường hữu hạn. Do đó, các nhà phát triển phải tập trung vào thứ tự của nhóm xác minh khi tạo mật mã.

Nhận tin tức mới nhất tại đây: Kênh Cointime — https://t.me/cointime_en

Các bình luận

Tất cả bình luận

Recommended for you

  • Quỹ ETF Solana giao ngay của Mỹ đã ghi nhận dòng vốn ròng chảy vào 16,54 triệu đô la vào ngày hôm qua.

    Theo dữ liệu của SoSoValue, quỹ ETF Solana giao ngay của Mỹ đã ghi nhận tổng dòng vốn ròng chảy vào là 16,54 triệu đô la vào ngày hôm qua.

  • Giá ETH giảm xuống dưới 3.300 đô la.

    Dữ liệu thị trường cho thấy ETH đã giảm xuống dưới 3.300 đô la và hiện đang giao dịch ở mức 3.299,8 đô la, tăng 6,05% trong 24 giờ. Thị trường đang trải qua biến động đáng kể, vì vậy hãy quản lý rủi ro của bạn cho phù hợp.

  • BTC giảm xuống dưới 92.000 đô la.

    Dữ liệu thị trường cho thấy BTC đã giảm xuống dưới 92.000 đô la và hiện đang giao dịch ở mức 91.976,01 đô la, tăng 1,99% trong 24 giờ. Thị trường biến động mạnh, vui lòng quản lý rủi ro của bạn cho phù hợp.

  • Ông Trump sẽ bắt đầu vòng phỏng vấn cuối cùng cho vị trí Chủ tịch Cục Dự trữ Liên bang trong tuần này.

    Tổng thống Hoa Kỳ Donald Trump sẽ bắt đầu vòng phỏng vấn cuối cùng trong tuần này với các ứng cử viên Chủ tịch Cục Dự trữ Liên bang, với Giám đốc Hội đồng Kinh tế Quốc gia Nhà Trắng Hassett cạnh tranh với ba ứng cử viên khác. Theo ba quan chức chính phủ cấp cao, Trump và Bộ trưởng Tài chính Bessente dự kiến ​​sẽ phỏng vấn cựu Thống đốc Fed Kevin Warsh vào thứ Tư. Các quan chức cho biết, bất chấp những lo ngại từ một số nhà đầu tư Phố Wall rằng mối quan hệ thân thiết của Hassett với tổng thống có thể dẫn đến việc cắt giảm lãi suất quá mức, Hassett vẫn là ứng cử viên hàng đầu kế nhiệm Powell vào tháng 5 tới. Tuy nhiên, quyết định tiếp tục các cuộc phỏng vấn bổ sung cho thấy Hassett không chắc chắn. Các quan chức cũng đã nêu ra khả năng Hassett sẽ phục vụ một nhiệm kỳ ngắn hơn. Theo các quan chức, Bessente đã đệ trình danh sách bốn cái tên lên Nhà Trắng, bao gồm Hassett và Warsh. Hai ứng cử viên còn lại sẽ được chọn từ "danh sách các ứng cử viên cuối cùng khác", bao gồm Thống đốc Fed Waller, Thống đốc Fed Bowman và Rick Riedel của BlackRock.

  • BTC vượt qua mức 94.000 đô la

    Dữ liệu thị trường cho thấy BTC đã vượt qua mức 94.000 đô la và hiện đang giao dịch ở mức 94.012 đô la, tăng 4% trong 24 giờ. Biến động thị trường rất cao; vui lòng quản lý rủi ro của bạn cho phù hợp.

  • BTC vượt qua mức 93.500 đô la

    Dữ liệu thị trường cho thấy BTC đã vượt qua mức 93.500 đô la và hiện đang giao dịch ở mức 93.617 đô la, với mức tăng 3,73% trong 24 giờ. Thị trường đang trải qua biến động đáng kể, vì vậy hãy quản lý rủi ro của bạn cho phù hợp.

  • ETH giảm xuống dưới 3.100 đô la

    Dữ liệu thị trường cho thấy ETH đã giảm xuống dưới 3.100 đô la và hiện đang giao dịch ở mức 3.099,18 đô la, giảm 1,64% trong 24 giờ. Thị trường đang trải qua biến động đáng kể; vui lòng quản lý rủi ro của bạn cho phù hợp.

  • Công ty khai thác Bitcoin IREN hoàn tất đợt phát hành trái phiếu chuyển đổi cao cấp trị giá 2,3 tỷ đô la.

    Công ty khai thác Bitcoin IREN (IREN) đã hoàn tất giao dịch tái cấp vốn bao gồm phát hành trái phiếu chuyển đổi cao cấp trị giá 2,3 tỷ đô la và mua lại 544,3 triệu đô la trái phiếu chuyển đổi hiện có. Các trái phiếu mới phát hành bao gồm: 1 tỷ đô la trái phiếu coupon 0,25% đáo hạn vào năm 2032; 1 tỷ đô la trái phiếu coupon 1% đáo hạn vào năm 2033; và một quyền chọn phân bổ vượt mức trị giá 300 triệu đô la đã được thực hiện đầy đủ để đáp ứng nhu cầu bổ sung. Ngoài ra, IREN đã thực hiện giao dịch quyền chọn mua có giới hạn để phòng ngừa nguy cơ pha loãng cổ phiếu tiềm ẩn từ việc chuyển đổi trái phiếu và để bảo vệ mức giá ban đầu là 82,24 đô la cho mỗi cổ phiếu. Thông báo nêu rõ, ngoại trừ các điều khoản tiêu chuẩn liên quan đến những thay đổi quan trọng, các trái phiếu này không bao gồm bất kỳ quyền chọn bán nào cho nhà đầu tư.

  • Circle hợp tác với Aleo để ra mắt đồng tiền ổn định bảo mật cấp ngân hàng USDCx

    Circle Inc. và Aleo Blockchain đã công bố hợp tác ra mắt USDCx, một stablecoin được tăng cường quyền riêng tư. Stablecoin này sẽ cung cấp cho người dùng "quyền riêng tư cấp ngân hàng", giúp dữ liệu giao dịch được ẩn khỏi công chúng trong khi vẫn duy trì hồ sơ tuân thủ để phục vụ cho việc xem xét theo quy định.

  • Nhà Trắng: Trump sẽ có bài phát biểu tích cực về kinh tế tại Pennsylvania ngày hôm nay.

    Nhà Trắng: Trump sẽ có bài phát biểu tích cực về kinh tế tại Pennsylvania ngày hôm nay.