# Diffie-Hellmam Algorithm in C++

The Diffie-Hellman algorithm is an effective method for exchanging cryptographic keys over a public channel. It was one of the first public-key protocols. The Diffie-hellman key exchange was invented by Ralph Merkle and named for Whitfield Diffie and Martin Hellman. DH (Diffie-Hellman) is the first instance of public key exchange in the realm of cryptography. This work introduced the concept of a corresponding pair of public and private keys for the first time to the general public.

In general, secure encrypted communication between two parties necessitates exchanging keys by tangible and secure means, such as paper key lists that a reputable and secured courier delivers. By using the DH key exchange mechanism, two parties with no prior knowledge of one another can establish a shared secret through an unsecured (public) channel. This key can then be used to encrypt the communication using a symmetric-key cypher.

Diffie-Hellman key exchange creates a secret that is shared by the two parties in order to exchange data in secret communication across a public network. Several Internet-related services are developed using Diffie-Hellman. However, the research from October 2015 reveals that the Diffie-Hellman settings in use at the time were insufficient to defend against well-funded attackers like the security service agents of some countries. Although DH key agreement is a non-authentication key-agreement protocol, it serves as the foundation for many authenticated protocols and is employed to provide forward secrecy in the ephemeral modes of transport layer security.

## Diffie-Hellman Algorithm

### The algorithm's description:

Public-key cryptography is addressed by the acronym ECC (Elliptic Curve Cryptography). It is based on the elliptical curves over finite fields' algebraic structure. When compared to non-Elliptic Curve encryption, Elliptic Curve Cryptography requires a smaller key to give identical security (a 256-bit ECC security is equivalent to 3072-bit RSA encryption). Using this elliptic curve to generate points and the parameters to derive the secret key, the Diffie-Hellman algorithm is used to establish a shared secret that may be utilized for secret communication while transferring data over a public channel.

### Step-by-Step Description

Let's consider four variables for a simple and practical implementation of the algorithm: a prime number P, a primitive root of P called Q (if for a prime number n, the primitive root of n is r and it lies within range [1,n-1] such that all the values of rx(modn), where x lies within range [0,n-2] are all different, and two private values called a and b. Both P and G are publicly available numbers. Users (let's say Alen and Roy) choose two private values, b and a, and then produce a key and publicly trade it. A secret key is generated when the other person receives the key.

Alen Roy
P and G are the public keys available P and G are the public keys availab
a is the private key selected b is the private key selected
The created key: x = Ga mod P The created key: y = Gb mod P

### Keys generated are exchanged

Alen Roy
The created key: ka = ya mod P The created key: kb = xb mod P

Algebraically, it is demonstrable that:

ka = kb Users can now encrypt data with a symmetric secret key.

### Some examples:

• P = 23 and G = 9 are the respective public numbers for Alen and Roy.
• Private keys a=4 and b=3 are chosen by Alen and Roy, respectively.
• Alen and Roy determined societal values. Alen: x =(9^4 % 23) = (6561 % 23) = 6. Content: y = (9.3% of 23) = (729% of 23) = 16.
• Roy and Alen exchanged public phone numbers.
• Public keys with the values y=16 and x=6 are given to Alen and Roy.
• Symmetric keys are calculated by Alen and Roy. Alen: ka=ya%p=65536%23=9. In a Roy state, kb = xb% p = 216% 23 = 9.
• The revealed secret is 9.

### Implementation:

C++ code:

Output:

```Value of Ps is: 32
Value of Gs is: 5
Private key g is: 6
Private key h is: 2
Alen's Secret key is: 17
Roy's Secret key is: 17
Other Uses
```

### Encryption

A public key encryption system based on a Diffie-Hellman key exchange has been proposed. The original such system is ElGamal encryption. Another contemporary variation is Integrated Encryption Scheme.

### Initial Secrecy

Forward-secret protocols generate fresh key pairs for each session and destroy them at the end the session. The Diffie-Hellman key exchange is a viable option for such protocols due to its quick key generation.

When Joy and Allen share a password, they can protect themselves from man-in-the-middle attacks by using DH's password-authenticated key agreement. A straightforward method involves comparing the generated password to the hash of s (where's' is the shared secret), which has been independently concatenated on both ends of the channel. These methods have the advantage that an attacker can only test one password with the other party at a time, providing strong security even with weak passwords. The method employed by the G.hn home networking standard is detailed in ITU-T recommendation X.1035. One such protocol is the Secure Remote Password protocol.

## Conclusion

• The Diffie-Hellman algorithm is an effective method for exchanging cryptographic keys over a public channel.
• The DH key exchange technique enables two parties with no prior acquaintance to establish a shared secret across an unsecured (public) channel.
• Diffie-Hellman key exchange creates a shared secret between the two parties to exchange data in secret communication over a public channel domain.
• Several Internet services are developed using Diffie-Hellman.
• A non-authentication key-agreement mechanism called DH ensures forward secrecy in the ephemeral modes of transport layer security. It serves as the basis for many authenticated protocols.
• Public-key cryptography is addressed by the acronym ECC (Elliptic Curve Cryptography).
• It is based on the elliptical curves over finite fields' algebraic structure.
• When transmitting data over a public channel, the Diffie-Hellman algorithm is used to create a shared secret that can be used for secure communication. This elliptic curve generates points, and the parameters are utilized to obtain the secret key.
• A public key encryption system based on a Diffie-Hellman key exchange has been proposed. The original system is ElGamal encryption. Another contemporary variation is Integrated Encryption Scheme.
• Forward-secret protocols generate fresh key pairs for each session and destroy them after the session. The Diffie-Hellman key exchange is a viable option for such protocols due to its quick key generation.