ing existing sequential programs are non-trivial tasks
that are still subject to ongoing research. Especially
the automatic parallelization of existing programs has
been the topic of numerous publications. Tools for the
automated parallelization of sequential source code
are for instance introduced in (Dig et al., 2009) and
(Bridges et al., 2008). Although some of the sug-
gested techniques appear to be promising, an ultimate
solution to this problem has not been found so far.
Parallelization of existing sequential programs is
especially important for software that performs com-
putationally intensive operations like scientific com-
putations and simulations. Another field of applica-
tion where complex computations have to be carried
out frequently is cryptography. Cryptographic algo-
rithms typically include some kind of secret key in
the processing of any given input data. The security
of cryptographic algorithms is usually proportional to
the size of the used key and relies on the fact that try-
ing out all possible key values is computationally in-
feasible within a reasonable period of time. As at-
tacks are becoming more effective - due to the in-
crease of available computational power and also be-
cause of parallelized and distributed approaches - key
sizes have to be increased too in order to preserve the
same level of security.
In general, cryptographic computations become
more time-consuming when key sizes are increased.
Therefore, it is crucial that existing cryptographic
libraries are adapted to utilize the entire comput-
ing power provided by modern multi-core proces-
sors. Only an appropriate parallelization of these li-
braries guarantees that they retain their level of per-
formance with increasing key sizes and remain usable
and future-proof.
Unfortunately, parallelization of cryptographic al-
gorithms is not a trivial task. For instance, consider
the design of the block cipher AES (Daemen and Rij-
men, 2002): a block of plain data is encrypted by ap-
plying the same set of operations for a specified num-
ber of times. The first iteration takes the plain data
as input, while subsequent rounds take the result of
the preceding round as input. Due to these data de-
pendencies between subsequent iterations, a parallel
execution of different rounds is infeasible.
Being aware of possible difficulties of paralleliz-
ing cryptographic algorithms, the goal of our work
was to evaluate whether existing cryptographic li-
braries can be optimized for a use on multi-core pro-
cessors. In this work we focused on the program-
ming language Java
TM
mainly because of two rea-
sons. First, a special API for the development of
concurrent programs (introduced by Doug Lea (Lea,
2005)) is available since version 1.5 of the Java
TM
De-
velopment Kit (JDK). The other reason is that we al-
ready had an existing Java
TM
cryptography library on
hand, which was perfectly suitable for our investiga-
tions.
To evaluate the possible performance boost of
cryptographic libraries on multi-core systems, we
have modified the existing Java
TM
cryptography li-
brary. Section 2 introduces this library in more de-
tail and shows how selected cryptographic algorithms
of the library have been improved to exploit the com-
puting power of multi-core architectures. In order to
compare the performance of the modified library with
the unmodified original version, we have conducted
several measurements on different architectures. The
results of these measurements and a summary of the
most important facts and findings are provided in Sec-
tion 3. Finally, Section 4 concludes this paper and
identifies further conceivable improvements to speed-
up cryptographic operations on multi-core processor
architectures.
2 JCE MODIFICATIONS
In this work we evaluate whether existing crypto-
graphic Java
TM
libraries can be improved in terms
of performance by applying parallelism. Therefore,
this section gives an short introduction to the Java
TM
Cryptography Extension (JCE) technology first. Fur-
thermore, this section provides a brief description of
different parallelization methods in Java
TM
and shows
how these methods have been applied to enhance
the performance of three selected cryptographic algo-
rithms.
2.1 Java Cryptography Extensions
Java
TM
Cryptography Extension (JCE) is a frame-
work for cryptographic operations like data encryp-
tion and decryption, key generation and key agree-
ment, message authentication codes (MAC), and
sealed objects. Regarding data encryption and de-
cryption, symmetric as well as asymmetric stream
and block ciphers are supported. Since version 1.4
of Java
TM
, the JCE is integrated into the SDK and no
longer an optional package.
The JCE uses a so-called provider architecture,
which guarantees implementation and, where possi-
ble, algorithm independence. Any signed provider
can be registered in the framework, which ensures that
the provided algorithms and implementations can be
used seamlessly. Furthermore, a provider from SUN
called SunJCE is supplied with the JDK per default.
For our investigations, we have analyzed the JCE
WEBIST 2011 - 7th International Conference on Web Information Systems and Technologies
6