比特币的加密算法

比特币加密算法一共有两类:非对称加密算法(椭圆曲线加密算法)和哈希算法(SHA256,RIMPED160算法)。

比特币私钥(private key),公钥(public key),公钥哈希值(pubkeyhash),比特币地址(address)
公钥和私钥由椭圆曲线加密算法生成,私钥可推出公钥而反之不能,这也是这篇文章后半部分要隆重介绍的部分。
有了私钥,你就可以对文本签名。别人拿了你的公钥就可以根据签名认证你是否拥有私钥。这就是证明你拥有存款的办法。
为了安全起见,公钥应该隐藏起来。所以对公钥进行哈希加密,生成公钥哈希值然后计算哈希值的比特币地址:
公钥哈希值=RIMPED160(SHA256(公钥))
比特币地址=*1*+Base58(0+公钥哈希值+校验码)
校验码=前四字节(SHA256(SHA256(0+公钥哈希值)))
可以看出,地址和公钥哈希值是等价的(可以互推)但公钥哈希值只能由公钥算出(不能逆推)。
验证的时候需要提供签名和公钥,算出公钥哈希值并和比特币支出脚本的公钥哈希值对比,最后再验证签名。这样就保证了公钥不会出现在支出脚本里。
(收入单提供签名,支出单提供公钥,或者收入单提供签名和公钥,支出单提供公钥哈希值,这两种验证办法是比特币的标准脚本)

哈希(Hash)算法
哈希算法(又称散列算法)不是加密解密算法,因为其加密的过程是不可逆的(你只能加密不能解密),也没有所谓的公钥私钥的概念。
哈希算法原理是将一段信息转换成一个固定长度的字符串。这个串字符串有两个特点:
1、如果某两段信息是相同的,那么字符串也是相同的。
2、即使两段信息十分相似,但只要是不同的,那么字符串将会十分杂乱随机并且两个字符串之间完全没有关联。
信息可以是一串数字,一个文件,一本书。。。。。。只要能编码成一串数字即可。
显然,信息有无数多种而字符串的种类是有限的(因为是固定长度),所以这种加密是不可逆的。

哈希算法的用途
1、验证两段信息是否相同。
A使用QQ给B传了一个文件,这个文件会在QQ的服务器上保存下来。如果C也传了这个文件给D,QQ会对比这个文件的哈希值和A传给B的文件的哈希值是否相同,如果相同则说明是同一个文件,C就不需要再一次上传文件给服务器。这就是所谓的秒传。
一个压缩包在传输的时候可能会有损坏。在压缩之前计算原文件的哈希值并放入压缩包中,待解压后再次计算解压文件的哈希值。对比压缩包中的哈希值则可以知道文件是否损坏。BT和迅雷下载中所谓的哈希验证也是同一道理。
2、验证某人是否信息持有者。
在一个论坛注册帐号,如果论坛把密码保存起来,因为无论坛多么安全都可能会被破解,所以密码总会有泄漏的可能性。
如果不保存密码而保存密码的哈希加密值。当你下次登陆论坛的时候,将你输入的密码的哈希值和你注册时密码的哈希值比对,如果相同则可以证明你就是密码持有者了。这样既保证了密码泄露的可能,又保证了验证持有者的功能。

哈希算法的破解
假如论坛被破解了,黑客获得了哈希值,但黑客只有哈希值依旧是不能登陆论坛的,他得算出用户的密码。
他可以随机产生密码一个一个试,如果算出的哈希值正好和这个哈希值相同,则说明这个密码可用。这就是所谓的猜密码。
显然,密码长度越长,密码越复杂,猜到的可能性就越低。如果有一种办法能增加这种猜到可能性,使其大到能够容忍的范围,则该哈希算法被破解了。
例如原本猜中的概率是1/10000000000000,现在增加到了1/1000。如果每猜一个密码需要1秒,按照之前的概率猜知道太阳毁灭都可能没猜中,但后者只需要1小时就足够了。
另外,由于信息的种类是无限的,所以你猜中的密码未必就是原先的密码,它们可能是碰巧哈希值相同而已,这就是所谓的碰撞。
如同增加猜中概率一样,如果能增加碰撞的概率,那么同样可以轻易登陆论坛(因为论坛也不知道原本的密码是什么,所以猜的密码和原密码不同也没关系,只要哈希值相同即可)。
一旦碰撞容易轻易产生,那么哈希算法就被破解了。前几年闹得沸沸扬扬的哈希算法破解就是这么回事,数学家通过一定办法增加了碰撞的概率。

