
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

Start with an affine equation and compute points at infinity

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,p1, for(y=0,p1, 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,p1, for(y=0,p1, 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,p1,
for(y=0,p1,
if(ellisoncurve(e,[x,y]), group=concat(group,[[x,y]]))
)
);
return(group);
}
After loading this, you just need
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

About this course
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:3011:20,
Wednesdays 1:001:50,
and by appointment.

ASU Student Code of Conduct, especially F1 and G.

ASU policy on rescheduling final exams: ACD 30401

ASU policy on missed classes.

Isogeny gallery

