Skip to content

Conversation

mattsuffern
Copy link
Contributor

@mattsuffern mattsuffern commented Apr 2, 2025

Documentation

This is the documentation for Aggregating Falcon Signatures with LaBRADOR.

Main Changes

@maksimryndin maksimryndin requested a review from omibo April 3, 2025 06:20
Copy link
Contributor

@NiDimi NiDimi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great work Mateo! 🔥 Left some small comments. Also can you modify the Readme.md to reflect the new changes?

$$\lVert (\mathbf{s}\_{i1}, \mathbf{s}\_{i2}) \rVert_{2} \leq \beta$$
Where $H()$ is a hash function, $\mathbf{h}$ is the public key, and $r \in \\{0, 1\\}^{320}$ is a random salt.

It's important to notice these equations are valid mod $q$, which means they may not be valid mod $q'$. So, in order to make an equivalent version of these constraints but in the LaBRADOR ring, we will find an equivalent restriction over $\mathcal{R}$. Since the validity of a restriction being equal to zero in $\mathcal{R}$ should still hold under some modulus wrapping in $\mathcal{R}\_{q^{'}}$. In order for the restrictions to hold in $\mathcal{R}$, we would like intuitively that $(\mathbf{s}\_{i1}, \mathbf{s}\_{i2})$ will be "small enough" that they would not wrap around over the $q'$ modulus. Since we are not in control of the size of $(\mathbf{s}\_{i1}, \mathbf{s}\_{i2})$, the main idea behind this will be to slightly modify the restrictions from Falcon so that we can guarantee that for a large enough $q'$, they will still be valid over this new ring.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we would like intuitively that $(\mathbf{s}_{i1}, \mathbf{s}_{i2})$ will be "small enough" that they would not wrap around over the $q'$ modulus

Explain this a bit better


Because all dot product constraints in LaBRADOR are of the form:
$$
f(\mathbf{\bar{\mathbf{s}}})=0 \text{ or } ct(f(\mathbf{\bar{\mathbf{s}}})) = 0
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would suggest defining ct

For the first restriction, we know from Falcon that it must be valid in $\mathcal{R}\_{q}$. This isn't necessarily valid in $\mathcal{R}$. In order to force it to be valid, we will add an extra witness $v_{i} \in \mathcal{R}\_{q'}$, leaving us with this restriction over $\mathcal{R}$:
$$\mathbf{s}\_{i1}+\mathbf{hs}\_{i2}+qv_{i} - H(r,m) = 0$$

Since adding multiples of $q$ to the restriction doesn't affect the original formulation $\mod q$, then this restriction continues to be valid in $\mathcal{R}\_{q}$. In order to answer how big $q'$ needs to be so that the witness vectors (including the new one) don't wrap around, we need to prove that the witnesses are small enough.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would say be more specificic with the how big q' needs to be
To prevent a wrap around we need to ensure that the coeffs in Rq remain small enough that their norms and sums don't exceed q/2. Basically this is the reason that Falcon choose beta such that $$\lVert (\mathbf{s}_{i1}, \mathbf{s}_{i2}) \rVert_{2} \leq \beta \leq q /2$$

@@ -0,0 +1,38 @@
# Changing the Modulus & Norm Checks

Although Falcon and LaBRADOR were designed over a similar structure of a polynomial ring $\mathcal{R}\_{q} = Z_{q}\[ x \]/(x^{d}-1)$ of degree $d$ and modulus $q$, they both use different moduli. We will denote $q$ as the Falcon modulus and $q' > q$ as the LaBRADOR one. When using Falcon to sign a message $m$, the signer uses its secret key to obtain two small lattice vectors $(\mathbf{s}\_{i1}, \mathbf{s}\_{i2})$ such that:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What does $i$ represent in $\mathbf{s}_{i1}$? Could we use $\mathbf{s}_{1}$ instead? The same applies to $\mathbf{s}_{i2}$.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Originally, I used the $\mathbf{s}_{1}$ notation, since that’s what’s used in Falcon. However, since we’ll be working with many signatures at the same time, Section 6 of the paper uses this notation to refer to the signature $i$. If it’s clear from the context, I can remove the $i$ to simplify the notation a bit.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since our implementation likely requires this $i$, I think including it is a good idea. However, we can change other variables such as $h$ and $\epsilon$ to $h_i$ and $\epsilon_i$ to keep notations consistent.

Comment on lines 4 to 5
$$\mathbf{s}\_{i1}+\mathbf{hs}\_{i2} = H(r,m) \mod q$$
$$\lVert (\mathbf{s}\_{i1}, \mathbf{s}\_{i2}) \rVert_{2} \leq \beta$$
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. I suggest adding $\beta \ll q$.
  2. These two could be separated by a comma for better visualization.

@@ -0,0 +1,38 @@
# Changing the Modulus & Norm Checks

Although Falcon and LaBRADOR were designed over a similar structure of a polynomial ring $\mathcal{R}\_{q} = Z_{q}\[ x \]/(x^{d}-1)$ of degree $d$ and modulus $q$, they both use different moduli. We will denote $q$ as the Falcon modulus and $q' > q$ as the LaBRADOR one. When using Falcon to sign a message $m$, the signer uses its secret key to obtain two small lattice vectors $(\mathbf{s}\_{i1}, \mathbf{s}\_{i2})$ such that:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I suggest adding some explanation about why $q'$ and $q$ cannot be the same and why $q'$ should be larger.

Copy link
Contributor

@pycckuu pycckuu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me!

Copy link
Contributor

@NiDimi NiDimi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Latest changes looks good

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Documentation for Aggregating Falcon Signatures with LaBRADOR

4 participants