求解比特币是怎么用 比特币到底怎么用
一、高中生如何理解比特币加密算法
加密算法是数字货币的基石,比特币的公钥体系采用椭圆曲线算法来保证交易的安全性。这是因为要攻破椭圆曲线加密就要面对离散对数难题,目前为止还没有找到在多项式时间内解决的办法,在算法所用的空间足够大的情况下,被认为是安全的。本文不涉及高深的数学理论,希望高中生都能看懂。
密码学具有久远的历史,几乎人人都可以构造出加解密的方法,比如说简单地循环移位。古老或简单的方法需要保密加密算法和秘钥。但是从历史上长期的攻防斗争来看,基于加密方式的保密并不可靠,同时,长期以来,秘钥的传递也是一个很大的问题,往往面临秘钥泄漏或遭遇中间人攻击的风险。
上世纪70年代,密码学迎来了突破。Ralph C. Merkle在1974年首先提出非对称加密的思想,两年以后,Whitfield Diffie和Whitfield Diffie两位学者以单向函数和单向暗门函数为基础提出了具体的思路。随后,大量的研究和算法涌现,其中最为著名的就是RSA算法和一系列的椭圆曲线算法。
无论哪一种算法,都是站在前人的肩膀之上,主要以素数为研究对象的数论的发展,群论和有限域理论为基础。内容加密的秘钥不再需要传递,而是通过运算产生,这样,即使在不安全的网络中进行通信也是安全的。密文的破解依赖于秘钥的破解,但秘钥的破解面临难题,对于RSA算法,这个难题是大数因式分解,对于椭圆曲线算法,这个难题是类离散对数求解。两者在目前都没有多项式时间内的解决办法,也就是说,当位数增多时,难度差不多时指数级上升的。
那么加解密如何在公私钥体系中进行的呢?一句话,通过在一个有限域内的运算进行,这是因为加解密都必须是精确的。一个有限域就是一个具有有限个元素的集合。加密就是在把其中一个元素映射到另一个元素,而解密就是再做一次映射。而有限域的构成与素数的性质有关。
前段时间,黎曼猜想(与素数定理关系密切)被热炒的时候,有一位区块链项目的技术总监说椭圆曲线算法与素数无关,不受黎曼猜想证明的影响,就完全是瞎说了。可见区块链项目内鱼龙混杂,确实需要好好洗洗。
比特币及多数区块链项目采用的公钥体系都是椭圆曲线算法,而非RSA。而介绍椭圆曲线算法之前,了解一下离散对数问题对其安全性的理解很有帮助。
先来看一下费马小定理:
原根定义:
设(a, p)=1(a与p互素),满足
的最下正整数 l,叫作a模p的阶,模p阶为(最大值)p-1的整数a叫作模p的原根。
两个定理:
基于此,我们可以看到,{1, 2, 3,… p-1}就是一个有限域,而且定义运算 gi(mod p),落在这个有限域内,同时,当i取0~p-2的不同数时,运算结果不同。这和我们在高中学到的求幂基本上是一样的,只不过加了一层求模运算而已。
另一点需要说明的是,g的指数可以不限于0~p-2,其实可以是所有自然数,但是由于
所以,所有的函数值都是在有限域内,而且是连续循环的。
离散对数定义:
设g为模p的原根,(a,p)= 1,
我们称 i为a(对于模p的原根g)的指数,表示成:
这里ind就是 index的前3个字母。
这个定义是不是和log的定义很像?其实这也就是我们高中学到的对数定义的扩展,只不过现在应用到一个有限域上。
但是,这与实数域上的对数计算不同,实数域是一个连续空间,其上的对数计算有公式和规律可循,但往往很难做到精确。我们的加密体系里需要精确,但是在一个有限域上的运算极为困难,当你知道幂值a和对数底g,求其离散对数值i非常困难。
当选择的素数P足够大时,求i在时间上和运算量上变得不可能。因此我们可以说i是不能被计算出来的,也就是说是安全的,不能被破解的。
比特币的椭圆曲线算法具体而言采用的是 secp256k1算法。网上关于椭圆曲线算法的介绍很多,这里不做详细阐述,大家只要知道其实它是一个三次曲线(不是一个椭圆函数),定义如下:
那么这里有参数a, b;取值不同,椭圆曲线也就不同,当然x, y这里定义在实数域上,在密码体系里是行不通的,真正采用的时候,x, y要定义在一个有限域上,都是自然数,而且小于一个素数P。那么当这个椭圆曲线定义好后,它反应在坐标系中就是一些离散的点,一点也不像曲线。但是,在设定的有限域上,其各种运算是完备的。也就是说,能够通过加密运算找到对应的点,通过解密运算得到加密前的点。
同时,与前面讲到的离散对数问题一样,我们希望在这个椭圆曲线的离散点阵中找到一个有限的子群,其具有我们前面提到的遍历和循环性质。而我们的所有计算将使用这个子群。这样就建立好了我们需要的一个有限域。那么这里就需要子群的阶(一个素数n)和在子群中的基点G(一个坐标,它通过加法运算可以遍历n阶子群)。
根据上面的描述,我们知道椭圆曲线的定义包含一个五元祖(P, a, b, G, n, h);具体的定义和概念如下:
P:一个大素数,用来定义椭圆曲线的有限域(群)
a, b:椭圆曲线的参数,定义椭圆曲线函数
G:循环子群中的基点,运算的基础
n:循环子群的阶(另一个大素数,< P)
h:子群的相关因子,也即群的阶除以子群的阶的整数部分。
好了,是时候来看一下比特币的椭圆曲线算法是一个怎样的椭圆曲线了。简单地说,就是上述参数取以下值的椭圆曲线:
椭圆曲线定义了加法,其定义是两个点相连,交与图像的第三点的关于x轴的对称点为两个点的和。网上这部分内容已经有很多,这里不就其细节进行阐述。
但细心的同学可能有个疑问,离散对数问题的难题表现在求幂容易,但求其指数非常难,然而,椭圆曲线算法中,没有求幂,只有求乘积。这怎么体现的是离散对数问题呢?
其实,这是一个定义问题,最初椭圆曲线算法定义的时候把这种运算定义为求和,但是,你只要把这种运算定义为求积,整个体系也是没有问题的。而且如果定义为求积,你会发现所有的操作形式上和离散对数问题一致,在有限域的选择的原则上也是一致的。所以,本质上这还是一个离散对数问题。但又不完全是简单的离散对数问题,实际上比一般的离散对数问题要难,因为这里不是简单地求数的离散对数,而是在一个自定义的计算上求类似于离散对数的值。这也是为什么椭圆曲线算法采用比RSA所需要的(一般2048位)少得多的私钥位数(256位)就非常安全了。
二、政治单选求解
题目要求“根据上述材料”,而材料中并没有提到比特币是用来干啥的,即没有讲比特币具有某种用途而被人们买卖。故不选A
材料也没有提到获得比特币的方式,而只讲其价格的变动情况,B项不能选。
有价值的东西一定有使用价值,D项表述错误。
比特币价格在短短时间内由15美元攀升到266美元,虽然有所回落,但从趋势来看,还可能会反复,所以C项比较符合题目要求。
三、比特币是怎么被找到的
比特币是通过特定的算法计算找到的。
比特币的产生基于一种名为“工作量证明”的机制。在这个过程中,众多参与者利用计算机算力去解决复杂的数学难题。谁先算出符合要求的答案,就能获得一定数量的比特币作为奖励。这个数学难题的难度会根据全网算力动态调整,以保证大约每10分钟能产生一个新区块并伴随一定数量新比特币的发行。随着时间推移,比特币的总量会逐渐接近设定的上限。参与计算的节点遍布全球,它们相互竞争又共同维护着比特币网络的运行。通过这种方式,比特币不断地被新“挖掘”出来,进入流通领域。
1.工作量证明机制是比特币产生的核心方式。众多节点利用自身算力参与到复杂数学难题的求解中。这些节点如同矿工一样,不断尝试不同的数值组合,以找到那个满足特定条件的答案。这个条件是由比特币的算法所规定的,只有符合要求的答案才能被视为有效。当一个节点成功找到答案时,它就向全网广播这个结果。其他节点会验证这个结果的正确性,如果验证通过,那么这个新区块就会被添加到比特币的区块链中。
2.比特币的产生过程是一个动态调整难度的过程。随着参与计算的节点数量不断增加,全网算力也在持续提升。为了保证比特币的发行速度相对稳定,大约每10分钟产生一个新区块,比特币算法会根据全网算力动态调整数学难题的难度。如果全网算力提升,难题难度就会增加,反之则降低。这样就确保了比特币的产生节奏不会因为算力的变化而出现大幅波动,维持了比特币系统的稳定性和可预测性。
3.全球范围内的节点共同参与比特币的挖掘。这些节点分布在世界各地,它们各自独立运行,通过竞争来获取比特币奖励。它们的存在使得比特币网络具有去中心化的特点,没有单一的控制中心。每个节点都有机会参与到比特币的产生过程中,并且它们的算力贡献共同决定了比特币的发行速度和总量。这种去中心化的模式保证了比特币不受任何单一机构或个人的操控,具有较高的安全性和自主性。
-
芝麻开门交易所官网地址 芝麻交易所排名 11-09