# Tag Info

3

To perform an Ed25519 signature operation, you need to know three values, denoted by $\sf RH$, $a$ and $A$ in the diagram. Now, as it happens, these values are not independent: $A$ can be derived from $a$, and both $\sf RH$ and $a$ can be derived from the seed $k$. Thus, all you really need to store is the seed $k$; everything else can be derived from ...

3

The core of the problem is finding a near first pre-image on the function $A = aB$ on an elliptic curve, where $A$ is the public key, and $a$ the private key¹. For a normal hash function you $2^m$ operations to fix $m$ specific bits.² In particular a full pre-image takes $2^n$ hash function calls. A full pre-image on $A = aB$ is equivalent to solving ...

3

If you can store the private key with some pre-computed work, then you can pick almost any public key you want. So in a way, it depends on the implementation. Here's a diagram of how Ed25519 works, note how keys are generated: (Image source.) A more detailed description (that is simpler than the actual paper) of the process is in these slides (slides 9 ...

3

Well, lets go through the issues: It seems to be possible to retrieve the (public) key used for creating an ECDSA signature just from the signature alone Nope, not quite. You also need the message being signed. And, with that, it doesn't give you the unique public key; it does allow you to narrow it down to two possibilities (assuming you're using a ...

2

ECDH is the same as what Curve25519 uses mathematically. The issue is that converting Curve25519 into Weierstrauß form is a bad idea, because it introduces issues relating to the potential failure of the addition law, which are difficult to address well. Keeping the curve in Montgomery or twisted Edwards form finesses these difficulties. ECDSA has issues ...

2

ge_scalarmult_base returns GroupElementP3 which doesn't have (x, y) as members. It has X, Y, Z from which you can compute x = X / Z and y = Y / Z. So you have two choices: Compress the point with ge_tobytes: byte[32] Abytes; fe y; ge_scalarmult_base(&A,sk); ge_tobytes(Abytes, &A); fe_frombytes(&y, Abytes); // your code here using y ...

1

Looking at the Ed25519 paper, it seems that a key pair consists of a private key $k$ (just a $k$-bit string) and a public key $A$, where $A = a · B$ and $a$ is derived from the first half of the hash $H(k)$ ($B$ is the base point of an elliptic curve (or actually a twisted Edwards curve equivalent to an elliptic curve) and $·$ is the scalar multiplication in ...

Only top voted, non community-wiki answers of a minimum length are eligible