Abstract
Cloud computing offers an economical, convenient and elastic pool of computing resources over the internet. It enables computationally weak client to execute large computations by outsourcing their computation load to the cloud servers. However, outsourcing of data and computation to the third-party cloud servers bring multifarious security and privacy challenges that needed to be understood and address before the development of outsourcing algorithm. In this paper, the authors propose solutions for matrix-chain multiplication (MCM) problem. Our goal is to minimize the execution burden on the client without sacrificing the confidentiality and integrity of the input/output. Conventionally, the complexity of matrix-chain multiplication is O (n3). After leveraging the facility of outsourcing, the client-side complexity reduces to O (n2). In the proposed algorithm, the client employs some efficient linear transformation schemes, which preserve the data confidentiality. It also developed a novel result verification scheme, which verifies the result with modest burden and high probability and maintain the integrity of computed result. The analytical analysis of algorithm depicted that the algorithm is simultaneously meeting the design goals of correctness, security, efficiency and verifiability. We conduct many experiments to validate the algorithm and demonstrate its practical usability. The algorithm is implemented on public cloud “Amazon EC2”, and found that the proposed outsource algorithm performs
Introduction
The development of high performance hardware such as multicore CPUs, GPUs, large capacity storage systems, high performance caches, network interfaces and high speed internet have been the driving forces towards the development of cloud computing. It aims to provide ubiquitous, convenient, on-demand network access to a shared pool of configurable computing resources [1].
Nowadays, many clients from large enterprises to small business houses are shifting towards cloud computing rather abandoning the traditional in-house IT infrastructure. This shift has happened due to many reasons, such as huge capital saving on procurement and maintenance of IT resources, immediate on-demand availability of resources, scalability and elasticity of resources, high availability of resources and the best facility is the provision of all the services in a pay as you go manner. In fact at many places the cloud has even replaces the requirement of high-cost traditional computing infrastructure [2]. However, the lack of trust between the client and cloud is the main hurdle towards the widespread adoption of cloud computing.
The outsourcing paradigm involves two entities the client and the cloud server. The client wants to execute some complex polynomial time computation, but lacks the necessary computing resources to complete the execution. Therefore, it outsources the large computations to the cloud servers, which have the necessary capability to perform the job. But this type of arrangement is expose to security and privacy concerns. The main security concern of this arrangement arises due to the lack of trust between the client and cloud server. The cloud server might record all the computation and data that came into custody during the execution of the problem and later behave maliciously. Due to the sensitivity of data, it became extremely important to protect the privacy of data before outsourcing to the cloud. Moreover, the client also has no reliance on the computation performed by the cloud server. Eventually, the cloud also has financial advantage of executing a computation extremely fast, behave lazily (lazy computation), terminate a problem arbitrary and produces incorrect results. Consequently, releasing up the valuable computing resources for other computations to increase the financial output. That is why it has become extremely important to implement an efficient verifiable outsource computation, where the client can verify the integrity of result with minimum effort and interaction (non-interactive verifiable computation) [3].
In this paper, we attempt to provide a secure outsourcing solution for matrix-chain multiplication problem. There are two main reasons that motivate us to solve MCM problem. First, MCM is a basic operation that has application in many domains, such as statistics, computer graphics, scientific computations, machine learning, sensor networks, economics, image encryption just list a few. Second, it is a complex problem, takes O (n3) for execution. Further, if MCM work on large data set, it becomes impossible for a resource constrained client to perform execution. Therefore, outsourcing of MCM is worthwhile. Further, the problem of matrix multiplication has been the subject of much attention in [4–8]. These solutions have considered and solve the matrix multiplication problem, but neither the solution designed to work in a cloud computing environment nor considered the computational asymmetry between the client and cloud. Moreover, in the best of our knowledge, none of the previous work has addressed the MCM for outsourcing to the cloud. Interested with the facts that MCM is an important problem and well rooted in the scientific and engineering field, authors are highly motivated to develop a privacy preserving, efficient and secure outsourcing algorithm in a fully malicious environment.
The main contribution of the article is mentioned in below points: The goal of MCM algorithm is to securely outsource the matrix-chain and calculate the product efficiently. As the matrix multiplication is associative hence we have no restrictions on which the multiplications performed as long as multiplicative conditions are met. At the very first, by applying the algorithm discussed in [9], we found the optimal order in which the matrices should be multiplied. The paper discusses several potential design approaches for the formulation of the privacy preserving algorithm. They differ in security and efficiency parameter, the best one is targeted and finally implemented. A through analytical analysis is presented, which shows that the MCM algorithm is successfully meeting the algorithm design challenges. The experimental assessment validates the algorithm for practical usability.
The rest of the sections of this paper is organized as follows: Section 2 discusses the existing work. Section 3 presents an outline, framework and design goals of secure outsourcing algorithm. Section 4, formulates the problem. Also, the proposed privacy preserving method for MCM. In Section 5, we analyse the performance of algorithm rationally and illustrate that outsourcing algorithm meeting the design goals. Section 6, presents the implementation results and experimental analysis. Finally, concluding remarks and future direction incorporated in Section 7.
Related work
The ease of usability, reliability and economic viability of cloud has attracted many researchers to perform investigations on efficient cloud-based architectures and proposed algorithms for outsourcing of various complex problems. We are listing few problems, which has secure outsourcing solution in cloud environment. The problems such as matrix multiplication [4–6, 10–18], matrix inversion [19], system of linear equation [20–22], linear regression analysis [23, 24], modular exponent [25], matrix determinant [26].
In [4], the authors has built a secure outsourcing algorithm on the theory of Shamir’s secret sharing technique. This method suffers from computational overhead since the multiplication overhead expands to polynomial time. Further, Mohassel has proposed a non-interactive and secure protocols for matrix multiplication. They has employed many encryption schemes with limited homomorphic properties and generalized the verification scheme. The efficiency of verification is destructively hampered the overall algorithm. Further, this protocol for matrix multiplication is extended for other linear algebra tasks in [5]. However, the generic protocol involves cryptographic primitive such as a FHE (fully homomorphic encryption) or SHE (somewhat homomorphic encryption) scheme that makes the protocols complicated, inefficient and far from practical usage [27]. In [3] the author has proposed a formal definition for secure outsourcing algorithm. Later they proposed a non-interactive solution for polynomial functions. The function modeled into grabbled circuit and homomorphically encrypted. Further, the server executed the function and returned the result with non-interactive proof of verification that could be verified in O (m) time.
Further, in [10, 19], authors have proposed linear transformation method for secure outsourcing of matrix multiplication and matrix inversion problem. The algorithms efficiently outsources the problems to the cloud server, while maintaining the correctness, privacy of the input-output, and verifies the result efficiently. Further a solution is develop for polynomial evaluation, which later extended to matrix multiplication outsourcing using Diffie-Hellman assumption and bilinear group. The solution preserves the input-output privacy and achieved public delegation. However, suffers from low efficiency due to extensive use cryptographic preambles, which make it impractical to use with large input size [14]. Furthermore a protocol is presented for matrix multiplication outsourcing, which preserve the secrecy by adding the blind divisors to the input, which makes the input matrix indistinguishable. Further, this method is very efficient since does not involved in any heavy cryptography. The authors claim that they achieve concrete level of security efficiency and verifiability [12].
Recently, two algorithms have been proposed in [11]. They proposed privacy preserving secure algorithm based on algebraic property of the matrices. They introduces the orthogonal and diagonal property of the matrices to propose the privacy preserving transformation operation. They also proposes verification algorithm, which detect the server misbehavior with high probability and modest overload. The author claims that the two protocols achieve the security, efficiency and verifiability. They has proved the proposal with the help of analytical and experimental analysis.
Problem formulation
In this section, we define the matrix-chain multiplication outsourcing problem. A system model has been proposed for the MCM problem, which gives a modular view of the problem such as privacy preserving transformation operation, computation of the problem on cloud server, verification of the output result and finally the re-transformation of the result. Description of the security challenges (threat model) faced by the proposed system. Further the design goal of the algorithm that is correctness, security, efficiency and verifiability is also discussed in this section. Finally, the framework of the algorithm is also elaborated in detail.
System model
The system model for matrix-chain multiplication algorithm is presented in Figs. 1 and 2 in two steps. Here, the client wants a solution of multiplication for a chain of matrices. But the client in the system model is resource-constrained and lack the necessary computing resources needed for computation. Therefore, the client decided to outsource the computation to cloud server. In the matrix-chain problem the client first computes the optimal order of computation to minimize the number of scalar multiplication. Later, the client follows the optimal order and outsources the matrices to the cloud server for multiplication. Further, the matrix-chain multiplication problem can be stated as follows: given a chain (M1, M2, …, M n ) of n matrices, where for i = 1, 2, …, n, matrix M i has dimension pi-1 × p i , fully parenthesize the product M1, M2, …, M n in a way that minimizes the number of scalar multiplications.

