日前,维基解密爆料,CIA通过恶意软件等网络武器控制大量美国、欧洲等地企业的电子设备及操作系统产品,包括苹果手机、谷歌安卓系统、微软视窗系统和三星智能电视,把它们变成麦克风进行窃听,并将录音传输到中情局服务器上。

此外,维基解密爆料的一份文件中显示:执行中国任务的特工深受语言障碍的困扰。《参考消息》还以《维基解密网披露代码中的汉字挡住CIA黑客》为标题做了报道。那么,中文挡住CIA黑客究竟是怎么回事呢?

“维基解密”近期公布的文件显示,美国中情局通过各种方式攻击了中国等很多国家的电子设备。外交部回应:敦促美方攻击停止。

中文并不是抵挡CIA黑客的长远之计

虽然参考消息的报道以《维基解密网披露代码中的汉字挡住CIA黑客》为标题,且该标题颇有因为中文使CIA黑客束手无策,无法窃取中国秘密资料的含义。但事实上,这仅仅是CIA黑客看不懂中文导致的,若要实现信息安全,仅仅依靠源代码中的中文或中文注释是远远不够的,而且这也非长远之计。

由于绝大多数程序代码都是用通用编程语言写成,这些英文字母组成的代码,全球程序员都认识,但认识代码归认识,能不能彻底解读就是另一回事了——源代码一般都是比较晦涩的,没有注释的代码换了开发这个程序的工程师之外的人来读其实是很难读懂的。

因此,注释就伴随源代码而生,注释的作用是便于理解和交接给其他人,告诉别人代码实现的功能,如果看不懂源代码的注释,或者源代码根本就没有注释,那即便拿到了源代码也犹如天书。

国内一些企业和境外企业合资做CPU,或买授权做SOC,以及合资做所谓的Windows 10政府版操作系统,虽然购买了境外企业的授权,有可能获得了部分源代码,但设计文档和注释这些一般是无法从境外国际公司处获取的。这也是为什么,无论是CPU,还是操作系统,虽然在“十二五”期间,一些企业得到巨额专项资金扶持,但耗费数年时间和巨额资金,至今依旧拿境外技术穿马甲的原因之一。

而这次维基解密曝光的情况,其实是CIA黑客通过特殊手段获得源代码后,发现源代码没有英文注释所以读不懂。

虽然不少科班出身的程序员,一般都是循规蹈矩按部就班的用英文注释。但由于部分中国的软件工程师英文水平不够高,甚至一些程序员的英文其实非常有限,如果用英文注释很可能会出不少问题,因此会在源代码中用中文做注释。

在英文水平有限的情况下,如果用英文而不是中文注释的话,可能会有翻译错误、字母打错、以及英文专用名词过于生僻等一些问题。举例来说,比如创建时间,一般翻译CreateTime,但是也有人写成BuildDate,甚至有的时候会有字母打错,变成BuildData的情况,这种还是算能够看出来是打错字母的。

更多时候,打错字母的英文单词会导致其他程序员解读难度大幅攀升,怎么猜测都不对。如果用中文的话,不仅方便国内同行理解,也可以少发生产生歧义的情况。

另外,由于英文专业名词都是非常生僻的,非该专业领域的业内人士根本不认识该专业的相关专业术语的英文单词。以电力方面来说,程序员仅仅是码农,不是电力工程师,这就导致国内软件工程师在接国内项目后,根本不知道相关专业术语的英文单词,在这种情况下,就直接用中文或者拼音了。

一位软件工程师告诉笔者,“在XX电网的时候开发一套系统,里面上千个电网专业术语,如果用英文,可以撞头去死了……所以注释一般用中文,程序变量名用拼音”。其实,国内不少大公司也是会用中文拼音的。

而本次CIA黑客受阻于中文的真正原因,是因为中文博大精深,而国内程序员写了中文注释又很随意,没有一定的汉语文化功底的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可以通过传递信任关系到操作系统,让恶意代码无法执行。因此,固件在安全里有非常重要的位置。

总之,源代码中存在中文这仅仅是一个小障碍,而非不可逾越的技术瓶颈。至于用中文编程是根本没有必要的,虽然用中文编程可以解决一些中国人不懂英文的问题,然而现在英文是事实的世界语言,作为程序员不懂英文就没法跟其他国家的人交流,最后很有可能会走到闭门造车的路上,反而得不偿失。要真正提升抵御网络攻击的防御能力,最好的做法是采用自主研发的产品取代国外产品,并在实践中不断使用、磨合、检验,最终实现螺旋式提升。

本文转自d1net(转载)

