Имеет смысл подписывать сообщение перед шифрованием (см. раздел 2.7), но на практике никто не выполняет этого. Для RSA можно вскрыть протоколы, шифрующие сообщение до его подписания [48].
Алиса хочет послать сообщение Бобу. Сначала она шифрует его открытым ключом Боба, а затем подписывает своим закрытым ключом. Ее зашифрованное и подписанное сообщение выглядит так :
те" то&пвУА то&пА
Вот как Боб может доказать, что Алиса послала ему т', а не т. Так как Бобу известно разложение на множители ид (это его собственный модуль), он может вычислить дискретные логарифмы по основанию пв. Следовательно, ему нужно только найти х, для которого
т* = тmod пв
Тогда, если он может опубликовать хев в качестве своего нового открытого показателя степени и сохранить свой прежний модуль пв, он сможет утверждать, что Алиса послала ему сообщение т', зашифрованное этим новым показателем.
В некоторых случаях это особенно неприятное вскрытие. Заметим, что хэш-функции не решают проблему. Однако она решается при использовании для каждого пользователя фиксированного показ ателя шифрования.