0%

简介

椭圆曲线加密法是一种基于离散对数问题的非对称(或公钥) 加密法, 可以用对椭圆曲线上的点进行加法或乘法运算来表达。在Bitcoin中使用的是secp256k1这条椭圆曲线

阅读全文 »

前言

2014HITB-Exploiting ECDSA Failures in the Bitcoin Blockchain中他所使用提取签名的方法是通过Bloomfilter实现的,作者提到:

  • first pass:把签名添加到Bloomfilter里面,作者所使用的是:dablooms,如果过滤器中已经存在了该签名,则把该签名放到一个map中叫做:potentialValues
  • second pass:重新遍历signature,如果签名存在于potentialValues中,导出签名以及它的其他信息到map:rMap中

阅读全文 »

比特币中的签名

签名存在于解锁脚本里面即ScriptSig,主要有身份认证,就是签名是用户使用私钥完成的,所以证明了花的钱是自己的,之后解锁脚本会去验证锁定脚本,进而解锁UTXO,所用到的也是sig和PubKey进行交易验证,验证成功即可完成交易产生新的UTXO。
那么在Bitcoin中验证交易的具体过程是怎样的呢?并且签名的类型也是多种:SIGHASH_ALL, SIGHASH_NONE, SIGHASH_SINGLE。今天我门主要探索的是SIGHASH_ALL中交易的验证过程。

阅读全文 »

简介

Bloom filter是一个数据结构,它可以用来判断某个元素是否在集合内,具有运行快速、内存占用小的特点。
而高效插入和查询的代价就是Bloom filter是一个基于概率的数据结构,它只能告诉我们一个元素绝对不在集合内或可能在集合内,而不能告诉我们一定在集合内。

阅读全文 »

简介

数字签名算法(DSA)在联邦信息处理标准FIPS中有详细论述,称为数字签名标准。它的安全性基于素域上的离散对数问题。椭圆曲线密码(ECC)由Neal Koblitz和Victor Miller于1985年发明。它可以看作是椭圆曲线对先前基于离散对数问题(DLP)的密码系统的模拟,只是群元素由素域中的元素数换为有限域上的椭圆曲线上的点。椭圆曲线密码体制的安全性基于椭圆曲线离散对数问题(ECDLP)的难解性。椭圆曲线离散对数问题远难于离散对数问题,椭圆曲线密码系统的单位比特强度要远高于传统的离散对数系统。因此在使用较短的密钥的情况下,ECC可以达到于DL系统相同的安全级别。这带来的好处就是计算参数更小,密钥更短,运算速度更快,签名也更加短小。因此椭圆曲线密码尤其适用于处理能力、存储空间、带宽及功耗受限的场合。

阅读全文 »

简介

Zcash(ZEC)由Zooko Wilcox-O’Hearn于2016年推出,基于Zerocoin协议,Zcash(ZEC)是一种去中心化,开放源代码,以隐私为重点的加密货币,可实现交易的选择性透明化。Zcash交易可以是透明的,也可以通过称为zk-SNARKs的零知识证明来屏蔽。这允许网络维护余额的安全分类帐,而无需透露各方或涉及的金额。代替发布支出授权和交易值,对交易元数据进行加密,并使用zk-SNARK证明没有人是不诚实的。

阅读全文 »

区块的源码

1
// Block represents an entire block in the Ethereum blockchain.
2
type Block struct {
3
    header       *Header
4
    uncles       []*Header
5
    transactions Transactions
6
 
7
    // caches
8
    hash atomic.Value
9
    size atomic.Value
10
 
11
    // Td is used by package core to store the total difficulty
12
    // of the chain up to and including the block.
13
    td *big.Int
14
 
15
    // These fields are used by package eth to track
16
    // inter-peer block relay.
17
    ReceivedAt   time.Time
18
    ReceivedFrom interface{}
19
}
阅读全文 »

有关Bitcoin中部分签名的提取

前言

    刚刚接触Bitcoin Wallet 里面的构造还不是很清楚,提取和解析指令也不是很熟悉,所以听到这个题目,有些无从下手,于是我先熟悉了bitcoin-cli的指令,例如:getblockhash + 区块高度、getblock + blockhash、getrawtransaction + Tx、decoderawtransaction + (getrawtransaction所获得的字符串),想要获得签名r主要是通过这些指令,之后我学习了解析交易字符串后的各部分所代表的含义,通过学习精通比特币,我了解到在交易过程中,存在解锁脚本和锁定脚本,结合解析出的信息,我发现里面存在scriptSig这个字段名,但是里面存在两个字段:asm和hex,深入了解后发现,hex代表的是签名脚本的16进制字符串,至此我找到了目标提取字符串。下面具体介绍提取过程。

阅读全文 »
#