Questions tagged [ed25519]

Ed25519 is a public-key signature system.

Ed25519 is a public-key signature system with several attractive features:

  • Fast single-signature verification. The software takes only 273364 cycles to verify a signature on Intel's widely deployed Nehalem/Westmere lines of CPUs. (This performance measurement is for short messages; for very long messages, verification time is dominated by hashing time.) Nehalem and Westmere include all Core i7, i5, and i3 CPUs released between 2008 and 2010, and most Xeon CPUs released in the same period.
  • Even faster batch verification. The software performs a batch of 64 separate signature verifications (verifying 64 signatures of 64 messages under 64 public keys) in only 8.55 million cycles, i.e., under 134000 cycles per signature. The software fits easily into L1 cache, so contention between cores is negligible: a quad-core 2.4GHz Westmere verifies 71000 signatures per second, while keeping the maximum verification latency below 4 milliseconds.
  • Very fast signing. The software takes only 87548 cycles to sign a message. A quad-core 2.4GHz Westmere signs 109000 messages per second.
  • Fast key generation. Key generation is almost as fast as signing. There is a slight penalty for key generation to obtain a secure random number from the operating system; /dev/urandom under Linux costs about 6000 cycles.
  • High security level. This system has a 2^128 security target; breaking it has similar difficulty to breaking NIST P-256, RSA with ~3000-bit keys, strong 128-bit block ciphers, etc. The best attacks known actually cost more than 2^140 bit operations on average, and degrade quadratically in success probability as the number of bit operations drops.
  • Foolproof session keys. Signatures are generated deterministically; key generation consumes new randomness but new signatures do not. This is not only a speed feature but also a security feature, directly relevant to the recent collapse of the Sony PlayStation 3 security system.
  • Collision resilience. Hash-function collisions do not break this system. This adds a layer of defense against the possibility of weakness in the selected hash function.
  • No secret array indices. The software never reads or writes data from secret addresses in RAM; the pattern of addresses is completely predictable. The software is therefore immune to cache-timing attacks, hyperthreading attacks, and other side-channel attacks that rely on leakage of addresses through the CPU cache.
  • No secret branch conditions. The software never performs conditional branches based on secret data; the pattern of jumps is completely predictable. The software is therefore immune to side-channel attacks that rely on leakage of information through the branch-prediction unit.
  • Small signatures. Signatures fit into 64 bytes. These signatures are actually compressed versions of longer signatures; the times for compression and decompression are included in the cycle counts reported above.
  • Small keys. Public keys consume only 32 bytes. The times for compression and decompression are again included.
128 questions
1
vote
1 answer

CryptoPP::ed25519::Verifier shows different result from libsignal

I'm trying to implement curve25519 verification with CryptoPP. I tried the libsignal library first, witch shows correct result. Then I tried the same data with CryptoPP, but shows wrong result. Here is the code using libsignal to verify a…
aj3423
  • 2,003
  • 3
  • 32
  • 70
1
vote
0 answers

OpenSSL generate ED25519 keypair C++

i want to create a x509 certificate and self-sign it with a eddsa(ed25519) private key! So I tried the following example from the documentation: https://www.openssl.org/docs/man1.1.1/man7/Ed25519.html EVP_PKEY* server::generate_privatekey() { …
1
vote
1 answer

java: Verifying Ed25519 signature with BouncyCastle not working as expected

