请选择 进入手机版 | 继续访问电脑版
 找回密码

上海老站长门户

点击联系客服
客服QQ: 客服微信:
查看: 107|回复: 50

libsecp256k1比特币密码算法开放源代码库(1)

[复制链接]

1

主题

1

帖子

-7

积分

限制会员

积分
-7
发表于 2021-10-1 15:05:36 | 显示全部楼层 |阅读模式
2021SC@SDUSC

该博客参考William  Stallings的著作《Cryptography  and  network  security》,Douglas  R.Stinson的著作《Cryptography  Theory  and  practice》,以及博客公园的ECC椭圆曲线。

* *

libsecp256k1比特币密码算法开源库(一)

目录一、项目摘要二、相关基本知识三、环境构成

目录

一、项目综述

* *:项目背景:

本项目是山东大学软件学院2021-2022学年秋季学期的“软件工程应用与实践”课程项目。小组成员:网络安全工程徐海华、网络安全工程杨鹏宇3358www.sina.com/:

大数据安全和个人信息保护是实现大数据安全、个人信息保护、联邦机器学习等问题的核心技术——新信息技术的前沿。比特币和区块链引起了国际上对密码技术的重视,哈希算法和数字签名算法是比特币和区块链的核心技术。

Libsecp256k1开源库是比特币等区块链开源项目的核心开源代码库。Secp256k1是比特币使用的椭圆曲线数字签名算法(ECDSA)曲线的参数,位于有效的加密标准(Certicom  Research,http://www.secg.org/sec2-v2.pdf)中。

Secp256k1基于Fp有限域的椭圆曲线,由于特殊结构的特殊性,优化的实现可能比其他曲线高30%,具有以下两个优点:1)带宽和存储资源很少使用,密钥长度短。2)允许所有用户使用相同的操作完成域操作

从2016年2月13日开始,在新发布的bit  coincore版本0.12.0中,使用了libsecp256k1库代替OpenSSL  ecdsa。

该项目的目标是使学生熟悉libsecp256k1开源库的完整结构、编译运行、键码等,并编写计算密码的程序。可以分析、修改、优化关键代码,提高libsecp256k1开放源代码库的性能。项目内容:

Secp256k1 ECDSA签名/认证和密钥生成。

*秘密/公钥追加和乘法调整。

*密钥、公钥、签名的序列化/解决。

*在一定的时间、一定的内存访问签名和生成公钥。

*不通过RFC6979或调用方提供的函数随机化ECDSA。)。

*非常有效的实施。

*适用于嵌入式系统。

*用于公钥恢复的可选模块。

*ECDH密钥交换的可选模块。libsecp256k1开源库特征:

核心代码:

徐海华负责密钥交换协议、secp256k1的Schnorr签名的签名变体和私钥确认。

杨鹏宇负责公钥恢复,实施应用于压缩公钥的SHA256哈希函数,椭圆曲线数字签名算法。

核心代码:西海化:测试

杨鹏宇:乘法,清除数据

二、相关底层知识

本狗
源库底层的知识有很多,如大整数的乘法、模乘、Montgomery模乘、扩展欧几里得算法、模幂运算等。这个项目是关于大数据安全的,因此在本篇文章中,我会提及一些一些密码学的基础知识,并且写了一些椭圆曲线算法的知识。

1.安全服务与安全机制
安全服务:
1)认证(同等实体认证,数据源认证)
2)访问控制
3)数据保密性(连接保密性、无连接保密性、选择域保密性、流量保密性)
4)数据完整性(具有恢复功能的连接完整性、无恢复功能的连接完整性、选择域连接完整性、无连接完整性、选择域无连接完整性)
5)不可否认性(源不可否认性、宿不可否认性)
安全机制:
1)特定安全机制:加密、数字签名、访问控制、数据完整性、认证交换、流量填充、路由控制、公证。
2)普遍安全机制:可信功能、安全标签、事件检测、安全审计跟踪、安全恢复。

2.对称加密与非对称加密:
非对称加密:密钥成对出现,分为公钥和私钥,公钥加密需要私钥解密,私钥加密需要公钥解密。
对称加密:采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密
对称加密和非对称加密的区别是:
1).对称加密速度快,非对称加密速度慢。
2).对称加密要将密钥暴漏,和明文传输没有区别。
3).非对称加密将公钥暴漏,供客户端加密,服务器使用私钥解密。

3.椭圆曲线加密算法介绍
利用椭圆曲线的数学知识实现的一种非对称加密算法,1985年Neal Koblitz和Victor Miller分别提出可以将椭圆曲线算法用于密码学中。椭圆曲线算法的优势在于可以利用更短的密钥就可以达到相当高的安全强度,原因是计算椭圆曲线离散对数的问题的最快速度都需要全指数时间复杂度。因此,椭圆曲线算法被大量应用与比特币和中国二代身份证中。

4.椭圆曲线概念
一条椭圆曲线是在射影平面上满足威尔斯特拉斯方所有点的集合 Y2Z+a1XYZ+a3YZ2=X3+a2X2Z+a4XZ2+a6Z3
1)椭圆曲线方程是一个齐次方程
2)曲线上的每个点都必须是非奇异的(光滑的),偏导数FX(X,Y,Z)、FY(X,Y,Z)、FZ(X,Y,Z)不同为0。
3)圆曲线的形状,并不是椭圆的。只是因为椭圆曲线的描述方程,类似于计算一个椭圆周长的方程故得名。

