Secure Application Development

Cryptographic algorithms

Learning objectives

  • understand the security guarantees offered by the different types of cryptographic algorithms;
  • understand the APIs offered by libraries in popular programming languages that give access to these algorithms;

Overview

Cryptography is the scientific study of mathematical techniques relating to information security. In the field of cryptography, a wide variety of types of algorithms is studied. The most important types of algorithms include symmetric encryption, asymmetric encryption, hash functions, Message Authentication Codes (MAC's), digital signatures and secure random number generation. We discuss each of these types of algorithms, by defining in a precise way what security guarantees they offer, and by giving examples of applications. The emphasis is on the "black-box" behaviour of the algorithms, not on how they are implemented, or on the mathematical principles they are based on.

A fair amount of attention is given to software libraries that implement cryptographic algorithms. Modern cryptographic libraries are often based on a pluggable provider model, supporting so-called Cryptographic Service Providers (CSP's). We discuss the rationale behind this design, and the implications it has on developing software that uses CSP-based libraries.

PDF slides