Fast Parallel Molecular Algorithms for DNA-Based Computation: Solving the Elliptic Curve Discrete Logarithm Problem over GF(2n)

Elliptic curve cryptographic algorithms convert input data to unrecognizable encryption and the unrecognizable data back again into its original decrypted form. The security of this form of encryption hinges on the enormous difficulty that is required to solve the elliptic curve discrete logarithm problem (ECDLP), especially over GF(2n), n ∈ Z+. This paper describes an effective method to find solutions to the ECDLP by means of a molecular computer. We propose that this research accomplishment would represent a breakthrough for applied biological computation and this paper demonstrates that in principle this is possible. Three DNA-based algorithms: a parallel adder, a parallel multiplier, and a parallel inverse over GF(2n) are described. The biological operation time of all of these algorithms is polynomial with respect to n. Considering this analysis, cryptography using a public key might be less secure. In this respect, a principal contribution of this paper is to provide enhanced evidence of the potential of molecular computing to tackle such ambitious computations.


INTRODUCTION
This paper proposes theoretical work that introduces powerful algorithms of molecular computation that could potentially compromise the security that is afforded by certain cryptography algorithms. Molecular computation [1] involves biochemistry and DNA rather than silicon chips to tackle formidable computations. Theoretical aspects of this interdisciplinary field are important to develop the potential and interest in this form of computation [2].
Elliptic curve cryptography (ECC) is a mathematical approach to public key cryptography using elliptic curves that are typically defined over finite fields [3]. Elliptic curves [4,5] constitute a major area of current research that is particularly important to number theory, for example, elliptic curves had a role in the recent proof of Fermats last theorem. As applied to cryptography, not only has ECC become applied in Diffie-Hellman key exchange but also in the digital signature algorithm (DSA), a US federal government standard for digital signatures. It is known as the elliptic curve DSA (ECDSA) or that variant of the DSA operating on elliptic curve groups.
The security of these cryptosystems relies on the difficulty of solving the elliptic curve discrete logarithm problem [6,7]. If P is a point with order m on an elliptic curve, and Q is some other point on the same curve, then the elliptic curve discrete logarithm problem is to determine an l such that Q = lP, where l is an integer and 0 ≤ l ≤ m − 1. If this problem can be solved efficiently, then elliptic curve-based cryptosystems can be broken efficiently.
In order to tackle such a problem, Feynman proposed molecular computation in 1961 [8]. However, his idea was not implemented experimentally for some decades. In 1994, Adleman succeeded in solving an instance of the Hamiltonian path problem in a test tube, simply by the manipulation of DNA strands [1]. Following this, Lipton demonstrated that the Adleman techniques offered a solution to the satisfiability problem (the first considered NP-complete problem) [9].
Recent advances in molecular biology [10,11] have made it possible to produce roughly 10 18 DNA strands in a test tube. Those 10 18 DNA strands can be made to represent 10 18 bits of information. In a distant future, if biological 2 Journal of Biomedicine and Biotechnology operations may be run error free using a test tube with 10 18 DNA strands, then it would be possible to process 10 18 bits of information simultaneously. More details about test tube distributed systems are given in [2]. The objective for biological computing technology is to provide this enormous amount of parallelism for dealing with computationally intensive real world problems [12][13][14].
Advancement in DNA computing has already been made in many areas. In the field of cryptology, Boneh et al. have cracked DES using identical principles to those of Adleman's solution of the travelling salesman problem. Also, Chang et al. have developed a way to factor integers. They proposed three DNA-based algorithms: parallel subtractor; parallel comparator; and parallel modular arithmetic unit [15,16].
In this paper, we take a step further with respect to Chang's work [16] in order to solve the elliptic curve discrete logarithm problem. We develop DNA-based algorithms for a parallel adder; a parallel multiplier; a parallel divider over GF (2 n ) (i.e., a Galois field of characteristic 2); and a parallel adder for adding points on elliptic curves. We accomplish all of these by means of basic biological operations. We also showed that cryptosystems based on elliptic curves can be broken. Our work presents clear evidence of molecular computing abilities to accomplish complex mathematical operations.
The paper is organized as follows. Section 2 gives a brief background on DNA computing. Section 3 introduces the DNA computing that solves the elliptic curve discrete logarithm problem, for solution spaces of DNA strands. Conclusions are drawn in the final section.

