About

The Rsa Algorithm

The RSA Algorithm
Evgeny Milanov 3 June 2009In 1978, Ron Rivest, Adi Shamir, and Leonard Adleman introduced a cryptographic algorithm, which was essentially to replace the less secure National Bureau of Standards (NBS) algorithm. Most importantly, RSA implements a public-key cryptosystem, as well as digital signatures. RSA is motivated by the published works of Diﬃe and Hellman from several years before, who described the idea of such an algorithm, but never truly developed it. Introduced at the time when the era of electronic email was expected to soon arise, RSA implemented two important ideas: 1. Public-key encryption. This idea omits the need for a “courier” to deliver keys to recipients over another secure channel before transmitting the originally-intended message. In RSA, encryption keys are public, while the decryption keys are not, so only the person with the correct decryption key can decipher an encrypted message. Everyone has their own encryption and decryption keys. The keys must be made in such a way that the decryption key may not be easily deduced from the public encryption key. 2. Digital signatures. The receiver may need to verify that a transmitted message actually originated from the sender (signature), and didn’t just come from there (authentication). This is done using the sender’s decryption key, and the signature can later be veriﬁed by anyone, using the corresponding public encryption key. Signatures therefore cannot be forged. Also, no signer can later deny having signed the message. This is not only useful for electronic mail, but for other electronic transactions and transmissions, such as fund transfers. The security of the RSA algorithm has so far been validated, since no known attempts to break it have yet been successful, mostly due to the diﬃculty of factoring large numbers n = pq, where p and q are large prime numbers.

1

Public-key cryptosystems.

Each user has their own encryption and decryption procedures, E and D, with the former in the public ﬁle and the latter kept secret. These procedures are related to the keys, which, in RSA speciﬁcally, are sets of two special numbers. We of course start out with the message itself, symbolized by M , which is to be “encrypted”. There are four procedures that are speciﬁc and essential to a public-key cryptosystem:

a) Deciphering an enciphered message gives you the original message, speciﬁcally

D(E(M )) = M .

(1)

b) Reversing the procedures still returns M:

E(D(M )) = M . c) E and D are easy to compute.

(2)

d) The publicity of E does not compromise the secrecy of D, meaning you cannot easily ﬁgure out D from E. With a given E, we are still not given an eﬃcient way of computing D. If C = E(M ) is the ciphertext, then trying to ﬁgure out D by trying to satisfy an M in E(M ) = C is unreasonably diﬃcult: the number of messages to test would be impractically large. An E that satisﬁes (a), (c), and (d) is called a “trap-door one-way function” and is also a “trap-door one-way permutation”. It is a trap door because since it’s inverse D is easy to compute if certain “trapdoor” information is available, but otherwise hard. It is one-way because it is easy to compute in one direction, but hard in the other. It is a permutation because it satisﬁes (b), meaning every ciphertext is a potential message, and every message is a ciphertext of some other message. Statement (b) is in fact just needed to provide “signatures”. Now we turn to speciﬁc keys, and imagine users A and B (Alice and Bob) on a two-user public-key cryptosystem, with their keys: EA , EB , DA , DB .

2

Privacy.

Encryption, which is now a ubiquitous way of assuring a message is delivered privately, makes it so no intruder can bypass the ciphertext, which is essentially white noise. Without property (d), however, an encryption process is still not public-key, such as the NBS standard. It requires keys to be delivered privately through another secure “courier”,...

You May Also Find These Documents Helpful

