密码学技术是区块链技术的核心,现本文将介绍区块链技术涉及到的部分密码学技术知识。包括:hash算法、对称加密与非对称加密以及数字签名等简要地介绍。

一、hash算法

Hash,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,其中散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,但是不可逆向推导出输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。

哈希(Hash)算法,它是一种单向密码体制,即它是一个从明文到密文的不可逆的映射,只有加密过程,没有解密过程。同时,哈希函数可以将任意长度的输入经过变化以后得到固定长度的输出。哈希函数的这种单向特征和输出数据长度固定的特征使得它可以生成消息或者数据。

以比特币区块链为代表,其中工作量证明和密钥编码过程中多次使用了二次哈希,如SHA(SHA256(k))或者RIPEMD160(SHA256(K)),这种方式带来的好处是增加了工作量或者在不清楚协议的情况下增加破解难度。

以比特币区块链为代表,主要使用的两个哈希函数分别是:

1.SHA-256,主要用于完成PoW(工作量证明)计算;

2.RIPEMD160,主要用于生成比特币地址。如下图1所示,为比特币从公钥生成地址的流程。

图1:从公钥生成比特币地址

二、对称加密与非对称加密

对称加密:采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,也称为单密钥加密。优点:加解密速度快;缺点:1.密钥管理量大2.密钥传输信道安全性要求更高3.数字签名的问题。

非对称加密采用两个密钥来进行加密和解密,这两个秘钥是公开密钥(publickey,简称公钥)和私有密钥(private key,简称私钥)。优点:1. 加密和解密能力分开,私钥不能由公钥推导出来2. 多个用户加密的消息只能由一个用户解读(用于公共网络中实现保密通信)3. 只能由一个用户加密消息而使多个用户可以解读(数字签名)4. 无需事先分配密钥5. 密钥持有量大大减少。缺点:加解密速度慢。在比特币区块链系统中,采用非对称加密算法当中的椭圆曲线加密算法。

比特币使用了secp256k1标准所定义的一条特殊的椭圆曲线和一系列数学常数。 secp256k1曲线由下述函数定义,通过该函数可产生一条椭圆曲线,如图2所示:

或者

图2:椭圆曲线

通过该椭圆曲线可以生成公钥,以一个随机生成的私钥k为起点, 我们将其与曲线上已定义的生成点G相乘,获得曲线上的另一点,就得到了相应的公钥K。 生成点是secp256k1标准的一部分, 比特币密钥的生成点都是相同的:{K = k * G},其中k是私钥, G是生成点, 在该曲线上所得的点K是公钥。

因为所有比特币用户的生成点是相同的, 一个私钥k乘以G将得到相同的公钥K。 k和K之间的关系是固定的, 但只能单向运算, 即从k得到K。 这就是可以把比特币地址(K的衍生)与任何人共享而不会泄露私钥(k) 的原因。

三、数字签名

数字签名基于非对称加密,既可以用于证实某数字内容的完整性,又同时可以确认来源。

一个典型的场景是,Alice通过信道发给Bob一个文件(一份信息)。Alice可以先对文件内容进行摘要,然后用自己的私钥对摘要进行加密(签名),之后同时将文件和签名都发给Bob。Bob收到文件和签名后,用Alice的公钥来解密签名,得到数字摘要,与收到文件进行摘要后的结果进行比对。如果一致,说明该文件确实是Alice发过来的(别人无法拥有Alice的私钥),并且文件内容没有被修改过(摘要结果一致)。

知名的数字签名算法包括DSA(Digital Signature Algorithm)和安全强度更高的ECSDA(Elliptic Curve Digital Signature Algorithm)等。除普通的数字签名应用场景外,针对一些特定的安全需求,产生了一些特殊数字签名技术,包括盲签名、多重签名、群签名、环签名等。

四、总结

总而言之,区块链技术作为新兴的技术,其中大量利用了现代密码学的已有成果,包括哈希、加解密、数字签名等。另一方面,区块链系统和诸多新的场景也对密码学和安全技术提出了很多新的需求,反过来也将促进相关学科的进一步发展。

个人技术分享公众号:

