PAES (Parallel AES or Paolo’s AES) is an OpenCL implementation of AES. I wrote it as thesis for my master degree and its goal was mostly to explore OpenCL peculiarities, ranging from application design issues to software tricks or bugs.

The result isn’t production ready at all because I used an AES reference implementation that followed the algorithm description step by step, while the most used AES implementations often refactor the standard algorithm in order to exploit machine’s performances at their best. On the other hand, PAES works nicely and it’s a good example of OpenCL-based computing.

Anyway the result of my work is pretty remarkable because, thanks to OpenCL, PAES can run flawlessly both on CPUs and GPUs, exploiting all their cores, with a single source code base. The main goal of this thesis project was to gather knowledge both about OpenCL and multi/many-core architectures to be used by a joint project between Perugia’s University departments of Physics, Chemistry and Computer Science. The results are pretty encouraging: while OpenCL has its rough spots, it’s perfectly usable and can bring great results.

The host part of the software and the reference AES serial implementation are written in C99, the kernel in the OpenCL C dialect; there are also some correctness and performances tests written in Python and the thesis text and presentation, both written in LaTeX and in Italian.

The software is licensed under GPL 2 and the thesis text and presentations are distributed under the terms of Creative Commons 2.5 Attribution-ShareAlike.


About Paolo Bernardi

Registered software engineer with over 10 years' experience in software system design, cybersecurity and privacy expert, free and open‑source software enthusiast. Certified C2‑level English language user. I live in Acquasparta, an Umbrian town famous for being the seat of the first "Accademia dei Lincei" (Academy of the Lynx‑eyed), together with my beloved wife.
This entry was posted in english, linux, my software, my writings, security, university and tagged , , , , , , , , . Bookmark the permalink.

2 Responses to PAES

  1. Maria says:

    Hi, my name is Maria and I am trying to implement DES on OpenCL.
    I saw your thesis, and I wanted to see how it runs, but unfortunately, I am not sure if I did it correctly.
    I am using an Nvidia and I tried to compile it with nvcc -lOpenCL paes.c -o paes
    Is this correct ?

    Thanks in advance,

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s