当前位置:首页 » 比特币问答 » 非对称加密算法在比特币中应用

非对称加密算法在比特币中应用

发布时间: 2023-02-19 03:09:02

比特币的核心技术包括哪些

比特币的核心技术包括1、非对称加密技术 2、点对点传输技术 3、哈希现金算法机制。
1.非对称加密技术和对称加密技术最大的不同就是有了公钥和私钥之分。非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。公钥是公开的,私钥是保密的。 由于不涉及私钥的传输,整个传输过程就变得安全多了。后来又出现了具备商业实用性的非对称RSA加密算法以及后来的椭圆曲线加密算法(ECC),这些都奠定了加密算法理论的基础,但是美国国家安全局NSA最初认为这些技术对国家安全构成威胁,所以对这些技术进行了严密的监控,知道20世纪90年代末NSA才放弃了对这些技术的监控,这些非对称技术才最终走入了了公众的视野。这项技术对应到比特币场景中就是比特币的地址和私钥。
2.点对点传输技术顾名思义,就是无需中心服务器、个体之间可以相互传输信息的技术,P2P网络的重要目标就是让所有客户端都能提供资源,包括宽带、存储空间和计算能力。 对应到比特币网络中就是利用点对点的技术实现真正的去中心化。
3.哈希现金算法机制就是让那些制造垃圾邮件的人付出相应的代价!发送者需要付出一定的工作量,比如说哈希运算,几秒钟时间对于普通用户不算什么,但对于垃圾邮件的发送者每封邮件都要花几秒钟的时间,这样的成本是没有办法负担的。同时每次运算都会盖上一个独一无二的时间戳,这样就能保证邮件发送方不能重复使用一个运算结果。 对于比特币而言也是同样的道理,如何保证一笔数字货币没有被多次消费(Double Spending),就类似于验证一封邮件没有被多次发送,所以就要保证每一笔交易顺利完成,必须要付出一定的工作量(proof of Work),并且在完成交易时盖上一个时间戳表示交易完成的时间。

② 非对称加密算法 (RSA、DSA、ECC、DH)

非对称加密需要两个密钥:公钥(publickey) 和私钥 (privatekey)。公钥和私钥是一对,如果用公钥对数据加密,那么只能用对应的私钥解密。如果用私钥对数据加密,只能用对应的公钥进行解密。因为加密和解密用的是不同的密钥,所以称为非对称加密。

非对称加密算法的保密性好,它消除了最终用户交换密钥的需要。但是加解密速度要远远慢于对称加密,在某些极端情况下,甚至能比对称加密慢上1000倍。

算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快。对称密码体制中只有一种密钥,并且是非公开的,如果要解密就得让对方知道密钥。所以保证其安全性就是保证密钥的安全,而非对称密钥体制有两种密钥,其中一个是公开的,这样就可以不需要像对称密码那样传输对方的密钥了。这样安全性就大了很多。

RSA、Elgamal、背包算法、Rabin、D-H、ECC (椭圆曲线加密算法)。使用最广泛的是 RSA 算法,Elgamal 是另一种常用的非对称加密算法。

收信者是唯一能够解开加密信息的人,因此收信者手里的必须是私钥。发信者手里的是公钥,其它人知道公钥没有关系,因为其它人发来的信息对收信者没有意义。

客户端需要将认证标识传送给服务器,此认证标识 (可能是一个随机数) 其它客户端可以知道,因此需要用私钥加密,客户端保存的是私钥。服务器端保存的是公钥,其它服务器知道公钥没有关系,因为客户端不需要登录其它服务器。

数字签名是为了表明信息没有受到伪造,确实是信息拥有者发出来的,附在信息原文的后面。就像手写的签名一样,具有不可抵赖性和简洁性。

简洁性:对信息原文做哈希运算,得到消息摘要,信息越短加密的耗时越少。

不可抵赖性:信息拥有者要保证签名的唯一性,必须是唯一能够加密消息摘要的人,因此必须用私钥加密 (就像字迹他人无法学会一样),得到签名。如果用公钥,那每个人都可以伪造签名了。

问题起源:对1和3,发信者怎么知道从网上获取的公钥就是真的?没有遭受中间人攻击?

这样就需要第三方机构来保证公钥的合法性,这个第三方机构就是 CA (Certificate Authority),证书中心。

CA 用自己的私钥对信息原文所有者发布的公钥和相关信息进行加密,得出的内容就是数字证书。

信息原文的所有者以后发布信息时,除了带上自己的签名,还带上数字证书,就可以保证信息不被篡改了。信息的接收者先用 CA给的公钥解出信息所有者的公钥,这样可以保证信息所有者的公钥是真正的公钥,然后就能通过该公钥证明数字签名是否真实了。

RSA 是目前最有影响力的公钥加密算法,该算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥,即公钥,而两个大素数组合成私钥。公钥是可发布的供任何人使用,私钥则为自己所有,供解密之用。

A 要把信息发给 B 为例,确定角色:A 为加密者,B 为解密者。首先由 B 随机确定一个 KEY,称之为私钥,将这个 KEY 始终保存在机器 B 中而不发出来;然后,由这个 KEY 计算出另一个 KEY,称之为公钥。这个公钥的特性是几乎不可能通过它自身计算出生成它的私钥。接下来通过网络把这个公钥传给 A,A 收到公钥后,利用公钥对信息加密,并把密文通过网络发送到 B,最后 B 利用已知的私钥,就能对密文进行解码了。以上就是 RSA 算法的工作流程。

