# Discrete logarithm problem and Diffie-Hellman key exchange

In the previous post we learned what are ciphers and how can two parties establish a secure communication when they both hold the same secret key, for instance using a stream cipher. In this post we will see how they can agree on a common key through an insecure channel. You can find all my code for this post here.

I hope that in the previous post I convinced you that stream ciphers are good practical ciphers (used in real cryptographic applications like mobile phone communications). For the stream cipher to be secure we require that Alice and Bob agree on a cryptographically secure pseudo-random generator algorithm (CPRG) and a private key that act as a seed for the CPRG. Stream ciphers are just one class of ciphers from a broader family called symmetric ciphers (check chapters 3 to 6 from the book of Katz and Lindell where they explain private key cryptography or symmetric cryptography) whose common characteristic is that the two communicating parties Alice and Bob hold the same private key that is used for both encryption and decryption of the message. …

# An introduction to secure communication

In this post we will see the most basic example for encrypting your messages, then we will show that this by no means is secure and finally we will introduce what it means to have a perfect secrecy scheme and why is not practical. Then, we’ll get to see what are stream ciphers for symmetric encryption. Python code for this post can be found here.

One of the main objectives of cryptography is to enable secure communication between a sender and a receiver. This means that if someone is intercepting (eavesdropping) the ciphertexts (encrypted messages) sent between parties A and B he is not able to get any information. …

# Prime Numbers

Prime numbers are the building blocks of arithmetics. In this short post we will investigate some attributes of prime numbers and how to work with them in a computer. All the algorithms here can be found in a python notebook.

One of the main applications of prime numbers is in some algorithms related to cryptography (e.g. RSA) and therefore it is related to techniques developed for privacy preserving machine learning. In a previous post we have defined groups and fields using prime numbers and our main aim in this post is to show how to calculate prime numbers and check whether a certain number is prime or not. …

# Number theory for Cryptography and Privacy Preserving Machine Learning

This is a first post in which I intend to explain the basic ingredients needed to understand the cryptography for privacy preserving machine learning topics. Here I will cover number theory, for python code check this notebook.

Privacy preserving machine learning (PPML) is a relatively new field of study that aims to protect data privacy as well as intellectual property in the field of machine learning. …