ElGamal, RSA, and Paillier cryptosystem have homomorphic property, and can be used fro re-encryption purposes. I want to use the encryption to re-encrypt ciphertext(as in proxy re-encryption but differently/different scenario / may be like universal re-encryption)
Requirements:
Encryption: Encryption: choose some
random number r1
with other parameters like public key, private key, mod, message:m ,C1:ciphertext etc. The key pair (private key,public key).C1=Encrypt(m,public key,r1)
.Decryption:
m=Decrypt(C1,private key)
Re-encrypt: choose random r2 (used to re-encrypt/re-randomize cipher text)
C2=Re-enc(C1,public key,r2)
Decryption:
m=Dec(c2,private key)
(may be 2 time decryption to retrieve m)
Note: I want to generate decryption key from receiver environmental variable(i,e from ip address etc), so that it can automatically decrypt when received by correct machine and the algorithm must have some random number in encryption used to re-encrypt (randomize) cipher text. I want re-encrypt cipher text without knowing the private key.
ElGamal: ElGamal meets all the above requirements exactly. (I want some other cryptosystem like ElGamal)
RSA: I try RSA but RSA haven't used random r for encryption, so re-encrypting cipher text will issue. Is there solution for RSA?
Paillier: Another public key cryptosystem, have used random r and hence can have possibility to re-encrypt cipher text but the issue is private key lambda, lambda =LCM(p-1,q-1). So it can not be environmental key(because it is dependent on p and q). How to resolve this.
Is there alternate solution? Any suggestion will be appreciated.