Credit cards are one of the popular means of carrying money around these days. This has become so widespread that credit card payments are increasing day by day and the demand for storefront terminals has increased. A well known standard that is used in such transactions is the RSA public key encryption, because unauthorized decryption is almost impossible. The project discussed in this article is based on a credit card payment system that supports RSA encryption.
The main aim of this project is to get the required input and pass it over to a server controller, which buffers the data and sends it a monitor to be displayed as output as and when it is required. The system may not be as secure as the ones used in live environment but it does point out important parameters and working of the RSA encryption.
A couple of Atmel AT90S4414 microcontrollers is used in this project. One performs the function of the storefront terminal, receiving the input parameters by means of a keypad. A request is made for a key pair to a UART supported server. Once the server provides the details, an encryption message containing the confidential data is sent back to the server bit by bit.
The data that is received at the server end is decrypted and stored in the server’s memory. In case of memory overflow, the data is moved to the PC hypertreminal via the UART. A few basic functions are also permissible at the user end.Activities such as displaying and clearing the data table and modifying keys for more security fall under this category.
The strength of encryption was more of a question mark initially because for good encryption, a number should be raised to the power of an encryption coefficient. This then has to be reduced to mod m. The Russian Peasant Arithmetic algorithm was used to perform the required calculations. A Division of a number by another less that than square of its modulus was required to ensure that an accurate value is obtained. To satisy this condition, an 8-bit encryption was used.
The system works fine except for the fact that 8-bit is encryption is used here, that is not secure as per industry standards. Using a 16-bit encryption and a more powerful algortihm would bring about an improvement in this system.
Click here to visit the project page.