# John Jones - MAT 448

 Course Links Course Main course page Homework Homework assignments Algebra for Cryptologists Notes for beginning of course Syllabus Course syllabus

 Outside Links ASU Main ASU site School of Mathematical and Statistical Sciences The School of Mathematical and Statistical Sciences main site

## MAT 448

• 3/10 Results for test 1 are available above. It is out of 100 points (there were extra credit points available). The high score was 108, and the median was 78.
• 3/8 Here are solutions to Test 1.
• 2/21 Test 1 is coming up. It covers from the beginning of the course through the homework due 2/22. Knowing how to do all of the homework problems will not guarantee a perfect score, but it is a really good place to start.

Some topics to be sure you can work with are:

• Homogenizing and dehomogenizing equations
• Test if an equation is singular
• For an element of a group, the notions of order and torsion
• Identify the structure of an abelian group given information about the orders of elements
• LFSRs
There may also be some proofs using the material described above, but the emphasis will be on computation.
• 2/11 Office hours are cancelled for February 14 while I am covering a class for another faculty member.
• 2/11 Here is the code we will use in class to produce a list of points on the elliptic curve $y^2=x^3+Ax+B$ over $\mathbb{F}_p$. It is the least efficient/most brute force way to find the points. For it to work, you need to substitute particular values for $A$, $B$, and $p$, so that is included at the beginning.
p=19
A=2
B=3
group=[[0]]
for(x=0,p-1, for(y=0,p-1, if((y^2-(x^3+A*x+B)) % p == 0, group=concat(group,[[x,y]]))))
group

You can do the same thing, a little more simply with the following. The difference is that this time we initialize the elliptic curve and let gp test if each point is on the curve.
p=19
A=2
B=3
e = ellinit([A,B], p)
group=[[0]]
for(x=0,p-1, for(y=0,p-1, if(ellisoncurve(e,[x,y]), group=concat(group,[[x,y]]))))
group

One step further is to make our own function to search for points:
searche(e)=
{
if(e==[], return([])); /* It wasn't an elliptic curve */
my(group=[[0]],p=component(e.disc,1)); /* Figures out p from the curve */
for(x=0,p-1,
for(y=0,p-1,
if(ellisoncurve(e,[x,y]), group=concat(group,[[x,y]]))
)
);
return(group);
}

searche(ellinit([2,3],19))

To get a list of orders of the points,
e = ellinit([2,3],19)
group = searche(e)
print(group)
vector(#group,h,ellorder(e,group[h]))

To tally up how many elements of each order:
tally(list) = my(v=vector(#list));for(j=1,#list, v[list[j]]++); return(v)

e = ellinit([2,3],19)
group = searche(e)
print("Group: ", group)
orders=vector(#group,h,ellorder(e,group[h]))
print("Orders: ", orders)
tally(orders)


• 2/11 The pari group has an online gp calculator for people to use. In testing, it worked better than the sage cell server.
• 1/17 Here is a html version of the course notes. The content is the same, but the numbering of things (propositions, exercises, etc.) is different, a byproduct of the conversion process.
• 12/29 Office hours are cancelled for January 10 and 11 while I am at a conference.
• 12/7 In class, we will use Pari/gp for computations. It is free software, is good generally for number theory, and has many commands for working with elliptic curves.
• The beginning of the course will be based on these notes Algebra for Cryptologists
This is a course in elliptic curves in cryptography. The start of the course introduces some concepts from abstract algebra (groups, rings, and fields). We then define elliptic curves and look at some of their basic properties. Finally, we consider how they are used in a variety of cryptographic situations.
• Exams:
• Test 1: March 1
• Test 2: April 17
• Final: May 1
• Office hours: Tuesdays and Thursdays 10:30-11:20, Wednesdays 1:00-1:50, and by appointment.
• ASU Student Code of Conduct, especially F1 and G.
• ASU policy on rescheduling final exams: ACD 304-01
• ASU policy on missed classes.
• Isogeny gallery
Last Update: March 10, 2018