Day 20 — Crypto Research #2
Hey, all! Welcome to CryptoCL.
Today was a short day of research — I delved deeper into researching the Data Encryption Standard (DES) and Advanced Encryption Standard (AES) cryptographic algorithms. Most of my time went into the AES algorithm, however.
I looked up the FIPS publications for both DES and AES, and also looked into a tutorial of the AES algorithm, to give me a general idea of how the algorithm works. It also helps that I was able to refer to my notes from when I took a Cryptography class.
AES utilizes four main functions:
- Byte Substitution — Substitute the input (present as a byte) , 16 input bytes at a time.
- Shift Rows — Shifting the rows of the 16 substituted byte input to the left.
- Mix Columns — Takes each column of the 16 byte substituted and shifted input, and transforms them based off a given function.
- Add Round Key — Take the 16 substituted, shifted, and mixed input bytes, translated them to 128 bits, and XOR them by the 128 bit round key.
Normally, this operation could take a very long time to process, especially with larger messages or data. That being said, I believe that OpenCL could easily split up the four functions for each 16 byte input into independent operations to be done by the GPU. As discovered when first attempting to implement OpenCL, the standard cannot be utilized effectively when the input is being overwritten in the kernel and then used elsewhere within the same function. However, functions 1, 2, and 4 do not utilize overwritten other parts of the input when calculating the output in each function, so this should allow OpenCL to optimize the calculation.
Tomorrow, I will look over my projects I had written when taking the Cryptography class, and get a better look at how AES operates.
Until next time!
Kyle Jenkins
Time spent today: 1 hour
Total Time: 29 hours 30 minutes