深入区块链技术之技术基础
Posted tttyyy556
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深入区块链技术之技术基础相关的知识,希望对你有一定的参考价值。
技术基础
区块链的技术定义
-
区块链的存储基于分布式数据库; 区块链主要一个特点就是去中心化 -
数据库是区块链的数据载体,区块链是交易的业务逻辑载体; -
区块链按时间序列化区块数据,整个网络有一个最终确定状态; -
区块链只对添加有效,对其他操作无效;区块链是不能删除的,这个也是不可纂改性质决定的。 -
交易基于非对称加密的公私钥验证;公私钥目前属于比较安全的非对称加密 -
区块链网络要求拜占庭将军容错; -
共识算法能够“解决”双花问题。
区块链的类型
区块链主要是分为共链和联盟链
公链是任何节点都可以上链,比如比特币,任何节点只要挖到矿就可以把区块打包,发布到比特币的链上。
联盟链是有门槛的,也就是说不是任何节点都能够上链,如果想要上链,必须经过别人允许,比如你必须经过门卫的允许,才能进入某些单位。
区块链的核心技术组成
-
P2P 网络协议
这个协议很好理解,就是以前我们用的比特下载,或者其它一些类似的p2p下载工具。
比特币中低层就是基于P2P网络协议,每个节点都是一个比特节点。
-
分布式共识算法
2.1 PoW:通常是指在给定的约束下,求解一个特定难度的数学问题,谁解的速度快,谁就能获得记账权(出块)权利。这个求解过程往往会转换成计算问题,所以在比拼速度的情况下,也就变成了谁的计算方法更优,以及谁的设备性能更好。比特币本身的演化很好地诠释了这个问题,中本聪设计的思路本来是由 CPU 计算。随着市场发展,人们发现 GPU 也可以参与其中,而且效率可以达到十倍百倍,现在,这项工作基本以 ASIC 专业挖矿芯片为主。
这是比特币采用的算法,也就是俗称的挖矿。
2.2 PoS:股权权益证明,其实就是现实中的股份公司制度,谁的股份多,谁的话语权就大,获得的企业分红就大。
-
加密签名算法
区块链需要使用加密算法
每个币种使用的加密算法是不一样的,比如比特币使用的sha256 hash算法,来保证区块不被纂改。
另外区块链一个核心的算法是公私钥算法,比如我们创建账户就是通过公私钥算法来实现的,这里还有基于一个比较不可逆特性,就是无法通过公钥推测出来私钥。
比如比特币以前会有报道说丢失私钥导致大量比特币无法使用的情况,所以私钥只要丢失,基本就不可能恢复。
-
账户与交易模型
UTXO 是“unspent transaction input/output”的缩写,翻译过来就是指“未花费的交易输入输出”。
在比特币中是使用UTXO的,有点类似账本,就是确定某笔交易是否是合法的,也就是说你不能花费你没有的钱。
本文由 mdnice 多平台发布
区块链与密码学第2-4讲:区块链基础技术大剖析之数字签名
【本课堂内容全部选编自PlatON首席密码学家、武汉大学国家网络安全学院教授、博士生导师何德彪教授的《区块链与密码学》授课讲义、教材及互联网,版权归属其原作者所有,如有侵权请立即与我们联系,我们将及时处理。】
2.4.2
数字签名
昨天我们讲到区块链基础技术之一的哈希函数,今天这一讲我们来认识另一个区块链的基础技术——数字签名。
数字签名从字面上理解,是数字化签名。签名由来已久,用途极广。早在中国古代签名便已经广泛应用。我们最熟悉的可能是电视剧中,官老爷升堂断案,对堂下贫民,私用大刑,屈打成招。最后签字画押,按上红手印,这人就天牢见了。
其实古代文人墨客也极喜欢签名,花押又称“押字”,始于唐,兴于宋,盛于元,故又称“元押”。元押多为长方,一般上刻楷书姓氏,下刻八思巴文或花押。
从实用意义上说历代印章大都有防奸辨伪的作用,作为个人任意书写,变化出来的“押字”(有些已不是一种文字,只作为个人专用记号),自然就更难以摹仿而达到防伪的效果,因而这种押字一直沿用到明清时代。花押不是日本语,此名词在中国早有使用,其意思是个人化的署名。
宋徽宗赵佶是著名的书画家,他的“签名档”被人称为“绝押”,其外形有点像写得松散的“天”字,实际上赵佶玩的是拆字游戏,把“天下一人”四字连贯在一起,来表明自己不仅是君临天下的皇帝,且在艺术造诣上也是天下第一。乾隆皇帝更是在自己喜爱的书画作品上盖上数百个印章,来表达物品的归属权。
由此可见,在古代签名就逐渐衍生出一些作用,如:防伪认证,表明主权等等。
时间挪移到现代,签名已经广泛应用到方方面面:购物刷信用卡时,需要签名;友人互达书信时需要签名;公司双方签署合同或协议时也需要签名。而这些基本都是手写签名。
在网络时代,人们通过网络支付费用、买卖股票,为了保证网上商务活动的安全,需要一个很重要的安全机制——数字签名。
数字签名是手写签名数字化的产物,但又有着显著的区不同消息的签名不同,甚至相同消息也有不同的签名,否则签名就会被获取并复制到另外的文件中。数字签名的基础是公钥密码学。
数字签名(又称公钥数字签名)是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。
它是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术来实现的,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。数字签名是非对称密钥加密技术与数字摘要技术的应用。
数字签名原理
数字签名的文件的完整性是很容易验证的(不需要骑缝章,骑缝签名,也不需要笔迹专家),而且数字签名具有不可抵赖性(不可否认性)。
简单地说,所谓数字签名就是附加在数据单元上的一些数据,或是对数据单元所作的密码变换。这种数据或变换允许数据单元的接收者用以确认数据单元的来源和数据单元的完整性并保护数据,防止被人(例如接收者)进行伪造。
它是对电子形式的消息进行签名的一种方法,一个签名消息能在一个通信网络中传输。基于公钥密码体制和私钥密码体制都可以获得数字签名,主要是基于公钥密码体制的数字签名。
包括普通数字签名和特殊数字签名。普通数字签名算法有RSA、ElGamal、Fiat-Shamir、Guillou- Quisquarter、Schnorr、Ong-Schnorr-Shamir数字签名算法、Des/DSA,椭圆曲线数字签名算法和有限自动机数字签名算法等。特殊数字签名有盲签名、代理签名、群签名、不可否认签名、公平盲签名、门限签名、具有消息恢复功能的签名等,它与具体应用环境密切相关。
显然,数字签名的应用涉及到法律问题,美国联邦政府基于有限域上的离散对数问题制定了自己的数字签名标准(DSS)。
我们通过一个例子来了解数字签名的应用,先看下图:
这里面会产生两个问题:
-
这么大一笔资金,这消息是爱丽丝发送的吗,如果是别人呢?怎么确定?
-
要是过后爱丽丝不承认这笔转账怎么办?
数字签名是运用哈希算法和非对称加密算法实现的,要解决上面的两个问题,爱丽丝首先要写一个小纸条“我爱丽丝要向鲍勃转100万”并在下面签名,确保内容认可。
然后将“我爱丽丝要向鲍勃转100万”的小纸条用哈希算法运算一次,会得到一串“天书”般的文字——看不懂且不可逆的字符串。
之后对方用私钥给这段字符加密,加密后是一段密文。这段密文就是双方的数字签名了。双方公布了文本内容,和加密私钥对应的公钥,但两方的私钥不告诉任何人。
我们如何知道笔迹是爱丽丝的呢?这里就涉及到笔迹的鉴别,首先鉴别方要把“我爱丽丝要向鲍勃转100万”哈希处理换算一下,因为哈希算法的性质,会得出一样的结果。之后用公开密钥来解密,如果双方内容完全一致。那么就可以证明,这段文字确实是由保存私钥的人签署的。
并且如果当事人不承认的话,比如事后爱丽丝说我想给鲍勃1万,请他退回99万,如果文本有所改动,就算是私钥正确,哈希处理后的内容也会改变,内容就不是原有哈希值。
这里可以看到数字签名方案一般包括三个过程:
-
系统初始化过程:产生数字签名方案中的所有系统和用户参数(公开的+秘密的)。
-
签名过程:用户利用给定的签名算法对消息签名,签名过程可以公开也可以不公开,但一定包含仅签名者才拥有的秘密信息(签名密钥)。
-
验证过程:验证者利用公开的验证方法对给定消息的签名进行验证。
图:数字签名工作流程示意图
所以数字签名具有以下目的和要求
数字签名的目的:保证信息的完整性和真实性,即消息没有被篡改,而且签名也没有被篡改,消息只能始发于所声称的一方。
一个完善的签名方案应满足以下三个条件:
不可伪造性:其他任何人均不能伪造签名,也不能对接收或发送的信息进行篡改、伪造和冒充。
不可否认性:签名者事后不能否认或抵赖自己的签名。
公正的仲裁:若当事双方对签名真伪发生争执时,能通过公正的仲裁者验证签名来确定其真伪。
有关于数字签名的课程就讲到这里啦,下节课我们将继续解析区块链基础技术之共识算法,共识算法是区块链的发动机,那它是如何运作的呢?下节课揭晓!
以上是关于深入区块链技术之技术基础的主要内容,如果未能解决你的问题,请参考以下文章