随着DNA计算的发展,新兴的DNA密码学也得到了发展,有可能和传统的密码学量子密码学成为密码学的三大分支。DNA密码是在1994年Adleman提出DNA计算也就是俗称的生物计算机之后才开始得到关注。DNA密码目前已经有了一些初步的成果,如Clelland等人用DNA微点实现了信息隐藏,把著名的June6invasionNormandy隐藏到DNA微点中。下面我们对这一信息隐藏方法进行简单的分析。背景知识DNA的学名是脱氧核糖核酸。从构成上看DNA是由核苷酸组成的一种生物大分子,核苷酸含有4种不同的碱基腺嘌呤A鸟嘌呤G胞嘧啶C和胸腺嘧啶T。相应地核苷酸也按所含碱基的不同分成4种核苷酸排列成链状,DNA分子由两条长链组成在氢键的作用下两条链连接在一起呈现出螺旋式结构。双链连接的方式是按照碱基互补配对的原则即A与T始终配对存在G与C始终配对存在。PCR技术DNA体积微小的双螺旋结构使得对数量极少的特定DNA片段进行操作非常困难。通过PCR扩增技术把少量的特定DNA大量复制后操作就容易多了.PCR技术就是一种快速的特定DNA片断(引物)扩增技术.PCR是基于Watson-Crick互补配对特性实现的.该技术十分灵敏,理论上每一个目的DNA分子经20轮扩增后数量可达10的6次方,从而实现短时间内大量扩增DNA序列.1999年Celland等人成功地把著名的“June6invasionNormandy”隐藏在DNA微点中从而实现了利用DNA作为载体的信息隐藏流程第四步信息读取第一步确定编码方式第三步信息隐藏第二步制作消息序列.(一)确定编码方式他们没有采用传统的二进制编码方式而是把核苷酸看作是四进制编码用3位核苷酸表示1个字母.譬如字母A用核苷酸序列CGA表示字母B用核苷酸序列CCA表示.编码方式(二)制作消息序列.把需要传递的消息按上面的编码方式编成相应的DNA序列,如AB用CCGCCA表示。编码结束以后人工合成相应的有69个核苷酸的DNA序列,并在DNA序列前后各链接上有20个核苷酸的5'和3'引物。这样需要隐藏的DNA消息序列就准备好了.(三)信息隐藏用超声波把人类基因序列粉碎成长度为50-100的核苷酸双链,并变性成单链作为冗余的DNA使用,再把含有信息的DNA序列混杂到冗余的DNA序列中喷到信纸上形成无色的微点,就可通过普通的非保密途径传送了。(四)信息读取接收方和发送方的共享秘密是编码方式和引物。接收方收到含有消息DNA微点的信纸后提取出微点中的DNA。由于接收方预先通过安全的途径得到了引物,所以他可以用已有的引物对含有消息的DNA序列进行PCR扩增,通过测序得出消息DNA序列。然后根据预先约定的编码方式恢复出消息明文。微点技术安全性安全性第一层生物安全性第二层数学安全性第三层微点技术安全性DNA微点无色无味喷涂在物品表面不易被发现。除非对附带有DNA微点的物品进行专门检查否则难以发现DNA微点的存在.但是这种安全性并不比使用隐写墨水安全多少,用攻破隐写的技术就足可以找出这些微点。鉴于隐写墨水在历史上已经被轻松破译,可认为第1层安全性是很脆弱的。生物学安全性因为在现有的生物技术条件下要从未知的DNA混合液中分离出未知的特定DNA序列并测序是困难的,这是从生物学方面保障了该信息隐藏方案的安全性。数学安全性是由数学编码方法提供的.也就是由传统的密码学编码方式提供的。DNA信息隐藏方法的安全性分析传统密码学领域尚有许多问题远未解决同传统密码的研究相比生物学家的研究更加不完善.他们的工作主要还停留在实验阶段缺乏完善的理论更缺乏有效的方法来对生物学困难问题进行衡量.这里就以生物学上共识性的困难问题作为依据对Celland等人所提方案的安全性进行论证.当然DNA密码系统的安全性很复杂除了生物学上的困难问题外数学工具也是构成系统安全的基石之一.DNA信息隐藏方法具有3层安全性要攻破本系统就要突破全部3层安全性。考虑到微点技术的安全性是比较脆弱的,所以我们跳过第一层安全性直接分析第二层安全性。生物学安全性分析第2层安全性即生物学的安全性。生物学仍然是以实验事实为主的,与以定理和公式为主的精确的数学是大不相同的。所以这里进行安全分析也主要是以分析实验事实而不是公式推导为依据。假设攻击者找到了这些DNA微点要想得到消息序列有如下几种可能的攻击方式:攻击方法1用引物把特定的序列扩增出来以测序,这相当于没有密钥而尝试随机寻找密钥的穷举攻击法。对于一个攻击者如果他不知道所需引物他就只能是随便找些引物尝试进行扩增这相当于没有解密密钥随机选择一个密钥进行尝试的情况。首先考虑随机寻找引物进行扩增的方法.考虑到扩增的效果比较理想的引物长度是20个核苷酸.用这么长的引物扩增的结果是最稳定的.一般情况下如果在发生错误匹配使得匹配的引物长度变为17个核苷酸那么有3个核苷酸错误匹配并且均在远离待扩增序列端的情况下还是能够得到可接受的结果.那么分离并扩增所有这些DNA序列所需要的引物数量为4对.34合成少数引物并且期望能够偶然成功的概率是极其微小的。如果有人想合成所有这些引物,所需要的财力物力是无法承受的。并且,即使得到了所有这些引物,如果不知道哪些是真正需要的,就只能把这些引物进行逐个尝试。然而,DNA混合物并不像数字那样可被反复利用而不产生变化,PCR扩增也不是像数学运算那样精确。这种尝试如果多次进行,会对含有消息序列的DNA混合物造成污染,严重影响PCR扩增的进行。要把所有的引物都尝试一遍并且还期望能得到正确的结果也是不可能的。也就是这种攻击方法基本不可行。攻击方法2对微点中的所有序列测序然后进行数学分析找出消息序列。这种方法相当于传统的信息隐藏方法中对所有数据进行检测.但是传统的信息隐藏方法所有数据都是可方便读出的而DNA信息隐藏方法的数据难以读出,所以也就难以检测。这是因为DNA微点中的序列是未知的混合序列使用现有的测序方法都无法进行有效的测序。第3层安全性如果很多年以后第1和第2层安全性都被突破了那么攻击者的破译工作就是从一些数字序列中找出消息序列.对于消息的发送者和接收者如果引物不重复使用那么就要保存数量巨大的引物并且在数据读取的时候还要知道如何选择正确的引物这可能也需要在发送消息时发送额外的信息.这样操作所需要的工作量巨大类似于一次一密.但可以达到绝对的安全。如果引物重复使用虽然可使得实现更容易但是该系统就可用下面的简单方法来破译.攻击方法3在两次加密的过程中对于消息序列引物是固定的而5'和3'引物之间的消息序列是变化的对于冗余序列如果重复使用整个序列就是不变的如果不重复使用整个序列就都不同.通过这些不同的特征借助于电子计算机的分析就可比较容易地找出消息序列来.此后针对文献3中提出的编码方案只要能够得到足够多的密文数量就可根据语言的统计特性按照英文字母频度进行攻击.如英文中出现频度最高的是字母E对于大量文献统计的结果是出现概率约为0.12712.对应的就是消息序列中GGT出现的频度最高.采用这种初等密码分析方法就可很容易地攻破前面提出的编码方案.从上面的介绍中可看出引物才是真正的密钥.如果引物泄漏了该系统的编码方式只具有简单的安全性.一般来说一个信息隐藏系统的编码方式是不太重要的,采用普通的编码方式如电子计算机中普遍使用的二进制码就可以了.那么该系统的编码方式的保密性是否也是毫不重要甚至可以公开呢?答案是否定的.这是因为编码方式的泄漏会导致如下的安全漏洞.任何一个密码系统都是有一定的应用背景的相应地特定的关键词也就会大量出现.虽然攻击者不知道消息的具体内容但是可以用把关键词作为PCR扩增引物的方法进行攻击。攻击者猜到消息里很可能会有JuneJulyinvasionNormandyCalais之类的可能词.如果编码方式泄漏了就可以把上述可能词转换成DNA序列然后作为引物对微点中的DNA序列进行PCR扩增.比如June6就可编码为AGTCTGTCTGGCTTANormandy可编码为TCTGGATCATCCCGATCTTTGAAA.把所有这些可能词都编码成DNA序列,再把这些序列和这些序列的互补以及转置序列作为引物放到DNA混合物中。无关的可能词不会引起PCR反应.而June和Normandy这两个可能词编码成的引物会引起PCR反应把“June6invasionNormandy”这句话完整地扩增出来.此处June6编码序列AGTCTGTCTGGCTTA是引物1Normandy编码的互补反转序列TTTCAAAGATCGGGATGATCCGA作为引物2.所以密钥应该是由引物和编码方式共同组成.鉴于对每组引物更换编码方式比较困难这里提出进行隐藏前对明文预先采取一定的数学变换比如预选先用DES之类的加密算法加密这样可使得攻击者难以找到关键词作为引物.此时加密密钥就由引物和一个普通的数学加密系统的密钥组成.这种方法的好处是对于相同的明文改变数学加密钥就可改变对应的DNA消息序列使用更方便.用PCR扩增DNA测序等技术对DNA信息隐藏方法进行攻击的方法。提出由于寻找匹配引物的困难性和测序中电泳技术以及纯化技术的限制上述攻击不能奏效,论证了可能词可作为PCR引物成功攻击该方法提出要以引物和编码方式为密钥或者用传统加密方法对要隐藏的信息先进行加密。对明文预先用传统方法加密的保密增强方法可有效防止可能词作为PCR引物进行的攻击。