由于进行的都是大数计算,使得 RSA 最快的情况也比 DES 慢上好几倍,无论是软件还是硬件实现。速度一直是 RSA 的缺陷。一般来说只用于少量数据加密。RSA 的速度是对应同样安全级别的对称密码算法的1/1000左右。

比起 DES 和其它对称算法来说,RSA 要慢得多。实际上一般使用一种对称算法来加密信息,然后用 RSA 来加密比较短的公钥,然后将用 RSA 加密的公钥和用对称算法加密的消息发送给接收方。

这样一来对随机数的要求就更高了,尤其对产生对称密码的要求非常高,否则的话可以越过 RSA 来直接攻击对称密码。

和其它加密过程一样,对 RSA 来说分配公钥的过程是非常重要的。分配公钥的过程必须能够抵挡中间人攻击。假设 A 交给 B 一个公钥,并使 B 相信这是A 的公钥,并且 C 可以截下 A 和 B 之间的信息传递,那么 C 可以将自己的公钥传给 B,B 以为这是 A 的公钥。C 可以将所有 B 传递给 A 的消息截下来,将这个消息用自己的密钥解密,读这个消息,然后将这个消息再用 A 的公钥加密后传给 A。理论上 A 和 B 都不会发现 C 在偷听它们的消息,今天人们一般用数字认证来防止这样的攻击。

(1) 针对 RSA 最流行的攻击一般是基于大数因数分解。1999年,RSA-155 (512 bits) 被成功分解,花了五个月时间(约8000 MIPS 年)和224 CPU hours 在一台有3.2G 中央内存的 Cray C916计算机上完成。

RSA-158 表示如下:

2009年12月12日,编号为 RSA-768 (768 bits, 232 digits) 数也被成功分解。这一事件威胁了现通行的1024-bit 密钥的安全性,普遍认为用户应尽快升级到2048-bit 或以上。

RSA-768表示如下:

(2) 秀尔算法
量子计算里的秀尔算法能使穷举的效率大大的提高。由于 RSA 算法是基于大数分解 (无法抵抗穷举攻击),因此在未来量子计算能对 RSA 算法构成较大的威胁。一个拥有 N 量子位的量子计算机,每次可进行2^N 次运算,理论上讲,密钥为1024位长的 RSA 算法,用一台512量子比特位的量子计算机在1秒内即可破解。

DSA (Digital Signature Algorithm) 是 Schnorr 和 ElGamal 签名算法的变种,被美国 NIST 作为 DSS (DigitalSignature Standard)。 DSA 是基于整数有限域离散对数难题的。

简单的说,这是一种更高级的验证方式,用作数字签名。不单单只有公钥、私钥,还有数字签名。私钥加密生成数字签名,公钥验证数据及签名,如果数据和签名不匹配则认为验证失败。数字签名的作用就是校验数据在传输过程中不被修改,数字签名,是单向加密的升级。

椭圆加密算法(ECC)是一种公钥加密算法,最初由 Koblitz 和 Miller 两人于1985年提出,其数学基础是利用椭圆曲线上的有理点构成 Abel 加法群上椭圆离散对数的计算困难性。公钥密码体制根据其所依据的难题一般分为三类:大整数分解问题类、离散对数问题类、椭圆曲线类。有时也把椭圆曲线类归为离散对数类。

ECC 的主要优势是在某些情况下它比其他的方法使用更小的密钥 (比如 RSA),提供相当的或更高等级的安全。ECC 的另一个优势是可以定义群之间的双线性映射,基于 Weil 对或是 Tate 对;双线性映射已经在密码学中发现了大量的应用,例如基于身份的加密。不过一个缺点是加密和解密操作的实现比其他机制花费的时间长。

ECC 被广泛认为是在给定密钥长度的情况下,最强大的非对称算法,因此在对带宽要求十分紧的连接中会十分有用。

比特币钱包公钥的生成使用了椭圆曲线算法,通过椭圆曲线乘法可以从私钥计算得到公钥, 这是不可逆转的过程。

https://github.com/esxgx/easy-ecc

Java 中 Chipher、Signature、KeyPairGenerator、KeyAgreement、SecretKey 均不支持 ECC 算法。

https://www.jianshu.com/p/58c1750c6f22

DH,全称为"Diffie-Hellman",它是一种确保共享 KEY 安全穿越不安全网络的方法,也就是常说的密钥一致协议。由公开密钥密码体制的奠基人 Diffie 和 Hellman 所提出的一种思想。简单的说就是允许两名用户在公开媒体上交换信息以生成"一致"的、可以共享的密钥。也就是由甲方产出一对密钥 (公钥、私钥),乙方依照甲方公钥产生乙方密钥对 (公钥、私钥)。

以此为基线,作为数据传输保密基础,同时双方使用同一种对称加密算法构建本地密钥 (SecretKey) 对数据加密。这样,在互通了本地密钥 (SecretKey) 算法后,甲乙双方公开自己的公钥,使用对方的公钥和刚才产生的私钥加密数据,同时可以使用对方的公钥和自己的私钥对数据解密。不单单是甲乙双方两方,可以扩展为多方共享数据通讯,这样就完成了网络交互数据的安全通讯。

具体例子可以移步到这篇文章: 非对称密码之DH密钥交换算法

参考:
https://blog.csdn.net/u014294681/article/details/86705999

https://www.cnblogs.com/wangzxblog/p/13667634.html

https://www.cnblogs.com/taoxw/p/15837729.html

https://www.cnblogs.com/fangfan/p/4086662.html

https://www.cnblogs.com/utank/p/7877761.html

https://blog.csdn.net/m0_59133441/article/details/122686815

https://www.cnblogs.com/muliu/p/10875633.html

