Как-то в шестидесятых годах пятнадцатого века Альберти прогуливался по саду в Ватикане и столкнулся со своим другом, Леонардо Дато, служившим секретарем у папы. Они поболтали; причем Дато завел разговор о криптографии и о сложностях в ней. Этот случайный разговор натолкнул Альберти на мысль написать исследование по этому предмету, наметив в общих чертах, каким, по его мнению, должен быть новый вид шифра. В то время все шифры замены требовали отдельного шифралфавита для зашифровывания каждого сообщения.
Альберти же предложил использовать два или более шифралфавитов, переходя от одного к другому в процессе зашифровывания и сбивая этим с толку возможных криптоаналитиков.
Здесь, например, у нас есть два возможных шифралфавита, и мы можем зашифровать сообщение, используя поочередно то один, то другой. Так, чтобы зашифровать слово hello
, мы зашифруем первую букву с помощью первого шифралфавита, так что h превратится в А, вторую же букву мы зашифруем, используя второй шифралфавит, при этом е станет F. Для зашифровывания третьей буквы мы вернемся опять к первому шифралфавиту, а чтобы зашифровать четвертую букву, мы вновь обратимся ко второму шифралфавиту. Благодаря этому, первая l будет зашифрована как Р, а вторая l превратится в А. Последняя буква, о, зашифровывается первым шифралфавитом и преобразуется в D. Окончательный вид шифртекста: AFPAD. Основное преимущество системы Альберти заключается в том, что одинаковые буквы в открытом тексте не обязательно останутся одинаковыми в шифртексте, поэтому повторяющиеся l в слове hello зашифровываются различным образом. Точно так же повторяющиеся А в шифртексте являются различными буквами открытого текста, сначала h, а потом l.Несмотря на то что Альберти совершил самый значительный за более чем тысячу лет переворот в криптографии, он не сумел довести свою идею до целостной системы. Решать эту задачу, основываясь на первоначальной идее Альберти, предстояло уже другим, вначале Иоганну Тритемию, немецкому аббату, родившемуся в 1462 году, затем Джованни Порта, итальянскому ученому, родившемуся в 1535 году, и, наконец, Блезу де Виженеру, французскому дипломату, родившемуся в 1523 году. Виженер познакомился с трудами Альберти, Тритемия и Порта, когда его в двадцать шесть лет послали на два года в Рим с дипломатической миссией. Вначале интерес Виженера к криптографии был чисто практического свойства и связан с дипломатической службой. Но затем, когда ему исполнилось тридцать девять лет, он решил, что накопил уже достаточно денег, чтобы оставить службу, отказаться от карьеры и сосредоточиться на исследованиях. И только потом он детально проверил идеи Альберти, Тритемия и Порта, создав на их основе новый шифр.
Рис. 11 Блез де Виженер
Хотя и Альберти, и Тритемий, и Порта, каждый внесли значительный вклад в создание нового шифра, но этот шифр известен как шифр Виженера, в честь человека, который придал ему окончательный вид. Стойкость шифра Виженера состоит в том, что для зашифровывания сообщения в нем используется не один, а 26 различных шифралфавитов. Шифрование начинается с построения так называемого квадрата Виженера, показанного в таблице 3: алфавит открытого текста с последующими 26 шифралфавитами, каждый из которых сдвинут на одну букву относительно предыдущего алфавита.
Таблица 3 Квадрат Виженера.
Здесь ряд 1 представляет собой алфавит шифра Цезаря со сдвигом на 1 позицию, то есть этот шифралфавит может использоваться в качестве алфавита шифра Цезаря, в котором каждая буква открытого текста заменяется буквой, расположенной в алфавите на одну позицию дальше. Точно так же ряд 2 представляет собой алфавит шифра Цезаря со сдвигом на 2 позиции и так далее.
Верхний ряд квадрата, со строчными буквами, представляет буквы алфавита открытого текста. Вы можете зашифровать каждую букву открытого текста с помощью любого из 26 шифралфавитов. Например, если используется шифралфавит номер 2, то буква а
зашифровывается как С, если же используется шифралфавит номер 12, тогда а преобразуется в М.Если отправитель, чтобы зашифровать сообщение, пользуется только одним из шифралфавитов, то это фактически будет простым шифром Цезаря, который является исключительно нестойким видом шифрования, так что сообщение может быть без труда дешифровано противником, перехватившим его. В шифре же Виженера для зашифровывания различных букв сообщения применяются различные строки квадрата Виженера (различные шифралфавиты). Другими словами, отправитель может зашифровать первую букву с помощью ряда 5, вторую букву с помощью ряда 14, третью букву с помощью ряда 21 и так далее.