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
2
votes
1 answer

Create SSH ED25519 key with BouncyCastle for Rency SSH.NET in C#

I have to generate the public and the private keys with BouncyCastle in ED25519 version (NOT RSA) and I not able to generate it correct. I have try with: var gen = new Ed25519KeyPairGenerator(); var param = new Ed25519KeyGenerationParameters(new…
scorona85
  • 97
  • 6
2
votes
1 answer

String to PrivateKey Ed25519

I have a private key as a String and I want to convert it to PrivateKey String privateKey =…
KunLun
  • 3,109
  • 3
  • 18
  • 65
2
votes
1 answer

openssl EVP_PKEY_get_raw_public_key() is incompatible with EVP_PKEY_get_raw_private_key()

EVP_PKEY_CTX *openssl_ctx = NULL; openssl_ctx = EVP_PKEY_CTX_new_id(EVP_PKEY_ED25519, NULL); if (NULL == openssl_ctx) { printf("New Key fail...\n"); goto cleanup; } if (EVP_PKEY_keygen_init(openssl_ctx)<=0) { printf("EVP_PKEY_keygen_init…
Arthur
  • 21
  • 2
2
votes
1 answer

Erlang TLS with ED25519 certfile

I am creating server code using bare Erlang ssl:listen/2 function. I would like to use TLS certificate using ED25519 algorithm but the server is crashing upon handshake. By digging in the Erlang code it seems that this algorithm is not supported for…
Sgiath
  • 360
  • 2
  • 8
2
votes
1 answer

How to implement ed25519 algorithm into jwt using python?

I'm trying to code an API client, the API authentication need a signing the payload using ed25519 according to JWT specification. The payload is: {"key": "cnc6666666666666", "iat": 1599999999} The Seed (also called Private Key, which can be used to…
Niking
  • 21
  • 1
2
votes
1 answer

How to incorporate id_ed25519-cert.pub into a go ssh client?

I can SSH (using openssh client) to my server using two files: ~/.ssh/id_ed25519{,-cert.pub} debug1: Trying private key: /home/xavier/.ssh/id_ed25519 debug1: Authentications that can continue: publickey,keyboard-interactive …
Xavier Shay
  • 4,067
  • 1
  • 30
  • 54
2
votes
1 answer

How to hash with ed25519-donna

I apologize for asking somewhat of a programming question, but I want to be sure I'm properly using this library cryptographically. I have managed to implement ed25519-donna except for hashing the data for a signature. As far as I can tell, this is…
user1382306
1
vote
0 answers

how to use ecdsa and ecdh with only one keypair (p256)

I need to create a keypair in Rust based on the p256 curve, because the publickey should be sent to another service which is implemented in Go, where the curve p256 is used. In the Go version I am using crypto/ecdsa to generate the keypair. and then…
mama
  • 2,046
  • 1
  • 7
  • 24
1
vote
1 answer

How to convert SSH host keys for validation?

Using SSH.NET, I'm trying to get the same ed25519 and rsa host keys from my SSH host (a Raspberry Pi in this case) that the Windows SSH client gets, so that I can compare them to what's in the %USERPROFILE%\.ssh\known_hosts file. The documentation…
InteXX
  • 6,135
  • 6
  • 43
  • 80
1
vote
1 answer

ed25519 secret to public key

I am trying to use the python code given + test vector 2 given by rfc https://www.rfc-editor.org/rfc/rfc8032#section-7.1 expected results secret_to_public() SecretKey = 4ccd089b28ff96da9db6c346ec114e0f PublicKey =…
azuldev
  • 570
  • 6
  • 10
1
vote
1 answer

Github default account is not working after changing for multiple accounts

I have used my office github account. But i was need to add my personal github account also. My office github account is dinukafrost. My personal github account is dinuka. I did following steps. Create ssh keys. (I have already had ssh key for…
Dinuka Thilanga
  • 4,220
  • 10
  • 56
  • 93
1
vote
1 answer

How to create self-signed certificate using Ed25519 in C#

I have to generate X509 certificates using Ed25519. I know I should use RequestCertificate class from System.Security.Cryptography.X509Certificates namespace but seems that it doesn't support ed25519. That's my scenario: I have private ed25519 key…
Szyszka947
  • 473
  • 2
  • 5
  • 21
1
vote
0 answers

Create ed25519 jwt and verify with joken

I'm trying to create a JWT with joken privKey = """ -----BEGIN PRIVATE KEY----- MC4CAQAwBQYDK2VwBCIEIPaIrqi+I+znfdsteEXELr2J1e+qC72KNam6fx40pYvi -----END PRIVATE KEY----- """ signer = Joken.Signer.create("Ed25519", %{"pem" =>…
Tarang
  • 75,157
  • 39
  • 215
  • 276
1
vote
1 answer

Check if pubkey belongs to twisted Edwards25519

I want to check if some pubkey belongs to twisted edwards25519 (I guess this is used for ed25519 ?) The problem is that I have in theory some valid pubkeys like: hash_hex =…
bladzio
  • 414
  • 3
  • 15
1
vote
1 answer

How to verify public key is on Ed25519 curve in PHP? (verify Solana address)

Building a server-side implementation to do Solana verification for a contract, when we receive a Solana address (Ed25519 public key) from client. They only want me to use native PHP methods, no imports, idk why. Open source libraries are still…
1 2
3
8 9