https://www.cnblogs.com/wf-zhang/p/14923279.html

https://www.jianshu.com/p/7a927db713e4

https://blog.csdn.net/ljx1400052550/article/details/79587133

https://blog.csdn.net/yuanjian0814/article/details/109815473

③ 小巴成长记-比特币的技术来源

我们经常说比特币具有去中心化、不可篡改、不可伪造等特点。这是为什么呢?当然下面的文字其实并没有看起来那么吓人,姑且从三个方面来讲讲,你也要耐着性子听听吧。

1、非对称加密是比特币去中心化的来源

中心化是需要一个类似银行的中心机构来验证交易的。去中心化本质上是让所有的节点都能验证交易的真伪,中本聪用了非对称加密的技术来解决中心化的问题。

非对称加密技术是什么?是指加密和解密的时候使用不同的密钥的加密算法。比如:A要向B发送信息,A和B都要产生一对用于加密的公钥和私钥顾名思义,私钥就是不能公开的,公钥就是要公开的。A发送信息给B时,A就用B的公钥对信息加密,B收到后,B用B的私钥解密A的消息,而其他所有收到这个信息的人都无法解密,因为只有B才拥有这个私钥。

简单的说,公钥和私钥在非对称加密机制里是成对存在的,公钥和私钥可以去相互验证对方,我们可以把地址理解为公钥,把签名输密码的过程理解为私钥的签名。每个矿工在拿到一笔转账交易时,都可以时都可以验证公钥和私钥到底是不是匹配的,如果是匹配的,这笔交易就合法。这样,我们每个人只需要保管好自己的私钥,自己的公钥和对方的公钥就可以安全地进行转账,不需要中心的机构来验证对方发来的比特币是不是真的。

2、工作量证明机制是比特币不可篡改的技术来源

工作量证明 机制,是一种对在差不多时间内发生的事物的先后顺序达成共识的一种算法。监测工作的整个过程通常是效率非常低的,而通过对工作的结果进行认证来证明完成了一定工作的工作量,是一种非常高效的方式。比如我们日常中的各种证 驾驶证 学位证 结婚证就是这样一种有结果获悉完成工作量的证明。

工作量证明 的特点,对于执行方来说难度是适中的,对于验证方来说是非常容易被验证的。矿工们通过哈希计算,最先算出结果,获得记账权,其他节点经过非常简单的验证之后,就可以同样其记账,并同步账本。打上时间戳后,紧接着进行下一轮计算。

如果这时候有人想把某个信息进行修改,他需要做什么呢?他需要从这个区块开始把之后所有的区块都重新计算一遍,把账本再同步给其他人。而在他进行计算的同时,其他矿工们已经在原来的的链上继续往前进行计算了。因为在比特币的网络里,大家认为最长的链才是正确的链。所以,这个恶意篡改的人,需要在很短的时间内赶上现有区块的高度度,让自己的这条链成为最长的链,并让其他矿工误以为自己的这条链是正确的,这基本上是一件不可能的事,除非这个恶意篡改的人拥有超强的算力,至少超过全网的50%。那么我们来算算,现在全网的算力是8亿哈希每秒,也就是每秒进行8乘10的18次方计算,现在市场上流行的主流矿机每台的算力是10T左右,如果你想拥有全网51%的算力,你最少需要40万台最新矿机,如果按1万元每台矿机计算,仅设备就需投入40亿元人民币,加上矿机的供不应求,老矿机算力下降,全网算力的不断上涨等因素,如果不是为了60亿以上的利润回报并有强大的技术做支撑,一般人很难有这个动机和能力。

3、“UTXO”结构是比特币不可伪造的技术来源

先问个问题,如果我发给你1个比特币,你怎么知道这个比特币是真的而不是我伪造出来的,或者我已经同时转给了其他人了呢,这就要说到UTXO结构了。

UTXO(Unspend Transaction Output)是个什么鬼?意思是未花费的交易输出。来个栗子,假设我要给你100元,其中有两张张50元纸钞,一张是隔壁老王给我的,另外一张是小卖部小丽找零给我的,拿到这两张张钞票我需要拿在手上并还未花出去时才能交易给你,这就是未花费的交易输出。而通过这两张钞票往前追溯可以知道是谁交给了老王和小丽,并最终追溯到是由哪家银行发行,什么时候央行批准发行的源头,比特币里也有这样一个原理。在比特币世界里的每一笔转账,都能够追溯到上一笔交易。每一笔付款,都可以追溯到上一笔的收款。一直往上追溯到它诞生时矿工挖出来的那个区块。

这个机制就保证了在比特币网络里,比特币是不可以伪造和重复交易的。在比特币世界里,重复支付被叫做“双花”,就是花费了两次的意思。

④ 比特币源码研读一:椭圆曲线在比特币密码中的加密原理

参加比特币源码研读班后首次写作,看到前辈black写的有关密钥,地址写的很好了,就选了他没有写的椭圆曲线,斗胆写这一篇。

在密码学上有两种加密方式,分别是对称密钥加密和非对称密钥加密。

对称加密:加密和解密使用的同样的密钥。

非对称加密:加密和解密是使用的不同的密钥。

二战中图灵破解德军的恩尼格码应该就是用的对称加密,因为他的加密和解密是同一个密钥。比特币的加密是非对称加密,而且用的是破解难度较大的椭圆曲线加密,简称ECC。

非对称加密的通用原理就是用一个难以解决的数学难题做到加密效果,比如RSA加密算法。RSA加密算法是用求解一个极大整数的因数的难题做到加密效果的。就是说两个极大数相乘,得到乘积很容易,但是反过来算数一个极大整数是由哪两个数乘积算出来的就非常困难。

