El bit acerca de las claves públicas / privadas para cifrado / firma respectivamente no es un hecho general del cifrado de clave pública: es específico de RSA, donde las claves públicas y privadas tienen (al menos en el libro de texto) la misma forma. Cambie a sistemas basados en Diffie-Hellman y / o ECC y los dos tipos de clave tienen un aspecto completamente diferente, por lo que no puede cifrar con una clave privada.
La respuesta breve a su pregunta es que si Person1 tiene la clave private de Person2, entonces algo ya salió mal, y lo más probable es que nadie obtenga ninguna seguridad. Este tipo de cosas sucede todo el tiempo (creo que github tiene un mensaje de error especial para las personas que pegan una clave privada en el campo donde se espera que una clave pública SSH configure la autenticación con clave SSH).
La respuesta completa: si Person1 usa su propia clave privada, si están haciendo un RSA de libro de texto, cualquier persona con la clave pública de Person1 puede recuperar el mensaje. Y las claves públicas son, bueno, se supone que son públicas. En el mundo real, las claves RSA y otras estructuras de datos son unos pocos pasos eliminados del libro de texto, y una biblioteca de criptografía sensible no debería ofrecer la opción de cifrar con una clave privada en primer lugar. Por lo general, también tendrías subclaves separadas para el cifrado y la firma, que de nuevo se almacenarán en formatos diferentes (es una muy mala idea usar la misma clave para ambos, incluso si en teoría).
En el libro de texto RSA, tienes un módulo público N, un exponente público e y un exponente privado d. En el modo de encriptación, calculamos un texto cifrado c de un mensaje m como c = m ^ e (mod N); para descifrar se calcula m = c ^ d (mod N). Para firmar m, publica s = H (m) ^ d (mod N) y para verificar que haya una firma en m, verifique que H (m) = s ^ e (mod N). Así que las operaciones públicas y secretas son intercambiables. De hecho, no importa a quién llames e y a quién llamas d, los dos son intercambiables: x ^ e ^ d (mod N) = x ^ d ^ e (mod N) = x (mod N) para todos 0 < x < N. (Bueno, casi todo, siempre y cuando no le pegues a un factor de N. En cuyo caso, de todos modos, eres una tostada)