美文网首页
非对称加密算法以及ECC椭圆曲线加密

非对称加密算法以及ECC椭圆曲线加密

作者: 进击的小强 | 来源:发表于2018-03-16 19:46 被阅读98次

最近做以太坊钱包,涉及到很多算法,因此有此文。

非对称加密算法

也就是是我们经常说的公钥/私钥算法最根本的原理:利用信息的不对称性
比如小明只会加法,所以大强就问了。7+7=?
10个呢?
……、99个、999个
当这个数字很大很大的时候,比如9999个。小明基本就搞不定了。
而此时大强微微一笑10000*7-7 =69993

公钥密码算法安全的必要条件(非充分)是“由公钥不能反推出私钥”
例子:
下面我们举个例子,当整个世界只会乘法和加减法,而不会除法时,我们便可以有如下的推导:
小红(服务器)选择一个公式3x5=15.将数字5作为私钥。
3x?=15作为公钥发出去。
小明(客户端)想告诉小红一个数字(密钥)9.
他随手想到一个私钥7,并根据公钥3*?=15想到两个等式:
3x7=21
15*7+9=114
将私钥7和密钥9隐藏,得到3x??=2115x??+x=114作为公钥发给小红(服务器)。
小红拿到公钥后,根据结合律可以方便的将15x??替换为21x5
此处能理解么?理解不了也没关系。下面我会讲。
根据乘法结合律
15*??=(3*5)*??=(3*??)*5
虽然小红(服务器)不知道??到底是啥。但是他知道3*??=21啊。
所以他根据自己的私钥5可以很容易得到15*??的值。
代入公钥15x??+x=114此时就是21x5+x=114了。小红(服务器)拿到了密钥9.
如果此时有一个黑客小黑,他即得到了公钥。他也可以推到3*??=21
但是只要他不知道小红的私钥5就无法获取到密钥9

ECC(椭圆曲线加密)

现在我们会除法了。所以不能用上面来处理公钥。于是一帮科学家找啊找啊。终于找到了一个完美的类似场景。ECC(椭圆曲线加密)。这个有点高深,反正我看了半天没看懂。但是基本原理无非是找到了会乘法不会除法的场景。也就是正向求值比较简单,但是逆向却是几乎不能完成的任务。
在这个的基础上,科学家选取了一条曲线,并命名为secp256k1。长的如下:


ecc.jpeg

secp256k1是一条用于密码学的椭圆曲线。也就是从众多的ECC曲线中,根据加密速度以及密码强度等等各方面考虑选取的一条特殊曲线。它总共包含以下6个参数:(p,a,b,G,n,h)
想研究的可以看一下:Secp256k1的wiki
下一篇文章我会讲关于以太坊(Ethereum)钱包的创建原理以及实现
Git地址:https://github.com/snailflying/ETHWallet

参考:
https://www.zhihu.com/question/22399196

相关文章

网友评论

      本文标题:非对称加密算法以及ECC椭圆曲线加密

      本文链接:https://www.haomeiwen.com/subject/cevrqftx.html