哈希算法的大致加密流程
1、对原文进行补充和分割处理(一般分给为多个512位的文本,并进一步分割为16个32位的整数)。
2、初始化哈希值(一般分割为多个32位整数,例如SHA256就是256位的哈希值分解成8个32位整数)。
3、对哈希值进行计算(依赖于不同算法进行不同轮数的计算,每个512位文本都要经过这些轮数的计算)。
经过这样处理以后,哈希值就显得十分杂乱随机了。

非对称加密算法
非对称加密算法是世界上最重要的加密解密算法。
所谓非对称,是指加密和解密用到的公钥和私钥是不同的。
非对称加密算法依赖于求解一数学问题困难而验证一数学问题简单。

RSA算法
著名的RSA加密算法就是利用了对一个大整数进行因数分解困难,验证因子组成某个大整数容易的原理而编写的。
具体说,比如求143的因子,你可能需要进行11次除法才能得到143=11*13的结果。但是要验证11*13=143,则只需要一次乘法就够了。
如要破解RSA,只需要能够快速分解大整数即可,显然这是破解RSA最简单最快速的办法。但要分解大整数是极不容易的(数学上叫做NP-Hard问题),这也就是RSA能保证其不能被破解的原因。
反之,如果人类某天找到了快速分解大整数的办法(例如利用量子计算机进行计算),则RSA算法就立即被破解了。

RSA算法的大致原理
生成公钥和私钥:
1、生成一对大质数p,q,求出n=p*q和f=(p-1)*(q-1)。
2、生成一个随机数e,满足e<f且e,f互质。
3、求出e关于f的模逆d,即求出e*d=1 mod f。
设明文为m,密文为g。
用公钥n,e加密:m^e=g mod n
用私钥n,d解密:g^d=m mod n
证明解密后的明文就是原先的明文:
根据加密解密规则,将g=m^e mod n代入g^d=m mod n后,发现只要证明m^(e*d)=m mod n即可(同余运算的原理)。
由于e*d=1 mod f,所以只需证明m^(f+1)=m mod n即可。根据欧拉定理,f是欧拉函数所以得证。(具体的数学原理这里不再赘述)
显然,如果知道了f,就可以根据公钥n,e计算出d破解明文。要知道f,必须得知道p和q。要知道p和q,必须将n分解。所以RSA的破解依赖于整数分解。
如果对RSA算法感兴趣,可以看这两篇文章。
http://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html
http://www.ruanyifeng.com/blog/2013/07/rsa_algorithm_part_two.html

椭圆曲线加密算法
试想有一种乘法,可以在已知a,b的情况下计算出c=a*b,但已知c,a不能计算出b。
我们可以利用这种乘法进行加密解密。
设明文m,密文g1,g2。
用公钥a,c=a*b,r(随机数)加密:
g1=m+r*c
g2=r*a
用私钥a,b解密:m=g1-b*g2
证明:
g1-b*g2
=m+r*c-b*r*a
=m+r*c-r*c
=m
我们还可以利用这种乘法进行签名认证。
设原文m,签名g1,g2。
用私钥a,b,r(随机数)签名:
x=r*a
g1=SHA(m,x)
g2=r-g1*b
用公钥验证:
g2*a+g1*c 
=(r-g1*b)*a+g1*c 
=r*a-g1*b*a+g1*c 
=r*a-g1*c+g1*c 
=r*a
=x
计算SHA(m,x)是否和g1相等。
这就是加密解密层面上的椭圆曲线加密算法。

