Uses hash chains to find pairs of keys that have "long" 64-bit key ID collisions.
Overview: The Long Key ID Collider
$ go get -u github.com/skeeto/pgpcollider
Quickstart: This command will find and output two ASCII-armored private keys whose long key IDs collide:
$ pgpcollider --verbose | tee keys.asc
It will use all your CPU cores (see GOMAXPROCS
) and, on a modern
computer, can take up to a day to find a collision. A collision is
expected after around 4 billion keys (monitor with --verbose
), but
could happen sooner or later.
Additional computers can work together to search for a collision. One instance is a server that distributes tasks, but does none of its own work. Client instances join and compute hash chains on behalf of the server. These clients are free to come and go at any time without disrupting overall progress.
Start a server with --server
(-S
) listening on port 1234:
$ pgpcollider -S :1234 -v
Start one or more clients with --client
(-C
):
$ pgpcollider -C hostname:1234
Use --help
(-h
) to get an option listing:
Usage:
pgpcollider [-pv] [-t CREATED] [-u USERID]
pgpcollider -C HOSTNAME [-v]
pgpcollider -S BINDADDR [-pv] [-t CREATED] [-u USERID]
Commands (distributed computation):
-C, --server BINDADDR generate hash chains for a server
-S, --client HOSTNAME listen for worker clients
Options:
-h, --help print this help message
-p, --public only output the public key
-t, --time SECONDS key creation date (unix epoch seconds)
-u, --uid USERID user ID for the keys
-v, --verbose print progress information