椭圆曲线密码学相关概念与开源实现

昕阳小编 115 0

在阅读和尝试用椭圆曲线加密相关代码时,往往需要对底层概念有所了解,而不仅仅是运用。比如上面的?NODEJS中的椭圆曲线签名和验证只限于加密货币和NODEJS。本文试图对椭圆曲线密码的相关概念进行梳理,可以帮助读者和本人更好地选择和使用相关的开源代码。

总结如下:

英文缩写中文翻译ECC椭圆曲线椭圆曲线Cryptogphay ECDSAELLIPIC曲线数字签名算法椭圆曲线数字签名算法DHDiffie-Hellman密钥交换EDiffie-Hellman密钥交换ECDHELLIPTIC曲线Diffie-Hellman密钥交换椭圆曲线Diffie-Hellman密钥交换IESIntegrated Encryption Schema集成加密框架ecise椭圆曲线集成加密Schema椭圆曲线集成加密框架KDFKey派生函数key

说明和参考:

EC请注意,它不是椭圆。ECC是基于椭圆曲线的公钥-私钥密码体制,ECDSA是该密码体制下的签名(和验证)算法。DH是两个人名字的首字母缩写,因为他们第一次发明了在敌对网络环境下,利用公私钥加密算法安全协商一个对称加密密尚力财经小编2022钥的方法。这个维基页面?ECDH是使用椭圆曲线公钥-私钥加密系统交换对称加密密钥的方法。IES用于文件或磁盘加密。它是一个块加密系统,结合了公钥和私钥密码以及对称加密方法。可以参考一下吗?另一个维基页面?其原理与DH密码交换相同。KDF指的是生成密钥(私钥)的函数。

对于ECC和ECDH,可以看这两个Youtube视频:

椭圆曲线密码学概述?然后呢。椭圆曲线密码Diffie-Hellman?

不愿意或者不能看视频的朋友,我给你两张截图。

椭圆曲线密码学相关概念与开源实现-第1张图片-昕阳网这个图形象地描述了ECC的数学模型和加密安全性,以及私钥是什么和密钥的长度。

椭圆曲线密码学相关概念与开源实现-第2张图片-昕阳网此图说明了在交换ECDH密码时我们需要给出哪些域参数。

椭圆曲线本身就是一个数学模型,曲线的参数在使用时需要公开和一致,否则多方无法参与(张三不能用a曲线说话,李四不能用b曲线说话)。选择什么样的参数才能安全高效?

SECG?高效密码学标准组织(standards for Efficient Cryptography Group)已经给出了相关标准,其中椭圆曲线密码推荐的

SEC-1椭圆曲线密码SEC-2域参数SEC-4暂时忽略。不知道什么

SEC-2给了各种参数,每组参数都给了一个名字,这样在使用的时候,参数就由名字决定了。比如secp256k1是比特币采用的第一组参数,在加密货币领域非常流行。

OpenSSL OpenSSL是一个知名的C库尚力财经小编2022 和命令行工具箱,实现了各种密码函数,包括椭圆曲线。参考?openssl中的ECC命令行操作?您可以了解Openssl命令行的ECC密钥管理以及ECDH和ECDSA算法的使用。本文列举了一些,读者可以跟着加深理解。需要注意的是,Mac OS自带的openssl太旧了,需要使用家酿安装的版本。

OpenSSL gen pkey-gen param-algorithm EC-pkey opt EC _ param gen _ curve:secp 256k 1

将PEM格式的椭圆曲线域参数文件生成到标准输出。

OpenSSL gen pkey-gen param-algorithm EC-pkey opt EC _ param gen _ curve:secp 256k 1-out secp256k1.param

将PEM格式的椭圆曲线域参数文件生成为secp 256k 1 . param文件。

OpenSSL gen pkey-paramfile secp 256k 1 . param-out my . key

PEM格式(明文)的私钥文件由参数文件生成。

OpenSSL gen pkey-AES 256-param file secp 256k 1 . param-out my . key

AES加密的私钥文件由参数文件生成。即使文件被泄露,黑客也无法在没有密码的情况下使用私钥。

OpenSSL pkey-in my . key-text-no out

查看密钥。

OpenSSL dgst-signmy . key-sha 512 file-to-be-sign-out signature-file

生成签名文件。

OpenSSL EC-in my . key-pub out-out pub . PEM

私钥到公钥文件。

OpenSSL dgst-verify pub . 尚力财经小编2022PEM-sha 512-signature签名文件待签名文件

公钥验证签名。

eccryptoeccrypto?是一个基于Javascript的ECC库,具有以下特性:

它同时支持browser和NodeJS,具有相同的API。支持什么样的椭圆曲线?secp256k1 .如果浏览器支持,W3C正在开发WebCrypto标准。如果可能的话,使用Nodejs内置的加密模块。

CryptoCoinJSCryptoCoinJS?是一个为加密货币创建了多个Javascript项目的项目团队,其中?Ecurve?该项目是一个通用的ECC库,支持各种参数的椭圆曲线。

标签: 中文翻译

抱歉,评论功能暂时关闭!

微信号已复制,请打开微信添加咨询详情!