风险提示:理性看待区块链,提高风险意识!
比特币的密码学技术
首页 > 币界资讯 > 区块链新闻 2018-05-02 14:50:18


在正式进入比特币开发之前,我们需要知道密码学的基础原理和种类,如果没有这些基础知识的垫底,后面学习起来是非常困难的。希望各位伙伴能够耐心把密码学这部分给了解透切。

密码学技术

工程领域从来没有黑科技;密码学不是工程。

密码学在信息技术领域的重要地位无需多言。如果没有现代密码学的研究成果,人类社会根本无法进入信息时代。

密码学领域十分繁杂,本章将介绍密码学领域中跟区块链相关的一些基础知识,包括 hash 算法与摘要、加密算法、数字签名和证书、PKI 体系、Merkle 树、同态加密等,以及如何使用这些技术实现信息的机密性、完整性、认证性和不可抵赖性。

Hash算法

Hash (哈希或散列)算法是信息技术领域非常基础也非常重要的技术。它能任意长度的二进制值(明文)映射为较短的固定长度的二进制值(Hash 值),并且不同的明文很难映射为相同的 Hash 值。

例如计算一段话“hello blockchain world”的 MD5 hash 值为 89242549883a2ef85dc81b90fb606046

$ echo "hello blockchain world"|md589242549883a2ef85dc81b90fb606046

这意味着我们只要对某文件进行 MD5 Hash 计算,得到结果为 89242549883a2ef85dc81b90fb606046,这就说明文件内容极大概率上就是 “hello blockchain world”。可见,Hash 的核心思想十分类似于基于内容的编址或命名。

注:hash 值在应用中又被称为指纹(fingerprint)、摘要(digest)。

注:MD5 是一个经典的 hash 算法,其和 SHA-1 算法都已被 证明 安全性不足应用于商业场景。

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

  1. 正向快速:给定明文和 hash 算法,在有限时间和有限资源内能计算出 hash 值。
  2. 逆向困难:给定(若干) hash 值,在有限时间内很难(基本不可能)逆推出明文。
  3. 输入敏感:原始输入信息修改一点信息,产生的 hash 值看起来应该都有很大不同。
  4. 冲突避免:很难找到两段内容不同的明文,使得它们的 hash 值一致(发生冲突)。


冲突避免有时候又被称为“抗碰撞性”。如果给定一个明文前提下,难以找到碰撞的另一个明文,称为“弱抗碰撞性”;如果难以找到任意两个明文,发生碰撞,则称算法具有“强抗碰撞性”。


很多场景下,也要求对于任意长的输入内容,输出定长的 hash 结果。


流行的算法


目前流行的 Hash 算法包括 MD5、SHA-1 和 SHA-2。


MD4(RFC 1320)是 MIT 的 Ronald L. Rivest 在 1990 年设计的,MD 是 Message Digest 的缩写。其输出为 128 位。MD4 已证明不够安全。


MD5(RFC 1321)是 Rivest 于1991年对 MD4 的改进版本。它对输入仍以 512 位分组,其输出是 128 位。MD5 比 MD4 复杂,并且计算速度要慢一点,更安全一些。MD5 已被证明不具备“强抗碰撞性”。


SHA (Secure Hash Algorithm)是一个 Hash 函数族,由 NIST(National Institute of Standards and Technology)于 1993 年发布第一个算法。目前知名的 SHA-1 在 1995 年面世,它的输出为长度 160 位的 hash 值,因此抗穷举性更好。SHA-1 设计时基于和 MD4 相同原理,并且模仿了该算法。SHA-1 已被证明不具备“强抗碰撞性”。


为了提高安全性,NIST 还设计出了 SHA-224、SHA-256、SHA-384,和 SHA-512 算法(统称为 SHA-2),跟 SHA-1 算法原理类似。SHA-3 相关算法也已被提出。


目前,一般认为 MD5 和 SHA1 已经不够安全,推荐至少使用 SHA2-256 算法。


性能


一般的,Hash 算法都是算力敏感型,意味着计算资源是瓶颈,主频越高的 CPU 进行 Hash 的速度也越快。


也有一些 Hash 算法不是算力敏感的,例如 scrypt,需要大量的内存资源,节点不能通过简单的增加更多 CPU 来获得 hash 性能的提升。


数字摘要

顾名思义,数字摘要是对数字内容进行 Hash 运算,获取唯一的摘要值来指代原始数字内容。

数字摘要是解决确保内容没被篡改过的问题(利用 Hash 函数的抗碰撞性特点)。

数字摘要是 Hash 算法最重要的一个用途。在网络上下载软件或文件时,往往同时会提供一个数字摘要值,用户下载下来原始文件可以自行进行计算,并同提供的摘要值进行比对,以确保内容没有被修改过。

加解密算法


算法体系