下面简要介绍一下椭圆曲线加密算法ECC。

首先椭圆曲线的通式是这个样子的:

一般简化为这个样子:

()发公式必须吐槽一下,太麻烦了。)

其中

这样做就排除了带有奇点的椭圆曲线,可以理解为所有的点都有一条切线。

图像有几种,下面列举几个:[1]

椭圆曲线其实跟椭圆关系不大,也不像圆锥曲线那样,是有圆锥的物理模型为基础的。在计算椭圆曲线的周长时,需要用到椭圆积分,而椭圆曲线的简化通式:

,周长公式在变换后有一项是这样的:,平方之后两者基本一样。

我们大体了解了椭圆曲线,就会有一个疑问,这个东西怎么加密的呢?也就是说椭圆曲线是基于怎样的数学难题呢?在此之前还得了解一些最少必要知识:椭圆曲线加法,离散型椭圆曲线。

椭圆曲线加法

数学家门从普通的代数运算中,抽象出了加群(也叫阿贝尔群或交换群),使得在加群中,实数的算法和椭圆曲线的算法得到统一。

数学中的“群”是一个由我们定义了一种二元运算的集合,二元运算我们称之为“加法”,并用符号“+”来表示。为了让一个集合G成为群,必须定义加法运算并使之具有以下四个特性:

1. 封闭性:如果a和b是集合G中的元素,那么(a + b)也是集合G中的元素。

2. 结合律:(a + b) + c = a + (b + c);

3. 存在单位元0,使得a + 0 = 0 + a =a;

4. 每个元素都有逆元,即:对于任意a,存在b,使得a + b = 0.

如果我们增加第5个条件:

5. 交换律: a + b = b + a

那么,称这个群为阿贝尔群。[1]

运算法则:任意取椭圆曲线上两点P、Q (若P、Q两点重合,则做P点的切线)做直线交于椭圆曲线的另一点R’,过R’做y轴的平行线交于R。我们规定P+Q=R。(如图)[2]

特别的,当P和Q重合时,P+Q=P+P=2P,对于共线的三点,P,Q,R’有P+Q+R’=0∞.

这里的0∞不是实数意义的0,而是指的无穷远点(这里的无穷远点就不细说了,你可以理解为这个点非常遥远,遥远到两条平行线都在这一点相交了。具体介绍可以看参考文献[2])。

注意这里的R与R’之间的区别,P+Q=R,R并没有与P,Q共线,是R’与P,Q共线,不要搞错了。

法则详解:

这里的+不是实数中普通的加法,而是从普通加法中抽象出来的加法,他具备普通加法的一些性质,但具体的运算法则显然与普通加法不同。

根据这个法则,可以知道椭圆曲线无穷远点O∞与椭圆曲线上一点P的连线交于P’,过P’作y轴的平行线交于P,所以有无穷远点 O∞+ P = P 。这样,无穷远点 O∞的作用与普通加法中零的作用相当(0+2=2),我们把无穷远点 O∞ 称为零元。同时我们把P’称为P的负元(简称,负P;记作,-P)。(参见下图)

离散型椭圆曲线

上面给出的很好看的椭圆曲线是在实数域上的连续曲线,这个是不能用来加密的,原因我没有细究,但一定是连续曲线上的运算太简单。真正用于加密的椭圆曲线是离散型的。要想有一个离散型的椭圆曲线,先得有一个有限域。

域:在抽象代数中,域(Field)之一种可进行加、减、乘、除运算的代数结构。它是从普通实数的运算中抽像出来的。这一点与阿贝尔群很类似。只不过多了乘法,和与乘法相关的分配率。

域有如下性质[3]:

1.在加法和乘法上封闭,即域里的两个数相加或相乘的结果也在这个域中。

2.加法和乘法符合结合律,交换率,分配率。

3.存在加法单位,也可以叫做零元。即存在元素0,对于有限域内所有的元素a,有a+0=a。

4.存在乘法单位,也可以叫做单位元。即存在元素1,对于有限域内所有的元素a,有1*a=a。

5.存在加法逆元,即对于有限域中所有的元素a,都存在a+(-a)=0.

6.存在乘法逆元,即对于有限域中所有的元素a,都存在a*=0.

在掌握了这些知识后,我们将椭圆曲线离散化。我们给出一个有限域Fp,这个域只有有限个元素。Fp中只有p(p为素数)个元素0,1,2 …… p-2,p-1;

Fp 的加法(a+b)法则是 a+b≡c (mod p);它的意思是同余,即(a+b)÷p的余数与c÷p的余数相同。

Fp 的乘法(a×b)法则是 a×b≡c (mod p);

