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
36
votes
8 answers

How to convert ed25519 private key to putty ppk?

I want to convert an ed25519 private key (which is generated by ssh-keygen command) to a ppk file. But I got the error. Couldn't load private key (unrecognized cipher name) Can someone help me? tested openssh version: OpenSSH_7.6p1, OpenSSL…
takaomag
  • 1,545
  • 1
  • 16
  • 26
25
votes
6 answers

What implementions of Ed25519 exist?

The new SQRL authentication scheme relies on Curve Ed25519 encryption developed by Daniel Bernstein. However, in order to start implementing this scheme there needs to be a mature implementation of Curve Ed25519 first. Does anyone know of any…
Chris Pietschmann
  • 29,502
  • 35
  • 121
  • 166
16
votes
2 answers

Convert OpenSSH ED25519 Private Key Format to PEM format

I have generated a an ED25519 SSH key pair using ssh-keygen -t ed25519 The output of the id_ed25519 file is in OpenSSH format: -----BEGIN OPENSSH PRIVATE KEY----- ... -----END OPENSSH PRIVATE KEY----- I would like to convert it to a PEM file…
Ferit
  • 558
  • 1
  • 5
  • 19
12
votes
1 answer

How to import a ed25519 private key into Yubi HSM 2

I am trying to import a openssl generated ed25519 key into Yubi HSM 2 I am following the steps described here: https://developers.yubico.com/yubihsm-shell/yubihsm-wrap.html echo -en '\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xdd\xee\xff'…
Simon B.Robert
  • 31,754
  • 4
  • 16
  • 24
11
votes
5 answers

Unable to verify message signed by sol-wallet-adapter

Having created a signed message I'm unsure how to use the resulting signature to verify the message using the publicKey. My use case is, I'm wanting to use a Solana Wallet to login to an API server with a pattern like: GET message: String (from API…
harkl
  • 872
  • 7
  • 17
10
votes
2 answers

Generating public ed25519 key with OpenSSL

I'm using this command to generate private ed25519 key: openssl genpkey -algorithm ed25519 -out private.pem and this is the example result: -----BEGIN PRIVATE KEY----- MC4CAQAwBQYDK2VwBCIEIAYIsKL0xkTkAXDhUN6eDheqODEOGyFZ04jsgFNCFxZf -----END…
Szyszka947
  • 473
  • 2
  • 5
  • 21
10
votes
1 answer

ed25519.Public result is different

Using the package https://github.com/golang/crypto/tree/master/ed25519 i m trying to get a public key for a given private key. Those data are from http://www.bittorrent.org/beps/bep_0044.html: test 2 (mutable with salt) Problem is, ed25519.Public()…
user4466350
8
votes
1 answer

alg value for Ed25519?

The RFC7518 has a list of algorithms values used in JWT. However there is no value for EdDSA, such as Ed25519. Also Ed25519 is not accepted as a valid value when verifying in Jose. What is the correct alg value for Ed25519?
user938363
  • 9,990
  • 38
  • 137
  • 303
8
votes
1 answer

The trait `rand_core::CryptoRng` is not implemented for `OsRng`

I've been trying to implement the example given in the following doc: https://docs.rs/ed25519-dalek/1.0.1/ed25519_dalek/ My code is simply: extern crate rand; extern crate ed25519_dalek; use rand::rngs::OsRng; use ed25519_dalek::Keypair; fn…
whomaniac
  • 1,258
  • 4
  • 15
  • 22
7
votes
1 answer

How to verify jwt token in spring boot?

I want to implement JWT verification in my spring boot application. The algorithm we used for signing token is Ed25519\EDDSA . I don't find right dependency/library to implement Jwt verifier using ED25519 algorithm. Can someone suggest maven…
7
votes
2 answers

How derive ed25519 (eddsa) public key from private key using Java

I am looking into https://github.com/str4d/ed25519-java library as well as some other libraries like BouncyCastle, but I am so far unsuccessful in generating a public key out from a private key. I am not interested in generating a key pair because I…
troy_achilies
  • 592
  • 1
  • 7
  • 15
6
votes
3 answers

Ed25519 in JDK 15, Parse public key from byte array and verify

Since Ed25519 has not been around for long (in JDK), there are very few resources on how to use it. While their example is very neat and useful, I have some trouble understanding what am I doing wrong regarding key parsing. They Public Key is being…
Programmer
  • 134
  • 1
  • 12
6
votes
2 answers

Paramiko SSH client is unable to unpack ED25519 key

I'm trying to use a keypair for the SSH connection to an SFTP server. I am able to do so if I generate an RSA key via ssh-keygen -t rsa. When I connect to the server via Paramiko, things work fine: private_key =…
Yu Chen
  • 6,540
  • 6
  • 51
  • 86
5
votes
1 answer

Git bash shows me the ed25519 key instead of the rsa key fingerprint

I tried a tutorial to set up GitHub SSH key, but when I type in the prompt it shows me the ed25519 instead of the rsa keyfingerprint. Any pointer on how to add the rsa key fingerprint?
pclearn
  • 53
  • 1
  • 3
5
votes
1 answer

crypto.generateKeyPairSync('ed25519') does not verify simple test, which an 'ec' keypair verifies without issue. What is the mistake?

Been playing around with the crypto module in Nodejs and using crypto.generateKeyPairSync. When running a short verification test with 'ec' keys, this evaluates as expected, but when testing with 'ed25519' generated keys, this never evaluates to…
1
2 3
8 9