▸ zkBitcoin: Use Zero-Knowledge Applications (zkapps) on Bitcoin
We’re excited to introduce zkBitcoin, a new tool that lets you create zero-knowledge applications on Bitcoin using a minimal layer 2 protocol. This innovation opens up a world of complex, privacy-focused apps by enhancing Bitcoin’s scripting capabilities. We’re currently on testnet, so you can jump in and explore the possibilities. Check out our whitepaper or watch some videos for a deeper dive. It’s an exciting time for Bitcoin development, and we can’t wait to see what you’ll build!
▸ Public report of Aleo's consensus (Bullshark)
We recently audited Aleo’s blockchain consensus and found it to be impressively well-documented and high-quality. Our collaboration with Aleo’s cooperative team helped us uncover several key issues, and the insights from this audit were well-received. In the blog, we dive into Aleo’s Bullshark consensus protocol, explaining its step-by-step process and unique pipelining techniques. We also explore how leaders ensure commitments in even rounds and discuss essential aspects like quorum intersection and garbage collection. Whether you’re a blockchain enthusiast or just curious about cutting-edge consensus protocols, this post has got some fascinating details to offer!
▸ Public report of Aleo's synthesizer
We were tasked with auditing Aleo’s synthesizer for their blockchain, diving deep into its code and uncovering some important findings along the way. The synthesizer is crucial for deploying and executing user programs, utilizing zero-knowledge proofs to maintain privacy and efficiency. Readers will get a glimpse into how Aleo uses their Leo programming language, the intricate process of synthesizing proof circuits, and how function execution and program deployment flows occur on their platform. This post offers insights into Aleo’s unique approach to tackling challenges similar to those faced by Ethereum but with an innovative twist that includes privacy features and reduced costs.
▸ Public report of Sui's zkLogin audit
We just finished an audit of the Sui Foundation’s zkLogin application and we’re sharing what we found: the code is well-documented, tested, and specified. The zkLogin is set to make user authentication on the blockchain secure but simple, replacing cryptographic keys with familiar SSO methods like Google or Facebook while preserving user privacy. We also dive into the technical details behind JWT verification, non-native arithmetic for RSA, and vector programming. Plus, learn about the trusted setup process for zkLogin, ensuring maximum security through a decentralized multi-party ceremony. If you’re curious about the intricate mechanics behind zkLogin, this is a must-read.
▸ Public report of Reclaim protocol's ChaCha20 circuit
We audited Reclaim protocol’s ChaCha20 circuits, diving deep into bit-level operations for a secure and efficient design. After a few iterations, we switched from a word-based to a bit-focused circuit approach, achieving a 10% enhancement in performance and size. We used Circom for implementation, with a focus on Groth16 system constraints. Our findings led Reclaim to revamp their strategy, honing in on bitwise logic for an effective flow without costly re-encodings. Curious about the technical journey and the final audit insights? We’ve got the details covered!
▸ Watch what we have to say about ZK security in the Node Guardians season 2 episode 1
Catch our cofounder David Wong on the latest episode of Node Guardians, where he chats about ZK security with Sam. Dive into the intriguing world of blockchain auditing, uncover the role math plays, and explore how auditors tackle challenges and rate vulnerabilities. Plus, get insights into the usefulness of formal verification. It’s a must-watch for anyone curious about the future of ZK and the nitty-gritty of blockchain security!
▸ Listen to us on the latest episode of zeroknowledge.fm
Join our cofounder David Wong on the latest zk podcast as he dives into his compelling journey through cryptography, from his early days as a security consultant to his pivotal roles in major projects like Facebook’s crypto initiatives and Mina. Get an insider’s view on how we approach auditing in a Zero Knowledge context, the common pitfalls in ZK code, and how these insights shape our work. It’s an engaging and informative chat for anyone fascinated by the world of cryptography and ZK technology!
▸ zkSecurity partners with ZPrize to make you win hundreds of thousands of dollars!
We’re gearing up for this year’s ZPrize competition, where we’ll be hosting the High Throughput Signature Verification category. This challenge is all about creating the most efficient signature verification circuit using Aleo’s Varuna proof system. Participants will work with ECDSA on the Bitcoin and Ethereum curve and the Ethereum hash function, keccak256. It’s a great chance to dive into some of the hottest problems in arithmetic circuits and optimize cryptographic algorithms. If you’re curious about pushing the boundaries in ZK, join us and share your feedback on our prize specification through our Discord channel.
▸ You like Circom but you find it confusing? Introducing Circomscribe
Dive into our exploration of Circomscribe, a nifty tool designed to illuminate the mysterious process of how your Circom code gets translated into constraints. We share insights from our experience with Circom circuit audits, highlighting common pitfalls developers face when their high-level intentions meet low-level reality. By showcasing how Circomscribe can help visualize this transition, we aim to empower developers to craft more bug-free, secure ZK applications. If you’re keen on understanding the inner workings of Circom and enhancing your coding prowess, this post is your guide.
▸ Detecting boomerang values in zero-knowledge circuits using tag analysis
Ever wonder how zkApps ensure their execution is spot-on? This post digs into the idea of boomerang values—sneaky bugs that can crop up when zkApps mix in-circuit and out-of-circuit logic. We explore how these values disrupt your circuit’s trustworthiness, especially when variables are reintegrated unverified. Plus, we share how tools like MIRAI’s tag analysis can help spot these issues, making your zkApps more secure. Perfect for anyone into zero-knowledge applications or budding Rust enthusiasts looking for insights on taming complex bugs!
▸ Public report of auditing Penumbra's circuits
We conducted an audit of Penumbra’s main circuits and found eight issues, including the critical “double spend” and “double vote” bugs, which the Penumbra team promptly fixed. Our findings highlight Penumbra’s robust documentation and code testing. Readers will get insights into how Penumbra uses zero-knowledge proofs for privacy, its decentralized exchange features, and its governance model. The post also provides detailed pseudocode for various cryptographic protocols, emphasizing how Penumbra ensures secure and private transactions. It’s a deep dive into the technical details for those intrigued by privacy-focused blockchain technologies.
▸ The zero-knowledge attack of the year might just have happened, or how Nova got broken
Last week, a surprising paper revealed a major vulnerability in Microsoft’s Nova, a leading zero-knowledge proof (ZKP) system, that showcased a false computation with a valid proof. This discovery is especially intriguing given the complexity and robustness typically associated with ZKP systems. We had just launched our company to tackle bugs in ZKP frameworks, and while we anticipated issues, complete breakdowns of systems themselves are rare. Nova’s issue revolved around cycles of elliptic curves, showing how small implementation oversights in complex cryptographic systems can lead to significant errors. This post dives into the intricate mechanics of Nova and the discovery process, offering a fascinating glimpse into why rigorous specifications are crucial in cryptography.
▸ noname: ZK app developers should be able to see down to the constraints
Zero-knowledge apps are evolving, and we’ve been diving into their two main forms: VM instructions and arithmetic circuits. Understanding the “assembly” layer is crucial for developers, especially when optimizing and ensuring security. We’ve played around with a new toy language called noname, blending Golang and Rust vibes to make zkApps more understandable. With noname, you get detailed insights about how your code translates into gates, offering a clearer picture of the underlying “assembly” and helping pinpoint compiler bugs. If you’re curious about enhancing your low-level programming skills or peeking into circuit construction, check out our experiments and see if this inspires you to create better debugging tools!
▸ wasmati: You should write your WebAssembly in TypeScript
If you’re into WebAssembly (Wasm) and want to speed up your JavaScript, this blog post is for you! We talk about our journey with Wasm and how we created a TypeScript library called wasmati that lets you write Wasm at the instruction level. You’ll get the inside scoop on how this can significantly improve performance, especially for cryptography work. Plus, we showcase a real-world example comparing Wasm and JS bigint performance, proving that Wasm can be over four times faster. Dive in to see how we’ve combined the flexibility of TypeScript with the power of Wasm for high-performance coding.
▸ Do in secret. Assert in public. Don't under-constrain your prover's witness computation in ZK programs
Curious about diving into zero-knowledge (ZK) application development? Our blog post is here to guide you through the common security pitfalls and mindset shifts essential for tackling ZK programming. We reflect on our journey from the early days of Mina Protocol to the dynamic space today, filled with tools like SnarkyJS and newer approaches to split the prover and verifier roles effectively. Discover the errors to avoid, like under-constraining data and letting divisors slip through unchecked, and learn how a solid review and audit process can save your ZK applications from disastrous security issues. Dive in to get the insights you need to navigate the ZK landscape confidently!
▸ ZK programmability adds a whole new layer to worry about
Zero-knowledge (ZK) programs are revolutionizing how developers can build secure systems by proving execution without exposing data, making them incredibly useful for privacy and security. However, they come with their own set of challenges. In this blog, we delve into these security implications and offer practical strategies to help developers navigate the risks. From understanding private inputs to the intricacies of proof systems and trusted setups, we unpack the complexities and provide insights on how to address potential pitfalls, ensuring you’re well-prepared to harness the power of ZK programs effectively.
▸ Private delegated computation is here, and there will be bugs!
Dive into the intriguing world of zero-knowledge cryptography with us as we unravel its connection to trusted and confidential computing. Learn why this tech is making us rethink security like never before. From the evolution of private and delegated computing to the revolutionary power of zero-knowledge proofs, we’ll explore how these advancements are shaping industries beyond cryptocurrencies. With big players like Microsoft jumping on board and the potential for new applications, zero-knowledge cryptography is poised to redefine digital trust. Join us on this journey as we launch our new security consultancy, designed to navigate and secure this cutting-edge landscape.