拜智能手机所赐,我们每天都会使用密码:屏幕解锁密码。
在智能手机出现之前,我们也经常接触密码:每个人的银行卡都有一个密码。
再往前,很久很久以前,密码这个词主要用在战争中。两千多年前在希腊和波斯的战争中,希腊人把波斯军队的动向写成密文送往雅典,帮助希腊打败了波斯。
离我们不太遥远的第二次世界大战,直接推动了各行各业的发展,比如可口可乐,计算机,雷达,当然还有密码学。
二战时英国的天才数学家图灵(没错,就是计算机学中“图灵奖”的那个图灵,也是因性取向问题被迫害的图灵,还是吃毒苹果自杀的那个图灵)破译了德军的密码,帮盟军打败了纳粹德国。英国科学博物馆中陈列着一台当时德军用的恩尼格玛密码机,2017年的时候我曾去看过。
恩尼格玛密码机恩尼格玛密码机的加密方式基于替换密码:简单来说,明文→密文:a→b,b→c,依次类推。那么,密文”ipx bsf zpv”对应的明文是什么呢?就是” how are you”。实际上德军密码机的加密过程要比这复杂很多,但原理相同。
不光是欧洲战场,二战时的中国战场也用密码和加密技术。如果你看过孙红雷主演的《潜伏》,且看的足够仔细的话,就会发现,余则成跟上级用电台联系的密码本是《梦蝴蝶》,加密方式也是替换密码。
《潜伏》中的通信密码余则成听到的密文是“5352 4592”(《潜伏》第7集11分29秒),通过某种方式,就可以替换成密码本中某页某行的某一个字(或几个字)。很明显,余则成用的加密方式有漏洞,容易受到频率分析攻击。为什么呢?
我们来简单推理一下:余则成在听到这几个数字时,并没有用笔去记录,反而回过头去看身后的翠萍,说明他对这些数字非常熟悉,因此不需要记录。为什么会“非常熟悉”呢?一定是因为这些数字经常出现在他的密文中,且代表固定的含义,听多了,就记住了。这揭露了替换密码的主要缺陷:明文的统计属性在密文中得到了保留。破译时,只需破解这一段高频的密文,就可以顺藤摸瓜破译整个密码。优秀的加密算法应该使密文看上去杂乱无章,毫无规律可言。
好东西大家都喜欢。很明显,加密是个好东西,不光二战时的德军喜欢,中国的土匪流氓也喜欢(军匪果然是一家)。《智取威虎山》里杨子荣和土匪的黑话,也是加密的一种。
《智取威虎山》中的密码:黑话如果你问别人“贵姓?”他回答“烧干锅蔓”,你一定一头雾水:啥意思?杨子荣同志会亲切地告诉你:姓胡。黑话实现加密的原理,也是替换密码。
以上是“正经”的加密的事(有据可查)。下面来说一说“非正经”的加密的事。
开始聊“非正经”的事之前,先讨论一个严肃的话题:为什么要加密?对,为什么呢?
以二战中的加密应用为例,对通信内容进行加密,主要是为了信息的保密传递。通俗的说,加密就是为了让授权的人看懂/听懂,让未得到授权的人看不懂/听不懂。
现代的加密技术,不仅用于军事通信,更多的用于国家(国防工业、外交等)涉密资料的存储、传输。还有相当大的一部分用于商业(银行系统,网站,电子邮件,云存储,智能卡,公司商业机密的存储等)。
(a) 银行业中的ATM机(银行卡的认证) 军用加密移动硬盘(数据加密存储)下面正式开始聊正经加密的非正经的事。
据说(注意,是“据说”),抗美援朝期间,美国人监听了我们志愿军的电话线。导致我方作战命令无法往下传达。后来一个参谋想出了一个绝妙的点子,让美国人听得到,但听不懂。
千万不要以为是使用了先进的语音加密和解密技术来绕过美国人的监听。当时中国在技术上还是很落后的。那是怎么做到的呢?
电话两头还是明文对话,只是换成了两个少数民族的士兵说土话!别说是美国人,绝大多数中国人也听不懂!
不谈真伪,故事本身还是非常有意思的。两个少数民族的士兵,用方言对通话内容进行了“加密”,让敌人听得到,听不懂。
加密的形式也不仅仅局限于文字和语音,有时也可以用行为来加密信息。
例如考试作弊时用的招数:摸鼻子表示选A,揉眼睛表示选B,挠耳朵表示选择C,托下巴表示选D。“A”经过加密,变成了“摸鼻子”,实现了保密传输。
再比如令中国男人闻之色变、深恶痛绝的一个行为艺术——“带绿帽子”,据说就是情妇通过让丈夫带绿色帽子的行为,来向情夫加密传递丈夫要出远门的信息。
所以说,密码学的应用无处不在,大到国家战争,小到作弊偷情,处处都有密码学的身影。
扯远了,还是说说正经的密码。
生活中,每个人都有很多密码,QQ密码,微信密码,支付宝密码,淘宝密码,电子邮箱密码......
这么多密码都是用来干吗的呢?一个用途是:认证。就是确保是你本人(被授权的人)。
举个例子,别人拿你的银行卡去ATM机取款,只要密码输入正确,银行系统就认为这是“你本人”在操作,允许取款。反过来,你拿自己的卡取款,但密码错了,银行系统也会认为这不是“你本人”,不让你取款。
指纹识别出现后,在手机上我们直接输入密码的时候少了。指纹识别很方便,但安全性不如密码,这就是为什么给手机设置指纹之前,必须先设置密码。
至于指纹识别的安全性为什么不如密码,这个问题比较复杂,后续咱们再详细讨论。简单来说,主要原因是当前的密码学算法都是针对“密码(key)”来设计的,而不是针对生物信息(指纹、面部、虹膜等)的;还有一点,指纹数据是被密码加密后存储的。
英语好的同志们可能会问:”key”明明是“钥匙、密钥”的意思,你怎么翻译成“密码”呢?
这个说来话长,主要是现代密码学是老外提出来的,一些概念和专业术语晦涩而不好理解,简单起见,我国老百姓经常会用“密码”来表示各种内容(中国老百姓的总结概括能力可见一斑)。
比如我们说的银行卡密码,术语其实叫个人识别码(PIN,Personal IdentificationNumber);加解密时用的密码,术语叫密钥(Key),非对称算法中还存在公钥和私钥;登录各种网站时输入的密码,术语才是密码(password)。
密码学中有四大类算法:对称算法,公钥算法、哈希算法,和数字签名。
哈希(Hash)算法,中国官方给的名称是“密码杂凑算法”(见国家密码管理局发布的“中华人民共和国密码行业标准化指导性技术文件”GM/Z0001-2013《密码术语》)。本不想引用官方文件,奈何官方给的翻译着实不常用,此处指出,防止误解。
加密和破译就像盾和矛,有加密,就有破译。
破译密码的经典方法都有哪些呢?
不要着急,休息。下回接着聊。
徐红伟@百香果科技
网友评论