*Following what we started at the previous lecture about the main guidelines of cryptography, We are about discuss all about Hashing and Authentication Techniques and Algorithms.*

##### Let’s start….

**Hashing Algorithms**

*As mentioned before Hashing is a function to achieve Data Integrity which can be defined as how to insure that data is not tampered or altered while transmission.*

*The main idea of Hashing is a process that takes a block of data and run the a defined algorithm to create a small fixed-sized hash value, then attach that value to the block of data and transmit it.*

*Which meaning if we have a two different computers (Transmitter & Receiver) take the same data and run the same hash function, they should get the same fixed-sized hash value.*

*Using a hash to verify integrity is the sender running a hash algorithm on each packet and attaching that hash to the packet. The receiver runs the same hash against the packet and compares his results against the results the sender had (which were attached to the packet, as well). If the hash generated matches the hash that was sent, we know that*

the entire packet is intact. If a single bit of the hashed portion of the packet is modified, the hash calculated by the receiver will not match, and the receiver will know that the packet had a problem, specifically with the integrity of the packet.

the entire packet is intact. If a single bit of the hashed portion of the packet is modified, the hash calculated by the receiver will not match, and the receiver will know that the packet had a problem, specifically with the integrity of the packet.

##### The three most popular types of hashes are as follows:

*■ Message digest 5 (MD5): This creates a 128-bit digest.*

■ Secure Hash Algorithm 1 (SHA-1): This creates a 160-bit digest.

■ Secure Hash Algorithm 1 (SHA-1): This creates a 160-bit digest.

■ Secure Hash Algorithm 2 (SHA-2): Options include a digest between 224 bits and 512 bits.

##### **Hashed Message Authentication Code (HMAC)**

*Hashed Message Authentication Code (HMAC) uses the mechanism of hashing, Instead of using a hash that anyone can calculate, it includes in its calculation a secret key of some type. Then only the other party who also knows the secret key and can calculate the resulting hash can correctly verify the hash. When this mechanism is used, an attacker who is eavesdropping and intercepting packets cannot inject or remove data from those packets without being noticed because he cannot recalculate the correct hash for the modified packet because he does not have the key or keys used for the calculation.*

**Authentication Algorithms**

*It is about how to** confirm the identity of the host sending data, using pre-shared keys or RSA Digital signatures to can authenticate the peer at the other end of the VPN tunnel.*

*■ **Pre-shared key*

*Pre-shared key is an agreed character string in advance between both parties as the authentication key of the session; A pre-shared key is an example of symmetric cryptography as the key is a same on both sides.*

*The 0 before the Pre-Shared key specifies that the key is not encrypted.
*

*■ RSA Digital Signatures*

*As a matter of fact, signature scheme consists of three related operations as below:*

• Key pair generation produces a public/private key pair.

• Signature operation produces a signature for a message with a private key.

• Verification operation checks a signature with a public key.

• Key pair generation produces a public/private key pair.

• Signature operation produces a signature for a message with a private key.

• Verification operation checks a signature with a public key.

** Key Management**

*As cleared on our long discussion about world of cryptography, The key is the one of the most important player here, as We have symmetric keys that can be used with symmetric algorithms such as hashing and encryption. We have asymmetric keys such as public-private key pairs that can be used with asymmetric algorithms such as digital signatures, among other things.
*

A key pair is a set of two keys that work in combination with each other as a team. In a typical key pair, you have one public key and one private key. The public key may be shared with everyone, and the private key is not shared with anyone.

*For example, If we use the public key to encrypt data using an asymmetric encryption algorithm, the corresponding private key is used to decrypt the data.*

** Diffie-Hellman (DH) **

Diffie-Hellman key exchange is a cryptographic protocol for securely exchanging encryption keys over an insecure communications channel, it can be used to dynamically generate symmetrical keys to be used by symmetrical algorithms.

Diffie-Hellman key exchange is a cryptographic protocol for securely exchanging encryption keys over an insecure communications channel, it can be used to dynamically generate symmetrical keys to be used by symmetrical algorithms.

*Diffie-Hellman Groups are used to determine the strength of the key used in the Diffie-Hellman key exchange process; Higher Diffie-Hellman Group numbers are more secure, but Higher Diffie-Hellman Groups require additional processing resources to compute the key. at below an examples from DH groups.*

*Group 1 – 768 bits*

*Group 2 – 1024 bits*

*Group 5 – 1536 bits*

*Group 14 – 2048 bits*

*Group 16 – 4096 bits*

By: Hatem Farag | CCIE#54446