CIA的海外间谍,要如何完美避开AI的监控?

不寒而栗 发自 凹非寺
量子位 出品 | 公众号 QbitAI

640?wx_fmt=gif&wxfrom=5&wx_lazy=1

美国中央情报局 (CIA) 说,

各国都在用AI执行反间谍任务,

CIA派往海外的情报人员,

常常非死即下落不明。

如今的情报战争,也已是AI之间的战争了。

640?wx_fmt=gif

但情报机构并不希望,人类工作者成为这场战争的炮灰。CIA正在进行的137个AI项目里,帮助情报人员躲避监控的算法傲然挺立。

你看不到我,吧

上周,CIA科技司副司长Dawn Meyerriecks说,以前在海外工作的间谍被连续跟踪几小时根本不是问题。

640?wx_fmt=gif

但自从摄像头从各个角落里长了出来,背后还有图像识别与分析系统的加持,反跟踪的难度不知提升了多少。对手获得了上帝视角,游戏体验自然变得很差。

在大约30个国家里,包括闭路电视和无线基础设施在内的数字监控,部署都已经非常完善。新加坡从好几年前就开始用这些设备来代替跟踪,副司长是这样说的。

为了让情报人员不要输在AI定下的起跑线,除了专业技能的严格训练,CIA也计划为他们装备一些AI,让斗争显得公平一些。

640?wx_fmt=gif

CIA正在进行的一个AI项目里,团队提取了一些未分类的航拍影像街景,加上机器学习算法,在某个CIA触角不及的大都市,画出了摄像头分布图

这样一来,情报人员就能知道,在哪些区域活动容易被监视,并以此合理规划出行路线,来躲避摄像头的目光。

不要留下任何足迹

不久前,俄罗斯刚刚驱逐了数十位美国外交官,可以看作对美国此前类似动作的报复。另外,在CIA派往他国的工作人员之中,死亡或失踪现象时有发生。

640?wx_fmt=jpeg

在紧张的国际关系里,躲避无微不至的监控对情报人员的安全来说尤为重要。

不过,他们需要防范的远不止摄像头。社交媒体和手机追踪,以及其他科技产品的使用,都有可能存在安全隐患。

运动手环供应商Strava曾经发布的用户数据统计中,有一些来自敏感地带 (比如战区) 的数据,引发了军事和情报机构的担忧。毕竟,联网设备走到哪里都会留下痕迹。

640?wx_fmt=jpeg

对此,Meyerriecks似乎带着些许苦涩自嘲了一下——你觉得,到公司之前的10分钟关掉手机,别人就不知道你要去哪儿么?

面对数字追踪设备,情报人员需要更好地伪装自己,帮助机器做出错误的判断。至于具体怎样骗过聪明的系统,副司长也没有展开详情。

从一般生物的视角出发,我也只能想到给设备装上伪装定位的应用、做些防跟踪的改造,不然就是故意把它扔在某个地方然后走开的物理伪装。

640?wx_fmt=gif

Meyerriecks说,系统可能以为你和家人去看电影了,事实上你并没有。一切的套路,都是为了让你的生活轨迹平平无奇,起码要让AI相信这一点。

厚积薄发的神秘部门

这位科技司长,看似对人工智能浪潮里的情报工作表示了深邃的担忧,但CIA作为资深情报机构,也是从上世纪80年代开始研究AI的老司机。

1984年一些政府文件,描述过名为“AI Steering Group”的神秘小组。那时,这个组织负责向CIA的大佬们提供,AI研发进展的月度报告。

640?wx_fmt=png

在一份解密后的备忘录里,小组负责人对CIA高层介绍——在专家系统、自然语言处理、智能数据库接口、图像理解、信号翻译、地理和空间数据管理,以及智能工作站环境等领域里,都有研发进展。

多年后的今天,除了137项正在进行的AI计划,CIA旗下的风投公司In-Q-Tel也已投资多家尖端科技企业。这个名称源自“007”的团队,承担着为CIA输送前沿技术的职责。

640?wx_fmt=gif

In-Q-Tel收购列表的传送门:
http://www.businessinsider.com/companies-funded-by-cia-2016-9/#orbital-insight-analyzes-the-millions-of-satellite-images-being-beamed-back-to-earth-to-answer-all-kinds-of-interesting-questions-2

来自1984的文件传送门:
https://www.cia.gov/library/readingroom/docs/CIA-RDP86M00886R000500040004-2.pdf

最后,请领取今日份的盛情安利:
《Princess Principal》,大河内一楼的旧番

640?wx_fmt=gif

加入社群

量子位AI社群16群开始招募啦,欢迎对AI感兴趣的同学,加小助手微信qbitbot6入群;


此外,量子位专业细分群(自动驾驶、CV、NLP、机器学习等)正在招募,面向正在从事相关领域的工程师及研究人员。


进群请加小助手微信号qbitbot6,并务必备注相应群的关键词~通过审核后我们将邀请进群。(专业群审核较严,敬请谅解)

诚挚招聘

量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复“招聘”两个字。

640?wx_fmt=jpeg

量子位 QbitAI · 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态


