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

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

非对称加密算法

非对称加密算法最根本的原理:利用信息的不对称性

比如小明只会加法,所以大强就问了。7+7=?
10个呢?
……、99个、999个
当这个数字很大很大的时候,比如9999个。小明基本就搞不定了。
而此时大强微微一笑10000x7-7 =69993

公钥密码算法安全的必要条件(非充分)是“由公钥不能反推出私钥”
例子:
下面我们举个例子,当整个世界只会乘法和加减法,而不会除法时,我们便可以有如下的推导
小红(服务器)选择一个公式3x5=15.将数字5作为私钥。
3x?=15作为公钥发出去。
小明(客户端)想告诉小红一个数字(加密信息)9.
他随手想到一个私钥7,并根据公钥3x?=15想到两个等式:
3x7=21
15x7+9=114(15也就是3*?)
将私钥7和加密信息9隐藏,得到3x??=2115x??+x=114作为公钥发给小红(服务器)。

小红拿到公钥后,根据结合律可以方便的将15x??替换为21x5
此处能理解么?理解不了也没关系。下面我会讲。
根据乘法结合律
15x??=(3x5)x??=(3x??)x5=21x5(因为小红知道15就是3x5)

代入公钥15x??+x=114此时就是21x5+x=114了。小红(服务器)拿到了加密信息9.
如果此时有一个黑客小黑,他即得到了公钥。他也可以推到3*??=21
但是只要他不知道小红的私钥5就无法获取到加密信息9

现在我们会除法了。所以不能用上面来处理公钥。于是一帮科学家找啊找啊。终于找到了一个完美的类似场景。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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容