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

WinSCP for ED25519 public key

I was trying to connect the server with my ED25519 public key, but it seems WinSCP doesn't support it, so the question is, how can I convert the key to the one supported by WinSCP?
Weijing Jay Lin
  • 2,991
  • 6
  • 33
  • 53
1
vote
1 answer

How to link and load a static library (Ed25519) in JDK8

The most optimized implementation of Ed25519 (http://ed25519.cr.yp.to/) contains both C and assembly code. As my program is implemented in JAVA, I would like to generate a shared library (.so) for Ed25519 but failed. This is most probably because…
1
vote
1 answer

Interoperability between Java and Javascript Ed25519 implementations

Both ed25519-java and js-nacl have an implementation of ed25519 crypto-signature methods. However, I obtained a public key and a signed message (signed using the public key's corresponding private key) from ed25519-java and tried verifying the…
1
vote
1 answer

What is the range of the final character for a Base64 encoded 512 bit digital signature?

I have found through various stack Q&As that a Base64 encoded 256-bit number will have one = for padding and will end only with one of AEIMQUYcgkosw048. I'm fairly confident that a Base64 encoded 512-bit number will have two ==s of padding because…
user1382306
1
vote
2 answers

Validate Base64 encoded 256 bit numbers for digital signature keys

I've seen many RegEx answers on how to check for Base64, but I can't find one specifically for representations of 256-bit numbers. I'm brand new to Base64, byte conversions, and RegEx. This answer seems to be the best for checking Base64, but I…
user1382306
0
votes
1 answer

Generate Ed25519 keys in Java

I'm trying to generate keys of type Ed25519 on Android. Right now i use the library org.bouncycastle:bcpkix-jdk15on. This is my code: val keyPairGenerator =…
wiiznokes3
  • 91
  • 8
0
votes
0 answers

Linked Data Signature using Javascript Verification Error

import { Ed25519VerificationKey2020 } from "@digitalbazaar/ed25519-verification-key-2020"; import { Ed25519Signature2020 } from "@digitalbazaar/ed25519-signature-2020"; import jsonSigs from "jsonld-signatures"; import jsonld from "jsonld"; import {…
Tanjin Alam
  • 1,728
  • 13
  • 15
0
votes
1 answer

Ed25519 digital signatures in React Native

I'm building an app in React Native (currently using Expo) that needs to be able to perform digital signatures using the Ed25519 digital signature algorithm. As a newcomer to the React Native ecosystem, it's unclear which libraries to use or what…
mikera
  • 105,238
  • 25
  • 256
  • 415
0
votes
0 answers

Signing a file using JWT with ed25519 encryption key

I'm looking for a library that supports json object signing with jwt and ed25519 encryption key. I've looked around and couldn't find anything nodejs library that would support EdDSA type encryption. The jwt website mentions jose as the only one…
Simon Nazarenko
  • 107
  • 2
  • 11
0
votes
1 answer

OpenSSL apparently producing invalid key pairs for ed25519

I'm trying to generate a self-signed certificate for ed25519 keys using openSSL, using the following command: openssl req -new -newkey ed25519 -noenc -config root.cnf -section root_req -out RootCA.csr -keyout RootCA.key -passout file:password.txt…
0
votes
0 answers

Sign Bytes with Ed25519 Curve in .Net Without External Dependencies

I want to initialize a new System.Security.Cryptography.ECDsa using the ed25519 curve in .Net 7 without external dependencies. I am loading a dev-only private key from bytes, and want to sign hashes using it. Something like: var ecdsa =…
gannonbarnett
  • 1,638
  • 1
  • 16
  • 28
0
votes
2 answers

Transfer Sparkle Updater private key signature EdDSA (ed25519) to new computer

I have an XCode 12.4 Swift project that I have been distributing since 2 years. I'm using the Sparkle-Project updating mechanism. macOS 10.15.7 I want to slowly migrate to a new Mac, XCode 13.4, macOS 12.6.5. I'm having problems transferring my…
soundflix
  • 928
  • 9
  • 22
0
votes
0 answers

Is there a way to generate a DER certificate with the ed25519ph algorithm using openssl?

I have a situation where i have to verify a certificate signature with the ed25519ph (sha512) algorithm. The library that verifies the signature only knows this algorithm. The certificate i already had was signed with ed25519 only and i didn't have…
0
votes
1 answer

load ed25519 public key with java

I have to read and load ed25519 public key for verifying signature in java, the token input pattern is: {public_key}/message.signature for…
DanielC
  • 15
  • 3
0
votes
1 answer

Adding support for ED25519 to Apache MINA sshd. How to achieve this?

According to the Apache MINA sshd official documentation, support for ED25519 must be added by including net.i2p.crypto:eddsa to the classpath. In my Gradle project, I've done so by writing: dependencies { *** // Apache MINA sshd …
ismarlowe
  • 119
  • 2
  • 13
1 2 3
8 9