互联网安全专家教你学密码
2018-03-21肖志
■肖志
不可否认,有时候总会出现,请证明你是你的这种事情,所以会有了身份认证的密码。但是这个密码不是你们想的那个登录密码、银行卡密码、QQ密码或者IQ密码,更不是达芬奇密码,而是在交流或者说通信过程中用来加密信息的密码。最开始了解密码是达芬奇密码,但是最后发现达芬奇密码没有密码。图灵机,图灵测试,人工智能之父,这些都是Alan Mathison Turing,换另外一个名字你们可能比较熟悉,艾伦·麦席森·图灵。
笔者第一次密码学的启蒙是看《模仿游戏》这部电影。影片讲述的是二战期间,盟军苦于德国的密码系统“英格玛”无法破译,政府召集了一批数学家、逻辑学家进行秘密破解工作,艾伦·图灵就是其中之一。破解计划刚开始,图灵遭到了以休·亚历山大为首的组员和领导的排斥,幸而军情六局局长斯图尔特·孟席斯帮助他立项研究破译密码的机器,而图灵则变成了负责人,并招收了新的成员琼·克拉克开始艰难的工作。琼很快就迷上了图灵,由于她的帮助所有组员空前的团结,并于两年后成功破解了德军密码。
在互联网大盛的今天,因为各种渠道都是不安全的,比如纸、信鸽、邮局、快递、蓝牙、WiFi甚至是电缆和光缆都有可能被窃听,甚至被篡改。那么如何在不安全的信道上进行安全的通信呢?密码学便成了不可或缺的工具。
假设A要发送一个K给B,理想的情况应该是下面这个样子,什么事也没有发生。
A→K→B
但现实中却是可能会发生另外四件事:窃听、篡改、伪造和拒绝。
很遗憾,小C很坏,但也不是很坏,只是进行了窃听,所以信息变成了下面这样子。(窃听代表A跟B的信息被第三方知道了,但是并没有实际的损失。)
A→-K→C→K→B
而小D比小C坏一点,对信息进行了篡改,原本要发送的K,被小D窃听到了,而且小D还把消息改成了K1。所以信息变成了下面这样子。这样A跟B的通信完全乱套了。
A→K→D→K1→B
小E比小D更坏一些,进行了伪造,直接假扮A给B发了伪造的K1的消息。
A E→K1→B
小F则直接对A进行了拒绝服务,B永远也接收不到来自A的信息,很是崩溃。
A→K→F B
大家可能看起来没什么感觉,但是如果每天的你处在电话被监控,网络支付很危险,邮件都不可信,短信都不可信,甚至连电话声音都可以被伪造的环境中得是多么崩溃的一件事。所以专家们发明了很多加密的方法,保证只有A跟B能知道确切信息的内容,其他人即使拿到了10101010的这些玩意,也不可能猜出来。
接下来简单说说一些类型的算法。
第1类,纯混淆算法
比如MD5,能把任意字符串变成一个32位的16进制字符串。用这类算法你只是不想让别人知道原始信息是什么,两次比较都通过同一个MD5后的值进行比较,如果相等则代表信息一致,通常用在密码校验或者文件检查上。此类算法除了MD5还有SHA系列,如果你觉得还不够安全,那你可以先用一个MD5,再用一个SHA-128,再用一个SHA-256,估计地球上没人能猜出你最原始的东西是什么。
第2类,对称加密算法
这类算法的特点是,加密和解密所使用的key是一样的,通过key可以进行加密和解密,而只有通信双方都拥有同一个key,所以该方式一般来说是安全的,而且计算效率很高。
最简单又最耳熟能详的就是字母表替换了。比如A→P,P→L,E→A,L→B这样子的一个字母替换表。我们的文本是APPLE,经过字母表转换我们得到了PLLBA,即使拿到了这串玩意,你也不可能猜出我原本的是APPLE,所以我们通过最终把整段文本变成完全不可读的文本。而接收方接收到PLLBA后,通过同一个替换表,就可以反向解密出原本意思。
大部分的对称加密算法原理大同小异,无非是把加密和解密过程复杂化,再加入一些“盐分”,让别人猜不出具体的算法和“盐分”究竟是什么。
A→算法一(key1)→算法二(key2)→K→算法二(key2)→算法一(key1)→A
此类算法还有 AES、DES、3DES、TDEA、Blowfish、RC5 和IDEA等算法。
第3类,非对称秘钥加密算法
相对于对称加密算法只有一个密钥。非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。这类算法的加解密过程一般是这样的。
A→算法一(key1)→K→算法二(key2)→A
此类算法有 RSA、Elgamal、背包算法、Rabin、D-H 和ECC,其中最常用的是RSA。
第4类,密钥保证
那既然对称和非对称加密算法都那么厉害了,还要CA证书干啥?大家再思考一个问题,如果连key本身都被泄密了,或者说非对称算法中的公开密钥本身就是假的,那该怎么办?
对称加密算法,已经有Diffie-Hellman密钥交换算法可以实现产生双方共同认可的相同密钥了。
对于非对称加密算法,只能通过一个第三方的有权威的中介,帮忙生成一个公钥了,这类公钥再加上身份信息进行签证,称为CA(Certification Authority),很多的密钥中心基本都是颁发CA证书的角色。
当然无论多么高明的算法,总会有一个根密钥,这个要怎么保证呢?所以就有了密码机这种设备。这种设备的唯一作用是生成密码,唯一的安全措施是保证根密钥不会流出密码机,从而保证整个密码体系的安全性。