Computation of optimal sequence.

System model for matrix-chain multiplication.
First the client computes the optimal sequence of the matrices with the help of the cloud to execute the MCM in a lowest cost. Then the client applies the linear transformation operation on the first input pair φ (Mi-1, M
i
) and produces the transformed problem
Gennaro et al. [3] has presented a formal definition for secure outsourcing algorithm. The outsourcing algorithm has five steps in the following order: “KeyGen”, “ProbTrans”, “Compute”, “Verify”, and “Retransform”. KeyGen (1
λ
): This algorithm invokes with an input of security parameter λ. Later generates random keys in the form of matrices, which are further used for problem transformation operation. ProbTrans (φ, k): On the input of security key matrices k. The ProbTrans (φ, k) operation perform the encryption, the original problem φ (Mi-1, M
i
, k) with the key k generates the transformed problem Verify (R
i
, k): Finally, the client with the help of security keys verifies the correctness of result R
i
.
Threat model
We consider the proposed algorithm for public cloud server, where the algorithm is expose to many vulnerabilities i.e. the cloud server could produce incorrect results either being lazy or intentionally disrupting the algorithm. The threat model considered in this section closely follow the previous work on secure outsourcing in [10, 22]. The cloud server might be “curious”, “lazy” and dishonest simultaneously. Therefore, the cloud server attempt to record the data and computation also, produce incorrect results. In short, such behavior of cloud server tries to completely sabotage the outsourcing algorithm.
Design goals
A secure and efficient MCM outsourcing algorithm should satisfy the following four properties such as correctness, privacy, efficiency and verifiability simultaneously.
Proposed data confidentiality and integrity preserving outsourcing algorithm
This section presents a discussion on matrix-chain multiplication outsourcing problem. The discussion gives many possible solutions based on efficiency and security parameters, the best will be selected for practical implementation and result analysis.
Matrix-chain multiplication problem
The matrix-chain multiplication problem can be stated as follows: given a chain <M1, M2, … , M
n
> of n matrices, where for i = 1, 2, …, n, matrix M
i
has the dimension of pi-1 × p
i
. The product M1, M2, …, M
n
in a way that minimizes the number of scalar multiplications. The matrix-chain is evaluated as
The given chain multiplication given in Equation (1) is evaluated by n matrix multiplications. The operation of matrix multiplication (Mp0×p1 × Mp1×p2) may be considered as elimination of element p1 from the set of {p0, p1, p2} at the cost of p0p1p2 scalar multiplication and addition, which is also referred as the cost of finding an optimal sequence for the multiplication of matrices. The client in the outsourcing algorithm with the help of cloud server first computes the optimal sequence of multiplication using the algorithm discussed in [9]. Once the client got the optimal sequence of the matrix-chain, the problem can be restated as an equivalent matrix multiplication problem. The client took a pair of matrices from the optimal sequence. And outsources them to the cloud server until all the matrices get multiplied. In this process, the client finally gets resultant matrix of order Rp0×p
n
by eliminating all the elements {p1, p2… , pn-1 } from the set of {p0, p1, … , p
n
}. Before outsourcing the matrices for chain multiplication, the client applies an efficient transformation operation on input data to preserve the privacy of data. The client applied the transformation operation on (Mp0×p1 × Mp1×p2). Then, the transformed problem
In this section, the authors proposed the privacy preserving linear transformation operation for data confidentiality. The transformation operation transforms the data to provide the input secrecy as well as the output secrecy. For a matrix-chain multiplication problem Mp0×p1 × Mp1×p2 × , …, × M
p
n-1×n
. The client outsources the pair of matrices in the optimal order to the cloud server to calculate the final result. The client performs the transformation for every pair of matrices of the matrix-chain operation. Let the client is preparing the pair of matrices (Mp0×p1 × Mp1×p2) for matrix multiplication. The client performs an efficient transformation which transform the problem φ (Mp0×p1 × Mp1×p2) into
If two matrices are compatible for multiplication, the matrix multiplication can be performed as
The Equation (2) presents a situation for linear transformation of inputs such as
(a) In the pursuit of better solution, which efficiently maintain the secrecy of input and output. The authors have reached to a conclusion that if the input matrices are multiplied by key matrices from the left-side and right-side simultaneously the input and output both become protected i.e.,
Putting the value of
This privacy preserving method preserves the secrecy of the input and the output result. Further, the client easily establishes a relationship between the original result and transformed result. We have shown mathematically that the retransformation operation is very efficient and the client easily transforms the transformed result to the original result.
(b) In the search of a better solution than the discussed in section (a), the quest for better solution forward towards a new direction and our research has found that if the input matrices could be transformed as,
The client will achieve better performance gain than the previous approach. The key matrices D1 and D2 are diagonal matrices (p0 × p0, p2 × p2),
Putting the Equations (7) and (8) into Equation (2),
It is understood from the Equations (7), (8) and (9) that this method is able to maintain the secrecy of input and the computed result. Further a relationship needed to be established, so that the client could efficiently transform the computed result of transformed input of the final results. The diagonal matrices D1 and D2 are invertible matrices and the client can easily compute the
It can be drawn from the Equation (10) the client could efficiently transform the result.
(c) Later we see whether we could improve the efficiency of the algorithm. It has found if we restrict the key matrices A, D1 and D2 as diagonal matrices the efficiency of the algorithm effectively increases. In order to perform this operation, the orthogonality property of A needed to be relaxed to some extent. The values of elements in matrix A are constrained to r or -r, where
It is understood from the Equation (11) that this method able to secure the input and output security. Moreover, this method is more efficient method than the discussed in section (a) and section (b). Thus, the client can choose a favorable option between (a), (b) and (c) based upon his requirement of security and efficiency. A detail security analysis of the algorithms discussed in (a), (b) and (c) will be discussed in the algorithm analysis section.
In this section, we prove that the proposed algorithm is meeting the design goals of correctness, security, efficiency and verifiability simultaneously.
Correctness analysis
The client will get a correct result of matrix-chain problem only if the client and cloud server follow the algorithm instructions correctly. The client follows an optimal order in which it outsources the matrix-chain to the cloud server and receive the result and once all the matrices in the chain got multiplied the client get the final result.
From the Equation (6) Rp0×p2 = Mp0×p1Mp1×p2
The proof of this case is similar to the case 1, since the case 2 is a special case of case 1.
From the Equation (11),
Rp0×p2 = Mp0×p2
Here the proof in all the three cases 1, 2 and 3 revels that the proposed outsourcing algorithm is a correct implementation of MCM problem.
Security analysis
The proposed privacy preserving method is able to secure the privacy of input and the computed result. The cloud server never succeeded to recover the original information. Moreover, to justify the secrecy claim, a security analysis has been presented.
The secret keys (A, D1 & D2) is a special case of (A, K1 & K2), which has similar security analysis but the permutation matrix K1 and K2 randomize the indices position, which performs row-wise transformation for Mp0×p1 and column-wise transformation for Mp1×p2. Therefore, adds extra security to the transformed values, and extra complexity to the security analysis with a factor of (p0) ! and (p2) !. Details of security analysis is discussed in case 2 and case 3 given below.
The orthogonal matrix A is square matrix, where its dimension is p1 × p1 in
The third case keys were developed keeping in mind to improve the efficiency of the outsourcing algorithm. Therefore, this method has lower key complexity than the previous two methods, but this method is still safe. Further, the analysis of keys presented such as; the orthogonal diagonal matrix A has entries either r or -r, where the r is a random real number of l bits long. Therefore, there are 2p1+l possible choices of A. Later, the diagonal matrices D1 and D2 have 2p0l+p2l possibilities as discussed in previous cases. Hence, when the keys are applied simultaneously for transformation operation the combined key combination is 2p0l+p2l+p1+l, which is large quantity in terms of (p0, p1 and p2) and if the values problem size is large this case is sufficient to manage possible brute force attacks.
As discussed in the privacy preserving transformation section the proposed transformation methods are capable to preserve the privacy input and output. Therefore, the output produced by the cloud server does not disclose any meaningful information about the result. The security analysis of output matrix is same as the input matrix. Besides, the client generates a pair of new security keys for every new problem submission to the cloud server. Therefore, the solution is resembled to one-time-pad scheme and diminish the chances of plain-text and chosen-plain text attacks.
Verifiability
In the malicious cloud environment, the cloud may behave arbitrary. It might not follow the actual algorithm instruction, in that situation the cloud will produce wrong results. Sometimes the cloud behaves lazily and produces wrong result. Therefore, to detect any such situation the client must be able to verify the correctness of the result.
If the cloud produces a correct result this relation must hold true, however if fails
Let the row d
i
≠ 0
Then,
The value x
k
is chosen where k ≠ j and x
k
∈ { 0, 1 }, however there is only one value that satisfies the equation (14). Therefore, one of the value between {0, 1} fails to satisfy the Equation (14). Thus, the verification algorithm verifies the result with an error probability of,
The client needed to run the verification process l times to avoid any erroneous result passes the verification test. Therefore, the client adjusts the value of l such that it could detect the wrong result with high probability and yet the verification algorithm is efficient than executing the problem itself.
For secure outsourcing of matrix-chain multiplication problem the client needed to perform some preprocessing and post-processing. It was considered during the design of the algorithm that the portion executed on client-side is always be lesser than the execution cloud-side. The theoretical complexity of each sub-algorithm is presented in Table 1.
Theoretical analysis of complexities
Theoretical analysis of complexities
This section presents a comparison of the proposed work to the closely related work for matrix multiplication since to the best of our knowledge, none of the available solution attempt to solve the matrix-chain outsourcing problem. Moreover, the existing solutions offer data secrecy and verifiability but they fail to adopt the cloud environment. The algorithms were predominantly written for remote servers in a semi-trusted environment. They don’t consider the computational asymmetry of cloud server and client. Moreover, these were developed using complex cryptographic primitives, which makes them unsuitable for computation in the cloud with the dataset. Recently, Lei et al. [7], and Kumar et al. [11] discusses linear transformation method to securely outsource the matrix multiplication to cloud server. These methods are very efficient, secure and they provide verification computation of the output result. The methods differ in their privacy preserving method one uses permutation matrix; however, later uses orthogonal matrices and the combinations of orthogonal diagonal matrices. However, these methods are also don’t discuss the solution for matrix-chain multiplication. Table 2 presents the comparison state-of-the-art methods for matrix multiplication outsourcing algorithm.
Comparison of closely related secure outsourcing algorithms
Comparison of closely related secure outsourcing algorithms
In this section, the experimental evaluation of proposed algorithm has been performed, where we outsources the matrix-chain multiplication to the cloud server. The algorithm is implemented into two parts as client-side and cloud server-side system. The client system is implemented on a laptop with AMD Processor dual core 2.2 GHz and 4 GB of RAM, 500 GB Hard disk at 5400 RPM. The server is implemented on Amazon EC2 instance hired from Amazon AWS.
The performance analysis focuses on the execution times of the sub-algorithms, while the communication time could be neglected, due to its negligible value in comparison to the execution time. The matrix-chain multiplication results are computed and the performance analysis of algorithm mainly focuses on the values of client-side computation time and cloud-side computation time while the communication time could be neglected. Further, the performance of the proposed algorithm is evaluated on the basis of three standard parameters, i.e. “performance gain”, “efficiency” and “relative extra cost”, which are used in many state-of-the-art implementations.
The “performance gain” is defined as,
Ideally, the value of PG > 1. Further, the efficiency parameter is defined as,
The relative extra cost REC parameter is defined as,
To perform the experiments many random instances of matrix-chain are generated [28]. They solved directly and their execution times are denoted as toriginal in the Tables 3–5. After that, the client with the help of cloud server calculate the optimal sequence of each randomly generated matrix-chains and noted the execution time for optimal sequence as t os . Further, the client performs the privacy preserving transformation on the pair of matrices and outsources the problem to the cloud server. The cloud server executed the matrix-multiplication and returned the result, the process gets repeated until all the matrices in the matrix-chain got multiplied. Meanwhile, we record the execution time of all the sub-algorithms executed on the client-side (transformation t enc , re-transformation t dec and verification t ver ) and cloud-side (optimal sequence t os , matrix multiplication t mm ). After recording all the parameters, we calculate the averages of values to get a stable system performance. The experiments started with a small problem of five matrices, which extended up to the chain of twenty matrices. The detailed results are summarized in the Tables 3–5 for matrix-chain of five, ten and twenty respectively. It could be observed from the results reported in Tables 3–5 as the size of the problem increases, the proposed algorithm took much lesser execution time than the direct method. For example, the largest problem in the experiment of five matrices takes 35.664 seconds, whereas when the problem outsources to the cloud server. It takes only 4.0146 seconds. Therefore, the client in the algorithm achieves the time saving of 88% for the matrix-chain of five matrices. Similarly, for the chain of ten matrices it achieves 90% time saving, while 91% time saving for matrix-chain of twenty matrices. Next, the performance-gain parameter for the experiments. The tables show that the client got the maximum performance gain of 8.8, 10.2, and 11.65 times, when the client outsources the problem to the cloud server. Figure 3, shows that as the problem size increases the client achieves more performance gain. It is a motivating factor for a resource-constrained client to choose “outsourcing” as their primary way problem execution, since for the larger problem the client got performance gain in double digit. Next the efficiency of the outsourcing algorithm, which could be perceived from the Tables 3–5, which is close to one, which means that the matrix-chain problem even after encryption do not take more time for matrix multiplication than the direct algorithm, which means the proposed encryption method don’t complicate the problem execution. Further, the relative extra cost “the additional burden of outsourcing algorithm over the direct implementation of algorithm”. Figure 4, shows that the REC parameter is monotonically decreasing function as the size of the problem increases. The Tables 3–5 and Fig. 4 shows that the values of REC parameter for the largest problem in the experiment is 0.090177, 0.090677 and 0.072602. The smaller values of REC parameter are a revelation that the extra work done by the client and cloud server by employing the proposed outsourcing algorithm for matrix-chain multiplication is very minimum. Further, we could see in the Figs. 5–7, the work done by the client (pre & post-processing) for outsourcing the matrix-chain problem is very minimum, in comparison to the work done by cloud server.
Performance analysis for matrix-chain of five matrices at public cloud
Performance analysis for matrix-chain of ten matrices at public cloud
Performance analysis for matrix-chain of twenty matrices at public cloud

