# Proof of Concept Implementation of Elliptic Curve Cryptography Using the El-Gamal Algorithms

## Advisor Information

Vyacheslav Rykov

## Location

Dr. C.C. and Mabel L. Criss Library

## Presentation Type

Poster

## Start Date

6-3-2015 2:00 PM

## End Date

6-3-2015 3:30 PM

## Abstract

The aim of this project was to create a functional implementation of Elliptic Curve Cryptography (ECC) from the ground up using the El-Gamal encryption algorithm, an asymmetric encryption scheme (an algorithm in which the sender of a message encrypts the message with a different key than the receiver uses to decrypt it). The program was written in Python, a simple and easy to understand programming language. In addition to the message encoding, encryption, and decryption algorithms, the program includes code written to computationally construct a type of finite field called a “group over an elliptic curve,” which is a mathematical structure over which we can define group operations such as “addition” and “multiplication”. These operations are somewhat analogous to ordinary integer addition and multiplication. The program also contains implementations of several sophisticated mathematical algorithms to facilitate these “group operations”. In total the program stands as a demonstration of how a functionally complete ECC implementation using the El-Gamal algorithms can be constructed in a high- level programming language. My work thus serves as a template: written in Python, it can be easily ported and its concepts applied to many other languages. Thus my research has all the necessary computational algorithms, built from basic components available in most languages, to have wide- reaching application.

Proof of Concept Implementation of Elliptic Curve Cryptography Using the El-Gamal Algorithms

Dr. C.C. and Mabel L. Criss Library

The aim of this project was to create a functional implementation of Elliptic Curve Cryptography (ECC) from the ground up using the El-Gamal encryption algorithm, an asymmetric encryption scheme (an algorithm in which the sender of a message encrypts the message with a different key than the receiver uses to decrypt it). The program was written in Python, a simple and easy to understand programming language. In addition to the message encoding, encryption, and decryption algorithms, the program includes code written to computationally construct a type of finite field called a “group over an elliptic curve,” which is a mathematical structure over which we can define group operations such as “addition” and “multiplication”. These operations are somewhat analogous to ordinary integer addition and multiplication. The program also contains implementations of several sophisticated mathematical algorithms to facilitate these “group operations”. In total the program stands as a demonstration of how a functionally complete ECC implementation using the El-Gamal algorithms can be constructed in a high- level programming language. My work thus serves as a template: written in Python, it can be easily ported and its concepts applied to many other languages. Thus my research has all the necessary computational algorithms, built from basic components available in most languages, to have wide- reaching application.