Fp 的除法(a÷b)法则是 a/b≡c (mod p);即 a×b∧-1≡c (mod p);(也是一个0到p-1之间的整数,但满足b×b∧-1≡1 (mod p);

Fp 的单位元是1,零元是 0(这里的0就不是无穷远点了,而是真正的实数0)。

下面我们就试着把

这条曲线定义在Fp上:

选择两个满足下列条件的小于p(p为素数)的非负整数a、b,且a,b满足

则满足下列方程的所有点(x,y),再加上无穷远点O∞ ,构成一条椭圆曲线。

其中 x,y属于0到p-1间的整数,并将这条椭圆曲线记为Ep(a,b)。

图是我手画的,大家凑合看哈。不得不说,p取7时,别看只有10个点,但计算量还是很大的。

Fp上的椭圆曲线同样有加法,法则如下:

        1. 无穷远点 O∞是零元,有O∞+ O∞= O∞,O∞+P=P

        2. P(x,y)的负元是 (x,-y),有P+(-P)= O∞

3. P(x1,y1),Q(x2,y2)的和R(x3,y3) 有如下关系:

x3≡-x1-x2(mod p)

y3≡k(x1-x3)-y1(mod p)

其中若P=Q 则 k=(3+a)/2y1 若P≠Q,则k=(y2-y1)/(x2-x1)

通过这些法则,就可以进行离散型椭圆曲线的计算。

例:根据我画的图,(1,1)中的点P(2,4),求2P。

解:把点带入公式k=(3*x∧2+a)/2y1

有(3*2∧2+1)/2*4=6(mod 7).

(注意,有些小伙伴可能算出13/8,这是不对的,这里是模数算数,就像钟表一样,过了12点又回到1点,所以在模为7的世界里,13=6,8=1).

x=6*6-2-2=4(mod 7)

y=6*(2-4)-4=2 (mod 7)

所以2P的坐标为(2,4)

那椭圆曲线上有什么难题呢?在模数足够大的情况下,上面这个计算过程的逆运算就足够难。

给出如下等式:

K=kG (其中 K,G为Ep(a,b)上的点,k为小于n(n是点G的阶)的整数)不难发现,给定k和G,根据加法法则,计算K很容易;但给定K和G,求k就相对困难了。

这就是椭圆曲线加密算法采用的难题。我们把点G称为基点(base point),k称为私钥,K称为公钥。

现在我们描述一个利用椭圆曲线进行加密通信的过程[2]:

1、用户A选定一条椭圆曲线Ep(a,b),并取椭圆曲线上一点,作为基点G。

2、用户A选择一个私钥k,并生成公钥K=kG。

3、用户A将Ep(a,b)和点K,G传给用户B。

4、用户B接到信息后 ,将待传输的明文编码到Ep(a,b)上一点M(编码方法很多,这里不作讨论),并产生一个随机整数r(r<n)。

5、用户B计算点C1=M+rK;C2=rG。

6、用户B将C1、C2传给用户A。

7、用户A接到信息后,计算C1-kC2,结果就是点M。因为

C1-kC2=M+rK-k(rG)=M+rK-r(kG)=M

再对点M进行解码就可以得到明文。

整个过程如下图所示:

密码学中,描述一条Fp上的椭圆曲线,常用到六个参量:

T=(p,a,b,G,n,h),p 、a 、b 用来确定一条椭圆曲线,G为基点,n为点G的阶,h 是椭圆曲线上所有点的个数m与n相除的整数部分

这几个参量取值的选择,直接影响了加密的安全性。参量值一般要求满足以下几个条件:

1、p 当然越大越安全,但越大,计算速度会变慢,200位左右可以满足一般安全要求;

2、p≠n×h;

3、pt≠1 (mod n),1≤t<20;

4、4a3+27b2≠0 (mod p);

5、n 为素数;

6、h≤4。

200位位的一个数字,那得多大?而且还是素数,所以这种方式是非常安全的。而且再一次交易中,区块被记录下来只有10分钟的时间,也就是说要想解决这个难题必须在10分钟以内。即便有技术能够在10分钟以内破解了现在这个难度的加密算法,比特币社区还可以予以反制,提高破解难度。所以比特币交易很安全,除非自己丢掉密钥,否则不存在被破解可能。

第一次写一个完全陌生的数学领域的知识,也许我有错误的地方,也许有没讲明白的地方,留言讨论吧。总之写完后对比特比系统的安全性表示很放心。

参考文献

[1] 椭圆曲线密码学简介

[2] 什么是椭圆曲线加密(ECC)

[3] 域(数学)维基网络

区块链研习社源码研读班 高若翔

⑤ 区块链系统开发-区块链交易系统开发-的核心技术有哪些

区块链技术是当今新兴的一项技术,但这么说也不太妥当,因为十年前比特币的出现这项技术也随之诞生,但说其是当下很火热的技术是没问题的。区块链技术经过10年来的不断更新,终于在近两年都有了相关的应用落地,且进入了区块链3.0时代,未来的3-5年,相信会有更多的领域需要区块链系统来支撑。下面区块链系统开发路普达(loopodo)小编就带大家来看一下,区块链系统开发的几大核心技术。
一、哈希算法
哈希算法是区块链系统开发中用的最多的一种算法,哈希函数(Hash Function),也称为散列函数或杂凑函数,哈希函数可将任意长度的资料经由Hash算法转换为一组固定长度的代码,原理是基于一种密码学上的单向哈希函数,这种函数很容易被验证,但是却很难破解。通常业界使用y =h (x)的方式进行表示,该哈希函数实现对x进行运算计算出一个哈希值y。
二、非对称加密算法
非对称加密算法是一种密钥的保密方法,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法
三、共识机制
所谓“共识机制”,是通过特殊节点的投票,在很短的时间内完成对交易的验证和确认;对一笔交易,如果利益不相干的若干个节点能够达成共识,我们就可以认为全网对此也能够达成共识。
现今区块链的共识机制可分为四大类:工作量证明机制(PoW)、权益证明机制(PoS)、股份授权证明机制(DPoS)和Pool验证池。
四、智能合约
智能合约就是传统合约的数字化网络化版本。它们是区块链上运行的计算机程序,可以满足在源代码中写入的条件时自行执行。智能合约一旦编写好就可以被用户信赖,合约条款就不会被改变,因此合约是不可更改的,并且任何人也不能修改。
开发发人员会为智能合约编写代码,这样就是用于交易和两方乃至多方之间的任何交换行为。代码里会包含一些触发合约自动执行的条件。一旦完成编写,智能合约就会自动被上传到网络上。数据上传到所有设备上以后,用户就可以与执行程序代码的结果达成协议。
五、分布式存储
分布式存储是通过网络使用企业中的每台机器上的磁盘空间,并将这些分散的存储资源构成一个虚拟的存储设备,数据分散的存储在企业的各个角落。海量的数据按照结构化程度来分,可以大致分为结构化数据,非结构化数据,半结构化数据。
路普达网络科技专注区块链系统开发,以太坊开发,区块链交易系统开发、虚拟币平台开发,币币交易系统开发、数字货币钱包系统开发

⑥ 非对称加密的应用

应用1:加密通信
|明文|->公钥加密->|密文|->私钥解密->|明文|

这种加密路径用于和他人进行加密通信,作用等同于对称加密。

我们回到Alice和Bob的例子来看下。

如果Bob想利用非对称加密算法私密的接收他人向他发送的信息,步骤是这样的。

1.首先Bob需要使用具体约定的算法(例如RSA)生成密钥和公钥,密钥自己保留,公钥对外公布。

2.Alice拿到Bob的公钥后,便可以对想要发送的消息“Alice已向Bob转账1BTC,请查收。”进行加密。

3.然后Alice将密文(例如是“FH39ggJ+shi3djifg35”)发送给Bob。

4.Bob收到消息后,用自己的私钥进行解密,还原出消息原文“Alice已向Bob转账1BTC,请查收。”

由于使用Bob公钥加密的消息只能用Bob的私钥解密(Bob的公钥也是不行的),而私钥只有Bob拥有,因此即使消息被第三方劫持,他也无法还原出消息明文。

应用2:数字签名

如果反过来,先用私钥加密呢?这便诞生了非对称加密的另一个重要应用:数字签名

我们回到Alice和Bob的例子来看下。

在比特币系统中,类似“Alice已向Bob转账1BTC,请查收。”这样的消息最终会被矿工记录在账本上,是与转账双方利益相关的。这样一条消息的受益方是Bob,我们腹黑一点想,如果Bob一直向网络中广播Alice给他转账的消息呢?

Bob:“Alice已向Bob转账1BTC”

Bob:“Alice已向Bob转账2BTC”

Bob:“Alice已向Bob转账3BTC”



因此,我们需要一种机制来证明Alice是“自愿”的,也就是消息是Alice亲自发出的。步骤是这样的:

1.Alice需要使用具体约定的算法(例如RSA)生成密钥和公钥,密钥自己保留,公钥对外公布。

2.当Alice想要发送消息 Alice已向Bob转账1BTC,请查收。| 我的公钥是:“gh3giPGFN2jgh3sF”。 时,Alice使用自己的私钥对消息进行加密,假设加密后的密文是 SHG356g3T4+dh4fh,现在这个密文可以看作Alice的数字签名。

3.Alice将消息明文和数字签名放到一起并发送到网络中

发送的消息类似这样的形式 Alice已向Bob转账1BTC,请查收。| 我的公钥是:“gh3giPGFN2jgh3sF”。| 签名:“SHG356g3T4+dh4fh”

4.网络中的所有人接收到消息后,都可以进行如下操作完成验证:

收到消息 Alice已向Bob转账1BTC,请查收。| 我的公钥是:“gh3giPGFN2jgh3sF”。| 签名:“SHG356g3T4+dh4fh”

使用Alice在消息中提供的公钥 gh3giPGFN2jgh3sF对私钥签署的数字签名SHG356g3T4+dh4fh进行解密

将解密结果与消息明文 Alice已向Bob转账1BTC,请查收。| 我的公钥是:“gh3giPGFN2jgh3sF”进行对比

如果一致,说明消息是Alice亲自发送的,因为只有Alice本人拥有Alice的密钥

如果不一致,则说明消息不是Alice发送的,或者虽然消息是Alice发送的但已遭到他人篡改

5.于是,通过4中描述的方法,Bob确认了Alice给他了一笔价值1BTC的转账。

网络中其他人(矿工)均成功验证了这条消息的真实性,并为Bob作证他的账户新增了1个BTC,Alice的账户减少了1个BTC。

⑦ 什么是比特币加密技术

比特币和区块链的诞生需要依赖于很多核心技术的突破:一是拜占庭容错技术;二是非对称加密技术;三是点对点支付技术。下面会依次介绍。
拜占庭容错技术
比特币和区块链诞生的首要难点在于如何创建分布式共识机制,也就是菜斯利·兰伯特等人1982年提出的拜占庭将军问题。所谓拜占庭将军问题是指,把战争中互不信任的各城邦军队如何达成共识并决定是否出兵的决策过程。延伸至计算机领域,试图创建具有容错性的分布式系统,即使部分节点失效仍可确保系统正常运行,也可让多个基于零信任基础的节点达成共识,并确保信息传递的一致性。
中本聪所提到的“拜占庭将军问题”解决方法起始于亚当﹒拜克在1997年发明的哈希现金算法机制,起初该设计是用于限制垃圾邮件发送与拒绝服务攻击。2004年,密码朋克运动早期和重要成员哈尔·芬尼将亚当﹒拜克的哈希现金算法改进为可复用的工作量证明机制。他们的研究又是基于达利亚·马凯与迈克尔·瑞特的学术成果:拜占庭容错机制。正是哈尔·芬尼的可复用的工作量证明机制后来成为比特币的核心要素之一。哈尔·芬尼是中本聪的最早支持者,同时也是第一笔比特币转账的接受者,在比特币发展的早期与中本聪有大量互动与交流。
非对称加密技术
比特币的非对称加密技术来源于以下几项密码学的技术创新:1976年,Sun公司前首席安全官Whitfield Diffie与斯坦福大学教授Martin Hell,在开创性论文《密码学的新方向》首次提出公开钥匙密码学的概念,发明了非对称加密算法。1978年省理工学院的伦纳德·阿德曼、罗纳德·李维斯特、阿迪·萨莫尔三名研究人员,共同发明了公开钥匙系统“RSA”可用于数据加密和签名,率先开发第一个具备商业实用性的非对称RSA加密算法。1985年,Neal Koblitz和Victor Miller俩人,首次提出将椭圆曲线算法(ECC),应用于密码学,并建立公钥加密的算法,公钥密码算法的原理是利用信息的不对称性,公钥对应的是私钥,私钥是解开所有信息的钥匙,公钥可以由私钥反推算出。ECC能够提供比RSA更高级别的安全。比特币使用的就是椭圆曲线算法公钥用于接收比特币,而私钥则是比特币支付时的交易签名。这些加密算法奠定了当前非对称加密理论的基础,被广泛应用于网络通信领域。但是,当时这些加密技术发明均在NSA严密监视的视野之内。NSA最初认为它们对国家安全构成威胁,并将其视为军用技术。直到20世纪90年代末,NSA才放弃对这些非对称加密技术的控制,RSA算法、ECC算法等非对称加密技术最终得以走进公众领域。
不过,中本聪并不信任NSA公布的加密技术,在比特币系统中没有使用RSA公钥系统,原因除了ECC能够提供比RSA更高级别的安全性能外,还担心美国安全部门在RSA留有技术后门。2013年9月,斯诺登就曾爆料NSA采用秘密方法控制加密国际标准,比特币采用的RSA可能留有后门,NSA能以不为人知的方法弱化这条曲线。所幸的是,中本聪神一般走位避开了RSA的陷阱,使用的加密技术不是NSA的标准,而是另一条鲜为人知的椭圆曲线,这条曲线并不在美国RSA的掌握之下。全世界只有极少数程序躲过了这一漏洞,比特币便是其中之一。

⑧ 区块链的加密技术

数字加密技能是区块链技能使用和开展的关键。一旦加密办法被破解,区块链的数据安全性将受到挑战,区块链的可篡改性将不复存在。加密算法分为对称加密算法和非对称加密算法。区块链首要使用非对称加密算法。非对称加密算法中的公钥暗码体制依据其所依据的问题一般分为三类:大整数分化问题、离散对数问题和椭圆曲线问题。第一,引进区块链加密技能加密算法一般分为对称加密和非对称加密。非对称加密是指集成到区块链中以满意安全要求和所有权验证要求的加密技能。非对称加密通常在加密和解密进程中使用两个非对称暗码,称为公钥和私钥。非对称密钥对有两个特点:一是其间一个密钥(公钥或私钥)加密信息后,只能解密另一个对应的密钥。第二,公钥可以向别人揭露,而私钥是保密的,别人无法通过公钥计算出相应的私钥。非对称加密一般分为三种首要类型:大整数分化问题、离散对数问题和椭圆曲线问题。大整数分化的问题类是指用两个大素数的乘积作为加密数。由于素数的出现是没有规律的,所以只能通过不断的试算来寻找解决办法。离散对数问题类是指基于离散对数的困难性和强单向哈希函数的一种非对称分布式加密算法。椭圆曲线是指使用平面椭圆曲线来计算一组非对称的特殊值,比特币就采用了这种加密算法。非对称加密技能在区块链的使用场景首要包含信息加密、数字签名和登录认证。(1)在信息加密场景中,发送方(记为A)用接收方(记为B)的公钥对信息进行加密后发送给

B,B用自己的私钥对信息进行解密。比特币交易的加密就属于这种场景。(2)在数字签名场景中,发送方A用自己的私钥对信息进行加密并发送给B,B用A的公钥对信息进行解密,然后确保信息是由A发送的。(3)登录认证场景下,客户端用私钥加密登录信息并发送给服务器,服务器再用客户端的公钥解密认证登录信息。请注意上述三种加密计划之间的差异:信息加密是公钥加密和私钥解密,确保信息的安全性;数字签名是私钥加密,公钥解密,确保了数字签名的归属。认证私钥加密,公钥解密。以比特币体系为例,其非对称加密机制如图1所示:比特币体系一般通过调用操作体系底层的随机数生成器生成一个256位的随机数作为私钥。比特币的私钥总量大,遍历所有私钥空间获取比特币的私钥极其困难,所以暗码学是安全的。为便于辨认,256位二进制比特币私钥将通过SHA256哈希算法和Base58进行转化,构成50个字符长的私钥,便于用户辨认和书写。比特币的公钥是私钥通过Secp256k1椭圆曲线算法生成的65字节随机数。公钥可用于生成比特币交易中使用的地址。生成进程是公钥先通过SHA256和RIPEMD160哈希处理,生成20字节的摘要成果(即Hash160的成果),再通过SHA256哈希算法和Base58转化,构成33个字符的比特币地址。公钥生成进程是不可逆的,即私钥不能从公钥推导出来。比特币的公钥和私钥通常存储在比特币钱包文件中,其间私钥最为重要。丢掉私钥意味着丢掉相应地址的所有比特币财物。在现有的比特币和区块链体系中,现已依据实践使用需求衍生出多私钥加密技能,以满意多重签名等愈加灵敏杂乱的场景。

⑨ 比特币的核心技术包括 比特币三大核心技术

众所周知,比特币是虚拟货币的一种,最早在 2008 年的时候由中本聪提出这一概念,在 2009 年的时候正式诞生。但是比特币的很多核心技术并不是中本聪发明的,而是他将这些技术都结合在一起才创造了比特币。那么,比特币的核心技术包括哪些呢?对此问题感兴趣的小伙伴可以继续往下阅读。

比特币的核心技术

1、非对称加密技术:非对称加密技术与对称加密技术最大的不同是有公钥和私钥之分,简单来说就是公钥和私钥是一对,如果用公钥对数据进行加密,那只有用对应的私钥才能解密,从而保证数据传输的安全,对应到比特币中就是比特币的地址和私钥;

2、点对点传输技术:点对点传输技术简单来说就是去中心化,让用户不需要中心服务器就能进行信息的传输,在比特币中的体现就是比特币无需央行等中心机构发行,它能够由计算机自己产生;

3、哈希现金算法机制:这一技术被应用到了比特币的发行机制当中,就是用户用自己电脑的算力进行挖矿,然后比特币网络就会产出比特币给第一个挖出区块的矿工。

好了,以上就是比特币的核心技术包括哪些的解答,希望能够帮助到遇到此类问题的小伙伴。

⑩ 比特币如何防止篡改

比特币网络主要会通过以下两种技术保证用户签发的交易和历史上发生的交易不会被攻击者篡改:

  • 非对称加密可以保证攻击者无法伪造账户所有者的签名;

  • 共识算法可以保证网络中的历史交易不会被攻击者替换;

  • 非对称加密


  • 非对称加密算法3是目前广泛应用的加密技术,TLS 证书和电子签名等场景都使用了非对称的加密算法保证安全。非对称加密算法同时包含一个公钥(Public Key)和一个私钥(Secret Key),使用私钥加密的数据只能用公钥解密,而使用公钥解密的数据也只能用私钥解密。

  • 图 4 - 51% 攻击


  • 1使用如下所示的代码可以计算在无限长的时间中,攻击者持有 51% 算力时,改写历史 0 ~ 9 个区块的概率9:

  • #include

  • #include


  • double attackerSuccessProbability(double q, int z) {

  • double p = 1.0 - q;

  • double lambda = z * (q / p);

  • double sum = 1.0;

  • int i, k;

  • for (k = 0; k <= z; k++) {

  • double poisson = exp(-lambda);

  • for (i = 1; i <= k; i++)

  • poisson *= lambda / i;

  • sum -= poisson * (1 - pow(q / p, z - k));

  • }

  • return sum;

  • }


  • int main() {

  • for (int i = 0; i < 10; i++) {

  • printf("z=%d, p=%f\n", i, attackerSuccessProbability(0.51, i));

  • }

  • return 0;

  • }


  • 通过上述的计算我们会发现,在无限长的时间中,占有全网算力的节点能够发起 51% 攻击修改历史的概率是 100%;但是在有限长的时间中,因为比特币中的算力是相对动态的,比特币网络的节点也在避免出现单节点占有 51% 以上算力的情况,所以想要篡改比特币的历史还是比较困难的,不过在一些小众的、算力没有保证的一些区块链网络中,51% 攻击还是极其常见的10。


  • 防范 51% 攻击方法也很简单,在多数的区块链网络中,刚刚加入区块链网络中的交易都是未确认的,只要这些区块后面追加了数量足够的区块,区块中的交易才会被确认。比特币中的交易确认数就是 6 个,而比特币平均 10 分钟生成一个块,所以一次交易的确认时间大概为 60 分钟,这也是为了保证安全性不得不做出的牺牲。不过,这种增加确认数的做法也不能保证 100% 的安全,我们也只能在不影响用户体验的情况下,尽可能增加攻击者的成本。

  • 总结


  • 研究比特币这样的区块链技术还是非常有趣的,作为一个分布式的数据库,它也会遇到分布式系统经常会遇到的问题,例如节点不可靠等问题;同时作为一个金融系统和账本,它也会面对更加复杂的交易确认和验证场景。比特币网络的设计非常有趣,它是技术和金融两个交叉领域结合后的产物,非常值得我们花时间研究背后的原理。


  • 比特币并不能 100% 防止交易和数据的篡改,文中提到的两种技术都只能从一定概率上保证安全,而降低攻击者成功的可能性也是安全领域需要面对的永恒问题。我们可以换一个更严谨的方式阐述今天的问题 — 比特币使用了哪些技术来增加攻击者的成本、降低交易被篡改的概率:

  • 比特币使用了非对称加密算法,保证攻击者在有限时间内无法伪造账户所有者的签名;

  • 比特币使用了工作量证明的共识算法并引入了记账的激励,保证网络中的历史交易不会被攻击者快速替换;


  • 通过上述的两种方式,比特币才能保证历史的交易不会被篡改和所有账户中资金的安全。
热点内容
区块链项目网址 发布:2025-05-26 04:50:06 浏览:99
coincola发送btc 发布:2025-05-26 04:41:42 浏览:564
比特币起始价格是多少 发布:2025-05-26 04:41:01 浏览:448
购买usdt后怎么买入狗狗币 发布:2025-05-26 04:36:40 浏览:184
区块链技术的投资逻辑 发布:2025-05-26 04:26:55 浏览:848
第九个比特币分叉币 发布:2025-05-26 04:04:33 浏览:963
区块链智能提货卡 发布:2025-05-26 03:57:44 浏览:729
从新洲家乐福去市民中心怎么走 发布:2025-05-26 03:44:16 浏览:864
昌岗去广州城市规划展览中心 发布:2025-05-26 03:29:47 浏览:739
数字货币能否取代现在的信用货币视频 发布:2025-05-26 03:29:44 浏览:717