Криптография(с др. Греч. – скрытое(тайное) писание) – наука, изучающая методы передачи данных скрытым путем для посторонних лиц.
Криптография родилась на свет, когда появилась необходимость передать какое-то послание между людьми, и в случае перехвата этой информации, злоумышленник не смог ничего понять.
Прежде чем начать говорить подробнее о методах кодирования информации, давайте познакомимся с базовыми понятиями.
Исходное послание(ИП) – то, что мы хотим передать.
Зашифрованное послание(ЗП) – исходное послание, закодированное определенными алгоритмами(шифром)
Ключ – параметр шифра(чаще всего это число), который позволяет зашифровать или расшифровать послание.
Шифрование – процесс получения ЗП из ИП, применяя шифр и ключ
Один самых первых алгоритмов шифрования – шифр Цезаря.
В чем его суть?
Есть ИП и есть алфавит (а, б, в, г...)
Каждой букве алфавита соответствует его порядковый номер (а–1, б–2, в–3...).
Есть ключ(k) – какое-то число, которое "сдвигает" порядковый номер буквы алфавита на число k. Например если k=1, наш алфавит поменяет вид (а->б, б->в, в->г...)
Стоит заметить: буква "я" ->"а"
Сколько всего ключей возможно?
Да сколько угодно, но есть маленький ньюанс: при k = 33 буква "а" ->"а", она останется на своем месте. Мы "пробежали" весь алфавит с 33 буквами. Такая же ситуация будет при k={66,99,132... n*33; где n целое число}
При получении большого значения k, нас будут интересовать только его остатки от деления k на размер алфавита(в нашем случае, в русском алфавите 33 буквы), т.е остатки – числа [0;32].
Если не понятно, то давайте используем аналогию с днями неделями. Если к понедельнику добавить 7 дней, мы получим следующий понедельник, 14 - та же ситуация, и т.д.(размер алфавита равен 7)
Если добавить 8 дней мы получим вторник, также как если бы мы добавили +1 день.
Давайте зашифруем и расшифруем послание с таким шифром.
ИП – "Привет"
k=497
Сначала надо узнать насколько необходимо "сдвинуть" наши буквы:
Найдем остаток от деления k на 33.
Поделим число 497 на 33, берём целую часть, целую часть умножаем на 33, и полученное число отнимаем от 497.
497/33 =15.06
15*33=495
497-495=2
В теории чисел(также в информатике) есть следующая запись: 497=2 (mod33)
При делении на 33 они дадут один и тот же остаток – 2.
Следовательно, исходный алфавит примет вид (а->в, б->г, в->д...)
Перепишем слово "Привет" согласно новому шифру.
Получили ЗП: "Сткджф"
Можем отправлять: "Сткджф" и k=497.
Получатель, заранее узнавший про шифр Цезаря, без труда расшифрует послание. Для этого: найдет остаток при делении k на 33 и сместит влево на k(mod33)=2 номерной порядок алфавита.
Есть большое множество подобных шифров, но в наши дни их не используют на практике, только теоретически, в процессе обучения (историческая справочка всегда помогает лучше понять предмет).
Этому классу шифров несколько тысяч лет, в наши дни взламываются меньше чем за секунду(в пересчете на работу компьютера).
К примеру, можно назвать еще один известный шифр как шифр Виженера. Этот шифр немного сложнее шифра Цезаря. В чем его суть?
При шифре Цезаря, мы букве одного алфавита сопоставляли букву другого алфавита.
При шифре Виженера мы будем сопоставлять буквам одного алфавита, буквы нескольких алфавитов.
У нас есть ИП, ключ,обычный алфавит(абвгд...) и ещё несколько алфавитов(например, 10); буквы в последних 10 алфавитах перемешанны определённым образом(можно по шифру Цезаря, можно произвольно).
Зашифровка сообщения:
ИП – "Привет"
Ключ - 762543.
Каждой букве нашего послания соответствует в ключе определенная цифра – номер алфавита.
Проще говоря, мы берем первую букву – "П" и будем ее шифровать по 7 алфавиту, в котором букве "П" соответствует буква "А". Второй букве "р" будет соответствовать буква "г" из 6 алфавита, и т.д.
Получим сообщение, например –"Агниьт".
Минус такого шифра – количество исходных данных, целых 10 алфавитов(а может еще больше)!
Расшифровать просто – подставить буквы по ключу обратно.