摘要:BTC属于加密货币,其中必然涉及到密码学的知识,而比特币比较开放,交易记录,交易金额甚至是底层源代码都是对外开放,那么加密使用在何处?这里就来谈一谈······


1:哈希

哈希函数是密码学的一个重要分支,它是将任意长度的输入变换为固定长度输出的不可逆的单向密码体制,在消息完整性检测(消息认证)和数字签名等方面有广泛的应用。Hash函数也称散列函数,是一种单向密码体制,即它是一个从明文到密文的不可映射的过程,即只有加密过程,没有解密过程

1.1:哈希函数的三个重要性质

  • collision resistance:如果x!=y,那么H(X)!=H(Y),对于一个给定的x很难找到y使得H(X)=H(Y)

  • hiding:已知H(X)无法反推出X,类似于X被隐藏起来了

  • puzzle friendly:对H(X)的范围是无法预测的

1.2:哈希函数介绍

  • 哈希碰撞:对于给定的X和Y,且X!=Y,有可能会得到Hash(X)=Hash(Y),这种情况则称为哈希碰撞。而collision resistance的性质保证如果有Hash(X)!=Hash(Y),则必然有X!=Y(但是这是理想状态,如果学过数据结构的同学应该知道常用的碰到哈希碰撞的解决办法有开放地址法等等)。在实际使用的过程中,哈希碰撞总是难以避免,但是我们只需要尽可能保证在X!=Y的前提下,使得Hash(X)!=Hash(Y),就可以认为其是collision resistance

  • collision resistance的意义:如果我们掌握了一条重要信息X,希望别人知道我有X,但是不希望别人知道X的具体信息,就可以通过告诉别人X的哈希值。由于collision resistance性质的保证,别人没有X,也就没有对应的Hash(X),因此别人也就知道你确实有X这一条信息。

  • hiding:我们认为,给定X和Hash(),可以很容易得到Hash(X),但没有办法在已知Hash(x)和Hash()的情况下,反推出X的具体取值,当然这也是一个理想的情况。

  • collision resistance和hiding结合实现digital commitment(数据保证): 可以拿市值预测的案例,某个人对某个市值进行预测,我们如何保证能够知晓其预测是否准确?最简单的是提前公布, 等待实际结果出现后验证。但实际中,当提前发布预测后,可能会由于预测者本身对市值实际结果造成影响(比如该预测者是业内极具影响力的人物)。 所以,应该将提前将其写于纸上并密封,交给第三方机构保管,等到实际结果出现后开启密封与实际对比,这就是digital commitment。而第三方机构需要能够使人信服,在实际生活中,有很多场景并不存在一个这样的第三方机构,而区块链技术正为此提供了一个很好的解决方法。 我们把预测结果看作X,提前公布Hash(X),等到预测结果发生时间来临后,公布X,如果根据X可以得到公布的Hash(X),则说明公布的X确实为所预先预测的 内容。从而,我们可以实际进行判断预测是否准确。实际使用中,为了X足够大,会对X进行“加盐”,对X拼接一 个nonce,对其整体取Hash。

  • Puzzle friendly:该性质要求哈希值计算事先不可预测, 仅仅根据输入很难预测出输出。例如:我们需要一个哈希值,存在于某一个范围内,只能通过不停运算查找出 来。该性质保证了比特币系统中,只能通过“挖矿”获得BTC。也就是说,该性质保证了工作量证明(POW)机制 可以运行下去【“挖矿难,但验证易”】。 在BTC系统中采用SHA-256和RIPEMD160哈希函数


2:挖矿

挖矿实际就是一个不断测试区块头部(block header)的随机数部分nonce使得整个区块头的哈希值满足H(block header)<= target的过程,这里的target通常前面x位都是0

区块的构成有区块头(block header)和区块体(block body)组成:

区块头的随机数就是nonce

2.1挖矿原理示意图


3:签名

3.1数字签名和手写签名的不同之处:

  • 手写签名是被签文件的物理组成部分;数字签名是连接到被签消息上的数字串

  • 数字签名和所签名的消息能够在网络中传输。手写签名使用传统的安全方式传输

  • 手写签名是通过将它与真是的签名进行对比来验证正确与否;而数字签名是利用公开的验证算法来验证

  • 数字签名的复制品是有效的;手写签名的复制品是无效的。

  • 数字签名是0和1的字符串,因消息而异;手写签名是模拟的,因人而异

3.2数字签名的安全要求:

  • 接受者能够核实签名者对消息的签名

  • 除了签名者,任何人不能伪造消息的签名

  • 同一消息不同时刻其签名是有区别的

  • 签名者事后不能抵赖对消息的签名,出现争议时,第三方可解决争端

3.3加入BTC系统账户:

在BTC系统中创建账户只需要生成一个公私钥对。公私钥对保证了“数字签名”的应用。大致流程如下:比如A转给B,A需要用自己的私钥给该交易签名,B通过A的公钥来验证该交易是否由A发起(保证了交易的安全性)。你可能会担心是否会有两个人有相同的公私钥对,其实不必担心,签名算法中创建相同公私钥对的可能性微乎其微,所以通过大量创建账户来盗取他人交易的做法是不可行的

