Computer Algebra for Cryptography (B-KUL-H0E74A)

3 ECTSEnglish38 Second termCannot be taken as part of an examination contract
POC Wiskundige ingenieurstechnieken

Computer algebra is the area of computer science that develops tools and algorithms for symbolic and therefore exact computations which are fundamental for cryptography and coding theory. The approach and algorithms are totally different from numerical analysis that provides algorithms for approximate solutions. The goal of this course is to give a thorough introduction to computer algebra algorithms and their complexity, motivated by applications in engineering with an emphasis on applications in cryptography. At the end of the course the student should be able to:

  • Understand and explain how theorems from algebra can be used in the design of algorithms and how their complexity is influenced by the theory.
  • Perform an asymptotic complexity analysis and understand the difference with practical efficiency and the need for crossovers between multiple algorithms.
  • Design and implement computer algebra algorithms in Magma to solve real life problems in engineering, more particular cryptography, and evaluate their efficiency. 

  • Consult and comprehend recent scientific literature in computer algebra and assess the results described. 


Basic knowledge of algebra (e.g. H01G5A) including finite fields, polynomial rings and ideals.

This course is identical to the following courses:
H0E78A : Computeralgebra voor cryptografie

Activities

2 ects. Computer Algebra for Cryptography: Lecture (B-KUL-H0E74a)

2 ECTSEnglishFormat: Lecture18 Second term
POC Wiskundige ingenieurstechnieken

  • Introduction and overview of the course. Fundamental algorithms, complexity notation, addition and multiplication of numbers and polynomials, GCD, Chinese Remainder Theorem.

  • Fast multiplication and division: evaluation/interpolation approach, Karatsuba, Toom- Cook, DFT & FFT, Schönhage & Strassen, quotient & remainder via Newton iteration. Applications: Shamir secret sharing, ring-LWE cryptosystem.
  • Euclid’s algorithm and resultants: XGCD algorithm, modular arithmetic, resultant, modular GCD algorithm.
Applications: rational approximation, continued fractions, intersections of curves, implicitization of parametric curves.
  • Primality testing and factorisation algorithms: Fermat’s test, Carmichael numbers, Miller- Rabin, Pollard Rho, difference of squares, group based methods (p-1 method, elliptic curve method), introduction to quadratic sieve and number field sieve.
Applications: RSA and Paillier cryptosystems.
  • Short vectors in lattices: lattices, lattice minima, Minkowski’s theorems, Gaussian heuristic, lattice reductions algorithms (LLL, BKZ), ideal lattices.
Applications: short dependence relations, breaking knapsack cryptosystems, NTRU, small roots of modular polynomials, Coppersmith’s algorithm, security of RSA with small exponent.
  • Polynomials: fast evaluation & interpolation, factorisation (square-free, distinct degree, equal degree), Berlekamp’s algorithm, Hensel lifting and factorisation of polynomials over Z.
Applications: solving approximate GCD problem, error correcting codes.
  • Gröbner bases: polynomial ideals, monomial orders, division with remainder, Hilbert’s basis theorem, Gröbner bases and S-polynomials, Buchberger’s algorithm, degree of regularity.
Applications: solving systems of non-linear equations, algebraic attacks on multivariate cryptography, robotics (inverse kinematics problem).

  • A full set of course notes written in English will be provided. 

  • Main additional reference: Modern Computer Algebra (3rd edition) by von zur Gathen and 
Gerhard. 

  • Applications reference: Algorithmic Cryptanalysis by Antoine Joux.

Goal of lectures: formulate computational problem motivated by application example, provide possible solution strategies, recall or introduce necessary theory from algebra (without proof), deduce algorithms and compute their complexity. Discuss efficiency in practice and possible further improvements, provide an overview of the state of the art and indicate differences with the algorithms described in lectures. 
Focus is on how (mostly) simple theorems from algebra lead to efficient algorithms, their complexity, practical performance and applications.

1 ects. Computer Algebra for Cryptography: Exercises and Laboratory Sessions (B-KUL-H0E75a)

1 ECTSEnglishFormat: Practical20 Second term
POC Wiskundige ingenieurstechnieken

There will be 8 supervised exercise sessions of 2.5 hours each using the computer algebra system Magma. The goal is to familiarize the students with real implementations of the algorithms described in the lectures and to assess their efficiency on practical problems. 
Each student (individually) will have to solve two medium-sized projects (4 exercise sessions per project). These projects will be based on open research questions where (partial) solutions can be devised using the algorithms described in the lectures. The student will need to consult existing literature (references will be provided), devise his/her own solution, implement it in the Magma language and hand in a written report on the solution strategies and implementation results.

An introduction to the Magma language will be provided and the full Magma manual can be accessed online.

Problem sheets and pointers to the literature will be provided beforehand so the students can familiarize themselves with the projects.

The first 0.5 hours will consist of a quick overview of the Magma implementations of the algorithms described in the previous lectures. The remaining time the student has the opportunity to work on solving the two projects (4 sessions per project) and ask questions/feedback from the supervisor.

Evaluation

Evaluation: Computer Algebra for Cryptography (B-KUL-H2E74a)

Type : Partial or continuous assessment with (final) exam during the examination period
Description of evaluation : Oral, Paper/Project
Type of questions : Open questions
Learning material : Course material, Reference work


The evaluation is based on two projects, where both Magma code and a short project report are required detailing the approach and the results obtained. The deadline for the first project is set at the start of the 5th exercise session and the deadline for the second project is at the end of the course.

There will an oral exam where the student is asked to explain his/her work, to test the student’s insights and to provide feedback. Each project accounts for 35% of the final mark (quality and efficiency of the code provided and an evaluation of the written report), and the oral exam for the remaining 30%.

The evaluation consists of continuous assessment on the basis of the two projects described above. If the student fails during the 1st exam opportunity, he/she will have to solve a third project and explain it during a new oral exam.