# Encrypting content with assymetric key pairs as a form of signing

The use-case is as follows:

There is a signer, call it $$S_A$$ that have a claim or document $$D_j$$. $$S_A$$ wants any client $$C_k, \forall k$$ to be able to verify that it has not been tampered with.

I suppose one way to do this is to use assymetric encryption where $$S_A$$ encrypts $$D_j$$ as: $$E_j = encrypt(D_j, K_{priv})$$ using the private key $$K_{priv}$$.

Then any client who get access to $$K_{pub}$$ can decrypt $$E_j$$ as $$D_j = decrypt(E_j, K_{pub})$$ to be sure that noone have tampered with the claim.

$$S_A$$ does not want to be forced to encrypt the claim for every client that connects using $$C_k$$'s public key. It would be sufficient to just send a pre-encrypted claim to any client who desires to watch it, together with the public key $$K_{pub}$$. Then the clients who desires to verify the claim $$D_j$$ can do so.

$$K_{priv}$$ and $$K_{pub}$$ are only used for signing claims and not to encrypt communication.

My question is: Is this a valid solution for this use case? If not, what is the proper way to handle this?

• Please do not cross-post the same question on multiple sites! Commented Jul 10, 2022 at 8:00

In a digital signature scheme you have three algorithms $$(KeyGen, Sign, Verify)$$. $$KeyGen$$ gives you a verification key $$vk$$ and a signing key $$sk$$. $$Sign(sk, D_j) \to s_j$$ gives you a signature $$s_j$$. $$Verify(vk, s_j, D_j)$$ takes the verification key $$vk$$, signature $$s$$ and checks whether the signature is correctly signed. Typically $$vk$$ is public and $$sk$$ is kept private. In your case, your $$Encrypt$$ should be replaced with $$Sign$$ and $$Decrypt$$ should be replaced with $$Verify$$.
• You mean I should instead use $E_j = encrypt(D_j, K_{priv})$? Commented Jul 9, 2022 at 21:20