5.椭圆曲线加密
考虑K=kG ,其中K、G为椭圆曲线Ep(a,b)上的点,n为G的阶(nG=O∞ ),k为小于n的整数。则给定k和G,根据加法法则,计算K很容易但反过来,给定K和G,求k就非常困难。因为实际使用中的ECC原则上把p取得相当大,n也相当大,要把n个解点逐一算出来列成上表是不可能的。这就是椭圆曲线加密算法的数学依据
点G称为基点(base point)
k(k

6.ECC保密通信算法
1.Alice选定一条椭圆曲线E,并取椭圆曲线上一点作为基点G 假设选定E29(4,20),基点G(13,23) , 基点G的阶数n=37
2.Alice选择一个私有密钥p(p

7.椭圆曲线算法优缺点
优点:安全性能更高、处理速度更快、带宽要求更低、存储空间更小
缺点:
1.设计困难,实现复杂
2.如果序列号设计过短,那么安全性并没有想象中的完善

三、环境配置
首先在github上把要分析的项目源码包下载下来。
在github文件下载readme.md文件中对项目情况做了一些说明。关于项目构建其中提到libsecp256k1(要分析的C库)是使用autotools构建的。
鉴于本项目是一个C库而且文件包中有一个makefile.am文件,自然联想到这个项目应该要放到Linux环境下运行。
说明文件中提到,此C库是使用autotools构建的,这就表明,这个项目不会直接提供makefile文件,我们需要在linux环境下利用包中的文件生成makefile文件。



本实验需要gcc编译器,一个比较简单的配置gcc编译器的方法就是终端输入
sudo apt-get install build-essential即可
0.配置autotools:在Ubuntu中安装aclocal、autoscan、autoconf、autoheader、automake文件,在命令行中输入 sudo apt-get install autoconf 即可
1.第一步,我们需要在我们的项目目录下执行autoscan命令。这个命令主要用于扫描工作目录,并且生成configure.scan文件。然后要使用mv configure.scan configure.ac语句将configure.scan重命令成configure.ac
2.执行aclocal,生成aclocal.m4文件
aclocal会根据configure.ac文件的内容,自动生成aclocal.m4文件。而aclocal.m4文件中,包含了生成configure文件所必须的宏。
3. 执行autoconf,生成configure文件
autoconf会根据configure.ac和aclocal.m4文件,生成configure文件。
4.执行autoheader命令,该命令生成 config.h.in 文件。该命令通常会从 "acconfig.h” 文件中复制用户附加的符号定义。
5. 执行automake命令,产生Makefile.in
具体命令为:automake --add-missing(automake后面有一个空格)
automake会根据Makefile.am文件产生一些文件,包含最重要的Makefile.in。前面所生成的configure,会根据Makefile.in文件,来生成最终的Makefile文件。



这几步输入语句如下:


  • 执行configure命令,生成Makefile文件
    这样,就产生了编译所需要的Makefile文件。


    [/ol]
    7.运行make,即可编译。

    等待一段时间后生成五个可执行文件,在终端中输入 ./文件名 即可执行

    生成可执行文件如下:


    等待一段时间后生成五个可执行文件,在终端中输入 ./文件名 即可执行


    生成可执行文件如下:

  • 回复

    使用道具 举报

    2

    主题

    673

    帖子

    219

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    219
    发表于 2021-10-1 15:19:47 | 显示全部楼层
    路过,学习下
    回复

    使用道具 举报

    1

    主题

    652

    帖子

    167

    积分

    注册会员

    Rank: 2

    积分
    167
    发表于 2021-10-1 15:43:01 | 显示全部楼层
    相当不错,感谢无私分享精神!
    回复

    使用道具 举报

    1

    主题

    637

    帖子

    173

    积分

    注册会员

    Rank: 2

    积分
    173
    发表于 2021-10-1 16:08:12 | 显示全部楼层
    好好 学习了 确实不错
    回复

    使用道具 举报

    1

    主题

    630

    帖子

    210

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    210
    发表于 2021-10-1 16:32:21 | 显示全部楼层
    不错不错,很好哦
    回复

    使用道具 举报

    1

    主题

    659

    帖子

    106

    积分

    注册会员

    Rank: 2

    积分
    106
    发表于 2021-10-1 17:22:36 | 显示全部楼层
    LZ真是人才
    回复

    使用道具 举报

    1

    主题

    661

    帖子

    182

    积分

    注册会员

    Rank: 2

    积分
    182
    发表于 2021-10-1 18:07:58 | 显示全部楼层
    找到好贴不容易,我顶你了,谢了
    回复

    使用道具 举报

    1

    主题

    604

    帖子

    179

    积分

    注册会员

    Rank: 2

    积分
    179
    发表于 2021-10-1 18:38:02 | 显示全部楼层
    路过,学习下
    回复

    使用道具 举报

    4

    主题

    646

    帖子

    109

    积分

    注册会员

    Rank: 2

    积分
    109
    发表于 2021-10-1 19:12:52 | 显示全部楼层
    路过,学习下
    回复

    使用道具 举报

    1

    主题

    600

    帖子

    123

    积分

    注册会员

    Rank: 2

    积分
    123
    发表于 2021-10-1 20:22:44 | 显示全部楼层
    没看完~~~~~~ 先顶,好同志
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ| 无图版|手机版|小黑屋| 上海@IT精英团

    Copyright © 2001-2015 Comsenz Inc.   All Rights Reserved.

    Powered by Discuz! X3.4

    快速回复 返回顶部 返回列表