
Discover the history of aes, its 128-bit block and 128/192/256-bit keys, and the round operations: add round key, sub bytes, shift rows, mix columns, and key schedule.
Explore CUDA-optimized AES on GPUs using a table-based implementation with shared memory tables, counter-mode parallelism, and warp-aware techniques to minimize bank conflicts and boost performance.
Overview: This course first provides the theory of block ciphers and mode of operations for block ciphers. As an example, it focuses on the world's most used encryption algorithm named Advanced Encryption Standard (AES). The three common techniques to implement a block cipher are as follows: Naive, table-based, and bitsliced. This course teaches how to implement the AES block cipher using the C and CUDA languages. Then it teaches how to optimize the table-based implementation of AES on GPUs and remove shared memory bank conflicts to achieve world record encryption speeds.
Course Description: This course provides fundamentals of block ciphers and mode of operations for block ciphers. As an example, we focus on Advanced Encryption Standard (AES). AES block cipher is responsible for the most of the world‘s encryption. This course also teaches how to implement cryptographic algorithms like AES in C and CUDA. Finally, this course teaches how to optimize AES on GPUs to obtain record-breaking performance.
Course Contents: Block ciphers, Advanced Encryption Standard (AES), Mode of Operations, GPU Optimization
Who Should Enroll: Anyone who wishes to understand the basic principles of block ciphers and their GPU optimizations
Prerequisites: General understanding of cryptography concepts and principles Basic programming skills in C and CUDA
About the instructor: Assoc. Prof. Cihangir Tezcan received his BSc degree in Mathematics and MSc and PhD degrees in Cryptography from Middle East Technical University (METU). He is currently the head of Department of Cyber Security and the director of Cyber Defense and Security Research Center in METU. Before joining METU, he was a teaching assistant at École Polytechnique Fédérale de Lausanne (EPFL) during his PhD studies and post-doctoral researcher at Ruhr-Universität Bochum (RUB).