最近做了几道CTF的 编码类别 的题目,有个比较有意思的是名为

“社会主义核心价值观加密/解密”

的编码解码工具,其源码在Github上有,感兴趣的可以去搜一下;

在对其编码规则感兴趣的同时,期间想到了在 比特币地址 生成过程中的加密算法

椭圆曲线(ECC)加密算法

椭圆曲线(ECC)加密原理随记

椭圆曲线

 

椭圆曲线是什么?

椭圆曲线是一种加密数据的方法;椭圆曲线和椭圆函数、椭圆积分等内容密切相关,著名的费马大定理的证明也与此有关。

总之,椭圆曲线是代数几何中最重要的一类研究对象。
而椭圆曲线也是公钥密码学中的一种。
 

椭圆曲线与比特币地址

比特币地址是通过 椭圆曲线数字签名算法 得到的。

  1. 首先先随机选出256位二进制数字
  2. 然后这个大随机数形成私钥
  3. 通过ECC算法,计算得出私钥对应的公钥
  4. 最后通过加密函数(BASE58函数等)来生成地址(其生成是单向的);
  5. 最后这个地址就是比特币的一个地址。
     

预知识:什么是陷门函数?

所有公钥加密算法的关键在于每种算法都有各自独特的 陷门函数(trapdoor function)。陷门函数是一种只能进行单向计算,或者单向计算更容易的函数。

举个例子:

Come on + 公钥 = sjldflk

其中Come on是初始数据,使用公钥在公钥加密算法下生成信息:sjldflk。
 
但这是个不可逆的过程,也就是说即使知道 lsjldflk 和公钥,也没办法得出Come on这个数据。
 
而在最流行的RSA公钥加密函数中,其公钥是一个非常大的数,而私钥是其公钥的两个素数因子

 

椭圆加密的陷门函数?

那么 RSAECC陷门函数有何不同?

ECC的陷门函数先在曲线上找到一个特定的点,然后使用 点函数 在曲线上找到一个新的点,接着重复使用 点函数 ,在曲线上不停的跃迁,直到找到最后一个点,即结束。

在这个过程中,我们只能知道 起点终点 ,几乎不可能知道中间经历了几次跃迁!!!

所以,ECC加密的公钥就是:起点终点 ,而私钥就是:从起点到终点需要经历多少次跃迁
 

小结

忙里偷闲瞎写了点东西,是非常基础的一个加密算法的原理,其实还有很多问题并没有说如何解决,比如:点函数产生的线段与椭圆曲线的交点过远怎么办?
 
以后啥时候想起来啥时候写吧 ~ 溜了

相关文章:

  • 2021-12-02
  • 2021-09-28
  • 2022-02-07
  • 2022-02-07
  • 2021-05-11
  • 2022-12-23
  • 2022-01-08
猜你喜欢
  • 2022-02-07
  • 2021-11-08
  • 2021-09-01
  • 2022-01-05
  • 2021-10-14
  • 2021-08-14
  • 2022-12-23
相关资源
相似解决方案