区块链行业老人肯定记得2018年春节前后,三点钟社群的疯狂,讨论内容大都凑热闹,玄学无比。但其中,蔡文胜大佬,说了一句很经典的话:
区块链底层是数学,中层是哲学,最高层是神学
区块链用数字来作为区块链的底层,确实是坚实无比。其中的数学,指的就是密码学。
谈及密码学,一般人最直接想到的就是各种账户密码,码农最直接的反应就是加密解密这些。光有这些粗浅的认知很难把密码学运用到实际遇到的问题上。所以,很有必要先谈谈密码学的基本目标和认知。
密码学的四个目标
1 机密性(隐私性)
这个符合我们对密码学最基本的认知。也是自古以来密码学最广泛的运用,在各种通信中对信息进行加密,防止信息的泄漏。
2 完整性
在签订合同的时候,作为一份严谨的合同,经常被要求盖一个骑缝章,它的作用是啥?就是要保证合同的完整性。
所以,在信息的传递过程中,我们怎么能判断这个信息是完整的呢?是没有被篡改的呢?这也是密码学重要研究范畴。
3 身份验证
网络上各种钓鱼网站屡见不鲜。犯罪分子,做一个跟淘宝一模一样的网站,换个域名部署上,然后引诱用户登陆,盗取用户的账户信息。对于这种问题,可以采用密码学中的数字签名技术,解决身份认证问题。
4 不可抵赖性
举个例子,A向B借钱,并写了张借条,但B希望A还钱的时候,A抵赖说这种借条不是他写的,理由是有人冒充他写了这张借条,A的行为可以抵赖。在密码学中,数字签名技术可以解决这个问题。
密码学的认知
1 密码学是科学,而且是公开的理论
密码学是科学,有着严格的规范。涉及密码学算法需要具备深厚的数学知识。而且目前的实现原理大都是公开的。
2 密码学的算法是相对安全的
摩尔定律决定计算机的性能不断提升。随着计算机处理速度的提升,有些以前安全的算法收到挑战。比如,量子计算之后,现有一些区块链的密码算法就很不安全的。所以,在运用密码学算法的时,需要确保采用的算法在当前是安全的。应用者应该长期关注这个领域技术发展的动态,及时更新算法。
3 密码学的攻击方法是多样化的
一个大规模的应用一旦上线,特别是涉及交易或者重要数据时,肯定有很多人来攻击系统以获得收益,各种攻击手段是层出不穷,完全无法预料到的。
4 不具备很强的数学知识也能掌握密码学
密码学的设计虽然需要深厚的计算机知识,但对于应用者来说,我们只需要理解算法解决何种问题,其应用场景是什么,在根据标准正确使用密码学算法就可以。
5 解决特定问题的密码学算法
世界不存在一种密码学算法能解决所有的问题。针对某个特定的问题,经常是具体问题具体分析,把各种密码学知识组合起来,解决问题。
对密码学有一个更高的认知之后,我们在回过头来看密码学和区块链的关系。
了解比特币发展历史的人(可见文章:比特币前传),都知道,比特币诞生于密码朋克社区。这个社区最核心的目标是要解决隐私问题,包括个人信息,通信,交易,财产等各个方面。这些都需要运用密码学知识设计相应的软件给用户使用,比如:匿名邮件系统、点对点的加密聊天工具,
比特币解决的是匿名支付问题。当然随着区块链技术的演进,可以看到隐私保护能力更强的门罗和ZCash之类的项目。
密码学知识如何运用在区块链之中去解决一个个实际的问题呢?这是一个很有意思的话题,本系列文章为围绕这些话题展开,目前能想到的主题如下:
- 用Hash算法来做工作量证明
- 基于非对称加密的数据身份
- 用椭圆曲线来签名
- 用Base58来显示地址信息
- 量子计算下的区块链技术更新
- 随机之源,门罗的启动
- 国密算法运用在区块链之中
- 零知识证明和阿里巴巴谜语
- 同态加密和多方安全计算
欢迎大家持续关注。