Introduction
As you move forward in Cryptography subject, you often observe the primary goal of cryptography is to secure the conversation between a sender and receiver. In this blog as well, we are going to discuss an amazing concept through which we can secure the delivery of the message.
Before we move forward to the topic, let us discuss an example.
Suppose there are two persons A and B. A has committed that he will give 3000 Rs to B on 3rd of December.
Now, B has waited till 3rd of December but didn’t got his money.
Since B is worried about his money, he planned to visit A to ask for his money.
But all of a sudden A has denied to give the money and said he never told to give the money.
Now B has started arguing with A about the conversation they had with each other.
Since there is no proof that A has sent the message to B, as there can be a possibility of account hacking. Now, B has no proof to prove A wrong and take the money.
Here comes the role of Signature. Likewise we sign the cheque in bank to authenticate ourselves, same as we can do it while sending the message. In the era of Digital world, there is a concept known as Digital Signature is highly being used to authenticate the right person.
Full-domain hash in Cryptography (FDH) gives one of the most intuitive and appealing approach for creating digital signatures; it is a secure realization of the original ideas of Diffie and Hellman.

In this section, we will discuss how we can adapt Full Domain Hash signature scheme for digital signatures. To give you a brief overview of the topic: Take the message you would like to sign, but before calling the RSA function, apply special Hash Function.
Let us start by understanding what are Digital Signature Schemes:
Digital Signature Schemes
A digital signature is a string of bits that depends on a secret known only to the signer and the content of the signed message. Signatures must be verifiable: Anyone can verify the validity of the signature.
A Signature Scheme consists of the following parts.
-
Gen: The key generation algorithm, a probabilistic algorithm which, if given 1k, will give a pair of matching Public key and Secret keys (pK,sK).
-
Sign: The signing algorithm. It takes the message M to be signed and the secret key sK and returns a signature x = Signsk(M).
-
Verify The verification algorithm. It takes a message M, a signature x’, and the Public key(pK). The verifypk(M,x’) will return 1 if the signature x’ is accepted and 0 otherwise.
Signature schemes mostly use hash functions. In the following schemes, the hash function is considered a random oracle. The outputs given by the hash function h are uniformly distributed points in the range of h.