破密:中国密码战史(2)
第二节 密码的诞生
清政府最初使用电报,始于1870年三口通商大臣崇厚出访法国期间。当时崇厚为处理天津教案而带使团前往法国,其翻译是京师同文馆毕业的张德彝。张德彝此前曾两次随使前往欧洲,对于电报技术略有所知,在此次随崇厚出访期间,为和国内沟通情况,开始拍发国际电报。张德彝自述,
自前二次随使外洋,已知寄送电信之灵便。然中外文字不同,寄之不易。前二次无急务,固未经思及。至此次,多有飞电之处,而寄用洋字,其价既昂,且从中诸多不便。因见外洋有因事秘而以数目代语言者,系以四数代一话,彝遂拟照其法而试仿造之。迨到法京后,又见西人亦有以此法编华字者,惜作而未成。彝乃由《康熙字典》中择其字之常用者七千余,按字编数,由零零零一至八零零零,字数核对无差,至是告成。
显然,张德彝是参考威基谒的《电报新书》另行编定了电码,这部电码他称之为《电信新法》,这既是中国人自行编定的第一部中文电码,同时也因其区别于民用普通电码,所以也应视为中国的第一部电报密码。
张德彝之后,著名的洋务派人士郑观应也参考《电报新书》编写了《中国电报新编》,收录汉字数量更多,但其编制方法仍是以4位数字代表1个汉字。
当时的出使德国大臣李凤苞则另创一种编码形式,他编写过名为《电报简编》的密码本,“系用英文二十六字母参互而成七千余号,旁注华字,中国与德国试用以来,从未错误”,也就是说他的编码形式脱离了数字,而是以3个字母的排列组合编成电码。这一形式为后来的中国电报局总办盛宣怀所继承,盛宣怀曾称:“是以职道仿照出使德国大臣李(即李凤苞)所订密本,以英字母错综编成三码,计单字、成句一万七千余号,以备官报往来外洋之用。”但是,这种字母为主体的3码电码本并未大量使用,使用更多的还是数字电码。
民国时期中华书局版本《电码新编》之一页。此电码本中除了用4位数字标示汉字外,另有3个英文字母,也是标示此一汉字值得一提的是,曾国藩之子、清末著名外交家曾纪泽在电报密码编制方面做出很多探索,成为我国密码编制方面较早的探索者,他的一些编制方法成为后来普遍采用的密码编制方法。
光绪四年(1878年),曾纪泽在出使法国期间,向国内写有报告《巴黎致总署总办论事七条》,其中一条即是编制成语密码。文中提到:
电报便捷可喜,然每发一次,自欧洲达于上海,字仅廿余,而耗费六七十金,抑亦甚不合算。查西人发报,皆有成句编号者,费省而词达,真是良法,亟须依照办理。纪泽拟于公务之暇、率同松生造编一书,将成语分门编辑,列号备查。书成则旧用之《电信新法》等书可废,亦可收费省词达之效。就中地名一层,拟用英国字母,以北京口音取字翻译。书成之后,便可于公牍私函通行不悖,从前各国使臣所翻经历各处地名,皆以方言土音取字书之,其势不能画一,有许多不便处也。
按照曾纪泽的这一思路,4位数的电码所指代的就不只是1个汉字,而能随意代表或者词、句,他的初衷虽是减少电码发送量以省电报费用,但其实是可以收到保密之功效的。此外,曾纪泽还创制了加减法的电码编制方法。
光绪八年(1882年)十一月,曾纪泽叔父、清廷大员曾国荃在致总理衙门的信函中写道,
查章程内有请预订密电加减码数一节。溯查本年四月间,接奉钧函,并寄示《电信新法》一本暨劼刚所拟《密电加减法》一本,谕饬嗣后与劼通电,即照此法传递等因。检阅劼刚原定密电加减之法,尚属周妥……现已将改用码数加减之法,抄录成本,谨即寄呈钧览。拟请嗣后尊处遇有机密事件电致敝处,及敝处电达尊处,均照此法加减,以期周密而免参差。
曾国荃在这里提到的“劼刚”即是曾纪泽。由曾纪泽发明的密电加减法,即是在通用电码基础上,收发报双方约定加减数字,得以改变原电码编排,从而构成密码,起到保密的作用。
其他还有一些密码编制的方法,概括起来,自清末起,在电报明码的基础上,我国常用的电报密码编制方法主要有3种,即横直码变换法、加减法、自编密本法。
其一,横直码变换法。
前边提及威基谒编制《电报新书》时,即以棋盘式分布来把常用汉字编为数码,这一形式成为后来通行的电报明码的编制格式:电码本通常每页为10×10的方格,横行、直行分别以0、1、2、3、4、5、6、7、8、9标示,另在页角上使用各页不重复的两位数字标示,称为“角码”,如此一来,在方格中的汉字,都可以用两位角码+一位横码(或一位直码)+一位直码(或一位横码)这样的四位数字来表示。而使用横直码变换法编制密码,
在电报本上方及左右两边所留横直空格,将一二三四五六七八九零十个数字,任意颠倒其次序,填于每页横直两行空格内两行相交处之空格内;并任意另填数目字两个,此两个数字,每页均须填写,不可雷同。翻译时,角上二码作为千百两位,直行之数码作为十位,横行之数码作为个位,是为先直后横式。如以横行之数码作为十位,直行之数码作为个位,是为先横后直式。
简单说,这种横直码变换法,即是以明码本为底本,打乱横、直码数字排列顺序,有的还另行编定角码,使得以4位数字标示的汉字不同于明码本,从而构成了密码。
这种密码编制方法,曾长期为北洋军阀和国民党军队所使用。
其二,加减法。
加减法密码,清末军政机关使用的密码常用此法编制,后来很多民间自编电报密码也习惯使用此法。有使用月份作为加码数字的,
将明码电本之号码增加号数,其增加号敷之标准,大多以月为标准。如正月加一号,二月加二号,三月加三号,四月加四号,五月加五号,六月加六号,七月加七号,八月加八号,九月加九号,十月加十号,十一月加十一号,十二月加十二号,其递加方法,如在正月0002系一,在二月0003系一,余类推,惟增加号数,可自由编制,不必一定以月为标准。
有另行自定数字作为加码数字的,
用密码者,可照明码任意加减,惟亦须与接电一方预先关照,应加几号,或应减几号,例如上海二字,在电报新编一部第六字为0006,海字在水部第十三行为3189,假使加三号算,则上字为0009,海字为3192,减三号算则上字为0003,海字为3186,余则依此类推均无不可。
概括来说,这种加减法密码是以明码本为底本,另行约定加或减去某数字构成区别于明码的自编密码。注意,此种加减法因通常仅加或减一个数字,其编制思想实际上是密码编制移位法的反映,与后来的底本+乱数的密码编制思路是有很大区别的。
其三,自编密本法。
自威基谒《电报新书》印行后,中文电码本曾多次做过增删,某些新的电码本最初即是作为密码使用的,它们的编制思想仍未脱离以《康熙字典》部首为顺序编排,但这些区别于通行明码本的电码,还是可以称为自编密本的,它们与明码本的区别即在于另行编定了某些汉字的电码。后来在使用中,某些有密码需求者,通常也会选用若干常用汉字另行编辑,也就构成了自编密本。但从根本上说,这类自编密本,仍旧是单表代替式密码。
自编密码本法后来又有演进,即另行编定某些词语混入其中,
就平日事务与业务之常用语言编制成语密码……此项常用成语,按照单字密码编法填於方格内,每格内填写号码两位,另於每页右角上填写号码二位,应用时可将角码作为单位与十位:格内号码作为百位与千位,或将格内号码作为单位与十位,角上号小作为百位与个位。应用时可任意颠倒。
这种把常用词语编入密码的方法在后来被称为“联句”或“成语”,在简化电码的同时,在一定程度上增加了密码的安全性。
民国三十七年交通部编《成语电码》之一页。因为编入词语较多,这是一个5位数电码本这一时期密码的编制技术影响极为深远。我国的电报密码技术滥觞于此,以明码为基础自编密本、约定密码、密本定名原则等方面,在民国时期都被长期使用到密码编制中,民国时期密码技术也因此而停滞不前,为各方的密码破译活动提供了可能。
破密:中国密码战史
第一章 密码战的开端