原文链接:【链块技术 01期】区块链中的密码算法
近两年,随着区块链日益火爆,密码算法也再次高频地出现在各大报端。
密码的目标
密码学DavidKahn在他的被称为“密码学圣经”的著作中是这样定义密码学的:“密码术(cryptology)就是保护。”
保护什么呢?
首要的当然是保护信息本身不被别人获取(机密性);同时,保护信息不被伪造、篡改(完整性);能够验证信息的发送者(可认证);另外,也需要防止信息发出者抵赖(不可抵赖)。
密码的分类
密码学分为密码编码学和密码分析学两大分支:
-
前者的目标是构建功能更强大、更有效的新的加解密算法;
-
后者的目标则是发现已有密码算法的弱点,以便不用秘钥就能还原明文。
现代密码学中将密码算法分为对称加密和非对称加密两类。
-
对称加密,加解密采用预先分配好的相同的密钥;
-
非对称加密,加密和解密采用预先分配好的秘钥,但是加密和解密采用不同的密钥。
实现非对称加密算法有多种方法,大多数都是基于求解数学难题的,主要包括三类:大整数分解、离散对数和椭圆曲线。
1、大整数分解类问题:
给出两个大约数,很容易就能将它们两个相乘。但是,给出它们的乘积,找出它们的因子就不那么容易了。这就是许多现代密码系统的关键所在。
2、离散对数类问题:
目前,人们还没有找到复杂性在多项式范围内的求解离散对数问题的算法。
3、椭圆曲线类问题:
就是将离散对数问题应用于椭圆曲线上的点。
需要注意的是,这些问题只是看上去不可解,因为历经多年仍未能找到一个简单的解决办法,一旦找到了一个解决办法,那么基于这些问题的加密算法就不再安全了。
非对称加密算法可以用于加解密信息(主要是用于对称加密的密钥信息传递),也可以用于数字签名和身份认证等。
提起数字签名,不得不提起密码学领域的另一个知识:哈希函数