<think>我们正在讨论CANopenNode中CiA402状态机的配置。根据之前的引用,我们知道CANopenNode本身不预置CiA402状态机,需要开发者自己实现。状态机的转换逻辑通常由控制字(0x6040)和状态字(0x6041)驱动。以下是配置步骤:1.**理解CiA402状态机**:-CiA402定义了驱动器的状态转换图,包括状态:启动(Start)、未准备就绪(NotReadytoSwitchOn)、准备就绪(SwitchOnDisabled)、就绪(ReadytoSwitchOn)、运行(OperationEnabled)、故障(Fault)等。-状态转换由控制字(ControlWord)的位触发,并通过状态字(StatusWord)反映当前状态。2.**在对象字典中定义相关对象**:-在`CO_OD.c`(对象字典源文件)中,确保已定义以下关键对象:-控制字(0x6040):16位无符号整数,用于发送状态转换命令。-状态字(0x6041):16位无符号整数,用于报告当前状态。-其他必要对象(如模式相关对象)。3.**实现状态机逻辑**:-在CANopenNode中,状态机逻辑通常在`CO_OD.c`的回调函数或主应用程序循环中实现。-创建一个状态变量(如`currentState`)来跟踪当前状态。-监听控制字的变化(通过SDO或PDO写入),根据控制字的位触发状态转换。4.**状态转换函数示例**:-例如,当控制字位6(上升沿)触发时,从“准备就绪”状态转换到“运行”状态:```cvoidhandleStateTransition(uint16_tcontrolWord){staticuint8_tcurrentState=STATE_SWITCH_ON_DISABLED;uint8_tnextState=currentState;switch(currentState){caseSTATE_SWITCH_ON_DISABLED:if((controlWord&0x0006)==0x0006){//位1和位2置位nextState=STATE_READY_TO_SWITCH_ON;}break;caseSTATE_READY_TO_SWITCH_ON:if(controlWord&0x000F==0x000F){//位0-3置位nextState=STATE_OPERATION_ENABLED;}break;//其他状态转换...}currentState=nextState;//更新状态字(0x6041)的值CO_OD_RAM.statusWord=...;//根据状态设置状态字}```5.**实时性处理**:-状态机应在CANopen线程(如`CO_process()`)中定期调用,确保及时响应控制字变化[^1]。6.**错误处理**:-在状态转换中检查非法操作(如从故障状态直接跳转到运行状态),并触发错误代码。>**注意**:完整实现需参考[CIA402规范](https://www.can-cia.org/standards/canopen/)的状态转换图。§§相关问题§§1.CiA402状态机中如何处理故障复位?2.如何通过PDO快速传输控制字和状态字?3.CANopenNode中对象字典回调函数如何配置状态机触发?</think>### CANopenNode 配置 CiA 402 状态机转换逻辑指南 在 CANopenNode 中实现 CiA 402 状态机转换逻辑需要开发者自行编程实现,以下是关键步骤和代码示例: #### 1. **状态机核心组件配置** 在对象字典中定义关键对象: ```c // CO_OD.h 中定义对象字典条目 {0x6040, 0x00, CO_ODF_RW, 4, (void*)&controlWord}, // 控制字 (16位) {0x6041, 0x00, CO_ODF_RO, 4, (void*)&statusWord}, // 状态字 (16位) {0x6060, 0x00, CO_ODF_RW, 1, (void*)&operationMode} // 运行模式 ``` 这些对象用于状态转换指令和状态反馈[^3]。 #### 2. **状态机逻辑实现** 在应用层代码中实现状态转换逻辑: ```c // 状态定义 (参考CiA402规范) typedef enum { STATE_NOT_READY = 0, STATE_SWITCH_ON_DISABLED, STATE_READY_TO_SWITCH_ON, STATE_SWITCHED_ON, STATE_OPERATION_ENABLED, STATE_FAULT } cia402_state_t; // 状态转换函数 void handleStateTransition(uint16_t controlWord) { static cia402_state_t currentState = STATE_SWITCH_ON_DISABLED; switch(currentState) { case STATE_SWITCH_ON_DISABLED: if((controlWord & 0x0006) == 0x0006) { // 位1和2置位 enterReadyState(); // 进入准备状态 currentState = STATE_READY_TO_SWITCH_ON; } break; case STATE_READY_TO_SWITCH_ON: if((controlWord & 0x000F) == 0x000F) { // 位0-3置位 enterOperationState(); // 进入运行状态[^1] currentState = STATE_OPERATION_ENABLED; } break; case STATE_OPERATION_ENABLED: if(controlWord & 0x0080) { // 位7置位 enterStoppedState(); // 进入停止状态[^1] currentState = STATE_SWITCHED_ON; } break; // 其他状态转换逻辑... } updateStatusWord(currentState); // 更新状态字 } ``` #### 3. **事件触发机制** 在 CANopen 处理循环中监听变化: ```c void CO_appTask(void) { CO_process(); // CANopen 协议栈处理 // 检查控制字变化 if(controlWordChanged) { handleStateTransition(CO_OD_RAM.controlWord); controlWordChanged = false; } // 状态字自动更新 CO_OD_ROM.statusWord = getCurrentStatusWord(); } ``` #### 4. **关键实现要点** 1. **控制字解析**: - 位6 (0x0040):开启运行 - 位7 (0x0080):故障复位 - 位8 (0x0100):暂停 2. **状态字反馈**: ```c uint16_t getCurrentStatusWord() { uint16_t word = 0; word |= (currentState << 8); // 状态编码在8-11位 word |= (deviceFault ? 0x08 : 0); // 故障标志位3 return word; } ``` 3. **错误处理**: - 在非法状态转换时触发错误对象 (0x1003) - 更新故障代码对象 (0x603F) > **调试建议**:使用 CanFestival 的对象字典编辑器可视化状态转换[^2],并通过 SDO 监控状态字变化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值