My current research theme centers around efficient implementations of and architectural support for cryptographic and cryptanalysis algorithms on today's computing platforms ranging from low-resource embedded systems to high-performance, state-of-the-art multi-core/many-core computers.
For cryptographic algorithms, we work in the area of post-quantum cryptography and study those public-key cryptosystems that can resist the attacks of the emergent thousand-qubit quantum computers, which will instantly break today’s most public-key cryptosystems including RSA, DSA, and ECC. Besides representing a future-proof investment, some of these post-quantum cryptosystems (such as multivariates) also enjoy the benefit of executing much faster than their traditional counterparts on the same hardware, making them ideal for applications in mobile and embedded systems. With appropriate architectural support, it is possible to use multivariate public-key cryptography on computing platforms with the most stringent constraints such as passive RFID tags.
For cryptanalysis algorithms, we are currently investigating integer factorization on multi-core/many-core computers. The security of many cryptographic algorithms such as RSA relies on the fact that integers with large prime factors are hard to factor. The number-field sieve (NFS) is today’s champion integer factorization method, and the current recommendations for RSA key sizes of 2048 bits or larger are directly based on extrapolations of the speed of NFS.
Using integer factorization as the benchmarking vehicle, we set out to examine in depth several promising multi-core/many-core architectures, including NVIDIA’s CUDA parallel programming environment, IBM’s Cell Broadband Engine, and various emerging architectures like Intel’s Larrabee and the OpenCL industry standard. We aim to explore key abstractions such as hierarchy of thread groups, on-die shared memories, and barrier synchronization. We hope that we will gain insights as how these abstractions can help design a good programming technology for the multi-core/many-core processors by working out a few real example applications, e.g., pushing the speeds of integer factorization to a new level.