窃听风云| 苏联如何用IBM打字机获取美国情报

在一份首次发表后几年最近又重新浮出水面的国家安全局备忘录中,记载了对很可能是全世界史上第一个键盘记录器的详细分析:七十年代苏联间谍将窃听器植入美国外交官的IBM Selectric电动打字机,用来监视机密信件和备忘录。

这枚机电植入物是一个不小的工程奇迹。高度小型化的一系列电路板被塞进一条打字机长度的金属棒,使得肉眼看不出它们。这个只能用X射线看到的植入物记录电动打字机用来在纸上打印字符的字球的精确位置。除了空格、制表符、连字符和退格,这个微型装置有记录每个按键并实时发送回苏联间谍的能力。

“获利丰厚的信息来源”

通过对10多吨从美国使领馆查封运回美国的设备的煞费苦心的分析,这些苏联植入物才被发现。最终在美国驻莫斯科大使馆和列宁格勒领事馆1976年到1984年间使用的16台打字机中发现了植入物。在整整八年间,该漏洞从未被发现,仅仅在得到自己的使馆也成为类似窃听行动目标的美国盟友的情报后才被曝光。

“尽管只知道哪些字符被键入还是模棱两可的,针对美国的打字机攻击是苏联的获利丰厚的信息来源,” 几年前解密的一份国家安全局文件得出结论。“因为它进行了这么长时间,很难量化这个漏洞对美国造成的损害。”在2012年这份NSA文档发表在这里。我们现在报道这篇文档是因为以前它似乎并未被广泛报道过,而且在周一在加密和安全专家Bruce Schneier的博客上产生了生动的对话。

当该植入物首次被报道时,发现杂志引用一位窃听专家的推测称,它通过测量打印每个字符的细微时间差异来工作。这个理论是基于观察到电动打字机的字球对每个字母完成旋转的时间都不同。一个植入房间里的低技术监听设备会把电动打字机的打字声传送给一台苏联人运作的电脑来重建按键序列。

事实上,该植入物远为更先进,并通过测量“轨道”的移动工作,这是分析师们给控制字球的倾斜和旋转的机械臂起的名字。根据NSA的文件:

在现实中,轨道的移动确定键入的是哪个字符,因为每个字符都对应于轨道的独特二进制运动。金属棒里的传感器拾取到的磁性能量被转换成数字电信号,该信号被压缩成一个四位频率选择字,窃听器能存储多达八个四位字符。当缓冲区满了时,金属棒里的一个发射器就向苏联的传感器发出信息。

在确定哪些字符被键入时有些模棱两可。NSA分析员们使用概率定律得以找出苏联可能是如何恢复文本的。使得文本难以恢复的其他因素包括这些:植入物不能检测字球不移动打出的字符,如果打字员按下空格、制表、大写或退格键,这些字符对植入物都是隐形的。因为连字符位于字球的原位,打字员按连字符时字球不会移动或倾斜,窃听器也读不出连字符。


装有窃听器的电动打字机电源开关

这些植入物接受升级的数量也很可观。这些窃听器远远不是建造一次就任由它们去工作,而是被不断完善。该文件说:

苏联不断升级和改进他们的植入物,有五个变种或世代的窃听器,有三种类型的单元使用直流电运作,并包含八、九、或十节电池。另外两种类型用交流电,并有信标指示打字机是开启还是关闭。一些单元有修改过的带变压器的开关,而其它的则有特殊的带弹簧和凸耳的同轴螺钉,修改后的开关给植入物供电。由于电池供电的机器有它们自己的内部电源,开关就不必修改。带有弹簧和凸耳的专用同轴螺钉将植入物连接到打印机连杆机构, 把该连杆机构用作天线来在打字时传送信息。后来的电池供电植入物在一端螺丝下有一个测试点,一个人拆下螺钉并插入探针,就可以很容易地读取电池电压,看电池是否还有电。

苏联的智慧是非凡的,因为他们不只是从电池转移到交流供电,有早期版本和后来版本的窃听器都有使用两种电源。NSA发现前三个植入物用电池供电。其中第一个在1976年10月运往莫斯科,其余两个在1977年4月运送。第一个使用交流电作为其电源的窃听器在1977年11月运往莫斯科。剩下9台在莫斯科发现的机器使用交流电作为电源,且比第一个交流供电的窃听器更先进。5台有先进型号交流电装有窃听器的打字机在1982年2月交付莫斯科,其余的在1984年1月交付。在列宁格勒领事馆发现的有后期电池供电装有窃听器的打字机是在1977年4月至1982年3月运送的。

所有的植入物都相当复杂。每个植入物都有一个磁力计,将按键的机械能转换为局部磁场扰动,植入物中的电子封装响应这些干扰,分类基础数据,并把结果发送到附近的监听站。数据通过无线电频率传输,植入物通过远程控制启用。这些窃听器的另一个优点是易于安装,工程师们估计,一个熟练的技术人员可以在半小时内在打字机里安装植入物。其集成电路对于当时是非常复杂的,电路板包含一比特磁芯内存,这是NSA工程师们从未见过的一个进步。

