Ed25519是一个公钥数字签名系统,以高性能及高安全性著称,其介绍可以参见这里,本文只描述如何利用OpenSSL来支持这一方法的签名和验证。所使用的环境包括Ubuntu 20.04 x64、OpenSSL 3.0.0 Alpha 13。
OpenSSL编译
目前,Ubuntu 20.04 x64系统上自带的OpenSSL版本为1.1.1f,而Ed25519算法,在OpenSSL 3.0.0以后才得到支持,因此,需要自己编译源码安装新版本,已经验证的OpenSSL版本,对应于其git源码tag openssl-3.0.0-alpha13。编译安装过程如下:
1 2 3 4 5 6 7 8 9 10 11 12 13
| $ git clone https://github.com/openssl/openssl.git $ cd openssl $ git checkout -b v3.0.0-alpha13 openssl-3.0.0-alpha13
$ ./Configure $ make
$ sudo make install
$ hash -r
$ openssl version OpenSSL 3.0.0-alpha13 11 Mar 2021 (Library: OpenSSL 3.0.0-alpha13 11 Mar 2021)
|
使用方法
生成私钥
1
| $ openssl genpkey -algorithm Ed25519 -out private.pem
|
生成公钥
1
| $ openssl pkey -in private.pem -pubout -out public.pem
|
以私钥签名/bin/ls
1
| $ openssl pkeyutl -sign -inkey private.pem -out sig.dat -rawin -in /bin/ls
|
以公钥验证/bin/ls
1 2
| $ openssl pkeyutl -verify -pubin -inkey public.pem -rawin -in /bin/ls -sigfile sig.dat Signature Verified Successfully
|