区块链中的密码学(2):密码学基本介绍

密码学是计算机中比较基础的学科,真正完全搞明白背后的原理,需要深厚的数学功底,涉及到的学科知识包括:高等数学、线性代数、概率论、抽象代数、数论等知识。

感兴趣的同学可以就这个主题进行深入研究。对于一般的应用者,我们核心是先要知道好一些基本的密码学算法,然后重点掌握算法的应用场景,边界以及一些常见问题下密码学的运用。

密码学基本知识

密码,最初的目的是用于对信息加密,计算机领域的密码技术种类繁多。但随着密码学的运用,密码还被用于身份认证、防止否认等功能上。

最基本的,是信息加解密分为对称加密(Sysmmetric Cryptography)和非对称加密(Public-Key Cryptography,Asymmetric Cryptography),这两者的区别是是否使用了相同的密钥。

除了信息的加解密,还有用于确认数据完整性(Integrity)的单向散列(One-Way Hash Function)技术,又称密码检验(Cryptographic Checksum)、指纹 (Fingerprint)、消息摘要 (Message Digest)。

信息的加解密与信息的单向散列的区别是,对称与非对称加密是可以通过密钥解出明文,而单向散列是不可逆的。信息的加解密,密文必定是不定长的,而单向散列可以是定长的。

结合密码学的加解密技术和单向散列技术,又有了用于防止篡改的消息认证码技术,防止伪装的数字签名技术以及认证证书

应用场景

在上篇《提升密码学的认知》中,我们提到,密码学不是简单的加解密,它核心要解决的问题是很丰富的。在这里针对不同的应用场景,可以总结出下表:

威胁

特征

相应技术

扫描二维码关注公众号,回复: 8746587 查看本文章

窃听

机密性

对称、非对称加密

篡改

完整性

单向散列、消息认证码、数字签名

伪装

身份认证

消息认证、数字签名

否认

不可否认

数字签名

我们可以举几个常见的例子来说明密码学的技术运用。

1. 文件指纹

文件指纹一般就是把一个文件的内容或者头尾截取一部分做一个Hash,用来标识文件的唯一性。2005年前后,网络基础设施还很差,很多文件的下载旁边还放一个MD5码,用来验证下载到本地的文件是否正确。

当年做P2P文件共享时,就用文件指纹来标记同一个文件,在索引的时候做好这些文件的存储点。用户下载的时候,就可以从过点一起下载。

在用百度网盘的时候,会出现一个大文件,瞬间上传成功。核心技术是啥?其实就是文件指纹。他在上传的时候,先获取本地文件的指纹,然后去服务器搜索,如果找到同样指纹的文件,就不需要重新上传,白占用带宽和存储,直接显示上传成功。

当然还会有git,整个都是围绕文件指纹来设计的。

2. 账户密码存储

前些年,一个网站在注册账户的时候,经常明文存储用户的注册密码。结果在被脱库,结果网站账号和密码都被泄漏。进而,这些黑客还拿着账户和密码去其他常见的网站上去做尝试,进而破解掉更多账号。

这种安全事故屡见不鲜。就来随着各种Web开发框架的完善,大家开发意识逐步加强之后,大家在知道要把密码进行hash存储。通过检查hash值来判断密码的合法性。

后来有发现,只hash密码还是不够,还需要加点随机的东西,称之为salt(盐),具备更高的安全性。

3. HTTPS

目前主流网站都已经换上HTTPS,大家在浏览器的网站输入栏左边都能看到一个小标记。从HTTP到HTTPS其实是一个密码学知识的广泛运用。虽然知道HTTPS很早,但其背后的运作机制,一直不清楚。

前阵子特意买一本《深入浅出 HTTPS 从原理到实战》,研究过后,总算搞明白。HTTPS的工作机制是一个典型的密码学应用场景,不是简单的某种密码学算法,而是多种算法的组合,通过协议的方式,解决网页访问的安全问题。

4. 区块链中的应用

区块链技术大量而广泛地采用了各种密码学技术,后期我们会逐一谈到。

热门技术研究

对于密码学的学术进展我知之甚少。目前针对区块链这方面领域,有几个重要的密码学技术在做积极探索。这里简单提一下:

1. 隐私保护

随着信息技术不断延伸到生活的方方面面,大家目前都越来越关注个人隐私问题。目前这一块比较好的解决方案是采用:零知识证明,安全多方计算,同态加密这些密码技术来解决。这一块大家可以参考微众银行前阵子发布的隐私安全保护的白皮书,写得通俗易懂,非常值得一读。

2. 量子计算

2019年的CES上,有幸窥见IBM量子计算机的真容。见下图:

目前不时可以听到量子计算机的各种突破性消息,还有量子霸权这种让人震惊的描述。所以区块链行业很多人都担心,一旦量子计算机出来,是否会把区块链底层给颠覆掉呢?

虽然这种说法不能说是完全杞人忧天,但我判断是不可能的。区块链技术本身也是在不断进化的,大家去看比特币的各种BIP文档就明白,它从诞生到现在技术上经历了很多升级和迭代的。区块链项目很多虽然是去中心化的,但并不妨碍项目本身在不断升级去应付新的问题,我们不会死等着黑暗到来。

3. 国密算法

国家于2019年颁布《中华人民共和国密码法》 ,对密码的应用和管理做了很多规范和规定。目前密码算法库都是基于OpenSSL, 很早由欧美学者提出来的算法。处于国家安全和长远战略焦虑,提出我们国家自己的密码算法和相应的算法实现库。

一般应用可以不关心,但目前如果涉及到一些2B或者2G的应用,是否采用国密肯定是很重要的一个指标,在具体项目落地的时候不可不察。

总结

密码学的产生和发展都是在实践中遇到的问题一步步摸索过来的。对于我们一般开发者,核心是要拿来解决实际研发过程中遇到的问题,选择正确和安全的算法。另外就是关注目前研究的热点,把新的算法运用在落地场景之中。

 

发布了4 篇原创文章 · 获赞 0 · 访问量 76

猜你喜欢

转载自blog.csdn.net/noding2001/article/details/104051652