In the following will denote a prime greater than , and the field of integers modulo . We will be talking about “addition”, as previously studied, on a cubic curve given in Weierstrass form, i.e., , with coefficients in , and points of will be pairs of elements in . A reference for this material is the book A Course in Number Theory and Cryptography by Neal Koblitz, published in 1987 by Springer. Some information may also be found online; for example, one might look at Wikipedia.
As before, characters may be represented by numbers; in particular, characters and standard symbols in U.S. English may be represented by their ASCII codes, which are integers from to . The question here is how to represent a number in this range by a point of . In the first place must be large enough that contains at least points. Since for a point of the second coordinate is the root of a quadratic polynomial in the first coordinate , letting be and then solving for will not lead to a root in unless the discriminant of the corresponding quadratic equation is the square of an element of . Precisely half of the non-zero elements of are squares, so the discriminant will be a square roughly half the time. Because of that cannot simply be but rather something determined by that offers a range of possible values of .
One chooses an integer so that is an acceptably small probability of failure to find a for given . The idea then is, for a given number , to try as many as different values of until there is found a with on . The values of one tries are The event that one does not find a after trying all of these values has probability . If a is found, then the point becomes the point of the curve representing the number . There is no secrecy in this. The original number may be recovered from as the largest integer strictly smaller than or It is necessary that if this method is to be viable for representing integers by a point on a given curve over .
Here the question is encoding for secrecy the points on a curve. As with the earlier foray into cryptography the method discussed here - which is named El Gamal - involves public knowledge of how to encrypt with only secret knowledge of how to decrypt. One wants a curve having a base point of large order relative to the arithmetic on . For example, if the number of all points of happens to be prime, which is far from always true, then there will be a point of having order . As suggested above, for any the number of its points is usually somewhere around since there are two points on for each of the roughly values of for which there is a except for the case when leads to a quadratic equation for having discriminant . In this scheme a single point on will be encrypted by a pair where both and are points of .
The designer of the scheme picks the prime , the curve , a “base point” on of large order, all of which are to be public, and a secret element of . With those items fixed, the designer publishes one more point on that is determined by the formula . For given and , the scheme's “public key” is the pair of points and on .
A user of this scheme may encode a point of as follows: (i) draw a non-zero random value mod and then (ii) produce the pair of points using the formulae: Anyone who knows the secret value as well as the published data may recover the original point from the pair using the simple formula Security for this system relies on it being difficult to ascertain even though and are both known.
Directions: Use Maple for assistance in responding to the following problems. Please typeset your solutions. Explain what you have done. Maple session details are not necessary unless you think it important to include them. Accuracy is important.
Although you may refer to books and notes, you may not seek help from others on this written assignment.
Let be the curve over .
Find the number of points on .
Find a point on of largest order in the arithmetic of points on over .
Let , as above, be the curve over . Find in such that , i.e., relative to the arithmetic of points
Let , as above, be the curve over . Assume that the sequence of ASCII codes (range to ) for a text string is to be converted to a sequence of points on as described in 1.1 above with conversion failure probability where . What text string is represented by the following sequence of points?
Now switch to the curve over the field , which may be seen to have points. Numbers from to are to be represented as points on this curve with conversion failure probability .
As described in 1.2 above an encryption scheme owner has published and . Represent the string "ABC" as a sequence of points on this curve and compute an encryption of it for delivery to this owner.
You own an encryption scheme for this same curve with secret key . You receive from someone else the following sequence of pairs of points on this curve:
What character string lies behind it?