Performance Gain.

Relative Extra Cost for the proposed algorithm.

Comparison of execution time between cloud and client for five matrices.

Comparison of execution time between cloud and client for ten matrices.

Comparison of execution time between cloud and client for twenty matrices.
The client performs approximately 12%, 10%, 9% work for matrix-chain multiplication of five, ten and twenty matrices respectively as compared to cloud server. Further, for a resource-constrained client memory is another bottleneck, but due to the special arrangement of security keys the algorithm required only sub-quadratic time complexity of I/O operations in the size of the input. Therefore, the propose algorithm provide ample opportunity for clients, even with limited computing resources perform large complex computation.
Finally, the values of performance gain, efficiency and REC parameter motivates many clients to outsource their large computations to cloud server and complete their work without the need of much IT resources. Further, it is important to mention that the performance of the algorithm depends on the underlying platform. However, if the client considers the large problem, it always achieves performance gain due the asymptotic time complexity gap between the client-side execution and cloud-side execution.
In this paper, we formulated and implemented matrix-chain multiplication outsourcing algorithm. The algorithm has been developed by applying the concepts of linear algebra. The privacy of input and output pair has been preserved by the linear transformation operation. Three different proposals are discussed with various key combinations that provide an opportunity for the client to choose the best combination as per their requirement on the basis of efficiency and security. A theoretical analysis is presented, which shows that the proposed implementation of matrix-chain multiplication took quadratic time to execute on the client-side, while the complex part that takes cubic times executed on the cloud-side. In this way, the client got the performance gain of O (n). A detailed experimental and analytical analysis has presented, where the client got time saving of 88%, 90%, 91% for the outsourcing of matrix-chain multiplication of five, ten and twenty matrices respectively. The client got the maximum performance gain of 11.655 times. Moreover, if someone choose a bigger problem the value of performance gain will further increase. The algorithm is able to meet the design goals of correctness, security, efficiency and verifiability, well demonstrated in the analytical analysis. In future, it would be remarkable to see novel algorithms, which extend the verification to public verifiability where any worker can verify the correctness of the result, which subsequently reduce the verification time and increases the overall algorithm.