椭圆曲线加密算法的点乘运算
如何找到这样一种乘法是椭圆曲线加密算法的关键。通常的整数乘法是没法满足这样的要求的。乘法来源于加法,我们必须定义新的运算规则。
例如定义a!+b=a*b,a!*b=b^a,这里的!+和!*是新定义的加法和数量乘法,于是我们得到这样的结论:
加法交换律:a!+b=b!+a
加法结合律:(a!+b!)+c=a!+(b!+c)
加法零元素存在:a!+1=a*1=a,这里的1相当于普通加法中的0。
加法负元素存在:a!+b=a!+(1/a)=a*(1/a)=1
数量乘法单位元素存在:1!*b=b^1=b
数量乘法结合律:(a*b)!*c=c^(a*b)=c^(b*a)=c^b^a=a!*(c^b)=a!*(b!*c)
加乘法分配率:(k+l)!*a=k!*a+l!*a
加乘法分配率:k!*(a!+b)=k!*a!+k!*b
这样的加法和乘法满足了很多普通加法和乘法中的性质,但是却满足了一些特定条件,例如比原本的乘法更难根据a和c=a!*b=a^b求出b(需要对数运算)。
我们的目标是找到这样一种加法和乘法,使其满足前文所说的条件。数学家通过研究椭圆曲线找到了这一办法:
设平面上两点P(x1,y1),Q(x2,y2),则P+Q=R(x3,y3),满足x3=k^2-2x1,y3=k(x1-x3)-y1,k=(3*x1)/(2y1)。定义k*P=P+P+P+....+P。
这样的一套(关于平面上点的)运算法则(加法和点乘)就满足这样的需求。
这和椭圆曲线有什么关系呢?事实上,如果P和Q都是曲线y^2=x^3+7上的点,那么P+Q=R也是椭圆曲线y^2=x^3+7上的点并且这三个点位于一条直线上。
这并不是巧合,而是逆推出来的。亦即当P和Q是曲线上的点的时候,那么直线PQ和曲线的交点是R,求出R的坐标为(x3,y3)。
使用椭圆曲线加密算法是因为它比RSA算法更快,并且能够实现和RSA算法类似的功能。
实际使用的时候,还需要将曲线和点离散化,并且把坐标系扩展。这涉及更多数学知识,如有兴趣可参考这篇文章:
http://www.pediy.com/kssd/pediy06/pediy6014.htm
关于比特币中椭圆曲线用到的参数,可参看这个:
https://en.bitcoin.it/wiki/Secp256k1

时间: 2024-08-28 20:38:46

比特币的加密算法的相关文章

白话比特币原理解密

一.比特币的背景 对于当下流行的电子货币-比特币系统,朋友圈里有很多介绍性的文章,也有人试图通过漫画来生动的解释比特币的特性,但是始终不得要领,总是有些问题想不清楚,为了弄清楚这些问题,最近深入的研读了几本比特币的书籍以及中本聪本人发表的比特币论文,感觉茅塞顿开,迫不及待的与大家分享我的理解,希望与大家共同探讨.共同进步. 二.什么是比特币 比特币是一种利用点对点技术实现的电子现金系统,它允许一个组织直接与另外一个组织进行在线支付,而不需要中间的权威的清算机构. 在比特币的世界里,如果你想拥有比

经济--力哥说理财(第二季)--比特币

比特币bitcoin 同样基于开源P2P加密技术诞生的互联网虚拟货币.2013中国的互联网金融源年.众筹兴起了,P2P突然火了,7 8000 人民币抢来的一枚比特币.现在才2000,浮亏70%啊.跟过山车一样.在半个世纪以内,比特币不会代替人民币,美元这些国家主权信用货币,也绝不可能和所有这些主权信用货币进行兑换.比特币是投机泡沫,现在反对玩,子孙可能需要. 凯恩斯大战哈耶克 学过点经济学的人都知道,经济学分为微观经济学和宏观经济学. 微观经济学又叫古典经济学,是由经济学之父亚当·斯密在18世纪

勒索病毒、敲诈者病毒、wallet比特币病毒加密数据后的应急处理

很多技术猿,程序员猿,网管,看到服务器的数据被加密了,服务进程被停止了,文件名在一个个的神奇的改变,顿时慌了神,对于第一个发现病毒作案现场的目击者,应该如何应对和处理这种突发的攻击呢?根据我们多年的数据恢复与病毒解密处理经验,以及中国数据恢复协会广大会员单位的交流讨论,我们认为发现病毒加密数据之后应该立即做如下几点: 1:立即断网.2:立即检查病毒加密时间.(观察文件修改时间)规则A:立即断电或关机.若勒索加密病毒运行加密的时间在0-2小时内,根据你的主机文件个数和数据容量多少,一般情况下1小时

比特币 Bitcoin 是什么,我勒个去,哈耶克果然超前&mdash;&mdash;货币的非国有化,容我思量一下【转载+整理】