...A
Term Paper
On
RSA
Subject: Information System and Cyber Laws
Bachelor of Technology
In
Computer Science &amp; Engineering
Session: 2012-13
Submitted to: Submitted by:
Ms. Shruti Saxena Arpit Varshney
Roll No.1012210026
Group: 61
SHRI RAMSWAROOP MEMORIAL Group OF
PROFESSIONAL COLLEGES, LUCKNOW
Affiliated to
G.B. TECHNICAL UNIVERSITY, LUCKNOW
INTRODUCTION
* RSA is an algorithm for public-key cryptography that is based on the presumed difficulty of factoring large integers, the factoring problem.
* RSA stands for Ron Rivest, Adi Shamir and Leonard Adleman, who first publicly described the algorithm in 1977.
* Clifford Cocks, an English mathematician, had developed an equivalent system in 1973, but it was classified until 1997
* The RSA scheme is a block cipher in which the plain text and cipher text are integers between 0 and n-1 for some n.
* A Typical size of n is 1024 bits or 309 decimal digits.
* This is a public key encryption scheme.
* In this scheme two pairs of integers {e, n} and {d, n} are used. First of them i.e. {e.n} is called the RSA public key and the other one i.e. {d, n} is called the RSA secret key.
* The sender uses the public key and encrypts the message say M into cipher text as –
C = M^e mod n....

...﻿Algorithms Homework – Fall 2000
8.1-1 Using Figure 8.1 as a model, illustrate the operation of PARTITION on the array A =
13 19 9 5 12 8 7 4 11 2 6 21
i j  j
6 19 9 5 12 8 7 4 11 2 13 21
i  i j  j
6 2 9 5 12 8 7 4 11 19 13 21
i  …………………………  j
return 11, SPLIT = and
8.1-2 What value of q does PARTITION return when all elements in the array A[p…r] have the same value?
q = (p+r)/2, where p = index 0, and r = highest index
8.1-3 Give a brief argument that the running time of PARTITION on a subarray of size n is (n).
In the worst case, PARTITION must move the j pointer by one element (to the 2nd to last element), and the i pointer all the way to j, making a comparison at each element along the way. Since there are n comparisons made, the running time is (n)
In the average (and best) case, PARTITION must move the j pointer to an element at or near the half-way point in the array and the i pointer all the way to j, making a comparison at each element along the way. Once again there are n comparisons made and the running time is (n)
8.2-1 Show that the running time of QUICKSORT is (n lg n) when all elements of array A have the same value.
T(n) =...

...﻿INFORMATION TECHNOLOGY ASSIGNMENT
ON ALGORITHM
Done by
Densil Hamilton
INTRODUCTION
This Assignment was done to show the methods of algorithm. It outlines the meaning of algorithm and steps to be carried out to complete a give problem. Examples were also shown for the methods of representing algorithm.
What is an Algorithm?
An algorithm consists of a set of explicit and unambiguous finite steps which, when carried out for a given set of initial conditions, produce the corresponding output and terminate in finite time. (How to Solve it by Computer, RG Dromey, Prentice Hall UK, 1982)
This is done by a series of steps:
1. Input: there are zero or more quantities which are externally supplied;
2. Output: at least one quantity is produced;
3. Definiteness: each instruction must be clear and unambiguous;
4. Finiteness: if we trace out the instructions of an algorithm, then for all cases the algorithm will terminate after a finite number of steps;
5. Effectiveness: every instruction must be sufficiently basic that a person using only pencil and paper can in principle carry it out. It is not enough that each operation is definite, but it must also be feasible.
WAYS OF REPRESENTING ALGORITHMS
Two ways of represent an algorithm are:
Flowcharts
Pseudo Code
FLOWCHARTS
This is a...

...﻿Euclidean algorithm
In mathematics, the Euclidean algorithm, or Euclid's algorithm, is a method for computing the greatest common divisor (GCD) of two (usually positive) integers, also known as the greatest common factor (GCF) or highest common factor (HCF). It is named after the Greek mathematician Euclid, who described it in Books VII and X of his Elements.
The GCD of two positive integers is the largest integer that divides both of them without leaving a remainder (the GCD of two integers in general is defined in a more subtle way).
In its simplest form, Euclid's algorithm starts with a pair of positive integers, and forms a new pair that consists of the smaller number and the difference between the larger and smaller numbers. The process repeats until the numbers in the pair are equal. That number then is the greatest common divisor of the original pair of integers.
The main principle is that the GCD does not change if the smaller number is subtracted from the larger number. For example, the GCD of 252 and 105 is exactly the GCD of 147 (= 252 − 105) and 105. Since the larger of the two numbers is reduced, repeating this process gives successively smaller numbers, so this repetition will necessarily stop sooner or later — when the numbers are equal (if the process is attempted once more, one of the numbers will become 0).
Coprime integers
In number theory, two integers a and b are said to be relatively...

