I know that normally it's the public key to be shared and the private key to be kept secret (hence the names) in asymmetric encryption.

I have a special case that I want to encrypt some files and let users decrypt them. Symmetric encryption cannot be used according to the design. Digital signature cannot be used because the files have to be encrypted.

To my understanding, in asymmetric encryption, the public key, though named "key", is actually the lock, while the private key, is the key. People use the public key to lock (encrypt) information, and the key owner uses the private key to unlock (decrypt) the information.

In that case, if I keep the public key secret and share the private key, it should be viable for me to encrypt with the public key and for users to decrypt with the private key, right?

If the answer to the last question is yes, is there any existing asymmetric encryption algorithm that I can use to do so, effectively? To my understanding, in RSA, the private key consists of modulus and public exponent. The modulus is also a part of the private key. It means that the only secret I can keep in the public key is the public exponent. However, the public exponent is only 1 byte long. It can be easily cracked by brute force attack.

EDIT: Only authorized users will receive the private key.

EDIT: I know the normal use of asymmetric encryption. I'm just being creative and trying to solve a problem with existing technologies. I may be wrong about some terms and knowledge. If it cannot be done, it just means that the answer to the question is "no".

migrated from stackoverflow.com Aug 7 '15 at 13:26

This question came from our site for professional and enthusiast programmers.

up vote -1 down vote accepted

Restating your problem (as I understand it) but using less confusing terms, you want to administer an asymmetrical key pair such that you are the only person holding the encryption key and many people are holding the decryption key. Your concern is that with RSA, the encryption key can easily be produced by anyone who has the decryption key. This concern would normally not be important because the sole possessor of the decryption key generated the key pair and therefore held both keys to begin with. But here where you distribute the decryption key to many people, any of them could reproduce the encryption key.

This is all correct is the most common implementation of RSA. There, the exponent on the encryption key is very often 65537. So it is not limited to a singly byte, but it is almost always very small and very predictable -- it yields no security in this form and is the only information about the encryption key that the holder of the decryption key doesn't already have.

So yes, I can see your concern. I think you could simply use a much larger exponent for your encryption key, one that would take ages to find by guesswork. You slow the encryption down by going with a larger exponent, but if you are just using it to keep the encryption key from being guessed by friends, you could probably use RSA and find a good balance between security and efficiency in a non-standard encryption key exponent near but not equal to 65537.

If you really need the encryption key not to be revealed, then I think elliptic curve encryption will do this, or will at least do a much better job of it than RSA. But elliptic curve is also a lot harder to understand than RSA is, so you have a lot of learning ahead of you if you go that route.

  • Thanks for your answer. I'll have a look at elliptic curve encryption. – dtbb Aug 6 '15 at 4:39
  • Your answer doesn't answer all my questions. But you are the only person here who is serious enough to actually read and fully understand what I want, and creative enough to follow my attempt which is creative, and providing helpful information, I'm accepting your answer. You are a problem-solver. Thanks. – dtbb Aug 7 '15 at 0:44
  • @dtbb Seems actually pretty simple when written in those terms. Use symmetric key for defending against Eve and then sign the payload to protect against Mallory. No asymmetric key encryption required. – Aron Aug 7 '15 at 2:12

In principle you could do something similar. But your naming convention is completely confusing. The private key is so called because it MUST BE KEPT PRIVATE. Whilst the public key is so called because it is given out freely to everyone.

What you are asking is "is there a public key encryption scheme where the private key is used for encryption, and the public key is used for decryption". The answer is NO. That would defeat the point of the public key being public. If the public key is expected to be given out freely, then any data "encrypted" with the private key would be readable by anyone, which is a contradiction to the term encryption.

The only thing you gain from such a scheme is verification of the message, as it could only have originated from someone who holds the private key.

What you CAN do is something called Digitally Signing. This is where you use the private key to encrypt some meta-data about your message. This encrypted meta-data is called a Signature.

Anyone with the public key can decrypt the the meta-data and compare it to the original message. Should it match, you would know that the message originated from the holder of the private key AND the message has not changed since he sent it.

  • I know the normal use of public-key encryption. I'm trying to use existing technologies creatively to solve a problem. I'm not asking about encrypting with private key and decrypting with public key. Also as I stated, digital signature cannot be used since the data must be encrypted. Only users receiving the key can read them. – dtbb Aug 6 '15 at 3:24
  • 1
    @dtbb You aren't making any sense at all. You do realize that the public key can be generated from the private key right? Your "encryption scheme" reduces to symmetric key as both parties end up with both keys. – Aron Aug 6 '15 at 3:46
  • No, I don't know public key can be generated from the private key. That's why I'm asking if it's viable. Thanks for pointing that out. – dtbb Aug 6 '15 at 4:04

No. You should generate a new key pair, distribute the public key securely. You need the secure distribution to establish trust that the public key is from the right party. You can then encrypt with the public key of the receiver.

Well, if I understand correctly, what you described is identical to standard public key encryption.

You are essentially providing trusted users with a private key (unique or replicated) and encrypting a message with the corresponding public key.

However, if that doesn't answer your question, please provide more information about the system. I.e. Can you distribute key to the users securely, do you trust users. A more specific example will help

  • I don't think this is standard public key encryption. Standard public key encryption shares public keys and hide private keys. I want to share the private key. You are right that the key is only provided to trusted users. – dtbb Aug 6 '15 at 3:28
  • If you issue each user a hidden private key, it would be equivalent. The sender would only have to keep track of each user-key pair. – anubhavashok Aug 6 '15 at 3:35
  • Then will it be doable? Can I issue all trusted users the private key, and encrypt the data with the hidden public key? – dtbb Aug 6 '15 at 3:39
  • You can issue each user a separate private key, so there will be no cross interception of messages or security breach if one user's key is compromised – anubhavashok Aug 6 '15 at 3:40
  • And then you can distribute the corresponding public key to every other user without any compromise in security. – anubhavashok Aug 6 '15 at 3:40

You should rewrite the question using the correct terms of reference. Public is public and private is private.

It looks like you want to enable secure (secret) transmission of data without pre-sharing a key. That's impossible.

You can encrypt with a public key so only the private key holder can decrypt. You can sign with your private key and encrypt with someone elses public key so that they know its you that you are the sender, or to share a secret symmetric key for further use.

To secure a message you have 2 options - pre-share a symmetric key, or use public key crypto to share a secret key over insecure lines.

Without a shared secret - no secure (secret) transfer can occur.

Your Answer

 

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.