Ответ на ваш вопрос в том виде, в каком вы его сформулировали, заключается в том, что нет никакого сопротивления столкновению, чем когда-либо.
Симметричный регистр Предположим, вы получили обычный текстовый PT, длина которого кратна длине блока базового блочного шифра.Вы генерируете случайный IV и шифруете простой текст, используя ключ K, режим CBC и без заполнения.
Создание простого текста PT 'и ключа K', который выдает одинаковый зашифрованный текст CT, очень просто.Просто выберите K 'наугад, расшифруйте CT, используя клавиши K' и IV, и вы получите коллизионный PT '.
Это становится немного сложнее, если вы также используете заполнение, но это все еще возможно.Если вы используете заполнение PKCS # 5/7, просто продолжайте генерировать ключи, пока не найдете такой, что последний октет вашего расшифрованного текста PT 'будет 0x01.Это займет в среднем 128 попыток.
Чтобы сделать такое обнаружение коллизий недопустимым, вы должны использовать код аутентификации сообщения (MAC).
Асимметричный случай Нечто подобное применимов RSA шифрование с открытым ключом.Если вы не используете заполнение (что явно не рекомендуется и, возможно, даже не поддерживается большинством криптографических библиотек) и используете открытый ключ (N, E) для шифрования PT в CT, просто сгенерируйте вторую пару ключей (N ', E', D'), так что N '> N, тогда PT' = CT ^ D '(мод N) будет шифроваться в CT в (N', E ').
Если вы используете PKCS # 1Заполнение v1.5 для вашего шифрования RSA, наиболее значимый октет после операции с закрытым ключом RSA должен быть 0x02, что будет с вероятностью приблизительно один из 256. Кроме того, первый октет со значением 0x00 должен произойти не раньше, чем прииндекс 9, что произойдет с большой вероятностью (примерно 0,97).Следовательно, в среднем вам придется сгенерировать в среднем около 264 случайных пар ключей RSA одинакового размера, прежде чем вы нажмете одну, что для простого текста могло бы привести к тому же зашифрованному тексту.
Если вы используетеОднако при заполнении RSA-OAEP дешифрование секретного ключа гарантированно завершится неудачей, если только текст шифра не был сгенерирован с использованием соответствующего открытого ключа.