Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Diversified public keys #17

Open
wants to merge 29 commits into
base: main
Choose a base branch
from
Open

Diversified public keys #17

wants to merge 29 commits into from

Conversation

sug0
Copy link
Contributor

@sug0 sug0 commented Jan 25, 2025

@sug0 sug0 force-pushed the tiago/diversified-pubkeys branch from 39b3874 to b514f4f Compare January 25, 2025 12:35
@larraia
Copy link
Contributor

larraia commented Jan 27, 2025

Just couple of questions (before reviewing the code)

  • In Penumbra they do say that public key diversification is NOT compatible with compact keys (Update: see below why). Are we happy with having all gamma public keys in addressees?
  • Given the above, I think it would make sense to have the FMD with diversified public keys as a separate implementation of trait FMDScheme, and leave the current FMD2 implementation (almost) aligned with the original FMD paper.

Incompatibility of compact keys and Penumbra-style FMD diversification
Given secret key $s$, the solution in Penumbra is to form two public keys $P_1 = sG_1$ and $P_2 = s G_2$ diversified using two different base points $G_1,G_2$. But, if if we need to derive $s$ from a master keypair $(x,X)$ then we need to choose in what base $x$ is the discrete logarithm of $X$. Say the first base point: $X = x G_1$.
Then, if $\mathsf{Hash}(X,blah)$ and $s = x+h$, anyone can derive the first public key $P_1 = X+hG_1$. To derive $P_2$ we can either:

  • (a) use same $x$. Thus $P_2 = X+hG_2$. But this breaks diversification, because now $P_2 \neq s G_2$
  • (b) use a second master key pair $(y,Y:=y G_2)$. But there is no point in deriving $P_1,P_2$ from two master public keys $X,Y$ -- no compactness.

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.

3 participants