密码学是数学和计算机科学的一个交叉。主要有两个方面的应用:一个就是加密通信;另一个方向是数字签名。
数字签名跟纸笔签名类似,可以用来认证签署人身份。密码学早期主要用于军事领域,随着互联网发展,民用方面涉及电子商务、银行支付、数字版权等领域也普遍得到应用。
最近几年,区块链和加密货币兴起,密码学的发展又进入了一个新的阶段,区块链的底层是密码学技术,但是也涉及到经济学。
01、互联网上的密码学
密码学包括:加密、解密、密文和密钥。比如A有份秘密文件传给B,首先通过加密算法把文件转换成密文,密文就是一些看起来不知所云的内容。B收到密文后,通过对应的解密算法,就可以把密文再转换成数据。
那么密钥是什么呢?其实在加密和解密运算过程中有两个要素,一个是算法,另外一个是密钥,英文叫key。key就是参与加密解密运算过程的一小段数据。
目前流行的加密解密算法一般都是公开的,因为不公开一般也没人敢用,怕有后门。所以信息的安全完全在于加密人和解密人手里握的key。
例如凯撒密码,凯撒要给他的将军发一封密信,凯撒使用的算法是把字母按照字母表顺序往后移动一定的位数,比如信息本来是A,现在往后移动3个位数,就变成了D,这样生成的密文就谁也看不懂了。
这个过程中算法是“字母偏移”,而key就是3。将军收到密文后,根据同样的算法和key反推就可以解密。
随着电气革命兴起,发明了专门用于加密的硬件器材。但是真正密码学的大发展是在计算机兴起之后,尤其是互联网的到来。
互联网时代,所有信息都是在公共区域进行传输,任何人都可以截取我们的数据,于是在数据传输之前进行加密就显得尤其重要,当代的密码学也是在这个情景下来发展的,因此当代密码学被称为“互联网上的密码学”。
没有不可破解的密码!理论上,任何密码都可以通过暴力搜索的方式来破解。互联网上的加密算法都是公开的,所以key的一些特征也是明确的,例如总共多少位。
利用计算机暴力搜索的方式去破解是一种很容易想到的攻击方式。
这就给加密算法的设计者提出了一个基本要求,那就是算法一定是要保证足够的计算难度,使得破解密码所花时间是不可接受的,例如一万年。没有不可以破解的密码,只有很难破解的密码,随着计算机运算速度不断的提升,加密算法也需要不断迭代。
02、公钥加密的核心地位
当代密码学分为两套系统:对称加密和非对称加密。其中非对称加密也被叫做公钥加密,是密码学的核心技术。
在加密和解密过程中都有key参与,如果加密和解密使用同一个key,这就是对称加密技术,反之是非对称加密技术。
具体做法是首先生成一对key,其中一个是公钥,Public Key,公钥是可以公开给任何人的,另外一个是私钥,Private Key,要严格保密。发送方首先拿到接收方的公钥,用公钥把信息加密,接收方收到密文后,用私钥解密获得信息。
之所以公钥和私钥能够这样配合工作,是因为它们两个天生就是一对儿,有着天然的数学联系,具体的联系方式就跟使用的具体的加密算法有关了。
非对称加密中最著名的算法有两种,一个是RSA,是非对称加密技术的开山鼻祖;另外一个是ECC,也就是椭圆曲线算法(Wisdom Chain采用的就是椭圆曲线算法)。ECC是一种更高效的加密算法。
对称加密在发送方和接收方使用相同的key,所以建立安全通信的前提是双方先要有共享的key。在没有加密通道的情况下,key应该如何安全的传递给对方呢?
这个在互联网上是非常有挑战性的。相对比之下,公钥加密技术要分享的是公钥,不用担心泄露问题,相对要安全一些,另外公钥加密技术也衍生出了数字签名技术。
当然,公钥加密技术也需要考虑如何确认公钥所有人等技术问题,所以就有了发证机构CA。
总的来说:第一,密码学是对安全通信技术的研究,要能抵御各种恶意攻击。第二,密码学的底层是数学,密码学的安全取决于一个难度足够高的数学问题,保证计算机在可接受的时间跨度内根本不可能运算出密钥。第三,当代密码学是互联网环境下的密码学,关键性技术是公钥加密技术。