日前,维基解密爆料,CIA 通过恶意软件等网络武器控制大量美国、欧洲等地企业的电子设备及操作系统产品,包括苹果手机、谷歌安卓系统、微软视窗系统和三星智能电视,把它们变成麦克风进行窃听,并将录音传输到中情局服务器上。
此外,维基解密爆料的一份文件中显示:执行中国任务的特工深受语言障碍的困扰。《参考消息》还以《维基解密网披露代码中的汉字挡住 CIA 黑客》为标题做了报道。那么,中文挡住 CIA 黑客究竟是怎么回事呢?
中文并不是抵挡 CIA 黑客的长远之计
虽然参考消息的报道以《维基解密网披露代码中的汉字挡住 CIA 黑客》为标题,且该标题颇有因为中文使 CIA 黑客束手无策,无法窃取中国秘密资料的含义。但事实上,这仅仅是 CIA 黑客看不懂中文导致的,若要实现信息安全,仅仅依靠源代码中的中文或中文注释是远远不够的,而且这也非长远之计。
由于绝大多数程序代码都是用通用编程语言写成,这些英文字母组成的代码,全球程序员都认识,但认识代码归认识,能不能彻底解读就是另一回事了——源代码一般都是比较晦涩的,没有注释的代码换了开发这个程序的工程师之外的人来读其实是很难读懂的。
“维基解密”近期公布的文件显示,美国中情局通过各种方式攻击了中国等很多国家的电子设备。外交部回应:敦促美方攻击停止。
因此,注释就伴随源代码而生,注释的作用是便于理解和交接给其他人,告诉别人代码实现的功能,如果看不懂源代码的注释,或者源代码根本就没有注释,那即便拿到了源代码也犹如天书。
国内一些企业和境外企业合资做 CPU,或买授权做 SOC,以及合资做所谓的 Windows 10 政府版操作系统,虽然购买了境外企业的授权,有可能获得了部分源代码,但设计文档和注释这些一般是无法从境外国际公司处获取的。
这也是为什么,无论是 CPU,还是操作系统,虽然在“十二五”期间,一些企业得到巨额专项资金扶持,但耗费数年时间和巨额资金,至今依旧拿境外技术穿马甲的原因之一。
而这次维基解密曝光的情况,其实是 CIA 黑客通过特殊手段获得源代码后,发现源代码没有英文注释所以读不懂。
虽然不少科班出身的程序员,一般都是循规蹈矩按部就班的用英文注释。但由于部分中国的软件工程师英文水平不够高,甚至一些程序员的英文其实非常有限,如果用英文注释很可能会出不少问题,因此会在源代码中用中文做注释。
中文注释的代码示例
在英文水平有限的情况下,如果用英文而不是中文注释的话,可能会有翻译错误、字母打错、以及英文专用名词过于生僻等一些问题。举例来说,比如创建时间,一般翻译 CreateTime,但是也有人写成 BuildDate,甚至有的时候会有字母打错,变成 BuildData 的情况,这种还是算能够看出来是打错字母的。
更多时候,打错字母的英文单词会导致其他程序员解读难度大幅攀升,怎么猜测都不对。如果用中文的话,不仅方便国内同行理解,也可以少发生产生歧义的情况。
另外,由于英文专业名词都是非常生僻的,非该专业领域的业内人士根本不认识该专业的相关专业术语的英文单词。以电力方面来说,程序员仅仅是码农,不是电力工程师,这就导致国内软件工程师在接国内项目后,根本不知道相关专业术语的英文单词,在这种情况下,就直接用中文或者拼音了。
一位软件工程师告诉笔者,“在 XX 电网的时候开发一套系统,里面上千个电网专业术语,如果用英文,可以撞头去死了……所以注释一般用中文,程序变量名用拼音”。其实,国内不少大公司也是会用中文拼音的。
而本次 CIA 黑客受阻于中文的真正原因,是因为中文博大精深,而国内程序员写了中文注释又很随意,没有一定的汉语文化功底的 CIA 黑客很难理解中文注释,所以出现了拿到了源代码,但是因为无法理解源代码中的中文注释而看不懂的情况。
不过,随着 CIA 招募掌握中文的黑客参与相关工作,看不懂源代码中的中文而产生的问题将不复存在。
打铁还需自身硬
根据斯诺登的披露,美国政府一直通过各种手段对全球很多国家实施监控和网络攻击,除了传统的攻击服务器和 PC 获得其他国家机密数据之外,随着物联网和各种智能硬件设备的兴起,网络安全和抵御网络攻击的难度大幅攀升。
目前,各种智能硬件设备的增长如井喷之势,2016 年约有 1.7 亿人购买各种物联网的礼品,到 2020 年,物联网连接的智能设备有望在全球增加到 500 亿台。加上即将到来的 5G 时代,会实现万物相连。
不仅智能空调、智能电视、智能洗衣机等智能家电会和手机等个人智能终端设备,以及 PC 相连接,各种摄像头监控设备、智能扬声器、汽车电子、医疗器械、工业生产设备等智能硬件也会通过网络相连。而这些智能硬件设备都有 CPU、内存、操作系统,虽然模样千奇百怪,但其实都是一台迷你电脑。
更致命的是,这些智能硬件设备中很大一部分近乎是不设防的,在软件上由于长年得不到更新维护,软件系统存在大量漏洞。而很多智能硬件设备对 CPU 性能要求不高,反而对功耗和成本非常敏感,因而往往采用近乎于老掉牙的芯片。
诚然,这些老芯片在经过多年使用和验证,有着相对成熟的优势。但由于芯片破解难度和芯片的复杂度成正比,加上有充足的时间去破解,因而在安全性上可能存在一定瑕疵。此外,由于西方科技公司往往和所在国政府存在某些合作,因而很多国家的互联网和各种智能硬件设备完全暴露在国家级黑客的攻击之下。
举例来说,维基解密就公布了 CIA 利用各种技术在电脑、手机平台上的 Windows、iOS、Android 等各类操作系统下发起入侵攻击,以及操作智能电视、智能监控设备等终端设备进行窃密的文件。最惊悚的是,CIA 还可以遥控智能汽车发起暗杀行动。
因此,要实现网络安全,保护国家机密和个人隐私,必须采取技术手段,而非源代码中加入一些中文内容。
技术手段主要解决的是境外国家级攻击者,正面捅刀子和背后捅刀子的问题。
所谓背后捅刀子,就是国人使用的网络设备、电脑、服务器、智能穿戴设备、手机等产品在软件上和硬件上被境外科技公司留下了各种后门,这样国家级攻击者就可以通过这些后门肆意窃取国家秘密和个人隐私。
而境外国家级黑客攻击就是正面捅刀子,面对正面捅刀子,就必须从软件和硬件上加强防护措施,防止非法访问和修改。
对付背后捅刀子,最好的方式就是从软件和硬件上实现国产自主 安全可信,采用国内自主设计、代工生产封装的 CPU 和自研的操作系统去取代国外的产品。
而且这也是对付正面捅刀子的前提条件,因为如果自己不掌握核心技术,依靠购买国外产品的话,老外卖给你什么,你用什么,就没法从整体上考虑安全方案,就很难提升面对黑客攻击的防御能力。
此外,固件也非常重要,固件就是硬件和操作系统之间的部分,基本功能是用来配置硬件引导系统。bios 是计算机里最重要的固件之一,nsa、cia 和 hacking team 都很喜欢通过 bios 植入木马。服务器里还有 bmc 固件,用来监控管理服务器。
在防御黑客的方面,由于 bios 比操作系统先运行,在把控制权传递给操作系统的时候,bios 可以去检验要运行的系统是不是符合预期,是否被篡改,因而 bios 可以通过传递信任关系到操作系统,让恶意代码无法执行。因此,固件在安全里有非常重要的位置。
总之,源代码中存在中文这仅仅是一个小障碍,而非不可逾越的技术瓶颈。至于用中文编程是根本没有必要的,虽然用中文编程可以解决一些中国人不懂英文的问题,然而现在英文是事实的世界语言,作为程序员不懂英文就没法跟其他国家的人交流,最后很有可能会走到闭门造车的路上,反而得不偿失。
要真正提升抵御网络攻击的防御能力,最好的做法是采用自主研发的产品取代国外产品,并在实践中不断使用、磨合、检验,最终实现螺旋式提升。