上一期电台的结尾,我讲了二战时期美国用一种印第安人中的纳瓦霍族群所使用的语言为基础,用明语(即不加密)的方式上传下达军事命令以及各种行动联系。这也算是一种加密,不安全的加密,如果按照书上讲,这种叫隐晦式加密。隐晦式加密就是通过设计一个我认为你不知道的方法,或者我认为你不知道的实现机制,或者用一个我认为你不知道的系统组件来提供安全性。这种保密是非常脆弱的,如果大家上了大学,碰巧上信息安全课的时候又没有睡觉或者逃课的话,可能会听到一个叫柯克霍夫原则的东西,这个原则叫:“即使密码系统的任何细节已为人悉知,只要密匙(key,又称密钥或密钥)未泄漏,它也应是安全的。”用信息论的发明者克劳德·香农则改成说:“敌人了解系统”,这样的说法则称为香农箴言。
我们在做保密的时候,可以考虑使用公开的算法,但是实际上,政府部门或者军事机密上,跟理论是有区别的,大家也不要太教条,用书本上的知识来证明用公开算法的更机密,政府部门用的是双重加密,可能他们的算法也是与民用的一样,不是使用的隐晦式加密,但是又不公开告诉你用了什么加密,所以是双重加密。民用的算法,很多时候都是公开的。比如说最近微软出出现一个高危漏洞,所说是NSA(美国国家安全局)报出来的,这是一个有关椭圆曲线加密算法的漏洞,已经存在于微软的系统中很多年了,你说是NSA早就发现了很多年了,还是说一发现就报告微软了,这个反正咱们也不清楚。反正我看到有谣言说,NSA有方法大幅的简化椭圆曲线加密算法的破解难度,甚至包括比特币使用的那条secp256k1特殊的椭圆曲线,这个都是传闻,大家听听就好。能证实的是有很多RSA曲线,NSA都给埋了雷,比如SECP256r1这条曲线就被放了后门,但是中本聪用的这条曲线没有,所以,有人怀疑中本聪就是NSA的人,当然也有一种可能是secp256k1也被埋了雷,只是大家至今没发现。
再来说一下这个柯克霍夫,他也被称为“计算机安全之父”, 他是德国人在法国,是一个语言学家,他于1883年2月在《军事科学报》(Journal of Military Science)上发表了一篇文章,那篇文章就是现代密码学的基础,他提出的“柯克霍夫原理”最早被应用于电报加密。因为是在《军事科学报》上发表的,所以肯定与军事有关,如果在《银行家》期刊上发表,那肯定与儿童诗歌有关了。柯老师给军用保密器设计了六个原则,这六个原则分别是:
1. 即使非数学上不可破解,系统也应在实质(实用)程度上无法破解。(比如说现在比较流行的RSA算法,这是一种被普遍使用于加密和数字签名的非对称加密算法,其最大的特点是基于当前的计算体系将其破解所需的时间成本将会高的吓人。而要想破解2048位的RSA秘钥,使用当前最先进的超级计算机也要80年时间。标准是用美国最快的计算机之一:泰坦,是美国橡树岭国家实验室的一台计算机,我以前在电台里讲过的一家叫克雷公司造的电脑,最高速度是27千万亿(peta)次运算。前两年,我忘记哪个国家的一个专门研究量子计算机的,说,如果用他的量子计算机,可以在分钟级破解掉2048位的RSA秘钥,看到这条新闻,直接把我激动了!现在好几年过去了,RSA秘钥依然坚挺的竖立在那里,期待着能搞他的量子计算机的到来。)
2. 系统内不应含任何机密物,即使落入敌人手中也不会造成困扰。(大家看过不少好莱坞电影吧,一般都是黑客来破解一个东西,一般是4位密码,搞半天,输入进去,系统搞定。这种是最烂的,如果军事上搞这种东西,就是违背了这一条,系统内有机密物,落入敌人手中就玩犊子了。还有不少SB手机系统,整个私密空间,一滑,让输入密码,然后就调出你和xx的聊天记录,这种设计是再也不能更脑残的设计了,这是摆明了让另一半抓住。老婆一顿打,交代了,什么照片,聊天纪录发网上去了,只能净身出户,完全违背了“系统内不应含任何机密物,即使落入敌人手中也不会造成困扰”。我从不用这种弱智系统,所以到现在还没离婚。)
3. 密匙必须易于沟通和记忆,而不须写下;且双方可以容易的改变密匙。
4. 系统应可以用于电讯。
5. 系统应可以携带,不应需要两个人或以上才能使用(应只要一个人就能使用)。(这一条也可以讲一下,一定不能两个人才能使用。我举个例子,我和我老婆,去银行取钱的时候,自动取款机要输入密码,6位,我和老婆每人掌握3位,她先输入3位,她输入的时候我站在2米外,她输完以后,然后退后10米,因为我近视眼,750度的,2米外肯定看不到密码,我老婆眼睛一个2.0,另一个也是2.0,为什么都是2.0呢,因为视力表最底下那一行就是2.0,她都能看清楚,具体多少,没测过。反正在马路上坐公交车的时候,她可以在马路这边看马路那边的站牌,还能看清楚站牌上那种小的站名。所以,她要退后10米,我再输入后3位。我家的银行卡每人掌握3位,非常的公平合理。但是,是不是违反了这条规则呢?那肯定的,这条规则规定:“不应需要两个人或以上才能使用”。为了不违反“计算机安全之父”柯克霍夫的原则,在银行设置密码的时候,女士优先,她先输入3位,然后退后10米,我再输入,我先把她输入的那3位删了,然后输入我的6位密码,然后再输入一遍。所以,她一直不知道她输入的那三位是没用的,每次我都要先删了她输入的那三位。这不是我不信任她,我这是科学的精神。)
6. 系统应容易使用,不致让用户的脑力过分操劳,也无需记得长串的规则。(这一点也很重要,我们经常忘记密码,密码对民用可能有点用,对军用或者政府,肯定是不能用密码的。比如说,你被美国联邦调查局抓了,有你的电脑,一开机就是密码,还是指纹的。你总不能马上把你手指头给剁了吧?就算不是指纹,是密码,也是没法哄骗过去的。可能你铁血,不怕被打,什么电烙铁烙身上你当纹身,竹签子扎手指头你当做美甲,但是要是他们强行给你灌螺狮粉,这就难说了。其实可以尝试用一张照片当加密的key file,用TrueCrypt来加密你的数据 ,如果美国联邦调查局来抓你之前,你有时间把这个照片彻底删了,那么,加密的东西就再也无法解密了,即使美国联邦调查局请taylor swift来灌螺狮粉,你想招都没法招,因为,世界上再也没有人能拍一张一模一样的照片出来。反正用密码绝对不是一个好的选择。)
上一期讲了好莱坞著名影星尼古拉斯·凯奇(Nicolas Cage)主演的电影《风语者》(Windtalkers)就是以纳瓦霍族代码为题材拍摄的。在战场上,纳瓦霍代码大显神威,为美军取得太平洋战争的胜利立下汗马功劳。2001年国会授予29名最早在美军中服役的“纳瓦霍代码译员”国会金质奖章(Congressional Gold Medal)以表彰他们对国家的贡献。二战后该代码还继续使用到越战,此后就不再使用,不过该代码迄今没有解密。
1941年12月7号日军偷袭珍珠港,美国向日本宣战,太平洋战争爆发。战争爆发后,美国人参战热情高涨。1942年初,家住加州洛杉矶的工程师菲利普·约翰斯顿(Philip Johnston)向太平洋舰队两栖部队指挥官克莱顿·佛哥少将(Clayton B. Vogel)提议在部队中使用纳瓦霍语作为通讯代码。约翰斯顿是一战老兵,他的父亲曾在纳瓦霍人保留地传福音,他是能流利地讲纳瓦霍语的少数非纳瓦霍人之一。
佛哥少将开始时对约翰斯顿的提议将信将疑,但在随后的测试中,使用纳瓦霍代码可以在20秒内对三行英语消息进行编码、传输和解码,比当时用其他暗码的联络方式快了许多倍,这种代码最适合战地使用,简便、快捷。经过多种测试及专家验证,约翰斯顿的提议被接受了。佛哥少将建议海军陆战队征募200名纳瓦霍人, 第一批29名纳瓦霍人1942年5月在加州的彭德顿营海军陆战队基地(Marine Corps Base Camp Pendleton)参加了新兵训练。其后他们被分派到海军陆战队在太平洋战场的不同战区服役。由于纳瓦霍代码的简便实用及保密性强,战地指挥官对它的需求很大,海军陆战队其后又征召了300多名纳瓦霍人入伍,让他们经过训练后参与太平洋战场的军事行动。
纳瓦霍代码的使用方式是先制定英语代码,比如“鲨鱼”代表驱逐舰,“橡树叶”代表中校等等,同时让懂得纳瓦霍语的人用纳瓦霍语在通话中交谈,传递鲨鱼、橡树叶信息。简单地说,就是用日本人听不懂的外语直接通话,即使被监听到,也不知道说的是什么。此外再加一层保险,如果有人听懂了谈话内容,但也不会知道“鲨鱼”“ 橡树叶”的真正含义。在硫磺岛战役中,海军陆战队第五师的通讯指挥官霍华德·康纳少校手下就有6名纳瓦霍代码译员全天候工作,他们在战役的头两天发送和接收了800多条消息,全部无误。康纳少校后来回忆说,“如果没有纳瓦霍人,海军陆战队永远不会攻占硫磺岛。”他的话虽然有些夸大,但很好地说明了纳瓦霍代码的重要性。
纳瓦霍代码在二次大战中立下的功绩,人们一直没有忘记,在不同的场合、不同的时间都受到过多次褒奖。时隔半个多世纪后,国会于2001年通过决议,授予参与纳瓦霍代码行动的人“国会金质奖章”。在授奖仪式上,时任总统小布什表示这是每个美国人都应该知道的故事,纳瓦霍代码译员值得每一个美国人尊重。奥巴马总统也在2011年特别发布文告表彰纳瓦霍代码译员。
纳瓦霍人是居住在美国西南部印第安人的一部分,也是北美地区现存最大的印第安族群,人口约30万人。目前纳瓦霍族拥有面积最大的印第安保留地,面积约7万平方公里,分布在犹他、亚利桑那、新墨西哥三州境内。纳瓦霍族有自己的部族政府(Navajo Nation),部族政府有地方自治权,首府设在亚利桑那州的温多洛克(Window Rock)。
中国的网民其实也发明了自己的“纳瓦霍语”,只流传在自己的小圈子里。知道的人自然知道,不知道的人也就不知道了。