BACKGROUND
DNA (DeoxyriboNucleic Acid) is the molecule that plays the main role in DNA-based computing. DNA is a polymer, which is strung together from monomers called deoxyri-boNucleotides. Distinct nucleotides are detected only with their bases, which come in two sorts: purines and pyrimidines. Purines include adenine and guanine, abbreviated A and G. Pyrimidines contain cytosine and thymine, abbreviated C and T. A DNA strand is essentially a sequence (polymer) of four types of nucleotides detected by one of four bases they contain. Two strands of DNA can form (under appropriate conditions) a double strand, if the respective bases are the Watson-Crick complements of each other-A matches T and C matches G. Hybridization is a special technology term for the pairing of two single DNA strands to make a double helix and also takes advantages of the specificity of DNA base pairing for the detection of specific DNA strands (for more discussions of the relevant biological background, refer to [10,11]).
In the past decade, there have been revolutionary advances in the field of biomedical engineering, particularly in recombinant DNA and RNA manipulating. Due to the industrialization of the biotechnology field, laboratory techniques for recombinant DNA and RNA manipulation are becoming highly standardized. Basic principles about recombinant DNA can be found in [17][18][19][20]. In the following, we describe five biological operations that are useful for solving the elliptic curve discrete logarithm problem.
A (test) tube is a set of molecules of DNA (a multiset of  finite strings over the alphabet {A, C, G, T}). Given a tube, one can perform the following operations.
(1) Extract. Given a tube P and a short single strand of DNA, S, the operation produces two tubes +(P, S) and −(P, S), where +(P, S) is all of the molecules of DNA in P which contain S as a substrand and −(P, S) is all of the molecules of DNA in P which do not contain S. (2) Merge. Given tubes P 1 and P 2 , yield ∪(P 1 , P 2 ), where ∪(P 1 , P 2 ) = P 1 ∪ P 2 . This operation is to pour two tubes into one, without any change in the individual strands. (3) Amplify. Given a tube P, the operation Amplify (P, P 1 , P 2 ), will produce two new tubes P 1 and P 2 so that P 1 and P 2 are totally a copy of P (P 1 and P 2 are now identical) and P becomes an empty tube. (4) Append. Given a tube P containing a short strand of DNA Z, the operation will append Z onto the end of every strand in P. (5) Append-head. Given a tube P containing a short strand of DNA, Z, the operation will append Z onto the head of every strand in P.

Elliptic curve public key cryptosystem over GF(2 n )
An elliptic curve is defined to be the set of solutions (x, y) ∈ GF(2 n ) × GF(2 n ) to the equation where a, b ∈ GF(2 n ) and b / = 0, together with the point on the curve at infinity O, (with homogeneous coordinates (0, 0)).
The points on an elliptic curve form an Abelian group under a well-defined group operation. The identity of the group operation is the point O. For P = (x 1 , y 1 ) a point on the curve, we define −P to be (x 1 , y 1 + x 1 ), so P + (−P) = (−P)+P = O. Now suppose P and Q are not O, and P / = −Q.
Kenli Li et al.
Let E be an elliptic curve defined over GF(2 n ), and let G ∈ E be a fixed and publicly known point. The receiver B chooses a randomly and publishes the key aG, while keeping a itself secret. To transmit a message m to B, user A chooses a random integer k and sends the pair of points (kG, P m + k(aG)). To read the message, B multiplies the first point in the pair by his secret a, and then subtracts the result from the second point in the pair. So, if a breaker can compute a from public key G and aG, he can decrypt any encryption sent to B (refer to [3]).

