比特币用的是RSA
Ⅰ 比特币如何算出来的
要想了解bitcoin的技术原理,首先需要了解两个重要的密码技术: HASH码:将一个长字符串转换成固定长度的字符串,并且其转换不可逆,即不太可能从HASH码猜出原字符串。bitcoin协议里使用的主要是SHA256。
公钥体系:对应一个公钥和私钥,在应用中自己保留私钥,并公开公钥。当甲向乙传递信息时,可使用甲的私钥加密信息,乙可用甲的公钥进行解密,这样可确保第三方无法冒充甲发送信息;同时,甲向乙传递信息时,用乙的公钥加密后发给乙,乙再用自己的私钥进行解密,这样可确保第三者无法偷听两人之间的通信。最常见的公钥体系为RSA,但bitcoin协议里使用的是lliptic Curve Digital Signature Algorithm。 和现金、银行账户的区别? bitcoin为电子货币,单位为BTC。在这篇文章里也用来指代整个bitcoin系统。 和在银行开立账户一样,bitcoin里的对应概念为地址。每个人都可以有1个或若干个bitcoin地址,该地址用来付账和收钱。每个地址都是一串以1开头的字符串,比如我有两个bitcoin账户,和。一个bitcoin账户由一对公钥和私钥唯一确定,要保存账户,只需要保存好私钥文件即可。 和银行账户不一样的地方在于,银行会保存所有的交易记录和维护各个账户的账面余额,而bitcoin的交易记录则由整个P2P网络通过事先约定的协议共同维护。 我的账户地址里到底有多少钱? 虽然使用bitcoin的软件可以看到当前账户的余额,但和银行不一样,并没有一个地方维护每个地址的账面余额。它只能通过所有历史交易记录去实时推算账户余额。 我如何付账? 当我从地址A向对方的地址B付账时,付账额为e,此时双方将向各个网络节点公告交易信息,告诉地址A向地址B付账,付账额为e。为了防止有第三方伪造该交易信息,该交易信息将使用地址A的私钥进行加密,此时接受到该交易信息的网络节点可以使用地址A的公钥进行验证该交易信息的确由A发出。当然交易软件会帮我们做这些事情,我们只需要在软件中输入相关参数即可。 网络节点后收到交易信息后会做什么? 这个是整个bitcoin系统里最重要的部分,需要详细阐述。为了简单起见,这里只使用目前已经实现的bitcoin协议,在当前版本中,每个网络节点都会通过同步保存所有的交易信息。 历史上发生过的所有交易信息分为两类,一类为"验证过"的交易信息,即已经被验证过的交易信息,它保存在一连串的“blocks”里面。每个"block"的信息为前一个"bock"的ID(每个block的ID为该block的HASH码的HASH码)和新增的交易信息(参见一个实际的block)。另外一类指那些还"未验证"的交易信息,上面刚刚付账的交易信息就属于此类。 当一个网络节点接收到新的未验证的交易信息之后(可能不止一条),由于该节点保存了历史上所有的交易信息,它可以推算中在当时每个地址的账面余额,从而可以推算出该交易信息是否有效,即付款的账户里是否有足够余额。在剔除掉无效的交易信息后,它首先取出最后一个"block"的ID,然后将这些未验证的交易信息和该ID组合在一起,再加上一个验证码,形成一个新的“block”。 上面构建一个新的block需要大量的计算工作,因为它需要计算验证码,使得上面的组合成为一个block,即该block的HASH码的HASH码的前若干位为1。目前需要前13位为1(大致如此,不确定具体方式),此意味着如果通过枚举法生成block的话,平均枚举次数为16^13次。使用CPU资源生成block被称为“挖金矿”,因为生产该block将得到一定的奖励,该奖励信息已经被包含在这个block里面。 当一个网络节点生成一个新的block时,它将广播给其它的网络节点。但这个网络block并不一定会被网络接受,因为有可能有别的网络节点更早生产出了block,只有最早产生的那个block或者后续block最多的那个block有效,其余block不再作为下一个block的初始block。 对方如何确认支付成功? 当该笔支付信息分发到网络节点后,网络节点开始计算该交易是否有效(即账户余额是否足够支付),并试图生成包含该笔交易信息的blocks。当累计有6个blocks(1个直接blocks和5个后续blocks)包含该笔交易信息时,该交易信息被认为“验证过”,从而该交易被正式确认,对方可确认支付成功。 一个可能的问题为,我将地址A里面的余额都支付给地址B,同时又支付给地址C,如果只验证单比交易都是有效的。此时,我的作弊的方式为在真相大白之前产生6个仅包括B的block发给B,以及产生6个仅包含C的block发给C。由于我产生block所需要的CPU时间非常长,与全网络相比,我这样作弊成功的概率微乎其微。 网络节点生产block的动机是什么? 从上面描述可以看出,为了让交易信息有效,需要网络节点生成1个和5个后续block包含该交易信息,并且这样的block生成非常耗费CPU。那怎么样让其它网络节点尽快帮忙生产block呢?答案很简单,协议规定对生产出block的地址奖励BTC,以及交易双方承诺的手续费。目前生产出一个block的奖励为50BTC,未来每隔四年减半,比如2013年到2016年之间奖励为25BTC。 交易是匿名的吗? 是,也不是。所有BITCOIN的交易都是可见的,我们可以查到每个账户的所有交易记录,比如我的。但与银行货币体系不一样的地方在于,每个人的账户本身是匿名的,并且每个人可以开很多个账户。总的说来,所谓的匿名性没有宣称的那么好。 但bitcoin用来做黑市交易的还有一个好处,它无法冻结。即便警方追踪到了某个bitcoin地址,除非根据网络地址追踪到交易所使用的电脑,否则还是毫无办法。 如何保证bitcoin不贬值? 一般来说,在交易活动相当的情况下,货币的价值反比于货币的发行量。不像传统货币市场,央行可以决定货币发行量,bitcoin里没有一个中央的发行机构。只有通过生产block,才能获得一定数量的BTC货币。所以bitcoin货币新增量决定于: 1、生产block的速度:bitcoin的协议里规定了生产block的难度固定在平均2016个每两个星期,大约10分钟生产一个。CPU速度每18个月速度加倍的摩尔定律,并不会加快生产block的速度。 2、生产block的奖励数量:目前每生产一个block奖励50BTC,每四年减半,2013年开始奖励25BTC,2017年开始奖励额为12.5BTC。 综合上面两个因素,bitcoin货币发行速度并不由网络节点中任何单个节点所控制,其协议使得货币的存量是事先已知的,并且最高存量只有2100万BTC
Ⅱ 比特币的私钥,公钥,签名,钱包,都是什么意思我下载了一个比特币客户端,该怎么用bitcoin-0.8.5
公私钥既是飞对等加密,可以看下rsa加密
公钥加密的内容只有私钥可以解密
私钥加密的内容只公钥可以解密
公钥在这里既是你的比特币ID,私钥既是你钱包
用比特币需要注意保管好你的钱包,最好给他用密码加密,若别人知道你的钱包(私钥),即可使用你的比特币
网上有很多比特币交易平台,谷歌搜索一下就可以找到好多
一般赚比特币要靠挖矿,网上也有挖矿平台,不过现在收益低了,烧显卡
Ⅲ 比特币钱包能转让吗 私钥是什么 安装了安卓bitcoin软件 怎么知道自己的私钥
钱包的转让其实就是把钱包里面的BTC转让,所以直接汇款最方便,可以选择不付费转账,虽然慢一点,但通常可接受。私钥实际上是一个字符串,简单这么理解,f(DATA,私钥)=SecDATA,其中f(x,y)可以是RSA算法,反过来f(secDATA,公钥)=DATA,也就是说,你用私钥加密的数据能且只能被拥有对应公钥的人解密,你自己也解不了(除非你也有公钥,当然通常你是有的)这一点除了加密作用还有“防抵赖”作用,如果使用你的公钥加密一个数据,只有拥有对应私钥的人能解开,这通常只有私钥归属人一个人拥有。公钥私钥对(key pairs)一定是同时产生的,具体在bitcoin软件中是安装时候自动产生的,这个私钥在软件中会自动使用,但通常还不是直接使用,以为RSA这类非对称算法比较消耗资源,所以通常是先用一个对称算法加密,再用RSA加密那个对称算法的随机密钥,然后两部分加在一起传输,所以你所谓知道自己的私钥也没有什么可操作性的必要,除非是研究用,日常的备份工作,软件中已经处理了密钥、bitcoin数据链的备份,至少windows版是这样的,用户只需要备份钱包就相当于导出了全部需要的信息,稍早一点的时候BTC还有个问题,一次备份后,如果你经历了100次以上的汇款操作,一定要重新备份,否则会丢失BTC,不知道现在是否完全修复了,但多备份一次也不麻烦,而且安全。
Ⅳ 高中生如何理解比特币加密算法
加密算法是数字货币的基石,比特币的公钥体系采用椭圆曲线算法来保证交易的安全性。这是因为要攻破椭圆曲线加密就要面对离散对数难题,目前为止还没有找到在多项式时间内解决的办法,在算法所用的空间足够大的情况下,被认为是安全的。本文不涉及高深的数学理论,希望高中生都能看懂。
密码学具有久远的历史,几乎人人都可以构造出加解密的方法,比如说简单地循环移位。古老或简单的方法需要保密加密算法和秘钥。但是从历史上长期的攻防斗争来看,基于加密方式的保密并不可靠,同时,长期以来,秘钥的传递也是一个很大的问题,往往面临秘钥泄漏或遭遇中间人攻击的风险。
上世纪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位)就非常安全了。
Ⅳ 比特币的核心技术包括哪些
比特币的核心技术包括1、非对称加密技术 2、点对点传输技术 3、哈希现金算法机制。
1.非对称加密技术和对称加密技术最大的不同就是有了公钥和私钥之分。非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。公钥是公开的,私钥是保密的。 由于不涉及私钥的传输,整个传输过程就变得安全多了。后来又出现了具备商业实用性的非对称RSA加密算法以及后来的椭圆曲线加密算法(ECC),这些都奠定了加密算法理论的基础,但是美国国家安全局NSA最初认为这些技术对国家安全构成威胁,所以对这些技术进行了严密的监控,知道20世纪90年代末NSA才放弃了对这些技术的监控,这些非对称技术才最终走入了了公众的视野。这项技术对应到比特币场景中就是比特币的地址和私钥。
2.点对点传输技术顾名思义,就是无需中心服务器、个体之间可以相互传输信息的技术,P2P网络的重要目标就是让所有客户端都能提供资源,包括宽带、存储空间和计算能力。 对应到比特币网络中就是利用点对点的技术实现真正的去中心化。
3.哈希现金算法机制就是让那些制造垃圾邮件的人付出相应的代价!发送者需要付出一定的工作量,比如说哈希运算,几秒钟时间对于普通用户不算什么,但对于垃圾邮件的发送者每封邮件都要花几秒钟的时间,这样的成本是没有办法负担的。同时每次运算都会盖上一个独一无二的时间戳,这样就能保证邮件发送方不能重复使用一个运算结果。 对于比特币而言也是同样的道理,如何保证一笔数字货币没有被多次消费(Double Spending),就类似于验证一封邮件没有被多次发送,所以就要保证每一笔交易顺利完成,必须要付出一定的工作量(proof of Work),并且在完成交易时盖上一个时间戳表示交易完成的时间。
Ⅵ 比特币钱包能转让吗 私钥是什么 安装了安卓bitcoin软件 怎么知道自己的私钥
比特币钱包中的比特币转让,实际上就是直接将比特币汇款给对方。如果选择免费转账,虽然速度相对较慢,但通常是可以接受的。这里要提到的是,私钥实际上是一个字符串,可以简单理解为一种加密手段。使用私钥加密的数据,只有拥有对应公钥的人才能解密,而你自己也无法解密,除非你也拥有对应的公钥。
公钥和私钥这对密钥是同时生成的,一般是在安装比特币软件时自动产生的。在使用过程中,软件会自动使用这个私钥,但通常并不是直接使用。因为像RSA这样的非对称加密算法会消耗大量的资源,所以一般的做法是先用一个对称加密算法加密数据,然后用RSA加密对称加密算法的随机密钥,再将这两部分一起传输。
对于私钥,除非你是出于研究目的,否则你并不需要知道自己的私钥。日常的备份工作,软件本身已经处理了密钥和比特币数据链的备份。至少在Windows版的软件中,用户只需要备份钱包就相当于导出了全部需要的信息。
早些时候,比特币在备份方面存在一些问题,一次备份后如果进行了100次以上的汇款操作,有可能会丢失比特币。虽然现在是否已经完全修复了这个问题还不清楚,但建议还是多备份一次,这样可以确保安全。
公钥和私钥这对密钥在比特币系统中起到了非常重要的作用,它们不仅保证了数据的安全性,还确保了比特币交易的不可抵赖性。
Ⅶ 鍦ㄥ尯鍧楅摼涓涓鑸浣跨敤浠涔堝姞瀵嗙畻娉
鍦ㄥ尯鍧楅摼涓锛屼竴鑸浣跨敤涓ょ嶄富瑕佺殑鍔犲瘑绠楁硶锛
- 鍏閽/绉侀挜鍔犲瘑绠楁硶锛氳繖绉嶅康缁濆姞瀵嗙畻娉曚娇鐢ㄤ竴瀵瑰叕閽ュ拰绉侀挜銆傚叕閽ュ彲浠ュ叕寮鍒嗗彂锛岃岀侀挜闇瑕佷繚瀵嗐傚彧鏈夋嫢鏈夌侀挜鐨勪汉鎵嶈兘瑙e瘑浣跨敤鍏閽ュ姞瀵嗙殑鏁版嵁銆傝繖绉嶅姞瀵嗘柟娉曡骞挎硾鐢ㄤ簬鏁板瓧绛惧悕鍜岃韩浠介獙璇侊紝鍥犱负瀹冨彲浠ョ‘璁ゆ暟鎹鐨勬潵婧愬拰瀹屾暣鎬с傚湪鍖哄潡閾句腑锛岀侀挜鐢ㄤ簬纭璁や氦鏄撹呯殑韬浠斤紝鑰屽叕閽ュ垯琚骞挎挱缁欑綉缁滀腑鐨勫叾浠栬妭鐐逛互楠岃瘉浜ゆ槗鐨勬湁鏁堟ф壈楂樼瑧銆
- RSA绠楁硶锛氳繖鏄涓绉嶅父鐢ㄧ殑鍏閽/绉侀挜鍔犲瘑绠楁硶锛岀敱Ron Rivest銆丄di Shamir 鍜 Leonard Adleman浜1978骞村彂鏄庛傚畠鏄涓绉嶉潪瀵圭О鍔犲瘑绠楁硶锛屼篃灏辨槸璇达紝鐢ㄤ簬鍔犲瘑鐨勫瘑閽ュ拰鐢ㄤ簬瑙e瘑鐨勫瘑閽ユ槸涓嶅悓鐨勩
- ECDSA锛堟き鍦嗘洸绾挎暟瀛楃惧悕绠楁硶锛夛細杩欐槸涓绉嶅熀浜嶳SA绠楁硶鐨勬敼杩涚増锛屼娇鐢ㄦき鍦嗘洸绾垮瘑鐮佸︼紝浣垮緱绛惧悕杩囩▼鏇村揩閫熶笖鏇村畨鍏ㄣ傚湪鍖哄潡閾句腑锛孍CDSA琚鐢ㄤ簬楠岃瘉浜ゆ槗鐨勬暟瀛楃惧悕銆
鎷撳睍鐭ヨ瘑锛
鍝堝笇鍑芥暟鏄涓绉嶅皢浠绘剰闀垮害鐨勬暟鎹锛堝傛枃鏈銆佹暟瀛楃瓑锛夎浆鎹涓哄浐瀹氶暱搴︼紙閫氬父涓256浣嶆垨512浣嶏級鐨勬憳瑕佺殑鏂规硶銆傚畠浠缂撳惈闈炲父蹇涓旈潪甯稿畨鍏锛屽洜涓烘敼鍙樻暟鎹涓鐨勪竴灏忛儴鍒嗭紙鍗充娇鏄寰灏忕殑鏀瑰彉锛変細瀵艰嚧鍝堝笇缁撴灉鐨勫彉鍖栭潪甯稿ぇ锛岀敋鑷充笉鍙閫嗐傝繖绉嶇壒鎬т娇寰楀搱甯屽嚱鏁板湪鍖哄潡閾句腑琚骞挎硾浣跨敤锛屽傚尯鍧楃殑merkle鏍戠粨鏋勩佷氦鏄撶殑鏁板瓧绛惧悕浠ュ強瀵嗙爜瀛﹂挶鍖呯殑瀛樺偍绛夈
姣旂壒甯佸尯鍧楅摼涓昏佷娇鐢⊿HA-256浣滀负鍏跺搱甯屽嚱鏁帮紝杩欐槸鐢盌avid Chaum鍜孧ayra P. Chilomchik鍦1997骞村紩鍏ョ殑涓绉嶇畻娉曘係HA-256鎻愪緵浜嗕竴绉嶉潪甯稿畨鍏ㄧ殑鏂瑰紡鏉ュ垱寤哄尯鍧楅摼骞剁‘淇濅氦鏄撶殑瀹夊叏鎬с傛ゅ栵紝鍖哄潡閾句腑鐨凪erkle鏍戠粨鏋勪篃鏄鍩轰簬SHA-256鐨勫搱甯屽嚱鏁版潵鍒涘缓鐨勩
浠ヤ笂涓ょ嶅姞瀵嗙畻娉曞拰鍝堝笇鍑芥暟鍦ㄥ尯鍧楅摼涓閮芥壆婕旂潃闈炲父閲嶈佺殑瑙掕壊锛屽畠浠淇濊瘉浜嗕氦鏄撶殑瀹夊叏鎬с佸畬鏁存у拰鍖垮悕鎬э紝鍚屾椂涔熺‘淇濅簡鍖哄潡閾剧綉缁滅殑鍘讳腑蹇冨寲鍜屼笉鍙绡℃敼鎬с
鍚屾椂锛岀敱浜庡尯鍧楅摼涓鐨勬暟鎹鏄浠ュ尯鍧楃殑褰㈠紡涓嶆柇澧為暱鐨勶紝杩欎簺鍔犲瘑绠楁硶杩樿鐢ㄤ簬鍒涘缓鍖哄潡澶村拰鍖哄潡闂寸殑閾炬帴锛岃繘涓姝ユ彁楂樹簡鍖哄潡閾剧殑鎬ц兘鍜屽畨鍏ㄦс