区块链技术1---密码学基础相关推荐

  1. 区块链技术与密码学联系

    密码学是什么 密码学可以用下面的话来进行概括 Cryptography is the practice and study oftechniques for secure communication ...

  2. [转] 比特币从“不了解”到“被误解”——详解区块链技术

    [From] http://news.ifeng.com/a/20170518/51115911_0.shtml 编者按:本文由 OKLink 区块链研究院投稿,OKlink 为国内领先的比特币交易平 ...

  3. 围观京东云,您有一份区块链技术礼包待查收!

    如今买东西都追求品质,时不时还要选购些境外商品,如此一来酷爱扫货的我们免不了关注货源情况以及运输流程,如何一手掌握个中变化无负担? 同样是精致追求,生鲜品质随时随地被大众关注,无论是带着计步器的鸡还是 ...

  4. 区块链技术发展趋势与银行业探索实践

    在数字化转型的大背景下,全球主要国家都在加快布局区块链技术,抢占新一轮创新变革的高地. 一.区块链技术概述 技术特征 区块链技术是密码学.共识算法.P2P通信.智能合约等多种技术的集成创新,打造了一种 ...

  5. 区块链技术关键词解读:“区块”和“链”

    几个世纪以来,人类社会的商业行为主要依赖于三个方面:等价交换物.交易双方的信任和被证实的身份.简单地说:正在交换什么,谁在确认?商业领域的信任关系通常要依赖于正直.诚信的个人.中介机构或者其他组织才能 ...

  6. 区块链技术下数字货币发展现状与挑战分析

    区块链技术区块链技术被部分学者认为是继互联网之后,下一代对世界有颠覆性影响的核心技术.而这种技术作为数字货币技术的基础,有助于推动数字金融以及数字金融的发展.在对已有文献进行综述的基础上,主要研究区块 ...

  7. 小白入门区块链技术与应用展望(有参考文献)

    区块链技术的技术原理与应用展望      区块链技术是一种去中心化,去信任的分布式数据库技术方案.该数据库由参与系统的所有节点集体维护,具有去中心化,不可篡改,透明,安全等特性.随着比特币数字加密货币 ...

  8. 区块链技术开发三个优势

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 区块链技术开发公司目前的开发空间之大难以述清,尤以对产业转型中的应用较为广泛,但由于区块链技术开发公司目前尚正处风口,武 ...

  9. “区块链技术创新要植根市场”

    2020年,金融科技从战略走向落地. 众所周知,2019年,央行正式发布金融科技三年发展规划,这是我国金融监管机构首次对金融科技进行系统化的归纳与论述,是金融科技发展进程中的里程碑. 时间过半,金融科 ...

  10. 区块链技术的未来应用

    想知道更多关于区块链技术知识,请百度[链客区块链技术问答社区] 链客,有问必答! 区块链是类似Excel电子表格一样的分类帐本,但他们能够接受来自许多不同方的输入.分类账只能在组成员达成共识时才能更改 ...

最新文章

  1. postgresql之数据库管理
  2. flutter图标按钮_Flutter开发第一个项目android studio 开发工具的使用说明
  3. Python并发编程之多进程(一)
  4. WPF通用窗体模板【2】
  5. 使用JIRA搭建企业问题跟踪系统.PART5(转)
  6. solr查询如何支持多个fq 多条件查询
  7. 不用vpn的谷歌翻译网址
  8. 如何低成本做好网络营销
  9. 1415-2结对分组情况
  10. python面向对象的特征_python 面向对象的三大特性
  11. ADIUM不能登录MSN
  12. chrome DevTools之黑箱大法(Blackbox )
  13. Java的继承多态学习总结
  14. 18、分类页面 - 小程序端开发 - 微擎小程序模块应用开发
  15. 一张图学会python递归函数
  16. 织梦可以不用mysql吗_织梦dedecms不用功能精简及安全设置
  17. Intel PinTools 安装使用教程
  18. 微信小程序学习7:路由跳转 - wx.navigateTo() wx.redirectTo()...
  19. 排序算法 | 插入排序算法原理及实现和优化
  20. 【软件相关】如何制作RSS源?

热门文章

  1. 观念什么意思_观念是什么意思
  2. linux给文件夹及子文件(夹)授权
  3. 抖音矩阵系统定制开发,抖音矩阵系统源码独立部署、
  4. centos 4.4 智能DNS(精华解决南北互通方案)
  5. Java获取代理地址和端口
  6. Pangu and Stones(区间DP)
  7. oracle+ace是什么意思,ace是什么意思
  8. 秒杀刘海屏,有望实现手机|平板|电脑三合一,可折叠屏幕究竟是何方神圣?
  9. 高通开发系列 - System之FOTA和DFOTA升级记录
  10. Qt之QWizard向导界面