The construction of a parallel adder over GF(2 n )
Over GF(2 n ), the additive operation on two numbers is just doing XOR on each bit, respectively, without any carry. For instance, (1101) + (1001) = (0100). For every bit x j , two distinct 15 base value sequences are designed. One represents the value zero for x j and the other represents the value one for x j . For convenience, we assume that x 1 j denotes the value of x j to be one and x 0 j denotes the value of x j to be zero. The following algorithm is used for parallel adding two n bits binary number in a strand with one starts from the pth bit and the other one starts from the qth bit and appending the result from rth bit (see Algorithm 1).

Lemma 1.
The algorithm ParallelAdder (T 0 , n, p, q, r) is applied to finish the function of a parallel adder. Proof. The algorithm ParallelAdder (T 0 , n, p, q, r) is implemented by means of the extract, merge, and append operations. Each execution of step (1a) is used to produce two tubes T 1 and T 2 , where all of the molecules of DNA in T 1 contain x 1 p+ j and all of the molecules of DNA in T 2 contain x 0 p+ j . Each execution of step (1b) and step (1c) is used to produce four tubes T 3 , T 4 , T 5 , T 6 , where all DNA strands in T 3 contain x 1 p+ j and x 1 q+ j , all DNA strands in T 4 contain x 1 p+ j and x 0 q+ j , all DNA strands in T 5 contain x 0 p+ j and x 1 q+ j , and all DNA strands in T 6 contain x 0 p+ j and x 0 q+ j . According to the additive theorem over GF(2 n ), the jth bit of the sum in T 4 and T 5 is 1 and the jth bit of the sum in T 3 and T 6 is 0.
From ParallelAdder (T 0 , n, p, q, r), it takes 3n extract operations, 3n merge operations, 2n append operations, and 9 test tubes to finish parallel addition. A value sequence for every bit contains 15 bases. Therefore, the algorithm will add 15n bases to all DNA strands in tube T 0 .

The construction of a parallel multiplier over GF(2 n )
Over GF(2 n ), the multiplicative operation runs as follows: The algorithm ParallelMultiplier (T 0 , n, p, q) is used to multiply two nbit binary numbers on every strand in parallel with one starts from the pth bit and the other one starts from the qth bit. It runs as follows: at first, employ extract operation to form two tubes: T 1 and T 2 . The first tube T 1 includes all of the strands on which x p = 1 and the second tube T 2 includes all of the strands on which x p = 0. Then, we copy the bits from qth to (q + n − 1)th to the end of every strand in tube T 1 and append n bits 0 to the end of every strand in tube T 2 . After these operations, the (q + n)th bit to (q + n + n − 1)th bit show the coefficients of ω 2n−2 to ω n−1 . Using the same principle, we get the coefficients of ω 2n−3 to ω n−2 , ω 2n−4 to ω n−3 , . . . , ω n−1 to ω 0 . At last, call algorithm ParallelAdder (T 0 , n, p, q, r) to compute the sum of coefficients of ω 2n−2 , the sum of coefficient of ω 2n−3 , . . . , and so on. As a result, the length of every strand will increase n × n + 2n − 1 bits.
From ParallelMultiplier (T 0 , n, p, q), it takes O(n 2 ) extract operations, O(n 2 ) merge operations, O(n 2 ) append operations, and O(1) test tubes to finish the function of a parallel multiplier.

