Off-the-record communication
Both Ram's and Ilmari's protocols allow forgery.

(The "other party" is either Charlie or Alice, depending on

whether Ram's or Ilmari's protocol is being attacked.)

Mallory receives either "Alice" or $m_{real}$, and sends to Bob either "Alice" or $m_{fake}$, respectively.

Mallory receives from Bob either an RSA public key or

a hash, and sends the same thing to the other party.

Mallory receives a random string the other party, and

sends $\:$ that_string $\oplus \hspace{.02 in}H(m_{fake}) \oplus H(m_{real}) \;$ to Bob.

Mallory forwards the next two messages (without changing them).

(Incidentally, I came up with that attack when I was formalizing the content-deniability proof.)