当苏联知道检查小组在附近时,这些设备可以被关闭,以避免检测。由美国运作的较新设备可能有检测这些植入物的能力,但即使这样,还是需要运气成分,因为受感染的打字机将必须要开机,窃听器必须要被打开,而且分析仪必须调节到正确频率。为了降低这种风险,苏联间谍故意设计这些设备使用与当地电视台相同的频段。

一度机密的发现和响应这些植入物的“枪手工程”强调了在过去40年中黑客的剧烈变化。

“现在就容易多了,因为一切都是联网的,”Resilient Systems公司的CTO Schneier说,“一切都计算机化,使之变得容易得多。当你仅仅需要侵入别人的电脑,即使它与互联网完全隔离,这也是一件容易得多的工作,这就是为什么每个人都能做到,包括罪犯。”

原文发布时间为:2015-10-16

时间: 2024-12-05 03:13:03

窃听风云| 苏联如何用IBM打字机获取美国情报的相关文章

VS2013如何用npoi来获取某个execl文件的数据

问题描述 VS2013如何用npoi来获取某个execl文件的数据 RT 开发环境是vs2013 + mssql08, 项目是个WPF, 想实现简单的一个按钮功能, 就是能够选择一个xls文件(execl的格式是固定的,比如只有8个列,每个列都是数字),然后获得这个文件里的数据,存到我自己的类里面(类里定义的有对应的属性),然后把所有的数据逐行存到数据库对应的表里面, 因为我是自学的.NET 所以很多比较基础的东西一知半解,网上搜的一些源码用没办法调试成功,所以跪求大神给段代码, 最好是封装的方

vc++6.0MFC如何用基于对话框获取实时数据画曲线图?

问题描述 vc++6.0MFC如何用基于对话框获取实时数据画曲线图? 在vc++6.0下,将文件中前2通道的数据读出,并在界面上显示其形状,能放大和缩小波形,以便看到更多波形的细节. 文件后缀名:.cmc 解决方案 用mschart控件http://blog.csdn.net/youoran/article/details/8460875http://blog.sina.com.cn/s/blog_9a2a952201018ey9.html

cocos2d x-Cocosd-x如何用curl如何获取天气

问题描述 Cocosd-x如何用curl如何获取天气 如题求解,最好用curl,如果有其他方法也可以,越详细越好,Cocos2d-x版本为3.5,谢了 解决方案 你只要找到一个有提供天气信息的网站,curl就可以提交http请求获取返回的数据,然后你再解析获取对应内容.

如何用java程序获取优酷视频的真实地址,可以下载的?

问题描述 如何用java程序获取优酷视频的真实地址,可以下载的? 求大神指教,怎样用java代码实现获取优酷视频下载的链接地址,万分感谢 解决方案 获取优酷视频地址方法

软件和网页互动-如何用python实现获取操作网页的信息?

问题描述 如何用python实现获取操作网页的信息? 例如用python做了一个html文件(路径在本地),用浏览器打开后,可以在这个页面点击某个链接或者选取某段文字,那么这些动作信息(例如点击了哪个链接或者选择了哪段文字)怎样用python编程获取到呢? 谢谢!!

linux java cpu-在linux下如何用java代码获取cpuid 主板id

问题描述 在linux下如何用java代码获取cpuid 主板id 在linux平台下,如何用java代码获取cpulid和主板id dmidecode可以使用sudo去获取这些信息 但java代码(Runtime)无法sudo执行dmidecode命令 请问要怎么解决

ios开发-如何用从服务器获取的时间来对程序中的时间进行同步。

问题描述 如何用从服务器获取的时间来对程序中的时间进行同步. 在IOS开发中,如何用从服务器获取的时间来对程序中的时间进行同步. 解决方案 使程序调用服务器时间调用服务器时间的倒计时程序获取数据库服务器时间

谢谢-如何用echarts图表获取后台json数据变成动态数据,

问题描述 如何用echarts图表获取后台json数据变成动态数据, 网站首页是用echarts图表布局的数据,但是是静态的,需要送后台获取json数据生成动态数据,新手不知道怎么搞? 解决方案 使用ajax,向后台请求获取json数据 解决方案二: http://www.w3school.com.cn/jquery/ajax_ajax.asp ajax从动态页获取到数据后再生成echarts,将数据赋值给echarts相关配置

【百度地图API】如何用圆形搜索获取中心点周围100米内全部关键点?如天安门附近所有的餐厅、加油站、宾馆、大厦等

原文:[百度地图API]如何用圆形搜索获取中心点周围100米内全部关键点?如天安门附近所有的餐厅.加油站.宾馆.大厦等 摘要: 在LBS上有这样一个常用的功能,查找附近所有的关键点(POI点,比如标志性建筑物,餐厅,大厦,加油站等).相信大家对search已经非常熟悉了,可是search必须要传"关键字"参数,即使是多关键字搜索,也要把所有POI的tag都一一列举出来,才能搜索到结果.那么,有没有什么办法,可以不用关键字,就搜索到附近全部的POI呢? 答案是肯定的.我们一起来学习一下吧