现代加密算法的典型组件包括:加解密算法、加密密钥、解密密钥。其中,加解密算法自身是固定不变的,一般是公开可见的;密钥则往往每次不同,并且需要保护起来,一般来说,对同一种算法,密钥长度越长,则加密强度越大。

加密过程中,通过加密算法和加密密钥,对明文进行加密,获得密文。

解密过程中,通过解密算法和解密密钥,对密文进行解密,获得明文。

根据加解密的密钥是否相同,算法可以分为对称加密(symmetric cryptography,又称公共密钥加密,common-key cryptography)和非对称加密(asymmetric cryptography,又称公钥加密,public-key cryptography)。两种模式适用于不同的需求,恰好形成互补,很多时候也可以组合使用,形成混合加密机制。

并非所有加密算法的强度都可以从数学上进行证明。公认的高强度加密算法是在经过长时间各方面实践论证后,被大家所认可,不代表其不存在漏洞。但任何时候,自行发明加密算法都是一种不太明智的行为。

对称加密

顾名思义,加解密的密钥是相同的。

优点是加解密效率高(速度快,空间占用小),加密强度高。

缺点是参与多方都需要持有密钥,一旦有人泄露则安全性被破坏;另外如何在不安全通道下分发密钥也是个问题。

对称密码从实现原理上可以分为两种:分组密码和序列密码。前者将明文切分为定长数据块作为加密单位,应用最为广泛。后者则只对一个字节进行加密,且密码不断变化,只用在一些特定领域,如数字媒介的加密等。

代表算法包括 DES、3DES、AES、IDEA 等。

  • DES(Data Encryption Standard):经典的分组加密算法,1977 年由美国联邦信息处理标准(FIPS)所采用 FIPS-46-3,将 64 位明文加密为 64 位的密文,其密钥长度为 56 位 + 8 位校验。现在已经很容易被暴力破解。
  • 3DES:三重 DES 操作:加密 --> 解密 --> 加密,处理过程和加密强度优于 DES,但现在也被认为不够安全。
  • AES(Advanced Encryption Standard):美国国家标准研究所(NIST)采用取代 DES 成为对称加密实现的标准,1997~2000 年 NIST 从 15 个候选算法中评选 Rijndael 算法(由比利时密码学家 Joan Daemon 和 Vincent Rijmen 发明)作为 AES,标准为 FIPS-197。AES 也是分组算法,分组长度为 128、192、256 位三种。AES 的优势在于处理速度快,整个过程可以数学化描述,目前尚未有有效的破解手段。

适用于大量数据的加解密;不能用于签名场景;需要提前分发密钥。

注:分组加密每次只能处理固定长度的明文,因此过长的内容需要采用一定模式进行加密,《实用密码学》中推荐使用 密文分组链接(Cipher Block Chain,CBC)、计数器(Counter,CTR)模式。

非对称加密

非对称加密是现代密码学历史上最为伟大的发明,可以很好的解决对称加密需要的提前分发密钥问题。


顾名思义,加密密钥和解密密钥是不同的,分别称为公钥和私钥。


公钥一般是公开的,人人可获取的,私钥一般是个人自己持有,不能被他人获取。


优点是公私钥分开,不安全通道也可使用。


缺点是加解密速度慢,一般比对称加解密算法慢两到三个数量级;同时加密强度相比对称加密要差。


非对称加密算法的安全性往往需要基于数学问题来保障,目前主要有基于大数质因子分解、离散对数、椭圆曲线等几种思路。

代表算法包括:RSA、ElGamal、椭圆曲线(Elliptic Curve Crytosystems,ECC)系列算法。

  • RSA:经典的公钥算法,1978 年由 Ron Rivest、Adi Shamir、Leonard Adleman 共同提出,三人于 2002 年获得图灵奖。算法利用了对大数进行质因子分解困难的特性,但目前还没有数学证明两者难度等价,或许存在未知算法在不进行大数分解的前提下解密。
  • Diffie-Hellman 密钥交换:基于离散对数无法快速求解,可以在不安全的通道上,双方协商一个公共密钥。
  • ElGamal:由 Taher ElGamal 设计,利用了模运算下求离散对数困难的特性。被应用在 PGP 等安全工具中。
  • 椭圆曲线算法(Elliptic curve cryptography,ECC):现代备受关注的算法系列,基于对椭圆曲线上特定点进行特殊乘法逆运算难以计算的特性。最早在 1985 年由 Neal Koblitz 和 Victor Miller 分别独立提出。ECC 系列算法一般被认为具备较高的安全性,但加解密计算过程往往比较费时。


一般适用于签名场景或密钥协商,不适于大量数据的加解密。

RSA 算法等已被认为不够安全,一般推荐采用椭圆曲线系列算法。

混合加密机制

