I'm making a new mail protocol (probably already exists, but I've learnt a lot of things about security and privacy on the way).
Here's the summary(much simpler if you know bitcoin's inner workings):
- Every user has a list of public and private keys.
- Every mail is in a file that every node has a copy of.
- users can send messages using the following protocol:
- message =
encrypt("Your message here", receiver.publicKey);
- signature =
sign(message, sender.privateKey);
- proofOfWork =
hashcashAlg(message);
see: hashcash
- message =
- When sending a new mail, you send your public key, receiver's public key, message, signature and proofOfWork to all nodes known to you. Every node then sends that mail on to all nodes they know.
Now I've got this problem: public keys (currently RSA) are extremely long. When you would want to send a mail to someone, you would need to know their public key.
Are there any asymmetric encryption algorithms that use smaller public keys? Or some way I can put the long RSA key through a RIPEMD160 and it still being usable?