The construction of a parallel shifter for multiplicative result
Because over GF(2 n ), the exponent of ω cannot be beyond n − 1, the result of parallel multiplying should be shifted by a certain irreducible polynomial, called primitive polynomial: The algorithm ParallelShifter (T 0 , n, p), p representing that the multiplicative result starts from the pth bit, is used to parallel shift the multiplicative (2 n ) which can be designed as follows: appends the primitive polynomial's coefficients from ω n−1 to ω 0 to the end of every strand at first. Employ the extract operation to form two test tubes T 1 and T 2 . Tube T 1 includes all of the strands on which x p = 1 and tube T 2 includes all of the strands on which x p = 0. Then, we add the coefficients, from item ω 2n−3 to item ω n−2 , to the coefficients of irreducible polynomial in parallel in tube T 1 . This forms the new coefficients from ω 2n−3 to ω n−2 and has deleted the ω 2n−2 item. The coefficients from ω n−3 to ω 0 are without any change. For the T 2 includes all of the strands that have x p = 0, so just copy the coefficients from ω 2n−3 to ω 0 without any change. After all the executions before are run, the highest exponent of ω is reduced to 2n − 3. Then, merge T 1 and T 2 and begin new reduction. The principle of rest reducing turn is all like this above. When this algorithm is run out, the highest exponent of ω is reduced to n − 1. This algorithm will totally append n × n + (n − 1)(n − 2)/2 bits more to every strand. From ParallelShifter (T 0 , n, p), it takes O(n 2 ) extract operations, O(n 2 ) merge operations, O(n 2 ) append operations, and O(1) test tubes to finish the function of a parallel shifter.

The mathematical principle of division on GF(2 n )
Over GF(2 n ), to do a division operation for a dividend and a divisor, one should get the divisor's inverse first and then multiply the dividend. For the primitive polynomial ω n + b n−1 ω n−1 + · · · + b 1 ω + b 0 is irreducible, there exists a polynomial g(ω) and a polynomial f (ω) that fit the equation (according to Euclid algorithm): Because ω n + b n−1 ω n−1 + · · · + b 1 ω + b 0 = 0, g(ω) × divisor = 1, which is to say g(ω) is the inverse of the divisor. To find g(ω) and f (ω), one can do as follows, which is called Euclid algorithm, also called division algorithm; first, is the division result and the inverse of divisor has found which is g(ω); else let remainder be r(ω), let the divisor be the dividend and r(ω) be the divisor and do division operation again. Repeat the process until the remainder is 1. Because the highest exponent of ω of remainder reduces by 1 in each repeat, it is at most repeating n − 1 times. So in the first time division, the dividend is n + 1 bits and the divisor is n bits and the remainder is at most n − 1 bits, and in the second time division the dividend is n bits and the divisor is n − 1 bits and the remainder is at most n − 2 bits, . . . , and in last time division the dividend is 3 bits and the divisor is 2 bits and the remainder is 1 bit. Then, trace back to get the g(ω).

The construction of a parallel comparator
Prior to each step of long division, comparison should be done first. Suppose the divisor is n bits at that time. At first compare the first two bits of dividend with divisor to determine that addition operation between first two bits of dividend and divisor should be done or not, then compare the first three bits of result with divisor, . . . , compare the first n bits of result with divisor, the last time (finally), compare the last n bits of result with divisor for this time the first bit of result is 0. The following algorithm is used to compare the divisor which is from pth bit to qth bit with the bits from jth bit to kth bit in parallel, and forms tube T 1 and T 2 . T 2 contains all strands on which add execution will be done and T 1 contains all strands on which add execution will not be done (see Algorithm 2).

Lemma 2.
The algorithm Parallel Comparator (T 0 , p, q, j, k, T 1 , T 2 ) is applied to finish the function of parallel comparator.
Proof. If q − p > k − j, that means the bits of divisor is more than the bits of the result which are intended to compare this Kenli Li et al.
Step (1) considers the excessive bits of divisor and if any one bit is 1, which means the divisor is "bigger" than the bits of the result which are intended to compare this time and pour the strands to T 1 .
Step (2) considers the rest of the bits of divisor and the bits of result which are intended to compare this time. T 3 contains all strands on which certain bit of divisor is 1 and corresponding bit of the result is 1; T 4 contains all strands on which certain bit of divisor is 1 and corresponding bit of the result is 0; T 5 contains all strands on which certain bit of divisor is 0 and corresponding bit of the result is 0; T 6 contains all strands on which certain bit of divisor is 0 and corresponding bit of the result is 1. So add execution can be done over strands in T 3 and T 6 , which can not be done over strands in T 4 , and strands in T 5 need more consideration.
From ParallelComparator (T 0 , p, q, j, k, T 1 , T 2 ), it takes O(n) extract operations, O(n) merge operations, and O(1) test tubes to finish the function of a parallel comparator.