铁流:代码中的汉字,为什么能挡住CIA黑客相关推荐

  1. DreamweaverCs5中代码中写汉字编译…

    这是由于编码问题,将下图中的相关代码改写为charset=gb2312

  2. 【Excel】用公式提取Excel单元格中的汉字

    昨天一个前端的朋友找我帮忙用excel提取代码中的汉字(字符串),可算费了劲儿了,他要提取的内容均在单引号中,但问题是没有统一的规律,同一个单元格可能存在多个要提取的内容,而且汉字中间也夹杂其他字符. ...

  3. 1、代码中设置编码、编辑器中设置Python的编码

    1Python中文编码 1.1代码中设置编码 Python中默认的编码格式是ASCII格式,在没有修改编码格式时无法正确打印汉字,所以在读取中文的时候会报错. 解决办法为只要在文件开头加入 # -- ...

  4. php获取汉字的长度,php中处理汉字字符串长度:strlen和mb_strlen

    PHP内置的字符串长度函数strlen()无法正确处理中文字符串,它得到的只是字符串所占的字节数.对于GB2312的中文编码,strlen得到的值是汉字个数的2倍,而对于UTF-8编码的中文,就是3倍 ...

  5. eclipse中的汉字极小的解决方案(转载)

    eclipse中的汉字极小的解决方案(转载) 可能新装了eclipse后,写java代码的时候发现,写注释的时候发现,汉字小的可怜,网上搜一下,又是改字体又是设置字体大小,试用后发现都不是针对这个的方 ...

  6. word 编辑域中的汉字_15条Word常用操作教程,简单实用,纯干货分享,收藏备用!...

    点击蓝字 关注我们 1. 去除页眉横线 在页眉插入信息的时候经常会在下面出现一条横线,如果这条横线影响你的视觉. 这时你可以采用下述的两种方法去掉: 用第一种的朋友比较多,即选中页眉的内容后,选取&q ...

  7. 代码随笔——点阵汉字在LCD上的显示

    代码随笔--点阵汉字在LCD上的显示 注:本文约在半年到一年前写的. 其实我以前从没想过写Framebuffer的代码,网上流传较多的是LCD的移植(主要改参数),之后没下文了.不过,曾经兴致冲冲地想 ...

  8. Excel的html转换成unicode,EXCEL表格中把汉字转换成unicode编码

    由于单片机程序的需要,要进行汉字和Unicode的编码的互换,因此要建立一张码表,格式是这样的 {"阿","963F"}, .但是常用汉字好几千个,通过转换软件 ...

  9. Java代码中的注释详解

    2019独角兽企业重金招聘Python工程师标准>>> java注释详解 声明:本文系JavaEye网站发布的原创博客文章,未经作者书面许可,严禁任何网站转载本文,否则必将追究法律责 ...

最新文章

  1. 一个在分割、检测与定位、高分辨率通用的网络
  2. OAuth2 实现单点登录 SSO
  3. 参加开发竞赛遇到的问题【总结】
  4. java中特殊流程控制语句,深入分析JAVA流程控制语句
  5. 视频编解码(一):编解码器cedarc/libcedarx编译工具链配置
  6. 拓端tecdat|R语言再保险合同定价案例研究
  7. SQL查询效率-100w数据查询只要1秒
  8. 2022安好? 2023何如?
  9. Check It Again: Progressive Visual Question Answeringvia Visual Entailment(SAR)
  10. 显示如何用最少的20美元来付款
  11. 马虎词汇教程16-20(转载)
  12. 万年历(C语言代码实现)
  13. html中js隐藏div的高度,javascript获取隐藏元素(display:none)的高度和宽度的方法
  14. 宝塔Nginx编译安装headers_more模块
  15. CSAPP 3e Attack lab
  16. java获取请求本机ip地址
  17. xfplay(先锋影音) v8.9.6 官方版​
  18. 【Windows Server 2019】发布服务器 | 远程桌面服务的安装与配置 Ⅱ——配置RemoteAPP和访问
  19. 观点丨李飞飞:我们怎么教计算机理解图片
  20. 如何在Java中创建临时文件?

热门文章

  1. xcode iOS 上传appstore 一直卡在正在通过 App Store 进行鉴定
  2. python趣味编程100例-Python游戏趣味编程
  3. 通信原理 | 宽带:运营商的带宽和实际网速的关系
  4. 随机森林的构建过程(机器学习)
  5. Bootstrap(三) 网格系统
  6. Spherical Harmonics Lighting in DirectX
  7. 6种纯css3徽章样式
  8. 阿拉伯数字转化为大写汉字
  9. WPF开发(1)——建立WPF工程
  10. MYSQL UNION 同列类型不同时的处理方法