全球区块链监管查询平台

简体中文
下载WikiBit

比特币怎么加密_比特币基础教学之:怎样保护你的私钥

比特币怎么加密_比特币基础教学之:怎样保护你的私钥 WikiBit 2023-01-28 22:02

本资讯是关于比特币基础教学之:怎样保护你的私钥,如何备份和加密比特币钱包,加密货币价格显著下跌加密货币是如何加密的,2021年更多支付巨头将采用加密货币加密货币的加密原理是什么相关的内容,由数字区块链为您收集整理请点击查看详情

  A. 比特币基础教学之:怎样保护你的私钥

  私钥安全问题的重要性对比特币玩家来说不言而喻。对于比特币的重量级玩家或者比特币商家而言,如何保护好私钥更是需要仔细考虑和反复斟酌的。今天编者就和大家探讨一下如何保护比特币私钥的问题。对于bitcoin-qt客户端来说,比特币私钥一般储存在客户端的wallet.dat文件中。对于Blockchain这样的在线钱包用户来说,比特币私钥是储存在在线钱包的网络服务器上,用户也可以将私钥下载到本地。对于纸钱包的用户来说,私钥可以被打印出来。但是,怎样保护私钥的安全性呢?编者列出了几种方法供大家参考。

  用对称加密的方法保管私钥 对称加密(Symmetric-key algorithm)是指加密和解密都用一个密钥。我们平时用到的加密方法一般都是对称加密,比如 winrar 中的加密,bitcoin-qt中对私钥文件的加密也是用的对称型加密算法。常用的对称加密算法有:AES、DES、RC4、RC5等等。对称加密需要用户设置相对比较复杂的密钥,以防止被暴力破解。Go to top方法一,用bitcoin-qt对私钥钱包进行加密。我们在命令模式下可以用encryptwallet命令来对钱包进行加密。命令模式的使用方法可以参见比特币基础教学之:怎样使用纸钱包私钥。这是私钥加密的最简易有效的方法。但是在使用walletpassphrase命令进行解密钱包时,密钥会被读入计算机内存中,所以存在攻击者获取密钥的可能性。加密命令: encryptwallet YOURPASSWORD解密钱包命令: walletpassphrase YOURPASSWORDTIMEOUT更改密码命令: walletpassphrasechange OLDPASSWORDNEWPASSWORDGo to top方法二,使用blockchain提供的AES加密。Blockchain为用户提供基于AES算法的私钥文件加密服务。用户可以将加密好的文件下载下来,并妥善保存。

  Go to top方法三,用第三方软件Truecrypt对密钥文件加密,这也是编者比较推荐的方法。Truecrypt开源免费,软件成熟度很高,而且支持双因素认证和整个硬盘加密。另外,FBI人员在Truecrypt上面吃过亏,因此口碑很不错。Truecrypt的口碑FBI hackers fail to crack TrueCrypt The FBI has admitted defeat in attempts to break the open source encryption used to secure hard drives seized by Brazilian police ring a 2008 investigation.

  The Bureau had been called in by the Brazilian authorities after the countrys own National Institute of Criminology (INC) had been unable to crack the passphrases used to secure the drives by suspect banker, Daniel Dantas.Brazilian reports state that two programs were used to encrypt the drives, one of which was the popular and widely-used free open source program TrueCrypt. Experts in both countries apparently spent months trying to discover the passphrases using a dictionary attack, a technique that involves trying out large numbers of possible character combinations until the correct sequence is found.

  完整文章点击这里Truecrypt只支持对称加密算法。使用它的用户必须要将密钥牢记,如果你忘记密钥,那么没有人能够恢复你加密的文件。

  Truecrypt官方网站Truecrypt使用文档 用非对称加密的方法保管私钥 非对称加密方法所采用公钥和私钥的形式来对文件进行加密。用户可以用公钥来对文件进行加密,用私钥对文件解密。常见的非对称加密算法有RSA、Elgamal、ECC等等。非对称加密的好处是密钥的复杂度一般很高,可以很有效的防止被暴力破解。缺点是有一定的使用门槛,不太适合普通级用户。Go to top 方法一、个人用户可以考虑使用RSA来进行加密。首先,可以创建公钥和私钥,点击这里生成密钥。将公钥私钥妥善保管后,便可以用公钥加密和私钥解密了,点击这里进行加密和解密。RSA公钥和私钥的产生过程RSA公钥和私钥的产生过程随意选择两个大的素数p和q,p不等于q,计算N=pq。根据欧拉函数,求得r= φ(N) = φ(p)φ(q) = (p-1)(q-1)选择一个小于r的整数e,求得e关于模r的模反元素,命名为d。(模反元素存在,当且仅当e与r互质)将p和q的记录销毁。(N,e)是公钥,(N,d)是私钥。Go to top方法二、比较成熟的非对称加密软件有我们可以采用PGP(Pretty Good Privacy)工具来对文件进行加密。PGP加密可以让每个公钥邦定到一个用户的所有信息。相比RSA来讲,PGP的功能更加完善可靠。但是随着PGP的升级,新的加密消息有可能不被旧的PGP系统解密,所以用户在使用PGP之前应该首先熟悉PGP的设置。PGP加密工具网上有很多,编者就不列举了。

  wiki中关于PGP的介绍PGP在线加解密系统PGP命令FAQ 高级方法保管私钥 上述保管私钥的方式都很常见,有经验的攻击者依然可能得到用户的私钥文件。关于更加高级隐秘的私钥保管方式,参见以后的比特币高级教学内容。

  B. 加密货币价格显著下跌,加密货币是如何加密的

  像比特币这样的加密货币比想象中要安全,而安全问题在于加密货币交易所。密码货币是一种加密的、分散的数字货币,它在同行间传递,通过一个叫做采矿的程序在公共账簿中确认。

  人们一直认为,加密货币本身毫无价值,并将其视为庞氏骗局和泡沫的根源。但是,加密货币最大的问题也许并不在于它注定要投资哪种类型的资产,而是它是否足够安全,能够让普通投资者用自己的一生来投资。

  这两家公司寻求解密区块链账本上的交易,以探寻交易者的身份及其支付历史,并在此过程中形成了一个蓬勃发展的影子行业。同时,也有一些黑客为加密货币交易所开发了各种各样的算法来提取大量资金。

  C. 比特币的私钥怎么生成的

  私钥是密文持有人设置的随机的数字。

  私钥的生成是随机的数字,通过抛硬币将正面向上的计为0,反面向上计为1,连续抛256次,就随机得到一个256位的二进制数字。生成了私钥,就可以通过加密函数来生成一个地址。私钥是一个64个字符长的代码,包括字母a到f和数字1到9的任何混合。

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

  比特币的核心技术包括1、非对称加密技术 2、点对点传输技术 3、哈希现金算法机制。

  1.非对称加密技术和对称加密技术最大的不同就是有了公钥和私钥之分。非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。公钥是公开的,私钥是保密的。 由于不涉及私钥的传输,整个传输过程就变得安全多了。后来又出现了具备商业实用性的非对称RSA加密算法以及后来的椭圆曲线加密算法(ECC),这些都奠定了加密算法理论的基础,但是美国国家安全局NSA最初认为这些技术对国家安全构成威胁,所以对这些技术进行了严密的监控,知道20世纪90年代末NSA才放弃了对这些技术的监控,这些非对称技术才最终走入了了公众的视野。这项技术对应到比特币场景中就是比特币的地址和私钥。

  2.点对点传输技术顾名思义,就是无需中心服务器、个体之间可以相互传输信息的技术,P2P网络的重要目标就是让所有客户端都能提供资源,包括宽带、存储空间和计算能力。 对应到比特币网络中就是利用点对点的技术实现真正的去中心化。

  3.哈希现金算法机制就是让那些制造垃圾邮件的人付出相应的代价!发送者需要付出一定的工作量,比如说哈希运算,几秒钟时间对于普通用户不算什么,但对于垃圾邮件的发送者每封邮件都要花几秒钟的时间,这样的成本是没有办法负担的。同时每次运算都会盖上一个独一无二的时间戳,这样就能保证邮件发送方不能重复使用一个运算结果。 对于比特币而言也是同样的道理,如何保证一笔数字货币没有被多次消费(Double Spending),就类似于验证一封邮件没有被多次发送,所以就要保证每一笔交易顺利完成,必须要付出一定的工作量(proof of Work),并且在完成交易时盖上一个时间戳表示交易完成的时间。

  E. (四)比特币加密原理

  这篇文章将会讲解比特币的加密原理。比特币之所以这么安全,就是因为它的加密机制。

  哈希又称为散列,简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。

  那么怎么保证原文没用被第三方篡改呢?答案就是数字签名。

  这个类似于现实中的签名,就是在信息后面加上另一段内容,作为发送者的证明并证明信息没有被篡改。

  如上图所示,

   分析: 假设C截取信息,他想篡改内容。首先签名无法篡改,因为他没有发送方的私钥,如果用自己的私钥进行签名,那么接收方用发送方的公钥解密时是解不开的。所以他只能篡改密文。但接收方解出密文并进行哈希运算后得到的摘要必然和原来的摘要不同,而用发送方的公钥解密出签名得到的摘要肯定不会被篡改,所以两次摘要就会出现不一致,就能确认内容被篡改了。

  非对称加密和数字签名这一块稍微有点绕,不过你看懂了之后一定会说一句:中本聪666!!!

  F. 高中生如何理解比特币加密算法

  加密算法是数字货币的基石,比特币的公钥体系采用椭圆曲线算法来保证交易的安全性。这是因为要攻破椭圆曲线加密就要面对离散对数难题,目前为止还没有找到在多项式时间内解决的办法,在算法所用的空间足够大的情况下,被认为是安全的。本文不涉及高深的数学理论,希望高中生都能看懂。

  密码学具有久远的历史,几乎人人都可以构造出加解密的方法,比如说简单地循环移位。古老或简单的方法需要保密加密算法和秘钥。但是从历史上长期的攻防斗争来看,基于加密方式的保密并不可靠,同时,长期以来,秘钥的传递也是一个很大的问题,往往面临秘钥泄漏或遭遇中间人攻击的风险。

  上世纪70年代,密码学迎来了突破。Ralph C. Merkle在1974年首先提出非对称加密的思想,两年以后,Whitfield Diffie和Whitfield Diffie两位学者以单向函数和单向暗门函数为基础提出了具体的思路。随后,大量的研究和算法涌现,其中最为著名的就是RSA算法和一系列的椭圆曲线算法。

  无论哪一种算法,都是站在前人的肩膀之上,主要以素数为研究对象的数论的发展,群论和有限域理论为基础。内容加密的秘钥不再需要传递,而是通过运算产生,这样,即使在不安全的网络中进行通信也是安全的。密文的破解依赖于秘钥的破解,但秘钥的破解面临难题,对于RSA算法,这个难题是大数因式分解,对于椭圆曲线算法,这个难题是类离散对数求解。两者在目前都没有多项式时间内的解决办法,也就是说,当位数增多时,难度差不多时指数级上升的。

  那么加解密如何在公私钥体系中进行的呢?一句话,通过在一个有限域内的运算进行,这是因为加解密都必须是精确的。一个有限域就是一个具有有限个元素的集合。加密就是在把其中一个元素映射到另一个元素,而解密就是再做一次映射。而有限域的构成与素数的性质有关。

  前段时间,黎曼猜想(与素数定理关系密切)被热炒的时候,有一位区块链项目的技术总监说椭圆曲线算法与素数无关,不受黎曼猜想证明的影响,就完全是瞎说了。可见区块链项目内鱼龙混杂,确实需要好好洗洗。

  比特币及多数区块链项目采用的公钥体系都是椭圆曲线算法,而非RSA。而介绍椭圆曲线算法之前,了解一下离散对数问题对其安全性的理解很有帮助。

  先来看一下 费马小定理

   原根 定义:

  两个定理:

  基于此,我们可以看到,{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);具体的定义和概念如下:

  好了,是时候来看一下比特币的椭圆曲线算法是一个怎样的椭圆曲线了。简单地说,就是上述参数取以下值的椭圆曲线:

  椭圆曲线定义了加法,其定义是两个点相连,交与图像的第三点的关于x轴的对称点为两个点的和。网上这部分内容已经有很多,这里不就其细节进行阐述。

  但细心的同学可能有个疑问,离散对数问题的难题表现在求幂容易,但求其指数非常难,然而,椭圆曲线算法中,没有求幂,只有求乘积。这怎么体现的是离散对数问题呢?

  其实,这是一个定义问题,最初椭圆曲线算法定义的时候把这种运算定义为求和,但是,你只要把这种运算定义为求积,整个体系也是没有问题的。而且如果定义为求积,你会发现所有的操作形式上和离散对数问题一致,在有限域的选择的原则上也是一致的。所以,本质上这还是一个离散对数问题。但又不完全是简单的离散对数问题,实际上比一般的离散对数问题要难,因为这里不是简单地求数的离散对数,而是在一个自定义的计算上求类似于离散对数的值。这也是为什么椭圆曲线算法采用比RSA所需要的(一般2048位)少得多的私钥位数(256位)就非常安全了。

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

  参加比特币源码研读班后首次写作,看到前辈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

  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] 域(数学)维基网络

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

  H. 比特币的加密(秘钥、地址、脚本验证)

  https://en.bitcoin.it/wiki/Address

  https://www.cnblogs.com/zhaoweiwei/p/address.html

  生成方式:

  P2PKH的交易脚本

  举个真实的例子:

  ScriptSig:

  PUSHDATA(72)[9701] PUSHDATA(33)

  []

  这里面的一个scriptSig由2部分组成,第一部分是签名,第二部分是公钥,PUSHDATA(N),表示要压入栈顶的byte,1个byte表示2个字符,PUSHDATA(72)表示压入144个字符

  Output Scripts

  HASH160 PUSHDATA(20)[] EQUAL

  DUP HASH160 PUSHDATA(20)[] EQUALVERIFY CHECKSIG

  第二个找零output地址因为是P2PKH开头的,所以格式和描述的一样

  https://www.hibtc.org/2428.html

  结合多重签名一起使用

  scriptSig: ..signatures...

  scriptPubKey: OP_HASH160 OP_EQUAL

  表示一共有n个参与方,只要有m个参与方同意了这笔交易,则这笔交易就生效了,具体的规则是通过scriptHash里面的脚本内容决定的

  m-of-n multi-signature transaction:

  scriptSig: 0 ...