即先用计算复杂度高的非对称加密协商一个临时的对称加密密钥(会话密钥,一般相对内容来说要短的多),然后双方再通过对称加密对传递的大量数据进行加解密处理。

典型的场景是现在大家常用的 HTTPS 机制。HTTPS 实际上是利用了 Transport Layer Security/Secure Socket Layer(TLS/SSL)来实现可靠的传输。TLS 为 SSL 的升级版本,目前广泛应用的为 TLS 1.0,对应到 SSL 3.1 版本。

建立安全连接的具体步骤如下:

  • 客户端浏览器发送信息到服务器,包括随机数 R1,支持的加密算法类型、协议版本、压缩算法等。注意该过程为明文。
  • 服务端返回信息,包括随机数 R2、选定加密算法类型、协议版本,以及服务器证书。注意该过程为明文。
  • 浏览器检查带有该网站公钥的证书。该证书需要由第三方 CA 来签发,浏览器和操作系统会预置权威 CA 的根证书。如果证书被篡改作假(中间人攻击),很容易通过 CA 的证书验证出来。
  • 如果证书没问题,则用证书中公钥加密随机数 R3,发送给服务器。此时,只有客户端和服务器都拥有 R1、R2 和 R3 信息,基于 R1、R2 和 R3,生成对称的会话密钥(如 AES 算法)。后续通信都通过对称加密进行保护。


目前我们正在寻找广州地区的区块链培训讲师,如果你觉得你适合的话,可以在我们公众号上留言:区块链研究实验室

币界网免责声明:

1.本网站所提供的所有信息仅供参考,不构成任何投资建议。

2.用户在使用本网站的信息时应自行判断和承担风险。

3.币界网不对用户因使用本网站信息而导致的任何损失负责。

4.用户在进行任何投资活动前应自行进行调查和研究。

5.币界网不对用户基于本网站信息做出的任何投资决策负责。

6.用户在本网站发布的任何内容均由其个人负责,与币界网无关。

上一篇: 11岁的孩子对区块链的认知,值得大多数人自省
下一篇: 技术视角下的币圈节奏分类,没错过,不放过!
推荐专栏
web3首席知识博主
一位相信价值投资的币圈KOL。稳定盈利的缠论野生交易员 #BTC行情分析师 #价值投资 #链上数据分析
爱Web 3,爱生活,爱科技,爱炒币的老韭菜
热门币种
更多
币种
价格
24H涨跌幅
BTC比特币
¥188,525.06
26,414.80 USDT
+1.56%
ETH以太坊
¥11,955.42
1,675.11 USDT
+2.42%
USDT泰达币
¥7.23
1.01 USDT
+0.04%
BNB币安币
¥1,561.52
218.79 USDT
+2.46%
XRP瑞波币
¥3.78
0.53000 USDT
+1.81%
USDC
¥7.14
1.00 USDT
-0.02%
OKBOK币
¥313.86
43.98 USDT
+1.47%
ADA艾达币
¥1.93
0.27000 USDT
+4.25%
DOGE狗狗币
¥0.45540
0.06381 USDT
+1.94%
SOL
¥156.15
21.88 USDT
+6.4%
热搜币种
更多
币种
价格
24H涨跌幅
Filecoin
¥25.23
3.4693 USDT
+2.01%
dYdX
¥15.86
2.1806 USDT
+10.96%
Curve
¥3.40
0.468 USDT
-0.66%
Yield Guild Games
¥1.89
0.2594 USDT
+14.68%
Terra Classic
¥0.00
6.444E-5 USDT
-0.32%
比特币
¥192,083.14
26414.8 USDT
+1.56%
Shiba Inu
¥0.00
8.31E-6 USDT
+1.96%
柚子
¥4.31
0.5927 USDT
+2.42%
Livepeer Token
¥47.64
6.551 USDT
+11.45%
FTX Token
¥7.80
1.072 USDT
-1.01%
Conflux
¥0.94
0.1299 USDT
+3.59%
Gala
¥0.15
0.019985 USDT
+2.7%
最新快讯
更多
DIGITIMES Research:预计 2024 年高端人工智能服务器出货量将达 33.7 万台
2023-08-24 13:42:06
区块链保险协议 Nexus Mutual 通过质押平台 Kiln 质押1,100万美元 $ETH
2023-08-24 13:40:44
币安停止部分现货交易对的现货网格交易服务
2023-08-24 13:39:31
Bithumb正式开通与LBank的白名单
2023-08-24 13:19:55
数据:某巨鲸花费400万美元买入UNI、LDO和AAVE
2023-08-24 12:51:16
巨鲸0xa38c在过去一小时内花费400万枚USDT买入UNI、LDO和AAVE
2023-08-24 12:51:16
巨鲸0xa38c在过去一小时内总共花费400万枚USDT买入UNI、LDO和AAVE
2023-08-24 12:51:16
下载币界网APP