咳咳,不可否认,有时候总会出现,请证明你爸是你爸的这种事情,所以会有了身份认证的密码。但是这个密码不是你们想的那个登录密码,银行卡密码,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
大家可能看起来没什么感觉,我举一个例子来说明不安全通信的惨痛教训。
俄罗斯央行遭黑客攻击 3100万美元不翼而飞
12月,俄罗斯中央银行官员瑟乔夫证实,该行电脑系统遭到了黑客入侵,犯罪分子从银行的代理账户中窃走了20亿卢布(约合3100万美元)的资金。瑟乔夫透露,黑客是通过伪造一名用户的证书进入的这些账户。紧接着,俄罗斯第二大银行VTB再遭黑客攻击,幸运的是,银行方面的防御体系成功击退了指向其业务系统的DDoS攻击,未造成资金损失。
再想想,每天的你处在电话被监控,网络支付很危险,邮件都不可信,短信都不可信,甚至连电话声音都可以被伪造的环境中得是多么崩溃的一件事,所以发明了很多加密的方法,保证只有A跟B能知道确切信息的内容,其他人即使拿到了10101010的这些玩意,也不可能猜出来。
首先泼个冷水,一切密码学都是可以被暴力破解的。那为什么还说现在有的加密手法很安全呢?因为虽然可以被暴力破解,但是有的算法正向加密很简单,但是逆向解密无论算力有多强,依然可能需要几百年几千年甚至几万年,这对于人类来说是不可能实现的解密,所以传统意义上来说这些算法就叫不可破译的算法,我们接下来稍微说说一些类型的算法,我不会细讲,如果有兴趣我后面单独开个系列说。
第零类,纯混淆算法。
比如 MD5 ,能把任意字符串变成一个32位的16进制字符串。用这类算法你只是不想让别人知道原始信息是什么,两次比较都通过同一个MD5 后的值进行比较,如果相等则代表信息一致,通常用在密码校验或者文件检查上。此类算法除了 MD5 还有 SHA 系列,如果你觉得还不够安全,那你可以先用一个MD5,再用一个 SHA-128 , 再用一个 SHA-256 , 估计地球上没人能猜出你最原始的东西是什么。
第一类,对称加密算法。
这类算法的特点是,加密和解密所使用的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等算法。
第二类,非对称秘钥加密算法
相对于对称加密算法只有一个密钥。非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。这类算法的加解密过程一般是这样的。
A->算法一(key1)->K->算法二(key2)->A
此类算法有RSA、Elgamal、背包算法、Rabin、D-H、ECC。最最常用的是RSA。
第三类,密钥保证。
那既然对称和非对称加密算法都那么牛逼了要CA证书干啥?大家再思考一个问题,如果连key本身都被泄密了,或者说非对称算法中的公开密钥本身就是假的,那该怎么办?
对称加密算法,已经有Diffie-Hellman密钥交换算法可以实现产生双方共同认可的相同密钥了。
对于非对称加密算法,只能通过一个第三方的有权威的中介,帮忙生成一个公钥了,这类公钥再加上身份信息进行签证,称为CA(Certification Authority)
,很多的密钥中心基本都是颁发CA证书的角色。
当然无论多么牛逼的算法,总会有一个根密钥,这个要怎么保证呢?所以就有了密码机这种设备。这种设备的唯一作用是生成密码,唯一的安全措施是保证根密钥不会流出密码机,从而保证整个密码体系的安全性。
好了,今天先说到这,有兴趣的可以私聊。