I've not found an answer with Google, unfortunately, so I figured I may as well ask. A service I'm trying to write a library for sends clients messages, a timestamp, and a signature, where the signature is supposed to be sign(privkey, timestamp +…
user7876637
  • 124
  • 4
  • 11
1
vote
0 answers

Generate CSR in Android (java or kotlin) Using BouncyCastle(or SpongyCastle) With ED25519

is there any way to generate CSR with pem format in android using "ed25519 keypair" ? we can use BouncyCastle (SpongyCastle) to generate and sign csr , but with "RSA" algorithm and keypair. i want to use "ed25519" algorithm & keypair.
1
vote
1 answer

Key additions in 25519-dalek?

I have key addition, for curve secp256k1, working: https://crypto.stackexchange.com/a/83733/17505 use rand::Rng; use secp256k1::{Secp256k1, SecretKey, PublicKey}; fn main() { let secp = Secp256k1::new(); let seed_a =…
fadedbee
  • 42,671
  • 44
  • 178
  • 308
1
vote
2 answers

Exact byte format of ed25519 key generated by openssl

Does anyone know, or may point,hint me towards ressources where this is documented? What I want is the information like: PrivateKeyInfo ::= SEQUENCE { version Version, (1byte) algorithm AlgorithmIdentifier,(2byte) PrivateKey …
Lenny
  • 157
  • 1
  • 13
1
vote
2 answers

EDDSA Signature with Luna HSM using Java

I am trying to implement EDDSA signature with Luna HSM(Gemalto) Signature signature = null; signature = Signature.getInstance("EDDSA", "LunaProvider"); PrivateKey privateKey =…
Mayuran
  • 669
  • 2
  • 8
  • 39
1
vote
0 answers

Length of Ed25519 signature

I am using lazysodium-android to generate keypairs and generating a signature using a message and privatekey as shown in the kotlin code below. val pair = lazySodium.cryptoSignSeedKeypair(seed.seedBytes) println(pair.publicKey.asBytes.size)…
Sanjay S B
  • 259
  • 2
  • 15
1
vote
1 answer

Generating ed25519 keys in Java/Kotlin

I am looking to generate ed25519 keys in java/kotlin. The key pair should be deterministic in that if one can provide some seed information used during the generation, they can generate the same pair again. I understand one can achieve this using a…
Sanjay S B
  • 259
  • 2
  • 15
1
vote
1 answer

C# Generate Ed25519 private and public key pair for SSH authentication

I need to generate a key pair for the authentication in a ssh tunnel with C#. The only constraint is the cryptographic that should be Ed25519. I'm able to generate a valid public key but not a valid private key (or maybe only the format). I've…
mene
  • 372
  • 3
  • 17
1
vote
0 answers

Java Bouncycastle Generate Ed25519 OpenSSH Private Key File Failing

I've been trying to programatically generate OpenSSH host keys in my Java application, but I'm unable to get a working Ed25519 key in the OpenSSH v1 key format. My current thought is that there's a problem with OpenSSHPrivateKeyUtil, but I'm not…
BPilgrim
  • 54
  • 5
1
vote
0 answers

Different results decoding stellar seed in debug and build release for Android

Trying builded application in Google Play which is basically a stellar wallet and found that I'm getting different results with flutter run and in builded version while decoding seed or mnemonic for wallet import. How can I solve this? Is this…
1
vote
1 answer

Why privateKey*PublicKey get different result in Ed25519 with golang

for result, i want to calculate a value X as apiKey with formula this Pubkey1 = Privkey1 * G Pubkey2 = Privkey2 * G then we get Privkey2 * Pubkey1 = Privkey1 * Pubkey2 also equal Privkey2 * Privkey1 * G = Privkey1 * Privkey2 * G = X then service…
shudidamowang
1
vote
1 answer

Dart - secret key generation based on elliptic curve 25519

I am looking for a dart package in order to implement key exchange protocol (Elliptic-curve Diffie–Hellman) in a Flutter application. So the flow will be like this: app generates a key pair during login and sends the public key to server (so a new…
Egemen
  • 2,178
  • 5
  • 22
  • 32
1
vote
2 answers

libsodium ed25519 key generator printing

I am trying to generate keys using libsoudium and printing them. Where are thees keys stored and how can I find them? This is what I am trying to do in C. unsigned char pk[crypto_sign_PUBLICKEYBYTES]; unsigned char…
nope
  • 47
  • 5
1 2 3
8 9