...Technology: Coursework
Discrete Algorithm
Introduction
Discrete algorithm problem applies to the mathematical structures, and entails collection of different elements using a binary operation referred to as group multiplication. Given an element ‘g’ in group ‘G’ of the order ‘t’, and the second element ‘y’, of group ‘G’, and the problem seeks for the value of ‘x’, with the conditions set, then element ‘g’ typically generates all the ‘G’ elements, or at least a considerable number of elements through exponentiation, with all integers ranging from zero to t-1. For instance, in a group element ‘g’ having a number ‘n’, then let ‘gn’ denotes the element that is obtained as a product of ‘g’ by itself for ‘n’ times. Discrete logarithmic problem is therefore expressed as: given element ‘g’ in the finite group ‘G’ and element h Î G, then finding an integer ‘x’ to give ‘gx’ = ‘h’, the solution would be 3x º 13 (mod 17) which is 4, since 34 = 81 º 13 (mod 17).
Element ‘g’ is therefore referred to as the generator; it generates all elements within the group. The discrete algorithm problems are difficult and hard in generating a one-way function. As a result, different public-key cryptosystems, including ElGamal system, are used. Discrete logarithm problems have similar relationship to these systems, and security of these systems is based on the fact that computation of discrete algorithms is quite tasking. Generally, discrete...

...A SIMPLIFIED IDEA ALGORITHM
NICK HOFFMAN
Abstract. In this paper, a simpliﬁed version of the International Data Encryption Algorithm (IDEA) is described. This simpliﬁed version, like simpliﬁed versions of DES [8] [12] and AES [6] [7] that have appeared in print, is intended to help students understand the algorithm by providing a version that permits examples to be worked by hand. IDEA is useful teaching tool to help students bridge the gap between DES and AES.
1. Introduction The International Data Encryption Algorithm (IDEA) is a symmetric-key, block cipher. It was published in 1991 by Lai, Massey, and Murphy [3]. IDEA is a modiﬁcation of the Proposed Encryption Standard (PES) that was published in 1990 by Lai and Massy [1]; PES was designed as a replacement for the Data Encryption Standard (DES). The algorithm was modiﬁed and published in 1991 after Biham and Shamir described the technique of diﬀerential cryptanalysis. The new algorithm was called the Improved Proposed Encryption Standard (IPES); its name changed to IDEA in 1992. IDEA is a candidate block cipher to the NESSIE Project. NESSIE is a project within the Information Societies Technology (IST) Program of the European Commission [3]. In the Second Edition (1996) of Applied Cryptography Bruce Schneier [9] describes IDEA as “... the best and most secure block algorithm available to the public at this time;”...

...In computer science, the analysis of algorithms is the determination of the amount of resources (such as time and storage) necessary to execute them. Most algorithms are designed to work with inputs of arbitrary length. Usually, the efficiency or running time of an algorithm is stated as a function relating the input length to the number of steps (time complexity) or storage locations (space complexity).
Algorithm analysis is an important part of a broader computational complexity theory, which provides theoretical estimates for the resources needed by any algorithm which solves a given computational problem. These estimates provide an insight into reasonable directions of search for efficient algorithms.
In theoretical analysis of algorithms it is common to estimate their complexity in the asymptotic sense, i.e., to estimate the complexity function for arbitrarily large input. Big O notation, Big-omega notation and Big-theta notation are used to this end. For instance, binary search is said to run in a number of steps proportional to the logarithm of the length of the list being searched, or in O(log(n)), colloquially "in logarithmic time". Usually asymptotic estimates are used because different implementations of the same algorithm may differ in efficiency. However the efficiencies of any two "reasonable" implementations of a given algorithm...