一种基于DNA自组装计算的分解大整数的方法和系统 【技术领域】
本发明涉及计算机密码和生物技术领域,特别是涉及一种基于DNA(Deoxyribonucleic acid,脱氧核糖核酸)自组装计算破译公钥密码RSA系统的大数分解的方法和系统。
背景技术
信息算法似乎是生物组织和处理的核心,小到基因信息的存储和复制,大到由神经系统执行的复杂计算过程。就像人类科技用电子微处理器控制电子机制设计,生物组织也是用生化电路控制分子和化学事件的发生。生化电路中的(工程学)操作和规划将使得依赖于化学和纳米构造的材料的工业发生变革。尽管生化电路构造自分子生物诞生至今依旧处于理论开发阶段,有关生化算法的能力和可能的设计正在如火如荼的发展。在尽可能精细的尺度上控制物质的结构是化学,材料科学和纳米技术的一个主要目标。
一般地,现代密码的安全性建立在以目前的计算能力搜索密钥不可行的基础上。而使用各种方式搜索密钥、破译密码是关系到国家安全的重要内容。RSA(以发明者Ron Rivest、Adi Shamir和LeonardAdleman命名)是被研究得最广泛的公钥算法,从提出到现在已近二十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。RSA的安全性依赖于大数的因子分解,大数分解需要的计算量是现代公钥密码体系RSA算法的安全基础,目前已有的大数分解方法都是建立在电子计算机基础上的,受到电子计算机的计算模式限制。为了解决复杂计算问题,探索新的计算模式,RSA以发明者之一Adleman博士首创了DNA计算。算法自组装的思想就是源于DNA计算求解组合问题,DNA杂交反应的可编程能力可以用于指导自组装依据简单的规则,以DNA分子为“数据”,以生物酶和生物操作为信息处理“工具”的DNA计算模型。在Adleman实验产生组合优化的第一步中,DNA分子表示所有可能的目标图,通过DNA杂交反应的自组装,基本思想是用一系列的分子唯一的表示图的点和边,并且控制哪个点和哪条边相连,杂交反应的每种可能序列,以任何顺序同时发生,产生一个双链DNA分子,生成一维聚合反应:包括可编程的黏贴反应。随后,许多学者在此领域内做出了杰出的工作。DNA计算是对DNA序列通过可控的生化反应来进行信息处理。更确切地讲,DNA计算机的基本原理是DNA序列之间通过可控的“特异性杂交”来进行信息处理。
分子自组装代表了一种“自下而上的”制造高精度复合物的方法。这个方法可以分两步实现:首先,通过合成化学的方法构造出单个的分子;然后,把单个分子组装成大的结构。DNA分子由于其结构特点和特有的分子间相互作用特性(Watson-Crick互补规则),尤其适合于充当自组装的材料合成出具有复杂结构的物质。Winfree设计二维晶体的方法是源于数学上的tiling理论——设计可编程相互作用的矩形模块(称为Wang tiles),通过模块的自组装来模拟图灵机的运行,Wang tiles的规则如下:想要的结构是由一组带有彩边的tiles拼接而成的;只有颜色相同的边才能靠在一起。作为一个DNA分子Wang tiles的初始展示,Winfree选择了用DX模块组合形成带有周期性条纹的结构,不同的DX模块之间的拼接是通过粘性末端的匹配来实现的。Winfree在理论上提出了二维DNA自组装是可以用来实现Wang tile理论的,因此是具有图灵完全运算能力的计算模型。在实验上,Winfree首次证实了用DX模块进行DNA自组装是可行的。
2000年,LaBean等在JACS上发表文章,构造出几种DNA链缠绕成三排的自组装模块,统称为TX模块。虽然Winfree和Rothemund已经用DX模块组装出了大规模的二维和三维结构,但是DNA纳米技术和DNA计算领域都需要有更多的DNA自组装模块以供选择。LaBean的TX模块,其命名是相对于DX模块而言的。由于DX表示两个边对边的双螺旋组成的自组装模块,故用TX表示三个边对边的双螺旋组成的自组装模块。TX模块的价值在于:(1)TX中含有参与形成3个双螺旋的DNA链,这些链可以在DNA计算中充当报告链;(2)TX组装成的二维格子结构上是有缝隙的,为容纳溶液中的其它分子提供了空间;(3)TX为纳米机械装置提供了大的位移量(TX的10nm>DX的6nm)。该研究证实了TX模块是一种非常稳定的新的DNA自组装模块。TX模块也被成功的应用于分子计算领域,例如加法运算和XOR运算中。
理论上,DNA自组装计算模型由于其巨大的并行性,在解决困难的NP-完全问题上优于电子计算机。因而,目前已经建立了不少用于求解NP-完全问题的DNA自组装计算模型,且大部分给出了相应的生化实验。由于DNA自组装计算模式在解决复杂计算问题上具有的独特优势,该运算模式也开始应用于信息安全特别是大数分解领域。
但是,要研制出具有实用性的DNA计算机,需要克服当前DNA计算研制中所遇到的种种困难,特别是“解空间指数爆炸问题”(即随着问题规模的增大,所需要的DNA分子量呈指数上升)、解的检测问题等。
【发明内容】
本发明实施例要解决的问题是提供一种基于DNA自组装计算的分解大整数的方法和系统,以克服现有技术中随着问题规模的增大,所需要的DNA分子量呈指数上升的缺陷。
为达到上述目的,本发明实施例的技术方案提供一种基于DNA自组装计算的分解大整数的方法,所述方法包括以下步骤:基于DNA自组装技术构建分解整数的逻辑运算架构;形成初始的运算TILE,包括起始TILE、计算TILE和数据传递TILE;在预先设定的实验条件下,控制温度以及溶液的浓度,保证DNA自组装顺利完成组装;解的检测,寻找出运算完整的自组装结构,分离并提取其中的报告链,根据编码原则读取结果。
其中,待分解的大整数是两个大素数的乘积,大整数的半数低位信息用于确定满足多种素数对,整数的半数高位信息用于检测在多个素数对中的最终的分解。
其中,两个素数的位数与大整数相同,其半数高位的数值为零,半数低位的信息根据运算结构确定。
其中,根据DNA自组装计算分解大整数的结构特点,构建整体的逻辑运算图。
其中,根据整体的逻辑运算图,设计基本运算TILE单元,用于执行逻辑运算图中的运算功能。
其中,根据DNA自组装的生化反应特点,将溶液控制在预先设定的实验条件下,以降低TILE的错配率。
本发明实施例的技术方案还提供一种DNA自组装计算系统,所述系统包括:起始单元,用于根据预先设计的大整数分解的整体逻辑运算框架,由已知的大整数出发,形成一个初始框架,其中包含了待分解大整数的所有位置的信息;运算单元,用于根据两个数的乘法运算法则,对逐位运算的0-1序列进行编码;数据传输单元,用于对先前参与运算的比特信息通过一定的数据传递方式,逐步传递到合适的位置,从而保证整个运算的连贯性;报告链提取单元,用于寻找出运算完整的自组装结构,分离并提取其中的报告链,并根据编码原则读取结果。
其中,所述运算单元包括:输入模块,所述输入模块包括即将参与运算的三类TILE,所述TILE包括起始TILE、计算TILE和数据传递TILE;输出模块,用于读取所述运算单元输出的待着色图的顶点着色方案集合。
与现有技术相比,本发明的技术方案具有如下优点:
本发明有机地将优化计算方法、DNA序列的编码、各种生化操作、解的检测问题与解空间规模等有机地结合起来,提高了分解大整数的求解效率。
【附图说明】
图1为本发明实施例的一种基于DNA自组装计算的分解大整数的方法的流程图;
图2为本发明实施例中所用到的基本TILE单元以及抽象结构示意图;
图3为本发明实施例中所用到的所有运算单元示意图;
图4为本发明实施例中的数据传输TILE示意图;
图5为本发明实施例中的起始TILE示意图;
图6为本发明实施例中的起始运算框架示意图;
图7为本发明实施例中的分解大数的DNA自组装第一步示意图;
图8为本发明实施例中的成功分解大数的DNA自组装最终示意图;
图9为本发明实施例中的一个实例的示意图;
图10为本发明实施例中的错误分解的例子;
图11为本发明实施例中的错误分解的例子续;
图12为本发明实施例的一种DNA自组装计算系统的结构示意图。
【具体实施方式】
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
本发明实施例的一种基于DNA自组装计算的分解大整数的方法如图1所示,为避免现有分解大数的DNA自组装方法中任意找两个数相乘,然后比较其结果是否等于待分解的大数的这种盲目性,本发明实施例采用有选择的逐位删除非解的非枚举型DNA自组装计算优化模型。参照图1,本实施例包括以下步骤:
步骤s101,基于DNA自组装技术构建分解整数的逻辑运算架构;
步骤s102,形成初始的运算TILE,包括起始TILE、计算TILE和数据传递TILE;
步骤s103,在预先设定的实验条件下,控制温度以及溶液的浓度,保证DNA自组装顺利完成组装;
步骤s104,解的检测,寻找出运算完整的自组装结构,分离并提取其中的报告链,根据编码原则读取结果。
本发明实施例给出的逐位删除非解的非枚举型DNA自组装计算优化模型中,利用生物计算的高度并行性以及海量的存储能力,从理论上建立了在DNA TILE层面上可以分解任意位数的大整数的模型。相对现有的一些分解大数的DNA计算模型而言,本方法具有以下特点:只需构建一种初始框架,该框架巧妙的将待分解的大数的每一位信息嵌套其中,由于分子自组装具有自下向上的生长特点,大数将从低位到高位逐位行使判断个功能,一旦遇到不满足条件的数对,该自组装系统将被中止。此特点有效的节省了溶液中资源的不必要的浪费,有效的避免了盲目的自组装过程。
下面结合附图,以对如表1所示的2n位的大整数为例详细说明本发明实施例提供的技术方案。
表1
p2n-1 p2n-2... pn-1... p2 p1 1
× q2n-1 q2n-2... qn-1... q2 q1 1
p2n-1 p2n-2... pn-1... p2 p1 1
p2n-2q1 p2n-3q1... pn-2q1... p1q1 q1
p2n-3q2 p2n-4q2... pn-3q2... q2
... ...... ......
... ...... qn-1
p1q2n-2 q2n-2
q2n-1
N N2n-1 N2n-2... Nn-1... N2 N1 1
第一步、基于DNA自组装技术构建分解整数的逻辑运算架构。
本发明实施例分解整数N,因为任意奇数位数的数原则上都可以通过将最高位前面补零,从而将其转换成偶数位数的数。所以不失一般性,设待分解的整数N的表达式如下N=N
2n-1N
2n-2N
2n-3…N
3N
2N
1N
0,现在的目的是寻找它的两个素因子p和q,设其表达式分别为p
n-1p
n-2p
n-3…p
3p
2p
1p
0和q
n-1q
n-2q
n-3…q
3q
2q
1q
0。根据乘法法则,根据N的低n位的信息就足以确定出p和q,但是这样的p和q组合可能有许多种,到底哪一对才是N最终的因子,还需要用N剩下的一半信息来检测。为了方便DNA自组装继续生长,以完成整个分解运算,这里我们采用一个小小的技巧,即假设p和q也都是2n位的数,为了实现这一点,只需要在两个数的最高位分别补上n个0,即
p=p
2n-1p
2n-2…p
n-1…p
2p
11,q=q
2n-1q
2n-2…q
n-1…q
2q
11,
其中p
2n-1=p
2n-2=…=p
n=0,q
2n-1=q
2n-2=…=q
n=0。
正如在表1中所示,我们所需要的所有信息都表示出来,从这个乘法表的右边往左边看,它用来与N
i比较的信息是逐位增加的,这一点恰恰符合DNA自组装的特点。
第二步、形成运算TILE,包括起始TILE,计算TILE,以及数据传递TILE;
由于DX表示两个边对边的双螺旋组成的自组装模块,故用TX表示三个边对边的双螺旋组成的自组装模块。TX模块的价值在于:
(1)TX中含有参与形成3个双螺旋的DNA链,这些链可以在DNA计算中充当报告链;
(2)TX组装成的二维格子结构上是有缝隙的,为容纳溶液中的其它分子提供了空间;
(3)TX为纳米机械装置提供了大的位移量(TX的10nm>DX的6nm)。该研究证实了TX模块是一种非常稳定的新的DNA自组装模块。
TX模块也被成功的应用于分子计算领域,本发明考虑到TX模块的这些优点,将其作为运算的基本组成单元,其结构如图2左边所示,为了方便讨论,我们将其抽象成右边的方块,四个角上的字母代表TX模块的四个黏贴末端,我们将根据运算的需要对其做特异性的编码,从而使其能够引导DNA TILE做特异性的自组装,这个组装的过程也就是分解大数N的过程。
本发明中关键的部分就在于运算TILE的设计,图3给出了所有运算TILE的类型。如图4(b)所示,该运算TILE中间的“p
i+q
i”形式上表示数对(p
i,q
i)做加法,编码时,用代表限制性酶切位点的序列BamH I(GGATCC),EcoR I(GAATTC),Hind III(AAGCTT),Sal I(GTCGAC)分别代表(p
i,q
i)的四种组合(1,1),(1,0),(0,1)和(0,0)。其中x
i1和a
i1的运算规则遵循以下两个函数,即F
1和F
2,
x
i1=F
1(p
i,q
i,a
i-1,1),a
i1=F
2(p
i,q
i,a
i-1,1).
对于函数F
1和F
2共有8种输入,两个函数的具体映射关系如下:
F
1(1,1,1)=1,F
1(1,1,0)=0,F
1(1,0,0)=1,
F
1(1,0,1)=0,F
1(0,0,1)=1,F
1(0,0,0)=0,
F
1(0,1,0)=1,F
1(0,1,1)=0.
F
2(1,1,1)=1,F
2(1,1,0)=1,F
2(1,0,0)=0,
F
2(1,0,1)=1,F
2(0,0,1)=0,F
2(0,0,0)=0,
F
2(0,1,0)=0,F
2(0,1,1)=1.
图3(a)可以视作(b)的一种特殊情况,即a
i-1,1为0的情况。
图3(c)给出了另外一种运算法则,x
i+j,k+1和a
i+j,k+1遵循下列运算规则,
x
i+j,k+1=F
3(p
i,q
j,x
i+j,k,a
i+j-1,k+1),
a
i+j,k+1=F
4(p
i,q
j,x
i+j,k,a
i+j-1,k+1)。
命使得F
3=1,F
4=1成立的四元序列所组成的集合分别为
![]()
使得F
3=0,F
4=0成立的四元序列所组成的集合分别为
![]()
则有
S11={(1,1,1,1),(1,1,0,0),(1,0,1,0),(1,0,0,1),(0,0,1,0),(0,0,0,1),(0,1,1,0),(0,1,0,1)},]]> S21={(1,1,1,1),(1,1,1,0),(1,1,0,1),(1,0,1,1),(0,0,1,1),(0,1,1,1)},]]> S10={(1,1,1,0),(1,1,0,1),(1,0,1,1),(1,0,0,0),(0,0,1,1),(0,0,0,0),(0,1,1,1),(0,1,0,0)},]]> S20={(1,1,0,0),(1,0,1,0),(1,0,0,0),(1,0,0,1),(0,0,1,0),(0,0,0,0),(0,0,0,1),(0,1,1,0),]]> (0,1,0,1),(0,1,0,0)}.]]> 图4中的TILE单元主要起着连接的作用,将运算结果从下方往上方传递。图5中的TILE用来搭建起始框架,用于TILE自组装实现大数分解。
第三步、给出一定的实验条件,将所有的运算单元置于其中,控制温度以及溶液的浓度,保证DNA自组装顺利完成组装;
图6表示自组装的起始框架,图7表示自组装的第一步,图7表示大数N被分解的最终情形。其中所用到的基本TILE类型总共为78个,不随待分解的整数的规模增大,这一点恰恰与传统电子计算机分解大数的计算模式形成鲜明对比,这也正是本发明的优势之一。其次,对于一个2n位的待分解大数而言,DNA自组装总共需要m=4(2n-1)-2=8n-6=O(n)步就能最终得到N的两个因子。
图9为一个具体的实例,演示了用DNA自组装将整数143分解成11和13的乘积。图10以及图11分别表示分解错误的情况,一旦一组数对不满足,整个自组装就会呈现出不完整的组装,这也是DNA自组装排除非解的过程。
第四步、解的检测,寻找出运算完整的自组装结构,分离并提取其中的报告链,根据编码原则读取结果。
正如图8所示,一条红色的DNA单链贯穿了所有的TILE“p
i+q
i”,自组装的最后,就是寻找出形如图8的自组装结构,在一定的实验条件下,提取其中红色的报告链,就能最终读取N的两个因子的数值。
本发明的一种DNA自组装计算系统如图12所示,所述系统包括:起始单元,用于根据预先设计的大整数分解的整体逻辑运算框架,由已知的大整数出发,形成一个初始框架,其中包含了待分解大整数的所有位置的信息。运算单元,用于根据两个数的乘法运算法则,对逐位运算的0-1序列进行编码,大致包括4种运算方式,分别记作4种函数,函数的输入是0-1序列,通过一定的映射关系,对应于每一组输入可以得到唯一一种输出;这四种函数的主要功能在于完成加法运算和进位运算;所述运算单元包括输入模块和输出模块,所述输入模块包括即将参与运算的三类TILE,所述TILE包括起始TILE、计算TILE和数据传递TILE;所述输出模块用于读取所述运算单元输出的待着色图的顶点着色方案集合。数据传输单元,因为基于DNA自组装的分解大数系统的整体逻辑运算图的特征,对于先前参与运算的比特信息有必要通过一定的数据传递方式,逐步传递到合适的位置,从而保证整个运算的连贯性。报告链提取单元,用于寻找出运算完整的自组装结构,分离并提取其中的报告链,并根据编码原则读取结果;整个运算的最终结果,即我们需要的分解出来的两个因子的信息主要集中在一条彼此相连的报告链上,通过变性等生化操作,可以提取出该报告链,进而读取其上的比特信息,从而寻找出大数的两个因子。
本实施例将待分解的大整数每一位的信息按照从低到高的顺序融入到初始框架中,经过运算系统以及数据传输系统交替出现,并结合DNA自组装计算的并行性,利用TILE黏贴末端的特异互补性,逐位获得满足乘积等于待分解整数的数对,而且随时可以排查掉不满足的数对。该方法有机地将优化计算方法、DNA序列的编码、各种生化操作、解的检测问题与解空间规模等有机地结合起来,提高了分解大整数的求解效率
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。