Keypair generation - crowdsourcing some data

I’m interested in gathering some stats about how fast keypairs can be generated by various different computers out there in the wild.

If you’re interested in contributing, please run the relevant binary and post your results here.

Binaries available from github.com/iancoleman/ed25519_brute_force - v0.1 or compile from source if you have rust nightly installed.

What do these numbers mean for vault operators?

Using this table it means an average vault in a network of 1M nodes will require 11,000 guesses to find a keypair when relocating.

This means a modern desktop would take about 0.4s to find a keypair and a Pine64 would take about 3s. It takes longer if the network is larger; the table can be used to work out just how much.

A bit more info about why this matters can be found in the dev forum thread Secure Random Relocations.


DESKTOP


2017 i7-7700 @ 3.60GHz

1.146983566 seconds to generate 10000 sodium keys
8718 sodium keys per second

0.330962097 seconds to generate 10000 dalek keys
30214 dalek keys per second


LAPTOP


2011 laptop i7 Q720 1.60GHz

1.652705018 seconds to generate 10000 sodium keys
6050 sodium keys per second

1.31071935 seconds to generate 10000 dalek keys
7629 dalek keys per second


2013 macbook air laptop 1.3 GHz Intel Core i5

1.724601447 seconds to generate 10000 sodium keys
5798 sodium keys per second

0.640009622 seconds to generate 10000 dalek keys
15624 dalek keys per second


2014 i7-4500U @ 1.80GHz

1.71509964 seconds to generate 10000 sodium keys
5830 sodium keys per second

0.482271557 seconds to generate 10000 dalek keys
20735 dalek keys per second


SOC


2011 RPi1 armv7

78.000507394 seconds to generate 10000 sodium keys
128 sodium keys per second

16.306875889 seconds to generate 10000 dalek keys
613 dalek keys per second


2014 RPi2 B V1.1 armv7

35.324160885 seconds to generate 10000 sodium keys
283 sodium keys per second

7.615326706 seconds to generate 10000 dalek keys
1313 dalek keys per second


2016 Pine64 AArch64 Processor rev 4 (aarch64)

13.814146097 seconds to generate 10000 sodium keys
723 sodium keys per second

2.668642973 seconds to generate 10000 dalek keys
3747 dalek keys per second

16 Likes

Desktop i5-2500 3.3GHz (windows 7)

0.546242942 seconds to generate 10000 sodium keys
18306 sodium keys per second

0.466609717 seconds to generate 10000 dalek keys
21431 dalek keys per second


@mav, it requires VCRUNTIME140.dll to operate on windows


Desktop i7-6900K 3.2GHz (windows 7)

0.528677105 seconds to generate 10000 sodium keys
18915 sodium keys per second

0.468522592 seconds to generate 10000 dalek keys
21343 dalek keys per second


VBOX VM i7-6900K 3.2GHz (windows 7)

0.6329692 seconds to generate 10000 sodium keys
15798 sodium keys per second

0.5193649 seconds to generate 10000 dalek keys
19254 dalek keys per second

6 Likes

Why do some machines have close times, yet some like this one are 3 times the difference in time??

3 Likes

Xeon E5-4650L 2.60GHz. (windows 10)

0.649743146 seconds to generate 10000 sodium keys
15390 sodium keys per second

0.551113241 seconds to generate 10000 dalek keys
18145 dalek keys per second

4 Likes

Core i7 PC 2014 Qubes / Debian VM

1.422547003 seconds to generate 10000 sodium keys
7029 sodium keys per second

0.394400377 seconds to generate 10000 dalek keys
25354 dalek keys per second

Same PC, Qubes Fedora VM

1.418495944 seconds to generate 10000 sodium keys
7049 sodium keys per second

0.393479337 seconds to generate 10000 dalek keys
25414 dalek keys per second

EDIT: running on a USB stick so will likely be slower than if using a HDD/SSD

3 Likes

Core i5 7200U @2.7GHz / Debian / Laptop

1.51549 seconds to generate 10000 sodium keys
6598 sodium keys per second

0.47201 seconds to generate 10000 dalek keys
21185 dalek keys per second

Please be aware that if your OS is built on top of the Linux kernel and you want to run this test, you’ll have to download ed25519_brute_force_linux_x64 which is a dynamically linked ELF object, so to execute this you’ll have to run the following:

cd /tmp
wget https://git.io/vNCIZ
/lib64/ld-linux-x86-64.so.2 ./ed25519_brute_force_linux_x64