The construction of a parallel long division
Suppose the divisor is n bits and is from pth bit and the dividend is n + 1 bits and is from the qth bit in each strand.  Proof. Each execution of step (1) is to get each bit of the long division result. The rest part is to get the last bit of the long division result. Consider the first cycle of step (1), step (1a) compares the divisor with the first two bits of the dividend, and form two tubes T 1 and T 2 that T 2 contains all strands on which add execution can be done, contrarily the T 1 .
Step (1b) appends 0 to all strands in T 1 and appends 1 to all strands in T 2 . This bit is the first bit of the division result.
Step (1c) just finishes to append the dividend in tube T 1 .
Step (1d) adds the divisor and the first two bits of the dividend in T 2 .
Step (1e) copies the rest of the bits of the dividend in T 2 .
Step (1f) pours T 1 and T 2 together and finishes the first execution of step (1) to get the first bit of the division result and the first time addition result. The second execution of step (1) is to compare the divisor with the first three bits of the addition result last time and get the second bit of the division result. The principle of other cycles and the rest of the steps are similar to the principle above. The length of each strand will reach to q + n + (n + 2)n bits when this algorithm is run out.

The construction of parallel traceback
Suppose the irreducible polynomial A(ω) = ω n + b n−1 ω n−1 + · · · + b 1 ω + b 0 and suppose g(ω) and f (ω) satisfy that g(ω) × divisor + f (ω)A(ω) = 1, for the purpose of finding the divisor's inverse, g(ω), we need to do sometimes long division introduced in Section 3.7; let A(ω) be the dividend and divisor mentioned above be the divisor in first time and suppose the result is g 1 (ω), and if the remainder is 1, then the division result g 1 (ω) is g(ω). Else, let the divisor last time be the dividend and let the remainder last time be the divisor and do the long division. Suppose the result is p(ω) and g 2 (ω) = p(ω) × g 1 (ω) + 1, if the remainder is 1, the g 2 (ω) is g(ω). Else, let the divisor last time be the dividend and let the remainder last time be the divisor and do the long division. Suppose the result is p(ω) and g 3 (ω) = p(ω) × g 2 (ω) + g 1 (ω), if the remainder is 1, the g 3 (ω) is g(ω). Generally speaking, we need to trace back after long division each time: first time, the tracing result is the division's result; the second time, the tracing's result is the sum of 1 and the product of the division's result and the tracing's result last time; from the third time, the tracing's result is the sum of the tracing's result last second time and the product of the division's result and the tracing's result last time. The following algorithm is used to do tracing operation from the third time in which t, d, and p mean that the tracing's result last second time is from the tth bit and the last tracing's result is from the dth bit and the division result is from the pth bit (see Algorithm 4).

Lemma 4. The algorithm TraceBack (T 0 , t, d, p, n) is used to trace back after long division from the third time in order to get the divisor's inverse.
Proof. In this and following procedures, M = n 2 + 2n − 1 + n 2 + (n − 1)(n − 2)/2, which represent the total number of increased bits when ParallelMultiplier (T 0 , n, p, q) and Par-allelShifter (T 0 , n, p) are called.
Step (1) is used to multiply the last tracing's result from dth bit to the long division result from pth bit in parallel. The result will be from the (p + n + n × n)th bit to (p + n + n × n + 2n − 1)th bit.
Step (2) is to shift the result of multiplication to legal form which will append ((n − 1)(n − 2)/2 + n 2 ) bits to every strand. And its result is from (p + M)th bit to (p + n + M − 1)th bit. Step

