← 分解之前德麦国际专著第 98 号王德生 · Claude

第五十七章 免疫学与密码学:被删掉的判定,与被设计成脱钩的痕迹

五、免疫学:被删掉的那些判定

免疫学的核心问题只有一个:这是不是我。

每一个进入体内的东西都要被判一次,判错的代价极高:判”是我”而其实是病原,则感染;判”不是我”而其实是自身组织,则自身免疫。埃尔利希在二十世纪初把后者叫做”自体毒性之恐”(horror autotoxicus),把”绝不攻击自己”立为免疫系统的第一戒律。

这条戒律怎么落实?伯内特的克隆选择学说(1957)给了答案,而这个答案对本文极重要。

5.1 阴性选择:一次不留记录的大规模删除

免疫系统不是先造出一套”识别非我”的规则,再照着执行。它是先随机造出巨量的识别可能性,再把不合格的删掉。

淋巴细胞的抗原受体由基因片段随机重组生成,可能的特异性数目是天文数字。这些前体细胞在胸腺(T 细胞)或骨髓(B 细胞)中经过筛选:与自身抗原结合过强的被清除(阴性选择),完全不能与自身分子有效结合的也活不下来(因未获阳性选择而凋亡,即所谓”因被忽视而死”)。两条路合起来,绝大多数前体细胞死在成熟之前——常被引述的比例在九成以上。

关键在这里:成熟的淋巴细胞库存里,没有任何一个字段记录”哪些特异性曾经存在过、又被删掉了”。

活下来的细胞就是全部。一个只看成熟库存的观察者,会看到一套”恰好不攻击自身、恰好能识别外来物”的识别系统,并很自然地认为这套系统是被设计成这样的,或者是逐步学出来的。他不会看到被删掉的那一大片,因为被删掉的东西在库存清单上不占位置。

这是守恒假定的免疫学版本,也是它在免疫学里被推翻的地方:识别能力的范围,不正比于库存的规模。库存是巨大删除之后的余数,而余数不携带被删者的信息。

5.2 耐受与未遭遇:表型上不可区分

第二处更尖锐。

免疫系统对某个东西不起反应,可以有两种完全不同的原因:它从未遇到过这个东西;或者它遇到过,并且主动地建立了对它的耐受。

从外部表型看,这两种情况一模一样:都是”没有反应”。但机制完全不同。中枢耐受是一次主动的清除,外周耐受要靠调节性 T 细胞持续维持——它需要细胞、需要信号、需要能量,是一件正在被做的工作,不是一件没做的事。妊娠是最清楚的例子:母体对携带一半父源抗原的胎儿不起排斥反应,这不是疏忽,是一整套耗费资源的主动机制。

于是免疫学给出了本文所需的第二件东西:“没有发生的那一次”分两种,一种是真的没有,一种是被做掉的,而只看结果的记录格式无法区分它们。

要区分,必须另开一条通道。免疫学开的是免疫组库测序:把选择之前的受体序列库与成熟后的库并排测,两者之差就是被删掉的那一部分。这条通道不看结果看过程,不看库存看差值。

5.3 两派之争:判据本身在被改写

还有第三件事。免疫学内部关于”判什么”的分歧一直没有停。自我/非我模型之外,马青格(Matzinger 1994)提出危险模型:免疫系统响应的不是”非我”,而是组织受损发出的危险信号;普拉德(Pradeu 等)提出不连续性理论:触发响应的是抗原模式的突然变化,而不是它属于哪一侧。

这三派之争的形状,恰恰是 T 与 N 的形状:一派认为存在一条现成的自我/非我界线(Σ 已完备给出),另一派认为这条界线本身是在每一次遭遇中被重定的(Σ 未完备给出)。免疫学没有靠哲学论证解决这个争论——它靠的是不断给出判据被改写的具体机制(共生菌群、母胎耐受、肿瘤免疫编辑),让”现成界线”这一侧不断退让。

这一点对本文有直接后果,第十节会用到。

六、密码学:承诺的厚度与被承诺物的厚度

第三家来自一个与前两家毫无交集的领域。

密码学里有一个基本构件叫承诺方案。它做的事情很像把一个数字写在纸上,装进信封,封好,交给对方。此后:

我不能再改这个数(绑定性,binding);

对方在信封被打开之前不知道这个数(隐藏性,hiding)。

这两条要求正是二律背反的两侧:绑定性说”这个值已经确定了”,隐藏性说”这个值尚未显露”。日常直觉认为二者当然可以同时成立——信封里的数确实已经定了,也确实还没被看见。

6.1 一条不可兼得的定理

密码学的结论是:这两条不可能同时完美成立。

理由是干净的。若承诺是完美隐藏的,那么这个承诺值在信息上与任何被承诺的消息都不相关——也就是说,存在多个不同的消息可以打开成同一个承诺。既然存在,那么一个计算能力无限的承诺者就能找到它们,于是绑定性在信息论意义上必然失效。反过来,若承诺是完美绑定的(每个承诺只能对应唯一的消息),那么这个承诺就在信息上决定了消息,一个计算能力无限的接收者就能把它算出来,于是隐藏性在信息论意义上必然失效。

两侧各留一半,不能都要。这不是技术不够,是定理。

密码学里这类不可能结论有传统。克利夫(Cleve 1986)证明了两方之间不存在完全公平的抛硬币协议——总有一方可以中途退出并因此获得优势。公平性在这里也不是可以无限逼近的目标,而是有硬上限的。

6.2 工程上的解法:把完备性相对化

要紧的是密码学如何处理这个不可兼得。

它没有去限制”使用范围”,也没有去宣称信封里的数既存在又不可知。它做的是:把”完备”这个词从对象的性质改成相对于检验者的性质。

于是有了计算意义上的绑定与计算意义上的隐藏:这个值对一个多项式时间的对手而言是绑定的、是隐藏的。同一个承诺,面对不同能力的检验者,“是否已经确定”这个问题有不同的答案。而这不是含糊其辞——它有精确的定量形式:绑定误差 ε_b 与隐藏误差 ε_h 各是一个数,且二者之间有可证明的下界关系。

这一步在哲学上的分量,值得停下来看清楚。康德面对二律背反时做的事情是给理性划界:这些问题超出了可能经验的范围,故理性在此没有裁决权。密码学面对结构完全相同的对立时做的事情是给检验者定级:这个值对谁而言已经确定。前者取消问题,后者把问题变成一个带参数的量。

后者显然更有用,而且它已经在跑:现代密码协议全部建立在这个相对化之上。

6.3 承诺的长度与被承诺物无关

第三件事最直接地击中了守恒假定。

佩德森承诺(Pedersen commitment)这类构造有一个性质:承诺本身的长度是常数。无论被承诺的消息是一个比特还是一部长篇,先散列再承诺,承诺值都是固定的那么大。

也就是说:痕迹的厚度与被承诺物的厚度完全脱钩。

一个只看承诺值的观察者,无法从它的大小推出任何关于被承诺内容规模的信息——这恰恰是这个构造的设计目标,不是它的缺陷。而这正是守恒假定的反面:厚度不但不正比于发生量,而且被刻意设计成与发生量无关。

零知识证明(Goldwasser、Micali、Rackoff 1985)把这一点推到极致:可以让对方确信一个命题为真,而对方从整个交互中学不到任何别的东西。“确信已发生”与”记录下了什么”在这里被彻底分开了。

6.4 密码学推翻的那一条

绑定与隐藏不可同时完美(定理,不是技术限制);

解法是把完备性相对化为检验者的能力,且相对化是定量的;

承诺的厚度与被承诺物的厚度可以完全脱钩,甚至是被设计成脱钩的。