椭圆曲线原理 椭圆曲线算法说明 椭圆曲线算法命令 椭圆曲线常用函数

2019-09-22 23:30:00
admin
原创 3493
摘要:椭圆曲线原理 椭圆曲线算法说明 椭圆曲线算法命令 椭圆曲线常用函数

一、椭圆曲线原理

1、椭圆曲线函数y^2 = x^3 + ax + b,椭圆曲线参数(p, a, b, n, x, y);

2、(p, a, b)定义了椭圆曲线,p表示素数域的范围,p决定密钥长度;

3、(x, y)定义了椭圆曲线基点G,n是基点的阶,是曲线上点的个数;

4、椭圆曲线上的任何一点都可以表示为kG,k范围是[1, n];

5、椭圆曲线是否安全由p和n共同决定,p和n都必须足够大;

6、假定Q=dG,则d为私钥是一个数,Q为公钥是一个点;


二、椭圆曲线算法说明

1、椭圆曲线和DH算法本质是离散对数没有多项式时间的解法;

2、椭圆曲线主要用于签名和密钥交换;

3、椭圆曲线私钥可以导出公钥;

4、DH算法主要用于密钥交换;

5、相同输入下,ECDH密钥值每次一样;

6、相同输入下,ECDSA签名值每次不一样,因为引入了随机数


三、椭圆曲线算法命令

openssl ecparam -list_curves,显示支持的曲线类型

openssl ecparam -genkey -name secp192k1 -out ec.pem,生成pkcs1格式私钥

openssl ec -param_out -in ec.pem | openssl asn1parse,查看曲线类型

openssl ec -in ec.pem -pubout -out ecpub.pem,导出公钥
openssl ec -noout -text -in ec.pem,查看私钥


openssl ecparam -out curve.param -name secp256k1,生成曲线参数
openssl genpkey -paramfile curve.param -out ec.pem,生成pkcs8格式私钥
openssl pkey -in ec.pem -pubout -out ecpub.pem,导出公钥

openssl pkey -noout -text -in ec.pem,查看私钥


openssl dgst -ecdsa-with-SHA1 -sign ec.pem -out sign datafile
openssl dgst -ecdsa-with-SHA1 -verify ecpub.pem -signature sign datafile


四、椭圆曲线常用函数

1、EC_KEY_new_by_curve_name(nid),生成EC_KEY,包含椭圆曲线参数EC_GROUP;

2、EC_KEY_generate_key(key),生成椭圆曲线私钥和公钥;

3、EC_KEY_get0_group(key),获取椭圆曲线参数;

4、EC_GROUP_get_degree(group),获取私钥比特位数,比如曲线secp192k1返回192;

5、EC_KEY_get0_private_key(key),获取私钥,打印值与openssl显示一致;

6、EC_KEY_get0_public_key(key),获取公钥,打印值与openssl显示一致;

发表评论
评论通过审核之后才会显示。