<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Lee Marreros</title>
        <link>https://paragraph.com/@lee-marreros</link>
        <description>Senior Blockchain Developer. Passionate about making cryptography and blockchain accessible for developers.</description>
        <lastBuildDate>Thu, 14 May 2026 09:16:46 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <image>
            <title>Lee Marreros</title>
            <url>https://storage.googleapis.com/papyrus_images/2fe93700cfeb03235c5011afbfa50c2d33f41b4b83851e9d920ee8b025435196.png</url>
            <link>https://paragraph.com/@lee-marreros</link>
        </image>
        <copyright>All rights reserved</copyright>
        <item>
            <title><![CDATA[Cryptography Workshop: Building a Multiparty Signature System from Scratch]]></title>
            <link>https://paragraph.com/@lee-marreros/cryptography-workshop-building-a-multiparty-signature-system-from-scratch</link>
            <guid>KseLZPxvhxHLj8nD5tgh</guid>
            <pubDate>Wed, 11 Dec 2024 02:22:01 GMT</pubDate>
            <description><![CDATA[IntroductionThis is a rigorous do-it-from-scratch article series where I cover how to implement a multiparty (of two) signing process. This technique allows two people, each contributing with his part, to build a joint signature. This application has several use cases. For instance, one person could split a private key into two shares and store each share in a different device, which diminishes the risk of having his private key compromised. Also, now it would be possible for two people to pa...]]></description>
            <content:encoded><![CDATA[<h2 id="h-introduction" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Introduction</h2><p>This is a rigorous do-it-from-scratch article series where I cover how to implement a multiparty (of two) signing process. This technique allows two people, each contributing with his part, to build a joint signature. This application has several use cases. For instance, one person could split a private key into two shares and store each share in a different device, which diminishes the risk of having his private key compromised. Also, now it would be possible for two people to participate or use any DeFi service as long as both agree and do the work required from each side. All of this without intermediaries and using cryptography techniques as a replacement.</p><p>It is true that nowadays multiparty computation is achieved in threshold cryptography. However, when it comes to two people, there is no majority. On top of that, the current solutions require proof of knowledge and several interaction rounds, which increases the computation involved in the system. That is why Lindell, in his paper <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eprint.iacr.org/2017/552"><strong><em>“Fast Secure Two-Party ECDSA Signing”</em></strong></a>, proposes a clever implementation that is way faster and simpler than other solutions. He came up with an interesting twist in the way the cryptographic primitives are used. In his system, he combines Elliptic Curves Signing, Paillier Encryption and other advanced cryptographic concepts to create an algorithm that produces joint signatures. This article series aims to explain step by step while you build it along the way from scratch.</p><h2 id="h-workshop" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Workshop</h2><p>The approach of this article series is like a cryptography workshop. Expect to be challenged and learn a variety of concepts in each article. You will be asked to fill in the required code to pass each test. Each article starts with the necessary theory for each algorithm. I encourage you to stop at each section to assimilate every minute detail. This will enhance your comprehension of the cryptographic primitives. The first four articles will cover the mathematical foundations of the two-party signing system. These foundations will be inputs to implement Lindell’s algorithm, which is cover in the last article. Each article series has its respective file, starter code and test, all of which are part of the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/Blockchain-Bites/two-party-computation-signature"><strong><em>repository that you can find here</em></strong></a>.</p><h2 id="h-prerequisites" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Prerequisites</h2><p>The knowledge requirements for this article series are the following: elliptic curve math operations, modular arithmetic, module inverse, hash functions and discrete logarithms. Those topics are not covered. Hence, I would say if you are new to cryptography, this article series will be really challenging.</p><p>In that case, I truly suggest you start here: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.blockchainbites.co/cryptography-for-blockchain-developers"><strong><em>Cryptography for Blockchain Developers</em></strong></a>. In that course, all the prerequisites are covered in detail. Once you finish that course, you will be equipped to tackle this article series. If you already know those topics, then jump in directly.</p><h2 id="h-article-series-list" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Article-Series List</h2><p>In the pursuit of being organized, I proposed the following order for the article series (soon to be published if link not available):</p><ol><li><p><strong>Cryptography Workshop: Building a Multiparty Signature System from Scratch</strong> — Master Cryptographic Techniques Through This Developer-Focused Series (Current)</p></li><li><p><strong>Prove What You Know, Without Revealing Anything</strong> — A Developer’s Guide to Understanding Schnorr Proof of Knowledge</p></li><li><p><strong>How Two Strangers Can Share a Secret in Public</strong> — How the Diffie-Hellman Key Exchange Works, Step by Step</p></li><li><p><strong>Mastering Encryption à la Paillier</strong> — Building Additive Homomorphic Encryption from Scratch (Soon)</p></li><li><p><strong>Advanced Techniques in Cryptographic Protocols and Secure Multi-Party Computation</strong> (Soon)</p></li><li><p><strong>Two Parties, One Signature: The Future of Secure and Fast Signing</strong> — Step-by-Step Guide to Building Multiparty Signatures with Advanced Cryptography (Soon)</p></li></ol><p>From those articles, (1), (2) and (3) are independent, while (4) and (5) require certain algorithms from the other ones. Pay attention to the top of each file where the <code>require</code> solicits algorithms from other files. Make sure to complete all dependencies first.</p><h2 id="h-approach" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Approach</h2><p>My suggestion to approach this article series is one article per week. Take your time to fully assimilate the essence of each algorithm. The very last article, rather than proposing new cryptographic concepts, proposes two subprotocols, which are part of Lindell’s system. If the foundational concepts are fully comprehended, getting the gist of the subprotocols won’t be that hard.</p><p>Feel free to leave a comment or ask a question wherever you see fit. The articles will be published whenever they are ready. If you don’t find the link yet, it will be soon. Follow me for learning all about Blockchain.</p><p>Have fun and happy coding!</p>]]></content:encoded>
            <author>lee-marreros@newsletter.paragraph.com (Lee Marreros)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/e251ca395800c71616277cd9d599a97196a4f27b98dc60f501cf7feaf8751810.png" length="0" type="image/png"/>
        </item>
    </channel>
</rss>