原文地址 比特币矿业史(上):故事的开始,CPU 时代 比特币矿业史(中):群众的觉醒 ,GPU 时代 比特币矿业史(下):巨头的诞生 ,ASIC 时代 本文内容 引子 0 序 1 故事的开始 : CPU时代 1.1 史前启示录 1.2 盘古开天地 1.3 矿工第一人 1.4 CPU时代 2 群众的觉醒 :GPU时代 2.1 第一笔兑换 2.2 逐渐流行 2.3 阶级形成 2.4 铸币工厂 3 巨头的诞生 :ASIC时代 3.1 军备竞赛 3.2 疯狂上涨 3.3 产业链 4 未来的展望 :量子

彻底玩转比特币地址和私匙

转自:http://www.8btc.com/privkey 比特币地址和私匙是所有比特币初学者面对的一大难题,再加上那一串超长的字符串,让人更是摸不到头脑.现在编者以问答的形式,带你一步步的揭开比特币地址和私匙的面纱. 还不知道什么是比特币地址和私匙的同学请点这里问题一.比特币钱包由什么组成? 答 我们知道,比特币地址和私匙组成了比特币钱包,而私匙则决定了比特币地址上比特币的归属. 地址和私匙 问题二.如果只记得私匙我们还能还原比特币地址么?答完全可以的,在Bitcoin-qt客户端中,点击d

真有这种操作,比特币、暴雪和下载盗版电影都应用了同一种算法

在ICO泡沫迅速涌起和迅速破灭后,比特币仍然一路高歌,在最近突破了9600美金的大关.作为一种独立于货币体系的数字加密币,比特币成功的本质还是要归功于技术--区块链的安全和隐私支撑起了比特币最核心的价值. 提到区块链,非对称加密算法和哈希算法是两个不能避开的技术名词.尤其是哈希算法,在区块链相关的技术文章中总能看到这个名字,却很难真正理解它的奥秘.今天,我们就来看看哈希算法是如何保护比特币和其他数据的? 学好哈希算法,用脑子储存比特币 如果你准备购买比特币,你就会拥有一个"比特币钱包"

写在《精通比特币》第二版发行之际

一.翻译<精通比特币第二版>的起因 作为一名老IT技术,我自信还是能够抱着非常开放的心态对待新技术新概念的.这从我的技术职业生涯从网络开始,到AIX操作系统,再到数据库以及存储备份,虚拟化,到后期熟悉SEO,网络运营,直到独立运营聚众培训视频网可以得到佐证. 但是不知不觉,技术的发展已经逐渐演变为对三观的触动,质疑甚至是改变的时候,我觉得自己还是像大多数人一样保守. 因为我们从小接受的教育就是把命运寄托给别人,忠实于自己已经选择的道路,不要冒险,听命于制定规则的人. 其实当颠覆性创新来临时,一

解密比特币的那些核心技术原理

白话比特币原理解密 1 背景 对于当下流行的电子货币-比特币系统,朋友圈里有很多介绍性的文章,也有人试图通过漫画来生动的解释比特币的特性,但是始终不得要领,总是有些问题想不清楚,为了弄清楚这些问题,最近深入的研读了几本比特币的书籍以及中本聪本人发表的比特币论文,感觉茅塞顿开,迫不及待的与大家分享我的理解,希望与大家共同探讨.共同进步. 2 比特币 比特币是一种利用点对点技术实现的电子现金系统,它允许一个组织直接与另外一个组织进行在线支付,而不需要中间的权威的清算机构. 在比特币的世界里,如果你想

你不知道的币圈江湖,ETH(以太坊)VS比特币,V神看不上中本聪

我们知道,ETH(以太坊)和比特币是目前最受币圈用户青睐的两种数字货币.但你或许不知道,他们背后的创始人,V神和中本聪并没有多少交集,甚至从某些方面来说,V神是看不上中本聪的,虽然他是比特币的创造者. 一.密码朋克,比特币先驱 非对称加密.点对点技术.哈希现金是比特币的三项关键技术. 比特币的加密理论基础来源于以下几项密码学的技术创新 :1976年威持菲尔德?迪菲 (WhitfieicJ Diffie)与马蒂?赫尔曼 (Marty Heilman)发明的非对称加密算法, 977年罗纳德?李维斯特