The construction of a parallel inverse
From the algorithms introduced above, we can find divisors' inverses in parallel as follows: first pick out the strands on which divisor equals to 1. Then, let the primitive polynomial be the dividend and the divisor be the divisor and do long division. Trace back to get the tracing's result first time and pick up the strands on which the remainder equals to 1 and store them in tube T 1 . Then, let the divisor last time be the dividend and the remainder last time be the divisor and do long division. Collect the quotient and trace back. Pick up the strands on which the remainder equals to 1 and store them in tube T 2 , . . . , these executions, including long division, collecting every bit of the quotient and tracing back, are run n − 1 times at most. In the following algorithm, the parameters n and p mean that the divisor is n bits and it starts from pth bit in every strand. The last parameter r is used to represent that each strand in tube is r − 1 bit long and we begin append operation from rth bit of every strand.
Among the algorithm, the procedure Picking (T 0 , n, p, T s ) is used to pick out the strands on which the pth bit to the (p + n − 2)th bit are all 0 and the (p + n − 1)th bit is 1 and store them in T s . It is easy to program, so just omitted here (see Algorithm 5).

Lemma 5.
The algorithm ParallelInverse (T 0 , n, p, r) is applied to find inverses over GF(2 n ) in parallel.

Proof.
Step (2) is used to append n + 1 bits irreducible polynomial, which is the dividend in first long division, to every strand. The execution of step (3) calls the algorithm Simi-larDiv (T 0 , n, p, r) to finish long division. Now the length of strands is added up to r + n + (n + 2)n bits.
Step (4) finishes the function of collecting every bit of quotient and will add n bits to every strand. This is the first time tracing result.
Step (5) calls the procedure Picking (T 0 , n, p, T s ) to pick out the strands on which the remainder is 1 and store them in tube T 1 .
Step (6) finishes the operation of appending the dividend, which is divisor last time, to the strands. Note that s 1 = n+1+(n+2)n+n. Step (7) calls the algorithm SimilarDiv (T 0 , n, p, q) to accomplish the second time long division.
Step (8) employs the append operation to append a bit 0 in order to make the quotient to be n bits.
Step (9) finishes the function of collecting every bit of quotient and will add n − 1 bits to every strand. Steps (10) and (11) call the algorithm Par-allelMultiplier (T 0 , n, p, q) and ParallelShifter (T 0 , n, p).
Step (12) is used to add 1 to the product. These three steps accomplish the function of tracing back of the second time. Now the length of every strand is r +s 1 +n+(n+1)(n−1)+n+M+n−1.
sure that the remainder of each strand equals to 1 and long division has been done twice before. Note that while j ≥ 2, s j = n + 2 − j + (n + 3 − j)(n + 1 − j) + n + M + n.
Step (15a) is used to append certain bits 0 to each tube T j to make sure that strands in T 1 to T n−1 are all r +s 1 +· · ·+s n−1 −1 bits long.
Step (15b) is used to append the inverse gotten before to the last of every strand in T 1 to T n−1 .

The construction of a parallel divider
To do a division operation on GF(2 n ), first one should calculate divisor's inverse using above mentioned algorithm then multiply the dividend. The following algorithm is used to finish the function of parallel division over GF(2 n ), where the dividend begins with the qth bit and the divisor begins with the pth bit, and current bit is the rth bit (see Algorithm 6).

Lemma 6.
The algorithm ParallelDivision (T 0 , n, p, q, r) is used to finish the function of parallel division over GF(2 n ).
Step (2) calls ParallelMultiplier (T 0 , n, p, q) to finish the function of the inverse being multiplied by the dividend every strand with the dividend starting from the qth bit. Now the length of each strand adds up to r + s 1 + · · · + s n−1 + n + n × n + 2n − 1 − 1 bits. Step (3) shifts the product by calling ParallelShifter (T 0 , n, p) and will add (n − 1)(n − 2)/2 + n × n bits to every strand. Generally speaking, doing parallel division one time need increasing the strands D = s 1 + · · · + s n−1 + n + M bits.