I’ve used a link minifier for the git.io file to make it more readable, but it’s just pointing to https://github.com/iancoleman/ed25519_brute_force/releases/download/v0.1/ed25519_brute_force_linux_x64

4 Likes

i7-4790K @ 4.00GHz, 64-bit Windows 10

0.372978048 seconds to generate 10000 sodium keys
26811 sodium keys per second

0.338125804 seconds to generate 10000 dalek keys
29574 dalek keys per second

4 Likes

Good question! A significant difference between sodium and dalek is that dalek is fully implemented in Rust, whereas sodium is a wrapper round the C library libsodium. Potentially the way we’re building libsodium is not optimised for certain platforms - but that’s purely a guess at the moment.

7 Likes

Laptop i7-3537U CPU @ 2.00GHz × 4, 64-bit Debian 8

1.858435076 seconds to generate 10000 sodium keys
5380 sodium keys per second

0.560322708 seconds to generate 10000 dalek keys
17846 dalek keys per second

5 Likes

Xeon E5-1620 3.50GHz - Windows 10

0.49674347 seconds to generate 10000 sodium keys
20131 sodium keys per second

0.413858417 seconds to generate 10000 dalek keys
24162 dalek keys per second

5 Likes

Core i5-2320 3.0 Ghz - Windows 10

0.633038345 seconds to generate 10000 sodium keys
15796 sodium keys per second

0.539700628 seconds to generate 10000 dalek keys
18528 dalek keys per second

5 Likes

Desktop i5-2300 CPU @ 2.8 Ghz / Linux Mint 18.2

1.830803635 seconds to generate 10000 sodium keys
5462 sodium keys per second

0.534666208 seconds to generate 10000 dalek keys
18703 dalek keys per second

And maybe time to buy a new processor I see

7 Likes

older laptop Intel® Core™ i5 CPU M 520 @ 2.40GHz × 4 / Ubuntu 16.XX

2.453944789 seconds to generate 10000 sodium keys
4075 sodium keys per second

0.620653149 seconds to generate 10000 dalek keys
16112 dalek keys per second

at least you’re below the 2 seconds xD @draw

5 Likes

I tried to run this on Win 10 and it closes immediately after the generation.
Can it generate a log of this info?

EDIT: I figured out to run it in a CMD window in Win 10 to be able to copy the text output.

`AMD A10-7700K 3.40GHz Radeon R7, 10 Compute Cores 4C+6G Windows 10 64bit

Started generating keys


1.197074762 seconds to generate 10000 sodium keys
8353 sodium keys per second


1.188888886 seconds to generate 10000 dalek keys
8411 dalek keys per second`
4 Likes

Old desktop Intel® Core™2 Quad CPU @ 2.40 GHz Windows 10

gnu x86_64 rustc 1.23.0:

1.067179871 seconds to generate 10000 sodium keys
9370 sodium keys per second

1.134175273 seconds to generate 10000 dalek keys
8816 dalek keys per second

4 Likes
Intel Core i5-2540M CPU @ 2.60GHz Windows 10 64bit

Started generating keys


0.7545992 seconds to generate 10000 sodium keys
13252 sodium keys per second


0.595891322 seconds to generate 10000 dalek keys
16781 dalek keys per second
3 Likes
Intel Core2 Quad CPU Q9550 @ 2.83GHz Windows 10 64bit

Started generating keys


0.997800787 seconds to generate 10000 sodium keys
10022 sodium keys per second


0.91592715 seconds to generate 10000 dalek keys
10917 dalek keys per second
3 Likes
Dell Laptop 
Intel Core i5-5300U CPU @ 2.30GHz Windows 10 64bit

Started generating keys


0.999656389 seconds to generate 10000 sodium keys
10003 sodium keys per second


0.729799911 seconds to generate 10000 dalek keys
13702 dalek keys per second
4 Likes

Intel Pentium G2120 3.1Ghz. (Windows 8.1-64bits)

0.655365406 seconds to generate 10000 sodium key
15258 sodium keys per second

0.542214522 seconds to generate 10000 dalek keys
18442 dalek keys per second

4 Likes

Desktop Intel i7-7700 3.60GHz w/ Windows 10

0.38694634 seconds to generate 10000 sodium keys
25843 sodium keys per second

0.344336302 seconds to generate 10000 dalek keys
29041 dalek keys per second

5 Likes