RSA

From SEGGER Wiki
Revision as of 15:08, 20 August 2020 by Johannes (talk | contribs)
Jump to: navigation, search


RSA (named after its inventors, Rives, Shamir, Adleman), invented in 1977, is a well-established public key algorithm for encryption and decryption of data with a public and private key pair.

It has been standardized for digital signatures in the 1990s.

To encrypt and decrypt data, or to compute and verify a digital signature, rather simple modular arithmetic equations are used. While relatively simple to compute, there is no known solution to get the private key from the knowledge of the public key and the encrypted data or signature. This is the RSA problem and makes RSA secure.

Key Size

RSA can work with private keys of any size. Commonly used key sizes (modulus lengths) are: 1024 bits ("industrial grade") and 2048 bits ("military grade"), while NIST recommends a minimum key size of 2048 - 3072 bits for new systems.

Resource Use

For RSA digital signatures, verification can be implemented in about 6 kB ROM and requires about 3 kB of stack memory. (Implementation of RSA in emSecure)

Storage requirements for the public key are equal to the key size.

RSA can encrypt data of the size of the private key. RSA digital signatures are the size of the private key.