Выбрать главу

Но ведь текст состоит из слов, а слова, в свою очередь, состоят из букв (в этой статье не рассматриваются тексты на восточных языках, записанные с использованием иероглифов). Упорядоченное множество букв составляет алфавит того языка, на котором написан текст. Буквы алфавита можно пронумеровать, то есть каждой из них можно поставить в соответствие число. Иными словами, существует взаимно однозначное соответствие между множеством букв и подмножеством натуральных чисел. А раз так, то от рассмотрения букв можно перейти к рассмотрению чисел. C числами можно выполнять арифметические действия. Арифметические действия могут выстраиваться в длинные цепочки. Способ, с помощью которого из одного числа получается другое, называется функциональным преобразованием и записывается в виде Y = F (X), где X — аргумент функции F, а Y — ее результат. После выполнения преобразований от чисел можно снова вернуться к буквам, из получившихся букв можно сложить слова и получить текст, который, скорее всего, будет нечитаемым. Таким образом получается шифротекст — запись исходного текста в виде, непригодном для прочтения.

Чтобы расшифровать текст, нужно выполнить обратные действия, то есть операцию 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, да и, скорее всего, никаким другим ключом тоже. Значит, наша цель достигнута? Без нашего ведома никто не сможет изменить текст и выдать его за исходный.