RSA的计算原理是简单的:对消息进行幂次方取模得到 加密消息。对高安全等级的要求势必增加幂次方的位数。所以这个RSA的加密位数长度是把双刃剑。它一方面增加了破译的难度,提高了安全性能;另一方面也增加了计算耗时。而ECC算法在计算复杂度远小于RSA,但是却得到RSA同样的安全等级。
ECC证书自签发:openssl可以签发ecc证书,流程如同生成私钥-》csr请求-》X509格式证书。ecc算法有多种(openssl ecparam -list_curves)。测试用例用多个参数生成多种ecc算法的证书。
openssl ecparam -genkey -name prime256v1 -out key.pem
openssl req -new -sha256 -key key.pem -out csr.csr
openssl req -x509 -sha256 -days 365 -key key.pem -in csr.csr -out certificate.pem
openssl req -in csr.csr -text -noout | grep -i "Signature.*SHA256" && echo "All is well" || echo "This certificate will stop working in 2017! You must update OpenSSL to generate a widely-compatible certificate"
如果遇到生成pem格式报RAND file不存在,需要在openssl.cnf(我的路径/usr/local/openssl_1.1.1/ssl/openssl.cnf)的RANDFILE = /data/mariolu/ecc/randfile。这个randfile使用urandom设备生成。命令dd if=/dev/urandom of=randfile bs=256 count=1
ECC的握手中主要是完成ECC证书验证(ECDSA签名用途),包括完成签名和验签。对应的指令如下:
openssl x509 -noout -pubkey -in certificate.pem
openssl dgst -sha1 -sign key.pem < randfile > signatrue.bin
openssl dgst -sha1 -verify public_key.pem -signature signatrue.bin < randfile
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。