
Explore encryption basics, including symmetric and public key encryption, digital signatures, hashing, and digital certificates, with hands-on python examples and real-world applications.
Explore the fundamentals of encryption, including symmetric, asymmetric, and hash methods, and how confidentiality, integrity, and authenticity protect data in e-commerce transactions.
Set up a practical encryption lab environment on a computer with a terminal; install Python, PyCharm, Apache, and GnuPG, and use Ubuntu server to explore encryption and PKI concepts.
Install python.org and PyCharm community edition, create a virtual environment for labs, and run a simple hello world to verify your Python setup.
Set up a Ubuntu Linux instance for labs using multipass and a cloud-init yaml config, then launch, SSH in, and begin symmetric encryption.
Symmetric encryption uses the same key to encrypt and decrypt, protecting plaintext as ciphertext. Explore the keyword and AES key lengths: 128, 192, 256 bits, block vs stream.
Explore symmetric encryption with the cryptography library's Fernet, encrypting and decrypting text and files in Python. Save and reuse keys to maintain secure, authenticated encryption that verifies data integrity.
Understand asymmetric encryption, where data is encrypted with a public key and decrypted with a private key. Share your public key openly, keeping the private key secure for confidential exchanges.
Learn public key encryption with the RSA library for Python by generating a key pair, encrypting with the public key, and decrypting with the private key, plus key length notes.
Demonstrate combining symmetric and public key encryption to securely encrypt large files, exchanging a random symmetric key via RSA, solving the key exchange problem and enabling secure transmission and decryption.
Explore hashing functions as one-way encryption to validate file integrity, and learn how signing documents with asymmetric encryption using a public key and private key enables authentication through digital signatures.
Explore cryptographic hashing functions that map variable-length input to fixed-length hash values (fingerprints) and verify integrity using sha-256 or sha-512.
Create a digital signature by encrypting the document hash with your private key to produce a detached signature, then verify with the public key to confirm authenticity.
Explore how TLS secures data in transit by combining asymmetric and symmetric encryption with digital certificates and certificate authorities to verify server authenticity and encrypt communication.
Create self-signed certificates with OpenSSL to enable TLS for internal servers, install and trust them in browsers to use HTTPS without a domain or CA.
Learn to automate creating self-signed certs with Python using the cryptography library, generate certs on the client, copy to servers, and test https quickly in a development environment.
Configure a local certificate authority with OpenSSL across two Ubuntu instances, issue and sign a web server certificate via CSR, and deploy it with Apache SSL.
Learn to revoke a certificate by using a certificate authority, generate a crl.pem revocation list, update Apache configuration to verify against the revocation list, and deny access for revoked certs.
Learn how GPG applies symmetric and public key encryption to encrypt, sign, hash, and verify data and communications, using OpenPGP standards for real-world encryption.
Master gpg on Ubuntu using the command line to create and manage Bob and Alice key pairs, export public keys, set trust, encrypt, decrypt, sign, and verify files.
This module explains how encryption is deployed in modern systems, focusing on symmetric, RSA, and SHA-256 hashing, and emphasizes securing private keys at all times.
Encryption is a very simple concept. You scramble information so that it cannot be read by other people. The math or algorithm that you use to scramble the information just needs to be good enough so that other people can’t decipher your encrypted data. What could be simpler? If all you wanted to do was hide information from everyone else…this would be pretty much it.
The application of encryption in the real world, however, is a bit more involved. It is true that you don’t need to understand the complex math behind encryption to deploy it or use it. However, you do need to understand the various types of encryption and the implications and applications of using them.
My name is Paul Mahon and welcome to my hands-on course on encryption. I’ll teach you about symmetric encryption, public key encryption, digital signatures, hashing and digital certificates with SSL/TLS
We’ll use some basic python code and other open source applications to implement what we have learned. No worries if you’re not familiar with python – it’s a few simple lines of code. However, this will be a good application of python if you are.
At the end of this course you should have a thorough understanding of encryption and the importance of things like key lengths, ciphers, hashing algorithms and certificate authorities.
This course is designed for anyone that wants to tinker around with encryption to understand how it actually works in the real world. It’s also helpful for professionals that need to know about encryption for their job or students of information security.