<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>remix7531</title><link>https://remix7531.com/</link><description>Exploring formal methods and cryptography.</description><atom:link href="https://remix7531.com/index.xml" rel="self" type="application/rss+xml"/><item><title>Formal Verification of WOTS+ post-quantum signatures</title><link>https://remix7531.com/post/wots_plus_formal_verification/</link><pubDate>Tue, 19 May 2026 00:00:00 +0000</pubDate><guid>https://remix7531.com/post/wots_plus_formal_verification/</guid><description>&lt;p&gt;Adjacent to my work on &lt;a href="https://remix7531.com/post/formal_verification_secp256k1_scalar_mul/"&gt;formal verification of libsecp256k1&lt;/a&gt;, I dabbled in a side project on hash-based signatures. Unsure about the difficulty, I built a formally verified C implementation of the &lt;strong&gt;W&lt;/strong&gt;internitz &lt;strong&gt;O&lt;/strong&gt;ne &lt;strong&gt;T&lt;/strong&gt;ime &lt;strong&gt;S&lt;/strong&gt;ignature &lt;strong&gt;Plus&lt;/strong&gt; (WOTS+) using the Verified Software Toolchain. It turned out to be surprisingly easy relative to the modular scalar multiplication in libsecp256k1.&lt;/p&gt;
&lt;p&gt;Every WOTS+ C function is proved to match a mathematical specification of what it should compute, and the specification itself is proved to be internally consistent.&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; The trusted base is SHA-256 (left abstract in the model, and the C implementation is assumed to match that abstract model), CompCert, VST, and the Rocq kernel. Code and proofs are at &lt;a href="https://github.com/remix7531/wots-fv"&gt;https://github.com/remix7531/wots-fv&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Benchmarking SLH-DSA Aggregation with STARKs</title><link>https://remix7531.com/post/slh-dsa-stark-bench/</link><pubDate>Sun, 12 Apr 2026 00:00:00 +0000</pubDate><guid>https://remix7531.com/post/slh-dsa-stark-bench/</guid><description>&lt;p&gt;Code: &lt;a href="https://github.com/remix7531/slh-dsa-stark-bench"&gt;github.com/remix7531/slh-dsa-stark-bench&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="background"&gt;Background&lt;/h2&gt;
&lt;p&gt;In April 2025, Ethan Heilman posted &lt;a href="https://groups.google.com/g/bitcoindev/c/wKizvPUfO7w"&gt;Post Quantum Signatures and Scaling Bitcoin&lt;/a&gt; to the &lt;code&gt;bitcoin-dev&lt;/code&gt; mailing list, proposing Non-Interactive Transaction Compression (NTC) using STARK proofs. The idea: once Bitcoin adopts post-quantum signatures, miners would aggregate all PQ signatures in a block into a single proof, replacing thousands of large signatures with one constant-size proof. This addresses the main downside of PQ signatures, namely their size, and could increase Bitcoin&amp;rsquo;s transaction throughput.&lt;/p&gt;</description></item><item><title>Formal Verification of secp256k1 modular scalar multiplication</title><link>https://remix7531.com/post/formal_verification_secp256k1_scalar_mul/</link><pubDate>Tue, 07 Apr 2026 00:00:00 +0000</pubDate><guid>https://remix7531.com/post/formal_verification_secp256k1_scalar_mul/</guid><description>&lt;p&gt;I produced a machine-checked proof that &lt;a href="https://github.com/bitcoin-core/secp256k1/blob/master/src/scalar_4x64_impl.h#L857"&gt;&lt;code&gt;secp256k1_scalar_mul&lt;/code&gt;&lt;/a&gt; computes exactly &lt;code&gt;r = a * b mod N&lt;/code&gt; for all representable inputs, where N is the secp256k1 group order. Together with all supporting helpers, the verified code totals roughly 300 lines of C. The proof covers arithmetic correctness, absence of integer overflow in all intermediate computations, and memory safety. Scalar multiplication sits on the critical path of every signature operation.&lt;/p&gt;
&lt;p&gt;This is my first result under the OpenSats grant &lt;a href="https://opensats.org/blog/sixteenth-wave-of-bitcoin-grants#advancing-formal-verification-for-bitcoin-cryptography"&gt;Advancing Formal Verification for Bitcoin Cryptography&lt;/a&gt;. The code and proofs are available at &lt;a href="https://github.com/remix7531/secp256k1-scalar-fv-test"&gt;https://github.com/remix7531/secp256k1-scalar-fv-test&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>AI and Formal Verification</title><link>https://remix7531.com/post/ai_and_formal_verification/</link><pubDate>Sat, 04 Apr 2026 00:00:00 +0000</pubDate><guid>https://remix7531.com/post/ai_and_formal_verification/</guid><description>&lt;p&gt;I have been trying to get LLMs to write formal verification proofs for about two years. Most recently as part of my work &lt;a href="https://remix7531.com/post/formal_verification_secp256k1_scalar_mul/"&gt;proving C code from bitcoin-core/secp256k1 correct&lt;/a&gt;. Every attempt failed. Different models through Copilot Chat would produce plausible-looking tactic sequences that did not type-check, hallucinate lemma names, or get stuck in loops. I kept trying because the idea is so compelling: as &lt;a href="https://martin.kleppmann.com/2025/12/08/ai-formal-verification.html"&gt;others have predicted&lt;/a&gt;, formal verification and AI form a natural synergy. Proofs are machine-checkable, so an LLM can try things and get immediate feedback on whether they work.&lt;/p&gt;</description></item><item><title>Learning Rocq with Software Foundations</title><link>https://remix7531.com/post/learning-rocq-with-software-foundations/</link><pubDate>Mon, 02 Feb 2026 00:00:00 +0000</pubDate><guid>https://remix7531.com/post/learning-rocq-with-software-foundations/</guid><description>&lt;p&gt;Last month (January 2026) I got into the &lt;a href="https://rocq-prover.org/"&gt;Rocq&lt;/a&gt; proof assistant.&lt;/p&gt;
&lt;p&gt;In this post, I&amp;rsquo;m going into my experience learning the basics of Rocq by working through the &lt;a href="https://softwarefoundations.cis.upenn.edu/lf-current/index.html"&gt;Software Foundations: Logical Foundations (Volume 1)&lt;/a&gt; book. We&amp;rsquo;ll take a quick look at Constructive Logic and Inductive Propositions (my biggest learnings), as well as common errors I made. Finally, I&amp;rsquo;ll summarize my experience so far with Rocq and what I&amp;rsquo;m doing next.&lt;/p&gt;
&lt;p&gt;Rocq is a proof assistant that was recently renamed from Coq. Rocq is an interactive theorem prover and a functional programming language. Rocq has a small core: even familiar things like natural numbers and lists aren&amp;rsquo;t kernel built-ins. They&amp;rsquo;re defined in libraries. Using Rocq, we can define our own types (or use ones from the standard library) and prove theorems about them. This might be basic lemmas about natural numbers or large proofs such as the &lt;a href="https://en.wikipedia.org/wiki/Four_color_theorem#Simplification_and_verification"&gt;Four color theorem&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Hello, World!</title><link>https://remix7531.com/post/hello-world/</link><pubDate>Fri, 02 Jan 2026 00:00:00 +0000</pubDate><guid>https://remix7531.com/post/hello-world/</guid><description>&lt;p&gt;Welcome to my website on formal verification and cryptography.&lt;/p&gt;
&lt;h2 id="what-im-working-on"&gt;What I&amp;rsquo;m Working On&lt;/h2&gt;
&lt;p&gt;Cryptographic systems rely on the correctness of their implementations. This website documents my work applying formal methods to strengthen that foundation.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Current Focus:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;RustCrypto&lt;/strong&gt;: Formally verifying the &lt;a href="https://github.com/RustCrypto/hashes/tree/master/sha2"&gt;sha2&lt;/a&gt; and &lt;a href="https://github.com/RustCrypto/elliptic-curves/tree/master/k256"&gt;k256&lt;/a&gt; implementations using &lt;a href="https://github.com/cryspen/hax"&gt;HAX&lt;/a&gt; and &lt;a href="https://fstar-lang.org/"&gt;F*&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;secp256k1&lt;/strong&gt;: Working on correctness and safety proofs for elliptic curve operations and multi-scalar multiplication in &lt;a href="https://github.com/bitcoin-core/secp256k1"&gt;libsecp256k1&lt;/a&gt;. Researching which framework and proof assistants work best.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="why-formal-methods"&gt;Why Formal Methods?&lt;/h2&gt;
&lt;p&gt;While code review, testing and fuzzing catch many bugs, formal verification goes further: Proving the &lt;em&gt;absence&lt;/em&gt; of entire classes of errors. For critical cryptographic code, this level of assurance matters.&lt;/p&gt;</description></item></channel></rss>