FMO(NFM Over Internet) 责任模型
第一次接触 FMO 的人,常常会看到一个看似矛盾的画面:这个网络持证爱好者似乎每天都在折腾什么东西,于是有人得出一个直观的结论——这是一个“开放”的地方。
本文想澄清一个机制上的事实:FMO的“开放”只存在于接入与构建这两个维度;而在责任维度上,它把"谁负责"这个问题,回答得比大多数网络更不留余地。自主管理与问责并不冲突,它们只是同一枚硬币的两面。
一、自主管理与问责,是两个不同的维度
- 自主管理,说的是这个网络不依赖单一服务器来运转,决定权在各个持证的爱好者手里。
- 问责性,说的是网络上每一个可观察的行为,都能且只能归属到一个具体的持证爱好者。
FMO设计的这套机制的思想是:自主管理,问责收紧。这有点类似于国家医疗体系,医生有自主权,但要对结果负责,同样FMO网络里持证爱好者自主治理,但要对自己的行为负责,且 数学上无法抵赖(这是重点)。道理特别朴素:一个系统可不可控,取决于当一件事发生时,责任能不能稳定地落下去。能落下去,它就是可管的;落不下去,无论表面管得多严,它都是失控的。
在现实世界里,自主管理不是靠人人道德自觉,而是靠机制让“为自己负责”和“为系统负责”重合。FMO借鉴了这个设计:每个人都是自己行为的第一责任人,在互联网上,匿名会伤害这种责任追溯,因此FMO用数字证书/数字签名强行把数字身份和真实身份进行绑定,实现了数学上的不可抵赖。这正是FMO和MMDVM/EchoLink这种松散的通联结构最大的不同–FMO内化了追责机制,且把这套问责机制做成了整个网络的地基,是国家机器可以对整个FMO网络进行管控的根本,是整个系统安全边界。
二、入口即实名:一台设备,锚定一个人
设备绑定激活是进入这个网络的唯一入口,而第一道校验不来自厂商,而来自国家:
- 绑定必须通过 CRAC 官方接口验证电子操作证——这是国家无线电管理体系中登记在册的数据。
- 同时核验身份信息与手机号,背后是运营商的实名认证体系。
我们不自作主张判断"谁是爱好者"。我们只是把现成的权威信任串联起来:CRAC 说你持证,运营商说你是你,设备才被允许开出一张属于你的凭证。
由此得到一个结构性的结果:这个网络里没有匿名注册,也没有批量开号的土壤。一台设备在出厂、绑定、激活的整个链条里,始终对应着唯一一个实名呼号。责任的第一环,在发证与登记机构那里就已经被锚定。
未持有操作证、未通过实名核验的人无法获得设备身份,因而无法进入网络——准入机制天然排斥无身份进入。对监管而言,每一个在线主体都是经过核验、可唯一对应的真实身份,溯源无需追查未知信源,责任从一开始就锚定在具体个人身上,地区自主可控。
三、谁在说?能冒充?可否认?
我们写了不少数字证书、签名的技术文档,这些词,容易让不搞技术的人望而生畏。其实这套体系做的事,可以还原成三个大白话问题。
问题一:是谁在说?
一个 FMO 爱好者开口通联,从来不是从一个匿名账号里冒出来的。那可能有人会想:那平时通联时,每次都要有一个中心平台来证明我是谁吗?
这里有一个关键的思维反转:
传统商业平台的做法是:由一个中央服务器来证明“你是谁”。
FMO 不是商业平台,它是业余无线电爱好者自发组建的网络,没有中心服务器可以替任何人背书。
所以它换了一个问题:不是“平台证明你是谁”,而是“你自己证明你是谁”。
这听起来像要你证明“我是我妈生的”一样难。但在数字世界里,这件事可以通过 数字证书/签名体系 实现。你不需要理解算法细节,只要知道:你可以出示一份数学证明,别人能立刻验证它为真,却无法伪造。银行的U盾/互联网的安全https都是用这套思想。而FMO没有发明新东西,只是把这套思想用在“验证你是一个持证爱好者”这件事上。
基于这个前提,FMO 的安全身份机制就清楚了:
你拿什么证明自己? 你手里那台设备,经过 CRAC 接口核对过电子操作证,绑定了你的实名信息。设备里存着一份只有你能用的身份凭证。这把“你这个人”和“你的呼号”锁在一起,别处没有第二把。
怎么证明这个呼号是你的? 入口即实名。你必须先用国家认可的证明,证明自己是持证爱好者,系统才会给你一份“设备认可证明”,上面写着“认可你是爱好者,你的呼号是 XXX”。
怎么证明给别人? 不需要去任何认证中心开证明。你直接说“我是某呼号”,然后出示凭证。对方当场在本地验核你的凭证和设备认可证明,不靠任何人转告,也不靠服务器担保。
对外公告也一样。 设备在 APRS 上发布的台站公告,每一条都带签名和设备认可。任何设备都能独立验明“这条确实出自该呼号”。想冒用别人的呼号?你没有他的凭证,就永远证明不了。
这个设计实现了一个没有核心实时运行服务器的网络,却让信任可以自己流转。它把真实的身份牢牢锁定在本人真实的物理身份之上。
也就是说在开口之前,这个机制就已经把“说话的人是谁”锁定好了。
问题二:能冒充别人吗?
- 直接顶用别人的身份登录:如果你看明白问题一,就知道这件事儿数学上做不到,FMO使用了数字证书/签名体系。身份凭证在本人设备里,认证这一关就过不去;设备转手时,旧主人必须先删除自己的凭证、新主人重新实名签发,身份不能像旧名片一样传给下家。
- 借真身份的名义说话:实时语音无法逐包做公钥运算——成本与延迟都不可行,因此媒体数据明文传送、不逐包签名。理论上,有人可以在保持自己合法连接的同时,把包头声明写成别人。但只要装了审计组件(FAS),服务器会实时比对"包头声明是谁"与"连接认证出的是谁",只要对不上,这条连接就被自动拉黑:踢下线、禁连、全程留痕(参见FAS 安装指南)。在尽责的服务器上,声音与本人是一一对应的,冒名者刚开口就会被请出去;没装审计组件的服务器没有这道自动防线,只能靠管理员人工把关,但这不意味着责任消失,如果管理人员把关不严,无法溯源,那么责任就会重重的落在他的肩上。
问题三:事后赖得掉吗?
- 公告与广播层:带签名、进入 APRS 公开档案长期留存,公开、可验;
- 服务器的事件层:登录、上下线、发言时段、被拒、被踢等由审计组件(FAS)记录,可按时间轴反查;冒名者开不了口,真实身份说过的话,责任当然归属于绑定身份的那个人。
在这张网里,找不到一个没有责任的位置让你偷偷说话。
恶意干扰并不依赖事后举报:身份冒用、声明与连接不符等行为会被审计组件自动识别、即时拦截并全程留痕——干扰即发现,发现即留痕。
四、留痕留的到底是什么?
通联产生的痕迹,分两类:
- 公共的活动档案-APRS:设备与服务器对外发布的公告与广播(在用户主动开启发布功能的前提下),进入 APRS 公开网络后被收录并长期留存。它们带着可验证的签名,公开、可查、跨服务器存在。要特别注明:它记录的是‘谁、何时、对外宣告了什么’,并且带有数字签名,是一份可验证的公开档案,可以随时被调取并验证签名。
- 节点上的事件记录-服务器:一个完整安装SAS+FAS组件的服务器会记录登录、上下线、发言时段、被拒、被踢等事件。
所以,这个设计的着力点不是替谁保管内容,而是让归属在任何时候都锚得住——谁在线、谁在说话、是不是他本人、有没有人冒名。记录服务于"责任落得到人",而不是服务于"尽量多存数据"。
说清这些,是为了避免一个误会:这一切不是监视。业余无线电本来就是公开通信,但也不应该给任何人"说了当没说"的错觉,因为:所有对外的公告一旦进入公开档案就难以抹掉;在完整的节点上,每一次上线、每一段发言都连着你的呼号。 让行为产生后果,靠的是这些事实,而不是一句口号。
五、服务器与集群:责任没有藏身处
有人会问:个人可以追,那服务器呢?几个服务器抱团呢?
服务器不是匿名的中转站。 每一台服务器同样由持证的个体建设,以数字身份运行,它在 APRS 网络上发布的公告同样带可验证的签名。服务器只是流量的转手点,不是责任的终点:跨服务器的内容纠纷遵循一条原则——内容从哪个出口出去,哪个出口就要说清它从哪来;拿不出完整的流转记录,管理失职的责任就落在这个节点自己头上。这里要诚实补一句:装不装审计组件、留不留事件记录,由服务器管理员自己决定,但不装、不留,不等于没有责任,只是把安全责任整个压到了管理员自己肩上。
集群也摊不薄责任。 几台服务器以联盟、共用后台、联合宣导的方式"协同作战",并不会凭空产生一个新的责任主体。协议不承认任何集群的"官方"地位;落到账面上,依然是每台独立服务器各自的记录。想用组织化的方式把责任稀释掉,在这个体系里稀释不掉——账面上从来没有"集群"这个主体,只有一台台身份可查、行为可问的服务器。
所以在 FMO 里,一条消息无论经过多少台机器、背后站着多少人,能被问到的最终对象只有一个——那个持证上线、以本人身份说话或建服的人。全网没有任何一处,能让责任"再往上找就找不到"。
这意味着监管部门溯源时无需追查未知信源:每一次内容出口都有明确的责任主体与完整流转记录,出口节点先承担管理义务,线索链完整、可核验。
六、生态内外的边界
生态内部,最重的手段是数字证书吊销:当某个呼号或某台服务器严重越过底线时,其数字身份在协议下被整体撤销,无法继续使用任何基于FMO设备的服务。
生态外部,也就是涉嫌违法的行为,不属于协议能管辖的范围,但也不会因为离开了某台服务器而消失。入口的实名、设备的身份、出口的记录,三者都在,链路指向一个清晰的主体。在法定义务范围内,我们愿意配合有关部门依法核查,这一承诺也写进了设备的免责与隐私声明。
把两件事放在一起:这个生态把建设与选择的权利交还给爱好者,同时也把每一条行为的责任,完整地放在行为者肩上。
自主管理不等于放任,自由不等于免责。
FMO 的选择是:把连接的权力交给社区,把规则的演化交给协议,把责任的重量交给每一个持证的个人。这套设计能成立,恰恰因为责任落得到具体的人头上——正因为落得到人,网络才敢放心地交给社区。