Процесс шифрования
Шифрование или кодирование информации с целью ее защиты от несанкционированного прочтения — главная задача криптографии с самых давних времен. Еще Юлий Цезарь использовал буквенный код, отправляя послания своим полевым командирам.
Чтобы шифрование дало желаемый результат, необходимо, чтобы и отправитель, и получатель знали, какой набор правил (иначе говоря, шифр) был использован для преобразования первоначальной информации в закодированную форму (зашифрованный текст). Шифр задает правила кодирования данных.
В самом простом случае шифрование может заменять каждую букву сообщения другой, отстоящей от нее на фиксированное число позиций в алфавите, например на 13. Если получатель знает, что отправитель сделал с посланием, то он может повторить процесс в обратной последовательности (например, заменить каждую букву отстоящей от нее на 13 в противоположном направлении) и получить первоначальный текст
Это называется “шифром Цезаря” Вот пример: если я применю 13-буквенный шифр Цезаря к своему имени то вместо David Kosiui получится "Univq Xbfvhe" (подсказка: когда отсчитывая буквы Вы дойдете до “Z”, возвращайтесь к началу алфавита).
В основе шифрования — два понятия: алгоритм и ключ. Криптографический алгоритм — это математическая функция, которая комбинирует открытый текст или другую понятную информацию с цепочкой чисел, называемых ключом, для того чтобы в результате получился бессвязный шифрованный текст Алгоритм и ключ — основа процесса шифрования. Новый алгоритм трудно придумать, но один алгоритм можно использоватъ с многими ключами. Хотя и существуют некоторые специальные криптографические алгоритмы, не использующие ключ (см. описание хеш-функций в следующем разделе) , алгоритмы с ключом имеют особое значение. У шифрования с ключом два важных преимущества.
Во-первых, новый алгоритм шифрования изобрести достаточно трудно и вряд ли Вы захотите делать это всякий раз, когда необходимо отправить тайное послание новому корреспонденту. Используя ключ, Вы можете применять один и тот же алгоритм для отправки сообщений разным людям. Все, что придется сделать, — закрепить отдельный ключ за каждым корреспондентом.
Во-вторых, если кто-то “взломает” Ваше зашифрованное послание, чтобы продолжить шифрование информации, Вам будет достаточно лишь поменять ключ. Переходить на новый алгоритм не придется (если, конечно, “взломан” ключ, а не сам алгоритм — такое хотя и маловероятно, но возможно). Количество бит в ключе определяет число возможных комбинаций, чем их больше, тем труднее подобрать ключ и вскрыть зашифрованное сообщение. Количество возможных ключей в данном алгоритме зависит от числа бит в ключе. Например, 8-битный ключ допускает лишь 256 (28) возможных числовых комбинаций, каждая из которых также называется ключом. Чем больше возможных ключей, тем труднее “вскрыть” зашифрованное послание. Таким образом, степень надежности алгоритма зависит от длины ключа. Компьютеру не потребуется много времени, чтобы последовательно перебрать каждый из 256 возможных ключей (на это уйдет меньше доли секунды) и, расшифровав послание, проверить, имеет ли оно смысл. Но если использовать 100-битный ключ (что эквивалентно перебору 2100 ключей), то компьютеру, опробующему миллион ключей в секунду, все равно может потребоваться несколько веков, чтобы отыскать правильный.
Надежность алгоритма шифрования зависит от длины ключа. Почему? Если знать, сколько бит в ключе, то можно оценить, сколько времени придется потратить, чтобы “взломать” шифр. Надеяться только на секретность алгоритма или зашифрованного текста неразумно — ведь посторонние могут получить эту информацию из конфиденциальных источников, а также путем сравнительного анализа посланий или каким-либо еще способом (например, отслеживая трафик) Тогда злоумышленник сможет расшифровать корреспонденцию.
Самая старая форма шифрования с использованием ключа — симметричное шифрование, или шифрование с секретным ключом. При шифровании по такой схеме отправитель и получатель владеют одним и тем же ключом, с помощью которого и тот, и другой могут зашифровывать и расшифровывать информацию .
Симметричное шифрование имеет некоторые недостатки например, обе стороны должны предварительно договориться о секретном ключе Если у Вас 100 корреспондентов, то Вам придется хранить 100 секретных ключей, по одному для каждого. Но использовать один ключ для нескольких корреспондентов нельзя — тогда они смогут читать почту друг друга.
Схемам симметричного шифрования также присущи проблемы с аутентичностью, поскольку личность отправителя или получателя послания гарантировать невозможно. Если двое владеют одним и тем же ключом, каждый из них может написать и зашифровать послание, а затем заявить что это сделал другой.
Такая неопределенность не позволяет реализовать принцип невозможности отказа. Проблему отречения от авторства позволяет решить криптография с открытым ключом, использующая асимметричные алгоритмы шифрования.
В симметричном шифровании используется один и тот же секретный ключ для шифрования и расшифровки посланий.