The construction of a parallel adder of two points on elliptic curve
By far the addition, subtraction (the same to addition), multiplication, and division operations over GF(2 n ) have been solved. Now consider how to execute addition of two points on an elliptic curve y 2 + xy = x 3 + ax 2 + b in biological ways. We should consider five different cases: case 1, the first point The algorithm AddTwoNode (T 0 , n, x1, y1, x2, y2, r) is used to add two points. The first one's position x starts from the (x1)th bit and position y starts from the (y1)th bit, and the second one's position x starts from the (x2)th bit and y starts from the (y2)th bit. The parameter r represents the current bit. In the procedure, it calls Pick-ing01 (T 0 , n, x1, y1, x2, y2, T 11 ) to pick out the strands on which the first point is O and store them in T 11 , Picking02 (T 0 , n, x1, y1, x2, y2, T 12 ) to pick out the strands on which the second point is O and store them in T 12 , PickingInverse (T 0 , n, x1, y1, x2, y2, r, T 2 ) to pick out the strands on which one point is the inverse of the other one and store them in tube T 2 , and PickingEqual (T 0 , n, x1, y1, x2, y2, T 3 ) to pick out the strands on which one point equals to the other one and store them in tube T 3 . These four algorithms are easy to design, so omitted here. Note that PickingInverse (T 0 , n, x1, y1, x2, y2, r, T 2 ) will increase n bits to every strand in T 0 (see Algorithm 7).

Proof.
Step (5) employs append operation to append M bits 0 to all strands in tube T 0 . Step (6) to step (8) are operations on tube T 0 to get μ of strands in T 0 .
Step (9) to step (13) are operations on tube T 3 to get μ of strands in T 3 .
Step (14) pours T 0 and T 3 to T 0 and the length of every strand in T 0 now is r + n + n + M + n + D − 1 bits.
Step (15) to step (21) accomplish to compute the position x of point of sum and the result is from (r + X)th bit. The execution of steps (22) to (26) is used to get the position y of the sum which equals to μ(x1 + x3) + x3 + y1. And now, the position y of the sum is from (r + X + Y )th bit and the length is r + n + X + Y − 1 bits.
Steps (27) and (28) are applied to append the value of positions x and y of the sum of two points to the last of every strand. Now, the length of every strand in T 0 is r + n + X + Y + 2n − 1 bits with the value x from the (r + n + X + Y )th bit and y from the (r + n + X + Y + n)th bit.
From AddTwoNode (T 0 , n, x1, y1, x2, y2, r), it takes O(n 3 ) extract operations, O(n 3 ) append operations, O(n 3 ) merge operations, and O(n) test tubes to finish the function of a parallel adder for points on elliptic curve.

Breaking the elliptic curve cryptosystem
We have constructed the algorithm above for parallel computing the point of the sum of two points. Then, we can solve elliptic curve discrete logarithm problem as follows: consider point P and Q are given, and l is what we want to get which matches Q = lP. First, we amplify P into two tubes and add P in one tube. Check if 2P equals to Q; if not, note down the value of 2P and pour two tubes together. Then, amplify the tube into two tubes and add 2P in one tube. Check if any point equals to Q; if not, note down the value of 4P and pour two tubes together, or we get the value of l. Then, amplify the tube into two tubes and add 4P in one tube, . . . , while this loop executes n times, the value from 1 to 2 n for l will have been checked, and the elliptic curve cryptosystem has been broken by the solved elliptic curve discrete logarithm problem.
work makes great progress in application of DNA computing in cryptoanalysis [16], which is breaking RSA by factoring integer, this paper proposes application of DNA computing in another popular cryptosystem, ECC, which is more complex and has more challenge in cryptoanalysis. Though the algo-rithm is somewhat complex, it takes a series of steps that is polynomial in the input size, so it is feasible in theory and inspirits the development of DNA computing. Simultaneously, the paper also shows that humans' complex mathematical operations can directly be performed with basic biological operations. The property for the difficulty of elliptic curve discrete logarithm is the basis of elliptic curve cryptosystems. However, this property seems to be incorrect on a molecular computer. This indicates that the elliptic curve cryptosystems are perhaps insecure if the technique of DNA computing is skillful enough to run the algorithms efficiently as discussed in this paper.