The goal of this lab is that the student gets familiarized with the concept of entropy and its relationship with the concepts of randomness, compression, and encryption.
LB 1.1.1. Solutions to Lab 1 part I: Entropy (PDF).
The goal of this lab is that the student (1) gets familiarized with the effects of using different plaintext and ciphertext alphabets, (2) observes the result of using different classical ciphers, and (3) applies basic cryptanalysis techniques to decrypt a ciphertex encrypted with a classical cipher.
The goal of this lab is that the student practices with some of the cryptographic algorithms and schemes studied in the course. The lab makes use of a well-known cryptographic library, the Bouncy Castle, in its Java version. The lab addresses symmetric and asymmetric ciphers, and hash functions.
LB 2.2. Java code for Lab 2: Symmetric and asymmetric crytography (RAR).
LB 2.2.1. Solutions to Lab 2: Symmetric and asymmetric crytography (PDF).
The goal of this lab is that the student gets familiarized with the concepts of digital signatures, public key certificates and Public Key Infrastructures (PKI) in a practical way. The student is asked to simulate the creation and operation of a very simple PKI using the OpenSSL library. At the end, the student will obtain an end-user public key certificate that has to be used to sign a document. Additionally, the student is asked to investigate about the services offered by the Fábrica Nacional de Moneda y Timbre (FNMT, -- a national PKI --) and letsencrypt, as well as how server certificates are viewed from client browsers.