Estoy creando un nuevo protocolo de correo (probablemente ya exista, pero he aprendido muchas cosas sobre seguridad y privacidad en el camino).
Aquí está el resumen (mucho más sencillo si conoce el funcionamiento interno de Bitcoin):
- Cada usuario tiene una lista de claves públicas y privadas.
- Cada correo está en un archivo del que cada nodo tiene una copia.
- los usuarios pueden enviar mensajes usando el siguiente protocolo:
- mensaje =
encrypt("Your message here", receiver.publicKey);
- firma =
sign(message, sender.privateKey);
- proofOfWork =
hashcashAlg(message);
vea: hashcash
- mensaje =
- Al enviar un correo nuevo, envía su clave pública, la clave pública del receptor, el mensaje, la firma y proofOfWork a todos los nodos que conozca. Cada nodo envía ese correo a todos los nodos que conocen.
Ahora tengo este problema: las claves públicas (actualmente RSA) son extremadamente largas. Cuando desee enviar un correo a alguien, deberá conocer su clave pública.
¿Hay algún algoritmo de cifrado asimétrico que use claves públicas más pequeñas? ¿O de alguna manera puedo poner la clave RSA larga a través de un RIPEMD160 y aún se puede usar?