Implementing modular arithmetic using OpenCL
Abstract
Problem description: Most public key algorithms are based on modular arithmetic. The simplest,
and original, implementation of the protocol uses the multiplicative group of integers modulo
p, where p is prime and g is primitive root mod p. This is the way Diffie-Hellman is implemented.
RSA is implemented in a similar way c=me mod p*q. For this reason public key crypto
RSA is much slower than symmetric key algorithms, like DES and AES. Recently the field of
using Graphics Processing Units (GPUs) for general purpose computing has become more widespread.
Many computational problems have gained a significant performance increase by using
the highly parallel properties of the GPU.
Motivation: Implementing public key algorithms using OpenCL allows the implementation to
query the system for OpenCL enabled devices(GPU,CPU and other parallel processors) to select
the best device in order to run the encrypting/decrypting of data. The same implementation can
be run on a variety of different system with different GPUs, CPU as long as at least one device is
able to run OpenCL programs/code.
Planned contribution: The planned outcome of this project is a fast implementation of public
key algorithms able to run in parallel on a variety of parallel devices(GPU,CPU and other parallel
processors) that is capable to run OpenCL code/programs.