区块链及相关密码学技术相关推荐

  1. 工业区块链与关键关联技术融合创新

    11月30日,万向区块链"区块链+"技术部高级总监屠文慧受邀在由湖南省工业和信息化厅主办,长沙经济技术开发区管理委员会.工业互联网产业联盟承办的"2021国际工业区块链大 ...

  2. 刘世锦:引入区块链等相关技术建立政府、企业和个人的绿色责任账户

    十四五规划专家委员会委员.国务院发展研究中心原副主任刘世锦在十四五时期的结构性改革暨<读懂"十四五">专家研讨会上就碳中和目标推动下绿色发展的微观基础发表了看法,他建议 ...

  3. 【区块链之菜鸟入门】区块链——颠覆式创新技术

    摘要: 本文是我为大家分享的区块链技术文章系列中的第一部分[区块链之菜鸟入门]的第四篇,也是本部分的收官之作.话说咱们之前了解了这么多的区块链概念和知识,那么区块链到底对于我们的技术世界有哪些颠覆呢? ...

  4. 区块链——颠覆式创新技术

    前言区块链技术可以说在近期获得了大量的关注,小川行长公开表示央行要研究区块链技术:2015年区块链成为了美国创投中获得融资最高的板块:26 岁少年Vitalik创建的开源区块链平台以太坊,2015 年 ...

  5. 区块链的4种技术创新

    当前,随比特币的出现而出现的创新技术区块链,正成为全球政府.银行.科技巨头们所关注的对象.区块链本身 是一种特殊的数据库技术,是基于密码学中的椭圆曲线数字签名算法(ECDSA)来实现去中心化的P2P系 ...

  6. 区块链具有诸多技术优势 在国外基础教育中的应用案例

    近年来,区块链技术凭借其分布式.安全性.可靠性与数据完整性等特征,得到了广泛关注.区块链技术在基础教育领域的应用也有了一些新进展,其在学分认证.证书管理.数字教育资源.学习者能力与学习成果管理.产学合 ...

  7. 区块链中的密码学(五)-零知识证明简述

    本篇是这个系列的最后一篇,尽管在区块链中还有很多的密码学应用,将来会必然会更多,然而笔者认为,就今天我们有限的学习时间来讲的话,任何人都应该对信息的获取做减法.思来想去,选择了"零知识证明& ...

  8. 从下载到区块链,迅雷分布式技术解读

    作为一名计算机技术宅和迅雷下载重度用户,从当年迅雷刚推出的时候就开始用它,那种眼看着一部几个GB大小的电影在瞬间就下完的感觉特别爽,可以说迅雷是唯一一个陪伴了我十几年到现在还在用的软件了. 十五年来, ...

  9. “中国诺贝尔奖”首位女得主王小云:哈希函数是区块链的起源性技术,区块链已扩展到供应链金融等多领域...

    "哈希函数.数字签名算法.加密算法是密码学三类基础算法,其中哈希函数是起源性技术." 本文旨在传递更多市场信息,不构成任何投资建议. 火星财经APP(微信:hxcj24h)一线报道 ...

  10. 众说区块链:区块链中的侧链技术

    上期<众说区块链>讨论的主题是"中美贸易谈判后双方共同声明对智能合约应用的影响",围绕这个主题Sasha和大家一起分享了一些看法和见解. 本期<众说区块链> ...

最新文章

  1. 京东方剑指物联网领域
  2. ATEN—第十章OSPF的高级配置(4)
  3. 伊利诺伊大学厄巴纳-香槟分校
  4. 《Effective Java》学习笔记 第二章 创建和销毁对象
  5. 林华达视角-概率图模型与计算机视觉
  6. 如何用python编程制作出表格_使用Python轻松制作漂亮的表格
  7. 【Python3网络爬虫开发实战】 2.3-爬虫的基本原理
  8. [Effective JavaScript 笔记]第23条:永远不要修改arguments对象
  9. php对pdf关键字定位,如何在PDF文件中快速查找关键字
  10. War3窗口限定小工具发布
  11. 表达式和返回值(JS)
  12. python做一个考试系统_怎么做一个在线考试系统?
  13. Ubuntu中将otf字体转换为ttf字体
  14. python源代码编译后的文件扩展名-python源代码被解释器转换后的格式是什么?
  15. java毕业设计投标文件在线制作系统mybatis+源码+调试部署+系统+数据库+lw
  16. 联想硬盘保护系统 安装详解
  17. HTML caption文字颜色,HTML caption align 属性 - HTML 颜色参考手册 - 自强学堂
  18. 微信公众号吸粉8大策略,实战运营指南
  19. python上机考试题库_易考吧-2021年无纸化考试专用全国计算机等级考试上机考试题库:二级Python(含二级公共基础知识)...
  20. 小学生遭校长拳击内脏出血 求医救命钱遭抢(图)

热门文章

  1. SEO网站内容优化的6点干货分享分享-飞鱼SEO
  2. c语言房屋程序运行截图,c程序截取屏幕截图
  3. android4.1.1+nexus S安装BT5
  4. Java邮件发送详解
  5. 做数据分析,一定会用到的12类实用图表
  6. Excel的N函数和VALUE函数的使用和区别
  7. 火狐浏览器设置背景图片
  8. 分享网站变黑白色代码整站灰色插件方法
  9. 简化的围棋棋子规则(C++实现)
  10. Symbian开发——Symbian开发知识(转)