ElGamal
The ElGamal Encryption Scheme is an asymmetric key encryption algorithm for public key cryptography algorithm for public key cryptography and it is based on Diffie Helman key exchange.Key generation
- Randomly choose a secret key x with 1 < x < p − 1.
- Compute y = g x mod p.
- The public key is (p, g, y).
- The secret key is x.
These steps are performed once by the signer.
These steps are performed once by the signer.
Signature generation
To sign a message m the signer performs the following steps.
- Choose a random k such that 1 < k < p − 1 and gcd(k, p − 1) = 1.
- Compute
.
- Compute
.
- If
start over again.
Then the pair (r,s) is the digital signature of m. The signer repeats these steps for every signature.
To sign a message m the signer performs the following steps.
![r \, \equiv \, g^k \pmod p](https://upload.wikimedia.org/math/9/9/8/998605102271444e000a47030ecf2c1d.png)
![s \, \equiv \, (H(m)-x r)k^{-1} \pmod{p-1}](https://upload.wikimedia.org/math/e/2/b/e2b71441122c33e81b283228fd1a73dc.png)
![s=0](https://upload.wikimedia.org/math/7/8/7/787d0b6e5d9e7525a7054c6f96c377ea.png)
Then the pair (r,s) is the digital signature of m. The signer repeats these steps for every signature.
Verification
A signature (r,s) of a message m is verified as follows.
and
.
![g^{H(m)} \equiv y^r r^s \pmod p.](https://upload.wikimedia.org/math/5/a/9/5a98ff85b43fb12eaea7bc7eaf28eb69.png)
The verifier accepts a signature if all conditions are satisfied and rejects it otherwise.
A signature (r,s) of a message m is verified as follows.
![0<r<p](https://upload.wikimedia.org/math/b/0/b/b0b890fc6654a8f3a7e65d8db0f69129.png)
![0<s<p-1](https://upload.wikimedia.org/math/4/b/e/4be510a7756bd3ff3db8b2e30b694af6.png)
![g^{H(m)} \equiv y^r r^s \pmod p.](https://upload.wikimedia.org/math/5/a/9/5a98ff85b43fb12eaea7bc7eaf28eb69.png)
The verifier accepts a signature if all conditions are satisfied and rejects it otherwise.
Batch verification approach
In modified version of ElGamal Batch verification approach, multiplication of
is computed for a batch of r and s. Then get the summation of collision-resistant hash value for every message and checks for the equality of both values of summation of hash and the multiplication of ![](https://lh3.googleusercontent.com/ASu10C8l_gLhqNIrduGkfSGJecUs-uEmTAhxMcPzKQQGdUzC6VmBLmiiu3Z2qi1_dSxil85diak_3MjC7pVhlhJqVq1LITFwS-8eh2pgxfYPQNx1TKeTXZ95JD_VtfSiC5rb6RHB)
A signature (r,s) of a message m is verified as follows.
and
.
The verification scheme accepts a signatures if all conditions are satisfied and rejects if there exists at least one forged signature.
No comments:
Post a Comment