Введение

Схема шифрования с открытым ключом
учебная схема шифрования с открытым ключом
Криптосистема Рабина — это семейство схем шифрования с открытым ключом, основанных на функции с секретом (trapdoor function), безопасность которой, как и у RSA, связана со сложностью факторизации целых чисел. Функция с секретом Рабина имеет то преимущество, что математически доказано, что её инверсия столь же сложна, как и факторизация целых чисел, в то время как для функции с секретом RSA подобного доказательства не существует. Её недостаток заключается в том, что каждый выход функции Рабина может быть сгенерирован любым из четырех возможных входов; если каждый выход является шифротекстом, то для расшифровки требуется дополнительная сложность, чтобы определить, какой из четырех возможных входов был исходным открытым текстом. Неудачные попытки обойти это часто либо позволяют атакующему, выбирая шифротекст, восстановить секретный ключ, либо, кодируя избыточность в пространстве открытого текста, делают недействительным доказательство безопасности относительно факторизации. Схема цифровой подписи Рабина была первой схемой, для которой доказано, что подделать подпись столь же сложно, как и факторизовать число. Функция с секретом позднее была использована в учебниках в качестве примера схемы шифрования с открытым ключом.

Эффективность

Для шифрования необходимо вычислить квадрат по модулю n. Это более эффективно, чем RSA, который требует вычисления как минимум куба. Для расшифровки применяется китайская теорема об остатках, а также два возведения в степень по модулю. Здесь эффективность сопоставима с RSA.

Безопасность

Доказано, что любой алгоритм, способный найти один из возможных открытых текстов для каждого зашифрованного текста Рабина, может быть использован для факторизации модуля. Таким образом, дешифрование Рабина для случайного открытого текста не менее сложно, чем задача факторизации целых чисел, что не было доказано для RSA. Обычно считается, что не существует алгоритма полиномиального времени для факторизации, что подразумевает отсутствие эффективного алгоритма для расшифровки случайного зашифрованного значения Рабина без секретного ключа. Криптосистема Рабина не обеспечивает неотличимость при атаках с выбранным открытым текстом, поскольку процесс шифрования детерминирован. Злоумышленник, получив шифротекст и предполагаемое сообщение, может легко определить, кодирует ли шифротекст это сообщение (просто проверив, приводит ли шифрование предполагаемого сообщения к данному шифротексту). Криптосистема Рабина уязвима для атак с выбранным шифротекстом (даже если сообщения-запросы выбираются равномерно случайным образом из пространства сообщений). Добавление избыточности, например, повторение последних 64 бит, позволяет системе выдавать единственный корень. Это нейтрализует конкретную атаку с выбранным шифротекстом, поскольку алгоритм дешифрования затем выдает только тот корень, который уже известен злоумышленнику. Если применять эту технику, доказательство эквивалентности задаче факторизации становится недействительным, поэтому с 2004 года неясно, является ли этот вариант безопасным. В "Руководстве по прикладной криптографии" Менеза, Оршота и Ванстона эта эквивалентность считается вероятной, однако, пока нахождение корней остается двухэтапным процессом (1. нахождение корней и 2. применение китайской теоремы об остатках).