Для преодоления недостатков симметричных схем, связанных с трудностью распространения секретных ключей, в начале XX века были разработаны асимметричные схемы, самой известной из которых является RSA, названная по именам ее создателей (Rivest, Shamir, Adleman).
Любая схема с открытым ключом предполагает наличие двух ключей – секретного и открытого. Причем должно выполняться условие, что текст, зашифрованный с помощью одного ключа, должен расшифровываться с помощью другого и наоборот. Причем преобразование шифрование/расшифрование может выполнятся в произвольном порядке.
Если обозначить Ek – шифрование текста ключом k, а Dk – расшифрование текста ключом k, и предположить, что открытым ключом является ko, а закрытым – kc, то должны выполняться условия:
T = EkoDkc = DkcEko = EkcDko = DkoEkc
Причем первые два равенства используются, как правило, для выполнения собственно задач шифрования, а следующие два – для реализации механизмов цифровой подписи и аутентификации.
Поскольку часть ключевой информации в схемах с открытым ключом является общеизвестной, стойкость этих криптосистем достигается значительным увеличением длины самих ключей. А это в свою очередь снижает быстродействие при шифровании/расшифровании.
Таким образом, достоинства и недостатки асимметричных и симметричных схем являются противоположными.
Вследствие этого схемы с открытым ключом используют, как правило, для защищенного обмена секретными ключами, которые используют симметричные схемы, обрабатывающие основной трафик, а также для аутентификации и создания цифровых подписей.
Ниже, в табл. 9.3, приведены эквивалентные размеры ключей для закрытых и открытых схем.
Таблица 9.3
Эквивалентные размеры ключей
Размер ключа симметричной схемы, бит
Размер ключа асимметричной схемы, бит
Классическая процедура обмена двух абонентов секретным ключом для последующего использования симметричной схемы состоит из следующих этапов:
1. Инициатор шифрует секретный ключ своим открытым ключом и направляет его получателю. Никто не может расшифровать эту информацию, поскольку для этого потребовался бы второй – закрытый ключ инициатора, который хранится в тайне.
2. Получатель шифрует своим открытым ключом полученную комбинацию и возвращает ее инициатору. Аналогично, никто не может расшифровать эту информацию, поскольку для этого потребовалось бы уже два ключа – закрытый ключ инициатора и закрытый ключ получателя, которые хранятся в тайне.
3. Инициатор расшифровывает полученную комбинацию своим закрытым ключом и направляет результат получателю. Эта информация также бесполезна для злоумышленника, поскольку после расшифровки секретный ключ еще остался защищенным закрытым ключом получателя.
4. Получатель расшифровывает полученную комбинацию своим закрытым ключом и получает, таким образом, секретный ключ.
Если обозначить процедуры шифрования и расшифрования, как EC и DC, где C – имя соответствующего абонента, то передача сообщения w между сторонами A и B, описанная выше, будет выглядеть следующим образом:
1. EA(w) ® B.
2. EB(EA(w)) ® A.
3. DA(EB(EA(w))) = EB(DA(EA(w))) = EB(w) ® B.
4. DB(EB(w)) = w.
Если же отправителю известен открытый ключ получателя, то он шифрует им свое сообщение, которое получатель может расшифровать только ему известным закрытым ключом. Такая схема широко применяется в системах массового обслуживания, когда клиентам передается открытый ключ организации, оказывающей им услуги. Таким образом, информацию клиентов может расшифровать только она, поскольку только ей известен секретный ключ расшифрования.
В основе вычислений, составляющих асимметричные алгоритмы шифрования, лежат операции с большими (длинной в сотни бит в машинном представлении) простыми числами. Таким образом, их стойкость основана на трудности поиска больших простых чисел и обратных преобразований с ними (например логарифмирования против возведения в степень и т.п.). Поэтому ключи в асимметричных системах или соответствующие коэффициенты преобразований меняются достаточно редко, по сравнению с секретными ключами симметричных схем, которые можно выбирать произвольно для каждого сеанса обмена, что также служит дополнительным преимуществом симметричных схем.
Рассмотрим теперь непосредственно наиболее известные алгоритмы шифрования с открытым ключом.