Чтобы расшифровать текст, нужно выполнить обратные действия, то есть операцию X = F-1(Y), где F-1 — обратное функциональное преобразование. Можно придумать, и было придумано, множество способов выполнения криптографических преобразований F и F-1 — от наивных (в которых каждая буква текста заменяется на соседнюю в алфавите) до весьма хитроумных. Однако практика показала, что шифры, основанные на секретности способа преобразования не являются достаточно стойкими. Гораздо лучше, когда шифротекст, получающийся при шифровании, зависит не только от исходного текста и способа преобразования, но и от дополнительного параметра, или, как его назвали, ключа шифрования K. Тогда даже в том случае, когда известны сами преобразования (последовательности действий) F и F-1, расшифровать текст невозможно без знания секретного ключа K. Криптографические методы вида Y= F(X, K); X= F-1(Y, K) (1), в которых для шифрования текста и его расшифровки используется один и тот же ключ K, получили название симметричных алгоритмов шифрования. Эти алгоритмы получили широкое распространение. В компьютерных системах они обеспечивают конфиденциальность информации, хранимой на машинных носителях и передаваемых по каналам связи. Еще раз отметим, что зашифрованные таким способом файлы невозможно прочитать без знания пароля — ключа, с использованием которого производилось шифрование.
Однако математики на этом не остановились. Ими был открыт еще один очень интересный способ шифрования. Оказывается, существуют функции, для которых очень легко выполнить преобразование R=G(Q), но обратное преобразование чрезвычайно трудоемко. Настолько, что, если на одну элементарную операцию этого преобразования тратить один квант энергии, то для вычисления Q=G-1(R) не хватит мощностей всей энергосистемы Земли. Запомним этот примечательный факт. Но что же с ним делать? Очевидно, что два числа Q и R связаны между собой преобразованием G. Следовательно, пары таких чисел можно рассматривать как самостоятельные объекты. Обратим внимание на то, что новую пару чисел Q и R получить легко, а вот по имеющемуся числу R восстановить число Q практически невозможно. Были найдены такие криптографические преобразования F и F-1, в которых для того, чтобы зашифровать текст, нужно было использовать в качестве ключа число Q, а чтобы его расшифровать — число R (не забываем, что Q и R — не какие-нибудь произвольные числа, а пара чисел, связанных между собой преобразованием G). Или, более лаконично, Y=F(X, Q); X=F-1(Y, R) (2). То есть, если текст зашифровать с использованием какого-нибудь ключа, то этот ключ будет абсолютно бесполезен при расшифровке текста. Чтобы расшифровать зашифрованный таким способом текст, необходим другой ключ, который легко вычислить на основе ключа, использованного при шифровании. Но вот зная ключ для расшифровки, вычислить ключ шифрования не удастся. Из-за такого неравноправия ключей описанные методы шифрования получили название асимметричных алгоритмов. Заметим только, что выбор ключа из пары чисел {Q, R} осуществляется произвольно. С таким же успехом для шифрования можно было использовать число R, но тогда для расшифровки пришлось бы воспользоваться числом Q.
Для открытия способа, которым можно защитить текст от несанкционированного изменения, осталось сделать один шаг. Пусть у нас имеется некоторый текст X. Мы можем зашифровать его с использованием асимметричного алгоритма и ключа Q. Получится абракадабра шифротекста Y. Если в исходном тексте X заменить хотя бы одну букву и снова выполнить шифрование, то получится тоже абракадабра, но совсем не похожая на предыдущую. Оно и понятно. А что же дальше? Шифротекст Y можно передать кому угодно вместе с ключом расшифровки R. Но ведь тогда же этот «кто угодно» может запросто прочитать зашифрованное сообщение! Правильно, сможет. И пусть расшифровывает и читает. Ведь наша цель состояла в другом. Вспомнили? Что будет, если «кто угодно» изменит хотя бы одну букву в шифротексте Y? Да этот шифротекст просто потеряет всякий смысл. Его невозможно будет расшифровать ключом R, да и, скорее всего, никаким другим ключом тоже. Значит, наша цель достигнута? Без нашего ведома никто не сможет изменить текст и выдать его за исходный.
Зачем же автору понадобилось рассказывать про мудреные асимметричные алгоритмы шифрования? Ведь при использовании гораздо более понятного симметричного алгоритма можно получить тот же самый результат: взять ключ K, зашифровать текст X, получить шифротекст Y и передать его вместе с ключом… Вы хорошо подумали? Допустим, «некто» получил Y и K, выполнил расшифровку, и ему не совсем понравилось содержание исходного текста. Настолько не понравилось, что он взял да и чуть-чуть его изменил, в результате чего получился текст X-штрих (по которому вы должны этому «некто», предположим, N-значную денежную сумму). А потом спокойненько зашифровал его ключом K и представил на суд шифротекст Y-штрих. Как вы сможете доказать, что это — не то, что вы хотели сказать?