TEACHING YOU HOW TO SECURE YOUR SOFTWARE

Cryptography is the study of techniques for secure software and communication against attackers. Attackers means third parties who which to steal hidden or private messages for their won gain. With so much being digital in modern society, cryptography is applied to protect credit cards, digital currencies, military communications, passwords, and electronic commerce. Through cryptography, the idea of encrypting data was formed which is a cornerstone in protecting data. Encryption dates all the way beck to rotor cipher machines in World War 1 and has become increasingly more complex. Some modern-day cryptography methods include symmetric-key cryptography and public-key cryptography.

**Symmetric-key Cryptography**

Methods where the sender and receiver share a single key used for encryption and decryption known as symmetric-key cryptography. One type of symmetric-key cryptograph method is known as cryptographic has functions. Given a message of any length they output a digital signature known as a hash. Good hash functions are those where no two message has the same hash. The reason why hash functions are so useful is because of the difficulty to decipher how the hash is created. The main issue is that sometimes a hash function can have two different messages create the same hash.

**Public-Key Cryptography**

For these types of functions, instead of the same key being used for encryption and decryption, two different keys are used. The advantage of this type of key over symmetric-key ciphers is the fact that two different keys are used. When one key is used, the difficulty is the key management necessary to make sure it is secure. When two parties do not share a secure channel, establishing a secret key between them is difficult. What public key ciphers do is create both a public key and a private key. Both are related but discovering one key from another is infeasible. This allows for the public key to be freely distributed while the private key is kept secure.