Board logo

标题: 区块链背后的密码学原理(1) [打印本页]

作者: look_w    时间: 2019-3-8 20:10     标题: 区块链背后的密码学原理(1)

密码学是区块链中一重大技术组成,在理论框架总结一下,以供后来者学习。
序言

密码学有3个主要目的:加密 Encryption ,认证 Authentication ,识别 Identification

1,加密阻止恶意者读取你的数据

2,认证阻止恶意者在不被发现的情况下改动你的数据

3,识别阻止恶意者假装你
一、哈希

数据摘要算法,或称为哈希算法、散列算法,它能任意长度的二进制值(明文)映射为较短的固定长度的二进制值(Hash值),并且不同的明文很难映射为相同的Hash值。严格来说并不能算是一种加密算法,只能说是一种摘要算法(数据摘要算法是密码学算法中非常重要的一个分支,它通过对所有数据提取指纹信息以实现数据签名、数据完整性校验等功能,由于其不可逆性,有时候会被用做敏感信息的加密。)

特点

一个优秀的 hash 算法,将能实现:

1,正向快速:给定明文和 hash 算法,在有限时间和有限资源内能计算出 hash 值。

2,逆向困难:给定(若干) hash 值,在有限时间内很难(基本不可能)逆推出明文。

3,输入敏感:原始输入信息修改一点信息,产生的 hash 值看起来应该都有很大不同。

4,抗碰撞性:很难找到两段内容不同的明文,使得它们的 hash 值一致。如果给定一个明文前提下,无法找到碰撞的另一个明文,称为“弱抗碰撞性”;如果无法找到任意两个明文,发生碰撞,则称算法具有“强抗碰撞性”。

代表算法

MD5(不够安全),SHA系列(SHA1不够安全,推荐至少使用SHA2-256)

相关概念

数字摘要:

顾名思义,数字摘要是对数字内容进行 Hash 运算,获取唯一的摘要值来指代原始数字内容。 数字摘要是解决确保内容没被篡改过的问题(利用 Hash 函数的抗碰撞性特点)。数字摘要是 Hash 算法最重要的一个用途。在网络上下载软件或文件时,往往同时会提供一个数字摘要值,用户下载下来原始文件可以自行进行计算,并同提供的摘要值进行比对,以确保内容没有被修改过。

二次哈希:

在比特币中,工作量证明和密钥编码过程中多次使用了二次哈希,如SHA(SHA256(k))或者RIPEMD160(SHA256(K)),这种方式带来的好处是增加了工作量或者在不清楚协议的情况下增加破解难度,从安全性角度并没有显著增加(如果是暴力穷举破解的话,需要增加一倍破解时间)。真正的二次哈希是基于加盐的哈希,什么意思呢?对于特定的待散列数据和特定的散列算法,可以知道散列值是一定的,这种情况下如果用散列保护敏感数,那就很容易使用字典攻击反向推算,比如我计算123456的SHA256值就可以反推了,解决办法就是先做一次散列,再加一次随机数据以后再做一次散列,随机数据就是所谓的盐。





欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0