ЗАРОЖДЕНИЕ КРИПТОГРАФИИ


Введение в криптографию

А.Конан Дойл, ``Пляшущие человечки''


В этом рассказе Холмсу необходимо было прочитать тексты пяти записок:
I.
II.
III.
IV.
V.
Первая записка была так коротка, что дала возможность Холмсу сделать всего лишь одно правдоподобное предположение, оказавшееся впоследствии правильным. По-видимому, флаги употребляются лишь для того, чтобы отмечать концы отдельных слов. Больше ничего по первой записке установить было нельзя. Четвертая записка, по всей видимости, содержала всего одно слово, так как в ней не было флагов.
Вторая и третья записки начинались, несомненно, с одного и того же слова из четырех букв. Вот это слово:
Оно кончается той же буквой, какой и начинается. Счастливая мысль: письма обычно начинаются с имени того, кому письмо адресовано. Человек, писавший миссис Кьюбит эти послания, был, безусловно, близко с ней знаком. Вполне естественно, что он называет ее просто по имени. А зовут ее Илси. Таким образом, Холмсу стали известны три буквы: И, Л и С.
В двух записках их автор обращается к миссис Кьюбит по имени и, видимо, чего-то требует от нее. Не хочет ли он, чтобы она пришла куда-нибудь, где он мог с ней поговорить? Холмс обратился ко второму слову третьей записки. В нем 7 букв, из которых третья и последняя - И. Холмс предположил, что слово это - ПРИХОДИ, и сразу оказался обладателем еще 5 букв: П, Р, Х, О, Д.
Тогда он обратился к четвертой записи, которая появилась на двери сарая. Холмс предположил, что она является ответом и что написала ее миссис Кьюбит. Подставив в текст уже известные буквы, он получил: -И-О-Д-. Что же могла миссис Кьюбит ответить на просьбу прийти? Внезапно Холмс догадался: НИКОГДА
Возвратившись к первой записке, Холмс получил:

- -Д-С- А- СЛ-НИ
Он предположил, что четвертое слово - СЛЕНИ Это - фамилия, чрезвычайно распространенная в Америке. Коротенькое слово из двух букв, стоящее перед фамилией, по всей вероятности, имя. Какое же имя может состоять из двух букв? В Америке весьма распространено имя Аб. Теперь остается установить только первое слово фразы; оно состоит всего из одной буквы, и отгадать его нетрудно: это - местоимение Я.

Далее Холмс восстанавливает содержание второй записки:

Здесь указаны границы слов, а снизу одинаковыми символами отмечены одинаковые буквы. Четвертое слово состоит из одной буквы (по-видимому, это союз или предлог). Буквы О и И уже определены, С, А и К - тоже. Остаются следующие возможности: это - либо В, либо У. Вряд ли это - В, так как в этом случае получилось бы ``нечитаемое'' третье слово -И-В. Поэтому, скорее всего - это предлог У. Небольшой перебор незадействованных букв дает правдоподобную гипотезу о значении третьего слова: ЖИВУ. Скорее всего, последнее слово (-ЛРИДЖА) - мужское имя, в котором неизвестная буква - Э. Поэтому вторая записка гласит: ИЛСИ Я ЖИВУ У ЭЛРИДЖА

Холмс послал телеграмму в нью-йоркское полицейское управление с запросом о том, кто такой Аб Слени. Поступил ответ: ``Самый опасный бандит в Чикаго''.

Сразу после этого появилась последняя (5-я) записка, в которой не хватало трех букв: ИЛСИ ГО-ОВЬСЯ К С-ЕР-И, из которой сразу определяются буквы М и Т:
ИЛСИ ГОТОВЬСЯ К СМЕРТИ

Шестая записка была направлена Холмсом преступнику:

Next: Э. По, ``Золотой жук''

Up: 7.2. Шифры замены

Previous: 7.2. Шифры замены

Contents:



А можно ли обойтись без пароля?


Как видите, применять пароль в качестве ключа шифрования не так удобно, как кажется на первый взгляд. Либо защита будет нестойкой, либо пароль трудно запомнить и ввести без ошибок. Если вы хотите построить по-настоящему надежную защиту, вместо пароля нужно использовать что-то другое.
Можно, например, хранить ключ на дискете1). Вы создаете каким-то образом (каким - обсудим позже) случайный, равновероятный и достаточно длинный ключ и записываете его на дискету. Когда программа шифрования запрашивает ключ, вы вводите ключ не с клавиатуры, а с дискеты. Вы просто вставляете дискету в дисковод, а программа считывает оттуда ключ и зашифровывает файл на этом ключе. При расшифровании файла программа просит ``Вставьте ключевую дискету в дисковод''. Вы вставляете дискету в дисковод, программа считывает оттуда ключ, проверяет его правильность и, если ключ правильный, расшифровывает файл.
Конечно, программа шифрования должна уметь работать с ключевыми дискетами.
Ключевую дискету нужно хранить в месте, недоступном для злоумышленников. Если кто-то воспользуется вашей ключевой дискетой, то он сможет прочесть все, что вы зашифровали с ее помощью. Не теряйте ключевые дискеты! Если вы потеряете такую дискету, то тем самым вы потеряете все данные, которые вы зашифровали с ее помощью.
Удобно ли пользоваться ключевыми дискетами? Нет. Но за надежность защиты приходится платить. Вообще, это общая закономерность - чем надежнее система защиты, тем труднее с ней работать. И наоборот, чем система защиты удобнее в обращении, тем она слабее. Конечно, разрабатывая систему защиты, можно наделать ошибок, и система получится и ненадежной, и неудобной. Но если система разрабатывалась на совесть, приведенное выше утверждение почти всегда верно.
Можно ли как-нибудь защитить ключ, хранящийся на дискете? Конечно! Его тоже можно зашифровать. И не нужно для этого придумывать сложный шифр - вполне хватит самого примитивного . Почему? Да потому, что ключ шифрования - текст случайный и равновероятный. На чем основан метод дешифрования шифра простой замены? На том, что открытый текст - это осмысленный текст. А в осмысленном тексте обязательно присутствуют статистические закономерности. Но в ключе никаких закономерностей нет - ключ случаен и равновероятен!
Что использовать в качестве ключа, на котором шифруется ключ? Можно использовать пароль, но, как вы уже знаете, это не очень надежно. Можно завести вторую ключевую дискету, на которой хранить ключ, необходимый для доступа к первой. Но тогда придется заводить третью дискету, чтобы защитить вторую, а потом заводить четвертую, чтобы защитить третью ...
Так как же быть? Подумайте сами. Один из возможных
вы найдете в конце главы.
Next: Где взять ключи?
Up: 6.3. Как зашифровать файл?
Previous: Какой должен быть пароль?
Contents:


Алгебра секретных систем


Если имеются две секретные системы и , их часто можно комбинировать различными способами для получения новой секретной системы . Если и имеют одну и ту же область (пространство сообщений), то можно образовать своего рода ``взвешенную сумму''

где . Эта операция состоит, во-первых, из предварительного выбора систем или с вероятностями и . Этот выбор является частью ключа . После того как этот выбор сделан, системы или применяются в соответствии с их определениями. Полный ключ должен указывать, какая из систем или выбрана и с каким ключом используется выбранная система.
Если состоит из отображений с вероятностями , а -- из с вероятностями , то система состоит из отображений с вероятностями соответственно.
Обобщая далее, можно образовать сумму нескольких систем

Заметим, что любая система может быть записана как сумма фиксированных операций

где -- определенная операция шифрования в системе , соответствующая выбору ключа , причем вероятность такого выбора равна .
Второй способ комбинирования двух секретных систем заключается в образовании ``произведения'', как показано схематически на рис. . Предположим, что и -- такие две системы, что область определения (пространство языка) системы может быть отождествлена с областью определения (пространством криптограмм) системы . Тогда можно применить сначала систему к нашему языку, а затем систему к результату этой операции, что дает результирующую операцию , которую запишем в виде произведения

Ключ системы состоит как из ключа системы , так и из ключа системы , причем предполагается, что эти ключи выбираются соответственно их первоначальным вероятностям и независимо.


Рис. 3. Произведение двух систем S = RT.


Таким образом, если ключей системы выбирается с вероятностями

а ключей системы имеют вероятности

то система имеет самое большее ключей с вероятностями . Во многих случаях некоторые из отображений будут одинаковыми и могут быть сгруппированы вместе, а их вероятности при этом сложатся.

Произведение шифров используется часто; например, после подстановки применяют транспозицию или после транспозиции -- код Виженера; или же применяют код к тексту и зашифровывают результат с помощью подстановки, транспозиции, дробным шифром и т.д.

Можно заметить, что такое умножение, вообще говоря, некоммутативно (т. е. не всегда ), хотя в частных случаях (таких, как подстановка и транспозиция) коммутативность имеет место. Так как наше умножение представляет собой некоторую операцию, оно по определению ассоциативно, т. е. . Кроме того, верны законы

(взвешенный ассоциативный закон для сложения);


(право- и левосторонние дистрибутивные законы), а также справедливо равенство

Следует подчеркнуть, что эти операции комбинирования сложения и умножения применяются к секретным системам в целом. Произведение двух систем не следует смешивать с произведением отображений в системах , которое также часто используется в настоящей работе. Первое является секретной системой, т.е. множеством отображений с соответствующими вероятностями; второе -- является фиксированным отображением. Далее, в то время как сумма двух систем является системой, сумма двух отображений не определена. Системы и могут коммутировать, в то время как конкретные и не коммутируют. Например, если -- система Бофора данного периода, все ключи которой равновероятны, то, вообще говоря,

но, конечно, произведение не зависит от порядка сомножителей; действительно

является системой Виженера того же самого периода со случайным ключом. С другой стороны, если отдельные отображения и двух систем и коммутируют, то и системы коммутируют.

Системы, у которых пространства и можно отождествить (этот случай является очень частым, если последовательности букв преобразуются в последовательности букв), могут быть названы эндоморфными. Эндоморфная система может быть возведена в степень .

Секретная система , произведение которой на саму себя равно , т.е. такая, что


будет называться идемпотентной. Например, простая подстановка, транспозиция с периодом , система Виженера с периодом (все с равновероятными ключами) являются идемпотентными.




Множество всех эндоморфных секретных систем, определенных в фиксированном пространстве сообщений, образует ``алгебраическую систему'', т.е. некоторый вид алгебры, использующей операции сложения и умножения. Действительно, рассмотренные свойства сложения и умножения можно резюмировать следующим образом.

Множество эндоморфных шифров с одним и тем же пространством сообщений и двумя операциями комбинирования -- операцией взвешенного сложения и операцией умножения -- образуют линейную ассоциативную алгебру с единицей, с той лишь особенностью, что коэффициенты во взвешенном сложении должны быть неотрицательными, а их сумма должна равняться единице.



Эти операции комбинирования дают способы конструирования многих новых типов секретных систем из определенных данных систем, как это было показано в приведенных примерах. Их можно также использовать для описания ситуации, с которой сталкивается шифровальщик противника, когда он пытается расшифровать криптограмму неизвестного типа. Фактически он расшифровывает секретную систему типа

где в данном случае -- известные типы шифров с их априорными вероятностями , а соответствует возможности использования совершенно нового неизвестного шифра.

Next: 7. Чистые и смешанные

Up: Часть I. МАТЕМАТИЧЕСКАЯ СТРУКТУРА СЕКРЕТНЫХ

Previous: 5. Оценка секретных систем

Contents:



Алгоритмические проблемы теории чисел



Next: 4.1. Введение
Up: Введение в криптографию
Previous: Литература к главе 3
Contents:


Целостность. Протоколы аутентификации и электронной подписи



``Воротится коза, постучится в дверь и запоет:

- Козлятушки, ребятушки!

Отопритеся, отворитеся!

Ваша мать пришла - молока принесла.

Козлятки отопрут дверь и впустят мать...

Волк подслушал как поет коза. Вот раз коза ушла, волк подбежал к избушке и закричал толстым голосом:

- Вы детушки! Вы козлятушки!

Отопритеся, отворитеся,

Ваша мать пришла, молока принесла.

Козлята ему отвечают:

- Слышим, слышим - да не матушкин это голосок!...

Волку делать нечего. Пошел он в кузницу и велел себе горло перековать, чтобы петь тонюсеньким голосом...

Только коза ушла, волк опять шасть к избушке, постучался и начал причитывать тонюсеньким голосом:

- Козлятушки, ребятушки!

Отопритеся, отворитеся!

Ваша мать пришла - молока принесла.

Козлята отворили дверь, волк кинулся в избу и всех козлят съел.''

``Волк и семеро козлят''. Русская народная сказка.
Как уже отмечалось во введении, понятие целостности информации, по-видимому, не допускает математической формализации. В данном разделе мы рассмотрим методы обеспечения целостности на примере двух наиболее важных и распространенных типов криптографических протоколов - схем аутентификации и электронной подписи.
Назначение и суть протоколов аутентификации (называемых также протоколами идентификации) легко понять на следующем примере. Представим себе информационную систему, которая работает в компьютерной сети и обеспечивает доступ к некоторым данным. У администратора системы имеется список всех ее пользователей вместе с сопоставленным каждому из них набором полномочий, на основе которых осуществляется разграничение доступа к ресурсам системы. Ресурсами могут быть, например, некоторые фрагменты информации, а также функции, выполняемые системой. Одним пользователям может быть разрешено читать одну часть информации, другим - другую ее часть, а третьим - еще и вносить в нее изменения. В данном контексте под обеспечением целостности понимается предотвращение доступа к системе лиц, не являющихся ее пользователями, а также предотвращение доступа пользователей к тем ресурсам, на которые у них нет полномочий. Наиболее распространенный метод разграничения доступа, парольная защита, имеет массу недостатков. Их обсуждение стало общим местом для текстов по компьютерной безопасности, поэтому мы сразу перейдем к криптографической постановке задачи.

В протоколе имеются два участника - Алиса, которая должна доказать свою аутентичность, и Боб, который эту аутентичность должен проверить. У Алисы имеются два ключа - общедоступный открытый и секретный . Фактически, Алисе нужно доказать, что она знает , и сделать это таким образом, чтобы это доказательство можно было проверить, зная только .

Задача аутентификации уже обсуждалась в главе . Там же были сформулированы основные требования, которым должен удовлетворять стойкий протокол аутентификации. Напомним, что для удовлетворения этих требований достаточно, чтобы протокол аутентификации был доказательством с нулевым разглашением. В главе приведен протокол доказательства с абсолютно нулевым разглашением для задачи ИЗОМОРФИЗМ ГРАФОВ. Но этот протокол имеет неприемлемо большое с практической точки зрения количество раундов обмена сообщениями между Алисой и Бобом.

Ниже мы приводим протокол Шнорра [], один из наиболее эффективных практических протоколов аутентификации. Для его описания нам потребуются некоторые обозначения, которые будут использоваться и в последующих разделах данной главы.

Пусть и - простые числа такие, что делит . Шнорр предлагает [] использовать длины порядка 512 битов и - длины порядка 140 битов. Пусть таково, что , . Пусть и . Задача вычисления значения по заданному значению при известных , и называется задачей дискретного логарифмирования (см. главу ). Для задачи дискретного логарифмирования на данный момент не известно эффективных алгоритмов. Поэтому в криптографии широко используется гипотеза о вычислительной трудности задачи дискретного логарифмирования. Сформулируем ее более строго. Пусть - растущий целочисленный параметр, число выбирается из множества всех простых чисел длины таких, что имеет простой делитель длины не меньше для некоторой константы 0$" width="41" height="28" >, - из множества всех таких простых делителей числа , - из множества всех чисел таких, что , а . Тогда функция - односторонняя (см. главу ). Рекомендации, данные Шнорром относительно длин чисел и , можно трактовать следующим образом. На тот момент (1989 г.) считалось практически невыполнимым уже для и длины порядка 512 и 140 битов соответственно. Здесь, однако, следует учитывать, что прогресс в области вычислительной техники и в алгоритмической теории чисел (см. главу ) может привести к необходимости пересмотра этих величин.

В качестве секретного ключа схемы аутентификации Алиса выбирает случайное число из . Далее Алиса вычисляет и публикует открытый ключ . Открытые ключи всех участников схемы должны публиковаться таким образом, чтобы исключалась возможность их подмены (такое хранилище ключей называется общедоступным сертифицированным справочником). Эта проблема, называемая часто проблемой аутентичности открытых ключей, составляет отдельный предмет исследований в криптографии и в данной главе не рассматривается.

Next: 3.3. Неотслеживаемость. Электронные деньги

Up: 3. Криптографические протоколы

Previous: 3.1. Введение

Contents:



ЧастьI. МАТЕМАТИЧЕСКАЯ СТРУКТУРА СЕКРЕТНЫХ СИСТЕМ


Next: 2. Секретные системы
Up: Приложение
Previous: 1. Введение и краткое
Contents:


ЧастьII. ТЕОРЕТИЧЕСКАЯ СЕКРЕТНОСТЬ


Next: 9. Введение
Up: Приложение
Previous: 8. Подобные системы
Contents:


Что надо знать перед написанием программы шифрования


С появлением персональных компьютеров криптография приобрела совершенно новое лицо. Хотя компьютеры привнесли немало нового и в криптографию, все же самое радикальное новшество заключается в том, что о криптографии стали говорить открыто и на каждом углу. Где есть компьютеры, там обязательно появляются вопросы о защите информации. А где начинают задумываться о защите информации - там неизбежно вспоминают о криптографии.
Криптография - очень таинственная и хитрая область знаний. Как правило, о ней можно было прочитать очень мало. Сейчас же ситуация изменилась, и о ней пишут много. Парадокс в том, что чем больше о ней пишут, тем меньше в ней понимаешь. Точнее, тем больше понимаешь, что ты в ней ничего не понимаешь.
Не секрет, что каждый, кто хоть немного поработал на компьютере, не раз задумывался о защите своих файлов. Неважно от кого. Просто каждый из нас не любит, когда в его делах кто-то копается. А при работе с персональным компьютером (ПК) постоянно возникает ситуация, когда он находится в безраздельной власти, в общем-то, посторонних вам людей. К соблазну попробовать зашифровать файлы, директории или диски постоянно подталкивают нас и многочисленные программы со встроенными функциями шифрования: нортоновский Diskreet, Secretdisk, различные архиваторы, редакторы и т.д. Поэтому без преувеличения можно сказать, что с криптографией сталкивался каждый пользователь ПК.
На более серьезном уровне приходится строить отношения с криптографией тем, кто имеет свое дело и использует ПК или локальную сеть ПК в своей организации или фирме. Здесь уже потери от небрежного обращения со своей информацией могут привести к непоправимым последствиям. Не будем утомлять читателя примерами из жизни, поскольку каждый наверняка читал об этом в газетах или слышал от друзей.
Дело не в примерах, а в сути дела. А суть в том, что без криптографии решить задачи сохранения ваших тайн практически невозможно. Не будем тратить время на доказательство этого тезиса. Интуитивно это понимают все, хотя у непрофессионалов и возникает иногда некоторое чувство внутреннего сопротивления.

Итак, вы поняли, что вам надо воспользоваться какой-либо программой для шифрования. И вот здесь-то сразу появляются непреодолимые трудности. То, что они непреодолимые, вы понимаете чуть позднее. Для того, чтобы выбрать для себя нужную программу, надо научиться оценивать ее качество и уметь сравнивать такие программы между собой. А вот здесь-то никаких критериев вам никто и никогда не расскажет, да и в книгах вы ничего путного не прочитаете. А верить продавцу с его навязчивой и крикливой рекламой в данном случае полностью абсурдно, так как продавцом может оказаться ваш конкурент со всеми вытекающими отсюда последствиями. Верить можно только той программе, которую вы написали сами. Если вы с этим не согласны, значит у вас еще все впереди. Ваши иллюзии еще не скоро рассеются.

Итак, приступим к написанию программы шифрования файлов. Поначалу создание такой программы кажется вполне доступной задачей, с которой может справиться любой человек, изучивший какой-нибудь язык программирования. Нет ничего проще. Вы выбираете самый надежный из известных вам алгоритм шифрования, например описанный в ГОСТ 28147, садитесь за компьютер, и через некоторое время у вас появляется работающая программа. Хотя она работает не очень быстро и интерфейс у нее не очень удобный, она вас вполне устраивает и вы ей полностью доверяете, поскольку это ваша программа.

Но со временем у вас опять появляется червь сомнения. Вы опять начинаете задумываться о надежности вашей защиты и понимаете, что, несмотря на свой богатый опыт в области криптографии, вы в сущности ничего в этом не понимаете. Единственное, что согревает душу в такой ситуации, так это то, что вы теперь ясно осознаете необходимость серьезного подхода к решению задачи. А это уже очень много. С этого момента и начинается ваша работа по освоению криптографии.

Next: Какой алгоритм выбрать?

Up: 6.2. Немного теории

Previous: 6.2. Немного теории

Contents:



Дискретное логарифмирование


Пусть - нечетное простое число. Еще Эйлер знал, что мультипликативная группа кольца циклична, т.е. существуют такие целые числа , что сравнение


(22)

разрешимо относительно при любом , не делящемся на . Числа с этим свойством называются первообразными корнями, и количество их равно , где - функция Эйлера. Целое , удовлетворяющее сравнению (), называется индексом или дискретным логарифмом числа .
В разделе мы описали алгоритм, позволяющий по заданному числу достаточно быстро вычислять . Обратная же операция - вычисление по заданному его дискретного логарифма, вообще говоря, является очень сложной в вычислительном отношении задачей. Именно это свойство дискретного логарифма и используется в его многочисленных криптографических применениях (см. главу ). Наиболее быстрые (из известных) алгоритмы решения этой задачи, основанные на так называемом методе решета числового поля, требуют выполнения
арифметических операций (см. []), где - некоторая положительная постоянная. Это сравнимо со сложностью наиболее быстрых алгоритмов разложения чисел на множители. Конечно, указанная оценка сложности получена при условии справедливости ряда достаточно правдоподобных гипотез.
Говоря о сложности задачи дискретного логарифмирования, мы имели в виду ``общий случай''. Ведь и большое целое число легко может быть разложено на простые сомножители, если все эти сомножители не очень велики. Известен алгоритм, позволяющий быстро решать задачу дискретного логарифмирования, если есть произведение малых простых чисел.
Пусть - простое число, делящее . Обозначим
, тогда классы вычетов все различны и образуют полное множество решений уравнения в поле
. Если не велико и целое число удовлетворяет сравнению
, то показатель , , легко может быть найден, например, с помощью перебора. Именно на этом свойстве основан упомянутый выше алгоритм.
Допустим, что , . Алгоритм последовательно строит целые числа , , для которых выполняется сравнение


(23)
Так как выполняется сравнение

, то найдется целое число , для которого

. При таком выборе сравнение () с , очевидно, выполняется. Предположим, что найдено число , удовлетворяющее сравнению (). Тогда определим с помощью сравнения

(24)
и положим . Имеют место сравнения

(25)
означающие справедливость () при .

При сравнение () означает в силу (), что

. Целое число есть первообразный корень по модулю , поэтому имеем

и

Если

, где все простые числа малы, то указанная процедура позволяет найти вычеты

, , и, с помощью китайской теоремы об остатках, вычет , т.е. решить сравнение ().

В случае обычных логарифмов в поле действительных чисел имеется специальное основание , позволяющее достаточно быстро вычислять логарифмы с произвольной точностью. Например, это можно делать с помощью быстро сходящегося ряда

(26)
Логарифмы по произвольному основанию могут быть вычислены с помощью тождества

(27)
В случае дискретных логарифмов нет основания, по которому логарифмы вычислялись бы столь же быстро, как натуральные в поле действительных чисел. Вместе с тем, последняя формула, связывающая логарифмы с различными основаниями, остается справедливой и позволяет выбирать основание удобным способом. Единственное условие для этого состоит в том, чтобы логарифм нового основания был взаимно прост с . Тогда в формуле () возможно деление по модулю . Заметим, что это условие будет выполнено, если и только если - первообразный корень. Из расширенной гипотезы Римана следует, что наименьший первообразный корень по модулю ограничен величиной . Поэтому в дальнейшем для простоты изложения мы будем предполагать, что основание в () невелико, именно .

Так как поле неполно, вычисление дискретных логарифмов не может использовать предельный переход и основано на иных принципах. Прежде всего, нужный дискретный логарифм вычисляется не сам по себе, а вместе с совокупностью логарифмов ряда других чисел. Заметим, что всякое сравнение вида




(28)
где , приводит к соотношению между логарифмами

(29)
А если выполняются сравнения

то

(30)
и

(31)
Имея достаточно много векторов , с условием (), можно найти решение соответствующей системы сравнений (), (). Если эта система имеет единственное решение, то им как раз и будет набор логарифмов

. Затем с помощью () можно найти .

Мы опишем ниже реализацию этой идеи, взятую из работы []. Эвристические соображения позволили авторам [] утверждать, что предложенный ими алгоритм требует , где

, арифметических операций для вычисления .

Положим

Тогда выполняется сравнение

(32)
Если числа не очень велики, скажем

при некотором 0$" width="41" height="28" >, то правая часть сравнения () не превосходит

. Можно доказать, что случайно выбранное натуральное число

, с вероятностью большей, чем .

Обозначим через совокупность всех простых чисел при

. Будем теперь перебирать случайным образом числа и для каждой такой пары пытаться разложить на множители соответствующее выражение из правой части (). Для разложения можно воспользоваться, например, делением на все простые числа, меньшие чем . Перебрав все

указанных пар , мы найдем, как это следует из указанных выше вероятностных соображений, не менее

(33)
пар, для которых правая часть сравнения () полностью раскладывается на простые сомножители, меньшие . Сравнение (), таким образом, принимает вид (). Так строится система уравнений типа ().

Напомним, что число , согласно нашему предположению, существенно меньше, чем . Поэтому оно раскладывается в произведение простых чисел, входящих в множество

, и это приводит к сравнению ().

Заметим, что количество () найденных сравнений типа () превосходит число . Следовательно, построенная система неоднородных линейных сравнений относительно содержит сравнений больше, чем неизвестных. Конечно, множество ее решений может при этом быть бесконечным. Одна из правдоподобных гипотез состоит в том, что система все-таки имеет единственное решение, и, решив ее, можно определить дискретные логарифмы всех чисел . На этом завершается первый этап работы алгоритма из [].




Как было отмечено, каждое из чисел, стоящих в правой части сравнения (), не превосходит . Поэтому оно раскладывается в произведение не более простых сомножителей и, следовательно, каждое из сравнений () построенной системы содержит лишь отличных от нуля коэффициентов. Матрица системы сравнений будет разреженной, что позволяет применять для ее решения специальные методы с меньшей оценкой сложности, чем обычный гауссов метод исключения переменных.

Вместо перебора всех допустимых значений в [] предлагается использовать так называемое решето, отбрасывающее все пары этих чисел, для которых правая часть () заведомо не раскладывается в произведение малых простых сомножителей. Для каждого и каждой малой простой степени

Организованная правильным образом, эта процедура одновременно отбирает все нужные пары чисел и дает разложение на простые сомножители правых частей сравнений (32).

Итак, после первого этапа работы алгоритма в нашем распоряжении оказываются дискретные логарифмы всех чисел из множества . Второй этап алгоритма сводит поиск дискретного логарифма числа к поиску логарифмов некоторого множества чисел , не превосходящих по величине . Выбирая случайным образом число не более раз, можно, как показывают вероятностные соображения, найти такое , что вычет раскладывается в произведение простых чисел, меньших . Пусть

такое разложение, где - некоторые простые числа с условием арифметических операций. В результате вычисление дискретного логарифма числа сводится к вычислению дискретных логарифмов для чисел , среднего размера.

Наконец, на последнем этапе производится вычисление логарифмов всех чисел . Пусть - простое число из интервала

Для любых целых чисел

(34)
Отметим, что правая часть этого сравнения не превосходит . Просеивая все числа из указанного интервала, можно найти такие, что числа и правая часть сравнения () состоят из простых сомножителей, не превосходящих . Тогда сравнение () позволяет вычислить . Вычисление при известных уже значениях требует

арифметических операций.

Существуют и другие способы построения соотношений (). В [] для этого используются вычисления в полях алгебраических чисел. В качестве множителей в соотношениях типа () используются не только простые числа, но и простые идеалы с небольшой нормой.

Задача вычисления дискретных логарифмов может рассматриваться также и в полях , состоящих из элементов, в мультипликативных группах классов вычетов , в группах точек эллиптических кривых и вообще в произвольных группах. С литературой по этому вопросу можно ознакомиться по работе [].

Next: 4.9. Заключение

Up: 4. Алгоритмические проблемы теории

Previous: 4.7. Как раскладывают составные

Contents:



Для чего компьютеру нужна криптография?


Пока компьютеры были большими, их обслуживали специально подготовленные инженеры-программисты, системщики, аппаратчики, информационщики, а также операторы и технический персонал. Доступ к хранящейся и обрабатываемой в них информации имел также ограниченный круг людей. Поэтому проблемы защиты информации в основном сводились к повышению надежности работы, дублированию критичной информации и организационным мерам. Позднее было осознано, что наряду с безопасностью данных огромную роль играет также безопасность программного обеспечения и аппаратных средств. Поэтому стали говорить о компьютерной безопасности. Наконец, с появлением автоматизированных систем обработки данных (представляющих собой неразрывное целое из объединенных в сеть компьютеров, средств телекоммуникаций, информационных технологий и распределенных информационных массивов) стали больше говорить об информационной безопасности системы в целом, понимая под этим состояние защищенности всех процессов обработки, хранения и передачи информации в системе.
Естественно, что криптография заняла в этой области подобающее ей место, предоставив массу алгоритмов для закрытия хранимой и передаваемой конфиденциальной информации. Как ни странно, но даже для информационных систем, обрабатывающих только открытую и общедоступную информацию, также не удалось обойтись без криптографических решений. Действительно, можно ли доверять полученным от такой системы данным, если они могут быть легко изменены, модифицированы или даже уничтожены кем-то из пользователей. Например, кому нужна информационная система с недостоверной информацией, или система принятия решений, работа которой основана на случайной или подтасованной информации? Именно криптография предоставляет незаменимый набор средств для обеспечения безопасности работы системы, такие как , , коды аутентификации сообщений и многое другое.
Вместе с тем, как это обычно бывает, при практической реализации даже самых хороших теоретических результатов возникают ``маленькие'' трудности. Чтобы получить представление о том, что это за трудности, проанализируем процесс создания программы для шифрования файлов.
Next: 6.2. Немного теории
Up: 6.1. Вместо введения
Previous: Для чего криптографии нужен
Contents:


Для чего криптографии нужен компьютер?


- одна из древнейших наук. О ней вспоминают всегда, когда возникает необходимость скрывать тайны. Но одним карандашом и бумагой пользоваться достаточно трудоемко и обременительно. И с древнейших времен человек пытается использовать различные орудия, позволяющие облегчить труд шифровальщика. После многовекового использования веревочек, жезлов, полосок, ленточек, планшетов, трафаретов, дисков и т.д. и т.п., криптография в начале ХХ века поставила себе на службу массу механических, пневматических, электрических, а затем и электронных устройств. В 40-х годах она придумала для своих нужд первые электронные вычислители. Появление компьютеров также поначалу было воспринято именно как появление мощнейшего помощника для людей, занимающихся разработкой и анализом алгоритмов шифрования. Кстати, первый компьютер с названием ``Colossus'', в создании которого участвовал математик А. Тьюринг, был разработан в Англии именно для решения задач дешифрования германской шифрмашины ``Enigma'' в самом начале Второй мировой войны. Но компьютеры не облегчили изнуряющий труд криптографа, а только привнесли массу новых проблем. Появились новые виды информации, требующей закрытия, новые области применения криптографических методов, а самое главное - существенно возросли возможности противника по раскрытию применявшихся ранее шифров.
Первые три десятилетия после своего появления компьютеры оправдывали свое название ``вычислитель'' и представляли собой инструмент для создания новых и взлома старых шифров.
В восьмидесятые годы произошла неизбежная переоценка ценностей. Из подсобного средства, вычислителя, компьютер стал центральным звеном для множества различных самостоятельных систем, выполняющих самые разнообразные функции. Это - информационные системы, системы связи и системы управления, системы автоматического проектирования, автоматизированные системы практически для всех областей человеческой деятельности, включая производственную, военную, финансовую, экономическую, медицинскую, и многие другие. Нетрудно догадаться, что и в области криптографии компьютер занял центральное место, взяв на себя большинство функций традиционной криптографической деятельности, включая реализацию криптографических алгоритмов, проверку их качества, генерацию и распределение ключей, автоматизацию работы по анализу перехвата и раскрытию шифров и т.д.

Наконец, сейчас, в конце девяностых годов в связи с появлением глобальных сетей, мы начинаем осознавать неизбежность вхождения в мировое информационное пространство, часто называемое киберпространством, которое стремительно развивается по своим законам, засасывая миллионы новых и новых обитателей. Проваливаясь в него, мы забываем о существовании времени и пространства, теряем грань между реальностью и вымыслом. Самые фантастические идеи находят в нем простое и естественное воплощение, действительное становится виртуальным, а виртуальное действительным. Универсальность, полная совместимость и взаимосвязанность удаленных друг от друга компьютеров позволяют, с одной стороны, реализовать принципиально новые криптографические идеи, а с другой, существенно расширить области применения криптографии.

Вместе с тем, восхищаясь возможностями компьютеров, не надо забывать о простых вещах. Как справедливо заметил американский математик Нил Коблиц - автор книги ``Курс по теории чисел и криптографии'', - выступая на семинаре в Московском университете, системы с открытыми ключами созданы для людей, которые очень сильно не доверяют друг другу, но при этом бесконечно доверяют своим компьютерам.

Next: Для чего компьютеру нужна

Up: 6.1. Вместо введения

Previous: 6.1. Вместо введения

Contents:



Доказательства с нулевым разглашением


Предположим, что Алиса знает доказательство некоторой теоремы и желает убедить Боба в том, что теорема верна. Конечно, Алиса может просто передать доказательство Бобу на проверку. Но тогда впоследствии Боб сможет сам, без помощи Алисы, доказывать третьим лицам эту теорему. А может ли Алиса убедить Боба так, чтобы он не получил при этом никакой информации, которая помогла бы ему восстановить доказательство теоремы? Этим двум, казалось бы взаимно исключающим требованиям, удовлетворяют протоколы доказательства с нулевым разглашением. Последнее понятие было введено Гольдвассер, Микали и Ракоффом в 1985 г. [].

Рассматривается следующая модель протокола. В распоряжении Алисы и Боба имеются вероятностные машины Тьюринга P
и V
соответственно. Вычислительные ресурсы, которые может использовать Алиса, неограничены, в то время как машина V
работает за полиномиальное время. Машины P и V имеют общую коммуникационную ленту для обмена сообщениями. После записи сообщения на коммуникационную ленту машина переходит в состояние ожидания и выходит из него, как только на ленту будет записано ответное сообщение. Машины P и V имеют также общую входную ленту, на которую записано входное слово . Утверждение, которое доказывает Алиса, суть ``'', где - некоторый фиксированный (известный и Алисе, и Бобу) язык. Чтобы избежать тривиальности, язык должен быть трудным (например, NP-полным), иначе Боб сможет самостоятельно проверить, что . По существу, протокол доказательства состоит в том, что Боб, используя случайность, выбирает некоторые вопросы, задает их Алисе и проверяет правильность ответов. Выполнение протокола завершается, когда машина V останавливается, при этом она выдает 1, если доказательство принято, и 0 - в противном случае.

Пусть и - две интерактивные, т.е. взаимодействующие через общую коммуникационную ленту, вероятностные машины Тьюринга. Через обозначается случайная величина - выходное слово машины , когда и работают на входном слове . Через обозначается длина слова .

Определение 4. Интерактивным доказательством для языка

называется пара интерактивных машин Тьюринга такая, что выполняются следующие два условия.


1. (Полнота). Для всех

2. (Корректность). Для любой машины Тьюринга , для любого полинома и для всех достаточно большой длины

Полнота означает, что если входное слово принадлежит языку и оба участника, и Алиса, и Боб, следуют протоколу, то доказательство будет всегда принято. Требование корректности защищает Боба от нечестной Алисы, которая пытается обмануть его, ``доказывая'' ложное утверждение. При этом Алиса может каким угодно образом отклоняться от действий, предписанных протоколом, т.е. вместо машины Тьюринга P использовать любую другую машину . Требуется, чтобы вероятность обмана была в любом случае пренебрежимо малой.



Определение 5. Интерактивный протокол доказательства для языка называется доказательством с абсолютно нулевым разглашением, если, кроме условий 1 и 2, выполнено еще и следующее условие.


3. (Свойство нулевого разглашения). Для любой полиномиальной вероятностной машины Тьюринга

существует вероятностная машина Тьюринга , работающая за полиномиальное в среднем время, и такая, что для всех

Машина

называется моделирующей машиной для . Предполагается, что математическое ожидание времени ее работы ограничено полиномом от длины .
Это означает, что в принципе может, в зависимости от того, какие значения примут используемые в ее работе случайные переменные, работать достаточно долго. Но вероятность того, что время ее работы превысит некоторую полиномиальную границу, мала. Для каждой машины строится своя моделирующая машина; последняя может использовать как подпрограмму. Через обозначается случайная величина - выходное слово машины

, когда на входе она получает слово .

Свойство нулевого разглашения защищает Алису от нечестного Боба, который, произвольно отклоняясь от действий, предписанных протоколом (используя вместо V), пытается извлечь из его выполнения дополнительную информацию. Условие 3 означает, что Боб может при этом получить только такую информацию, которую он смог бы вычислить и самостоятельно (без выполнения протокола) за полиномиальное время.




Приведем в качестве примера протокол доказательства с абсолютно нулевым разглашением для языка ИЗОМОРФИЗМ ГРАФОВ из работы Гольдрайха, Микали и Вигдерсона []. Входным словом является пара графов и . Здесь - множество вершин, которое можно отождествить с множеством натуральных чисел , и - множества ребер такие, что . Графы и называются изоморфными, если существует перестановка на множестве такая, что тогда и только тогда, когда

(обозначается ). Задача распознавания изоморфизма графов - хорошо известная математическая задача, для которой на данный момент не известно полиномиальных алгоритмов. С другой стороны, неизвестно, является ли эта задача NP-полной, хотя есть веские основания предполагать, что не является.

Протокол IG



Пусть - изоморфизм между и . Следующие четыре шага выполняются в цикле раз, каждый раз с независимыми случайными величинами.


  • P выбирает случайную перестановку на множестве , вычисляет и посылает этот граф V.


  • V выбирает случайный бит и посылает его P.


  • Если , то P посылает V перестановку , в противном случае - перестановку .


  • Если перестановка, полученная V, не является изоморфизмом между и , то V останавливается и отвергает доказательство. В противном случае выполнение протокола продолжается.


  • Если проверки п.4 дали положительный результат во всех

    циклах, то V принимает доказательство.

    Заметим, что если в протоколе IG машина P получает изоморфизм в качестве дополнительного входного слова, то ей для выполнения протокола не требуются неограниченные вычислительные ресурсы. Более того, в этом случае P может быть полиномиальной вероятностной машиной Тьюринга.

    Теорема 2. ([]) Протокол IG является доказательством с абсолютно нулевым разглашением для языка ИЗОМОРФИЗМ ГРАФОВ.

    Полнота протокола IG очевидна.

    Для доказательства корректности достаточно заметить, что бит , который V выбирает на шаге 2, указывает P, для какого из графов - или - требуется продемонстрировать изоморфизм с графом . Если и не изоморфны, то может быть изоморфен, в лучшем случае, одному из них. Поэтому проверка п. 4 даст положительный результат с вероятностью в одном цикле и с вероятностью во всех циклах.




    Доказательство свойства нулевого разглашения значительно сложнее. Поэтому мы воспроизводим только основную идею. Прежде всего, заметим, что основная задача машины - получить максимально возможную информацию об изоморфизме между и . Естественно предположить, что она, в отличие от V, будет выдавать в качестве выходного слова не один бит, а всю полученную в результате выполнения протокола информацию, включая содержимое своей случайной ленты, графы и перестановки, полученные соответственно на шагах 1 и 3 протокола IG. Моделирующая машина должна уметь строить такие же случайные строки, графы и перестановки, не зная при этом изоморфизм ! Поэтому пытается угадать тот бит , который будет запросом машины на шаге 2. Для этого выбирает случайный бит , случайную перестановку и вычисляет . Далее запоминает состояние машины (включая содержимое случайной ленты) и вызывает ее как подпрограмму, подавая ей на вход граф . Ответом машины будет некоторый бит . Если , то моделирование в данном цикле завершено успешно, поскольку может продемонстрировать требуемый изоморфизм. Если же , то

    восстанавливает ранее сохраненное состояние машины и повторяет попытку.

    Если в определении свойства нулевого разглашения заменить равенство случайных величин и

    требованием, чтобы их распределения вероятностей ``почти не отличались'', то получится другая разновидность доказательств - доказательства со статистически нулевым разглашением.




    Еще один тип - доказательства с вычислительно нулевым разглашением. В этом случае требуется, чтобы моделирующая машина создавала распределение вероятностей, которое неотличимо от никаким полиномиальным вероятностным алгоритмом (неотличимость здесь определяется аналогично тому, как это делалось в определении псевдослучайного генератора).


    Подчеркнем особо, что во всех трех определениях нулевого разглашения условия накладываются на действия моделирующей машины только на тех словах, которые принадлежат языку.

    Помимо интереса к доказательствам с нулевым разглашением как к нетривиальному математическому объекту, они исследуются также и в связи с практическими приложениями. Наиболее естественный и важный тип таких приложений - (см. главу ). С помощью такого протокола Алиса может доказать Бобу свою аутентичность.




    Предположим, например, что Алиса - это интеллектуальная банковская карточка, в которой реализован алгоритм P, а Боб - это компьютер банка, выполняющий программу V. Прежде чем начать выполнение каких-либо банковских операций, банк должен убедиться в подлинности карточки и идентифицировать ее владельца, или, говоря на языке криптографии, карточка должна пройти аутентификацию. В принципе для этой цели можно использовать приведенный выше протокол IG. В этом случае в памяти банковского компьютера хранится пара графов , сопоставленная Алисе, а на интеллектуальной карточке - та же пара графов и изоморфизм . Предполагается, что, кроме Алисы, этот изоморфизм никто не знает (кроме, быть может, Боба) и поэтому с помощью протокола IG карточка доказывает свою аутентичность. При этом свойство полноты означает, что карточка наверняка докажет свою аутентичность. Свойство корректности защищает интересы банка от злоумышленника, который, не являясь клиентом банка, пытается пройти аутентификацию, используя фальшивую карточку. Свойство нулевого разглашения защищает клиента от злоумышленника, который, подслушав одно или более выполнений протокола аутентификации данной карточки, пытается пройти аутентификацию под именем Алисы. Конечно, в данном случае бессмысленно доказывать, что пара графов принадлежит языку ИЗОМОРФИЗМ ГРАФОВ, поскольку она заведомо выбирается из этого языка. Вместо этого Алиса доказывает, что она знает изоморфизм . Интерактивные доказательства такого типа называются доказательствами знания.

    Для практического применения очень важным свойством протокола IG, как и других протоколов доказательства знания, является то, что алгоритм P, получивший в качестве дополнительного входа изоморфизм , работает за полиномиальное время. Вместо протокола IG можно использовать, вообще говоря, любое другое доказательство с нулевым разглашением, в котором алгоритм P обладает этим свойством. Но для реальных приложений протокол IG, как и большинство подобных протоколов, не эффективен: большое количество циклов, слишком длинные сообщения и т.д. Поиск более эффективных доказуемо стойких протоколов - одно из основных направлений исследований в данной области.

    Next: Литература к главе 2

    Up: 2. Криптография и теория

    Previous: 2.4. Псевдослучайные генераторы

    Contents:



    Еще раз о разделении секрета


    В работе [] со ссылкой на книгу ``Gent und seine schoenheiten'' (Thill-Verlag, Bruessel, 1990) описывается следующий исторический пример. В XIII-XIV веках в г. Генте была построена ратушная башня. В ``секрете'' (secreet), самом надежном помещении башни, хранились уставы и привилегии, имевшие важное значение. Помещение имело две двери, каждая с тремя замками, ключи от которых находились во владении различных цехов. Документы хранились в шкафу, который, в свою очередь, также запирался на три ключа. Один из этих ключей хранился у фогта, а два других - у главного шеффена.
    Мы привели этот пример в разделе, посвященном протоколам разделения секрета, главным образом для того, чтобы показать, что хотя криптографические протоколы - сравнительно молодая отрасль криптографии, задачи, которые решаются с помощью протоколов, возникли очень давно и имеют свою историю.
    Почему ``еще раз о разделении секрета''? В главе разделение секрета рассматривается в основном как математическая, прежде всего комбинаторная, задача. Здесь же мы его обсуждаем как криптографический протокол. При этом предполагается, что читатель знаком с главой .
    В протоколе разделения секрета имеются участников , которых мы будем называть процессорами, и один выделенный участник , называемый дилером (или, иногда, лидером). Протокол состоит из двух фаз.
    На фазе разделения секрета дилер, знающий некоторый секрет , генерирует долей секрета и посылает процессору по защищенному каналу связи. На фазе восстановления секрета любое подмножество из не менее чем процессоров, где - параметр протокола, однозначно восстанавливает секрет, обмениваясь сообщениями по защищенным каналам связи. А любое подмножество из не более чем процессоров не может восстановить секрет (что означают слова ``не может восстановить'' будет пояснено ниже).
    Как и в других типах криптографических протоколов, в протоколе разделения секрета участники, вообще говоря, не доверяют друг другу и каждый из них может оказаться противником. В том числе и дилер. Можно ли обеспечить какую-либо защиту честных участников даже и в этом случае? Безусловно, нечестный дилер может просто саботировать выполнение протокола. Но если дилер пытается обмануть более хитрым способом, то от этого, оказывается, можно защититься следующим образом. Фаза разделения секрета начинается с того, что дилер публикует секрет в ``зашифрованном'' виде (точнее было бы сказать - выполняет привязку к строке , по аналогии с привязкой к биту). С помощью этой информации каждый процессор может проверить, что значение , полученное им от дилера, действительно является долей секрета . Такой протокол называется протоколом проверяемого разделения секрета. В обычных схемах разделения секрета рассматривается пассивный противник, а именно, противником являются не более чем участников, которые, объединив свои доли, пытаются получить какую-либо информацию о значении секрета. На фазе восстановления секрета в протоколе проверяемого разделения секрета действует активный противник: нечестные участники могут преследовать цель сорвать восстановление значения честными участниками, посылая им вместо своих долей секрета любую другую информацию. От протокола требуется, чтобы честные участники, если их по крайней мере , всегда правильно восстанавливали значение .

    Рассмотрим конструкцию протокола проверяемого разделения секрета из работы []. Конструкция основана на задаче дискретного логарифмирования.

    В соответствии со схемой Шамира дилер выбирает случайный полином степени , где , вычисляет ( ) и публикует . После этого для всякого дилер вычисляет и посылает это значение процессору по защищенному каналу. Процессор , проверяя равенство

    убеждается, что - доля секрета . В самом деле,

    Конструкцию протокола для фазы восстановления секрета рассмотрим в наиболее простом случае, когда дилер честный. На этой фазе каждый процессор посылает каждому другому процессору свою долю . Всякий честный участник , получив некоторое значение от , проверяет это значение, как описано выше, и отбрасывает все доли , не прошедшие проверку. Поскольку честных участников не менее , получит по крайней мере правильных долей секрета. Используя алгоритм восстановления секрета из схемы Шамира, восстановит значение .

    В отличие от схем разделения секрета, рассматриваемых в главе , стойкость данного протокола основывается на предположении о вычислительной трудности задачи дискретного логарифмирования. Поэтому, если в обычных схемах разделения секрета требуется, чтобы любое подмножество участников, не составляющее кворума, не получало никакой информации о секрете, то во многих схемах проверяемого разделения секрета такое подмножество лишь ``не может восстановить'' секрет. В том смысле, что для его восстановления требуется решить некоторую гипотетически трудную вычислительную задачу. В рассмотренном выше примере всякий участник мог бы узнать секрет , если бы он умел вычислять дискретные логарифмы.

    Одно из возможных приложений схем разделения секрета - организация хранения криптографических ключей. Свойство проверяемости представляется далеко не лишним для таких приложений. Но круг приложений схем проверяемого разделения секрета существенно шире.

    Предположим, что с помощью описанной выше схемы разделены два секрета и и что оба эти секреты являются числами. Теперь представим себе ситуацию, что после этого потребовалась разделить секрет . Конечно, это может сделать дилер с помощью того же протокола. А могут ли процессоры выполнить то же самое без участия дилера?




    Пусть и - полиномы, которые использовались для разделения секретов и соответственно. Пусть

    и для . Для любого пусть и - доли секретов и , полученные процессором . Ясно, что

    - также полином степени и .

    Поэтому каждый процессор может вычислить долю секрета просто по формуле . Эти доли проверяемы с помощью значений .

    Рабин и Бен-Ор показали [], что выполняя такого рода вычисления над долями секретов, процессоры могут вычислить любую функцию над конечным полем ``проверяемым образом''. Этот результат относится к области протоколов конфиденциального вычисления (secure multi party computation). Типичная задача здесь такая. Требуется вычислить значение функции на некотором наборе значений аргументов . С помощью схемы проверяемого разделения секрета вычисляются доли этих значений. В начале выполнения протокола доля известна процессору и только ему. Протокол должен обеспечивать вычисление значения таким образом, чтобы для некоторого параметра :

    1) в результате выполнения протокола любое подмножество из не более чем процессоров не получало никакой информации о значениях других процессоров (кроме той, которая следует из известных им долей и значения функции

    ;

    2) при любых действиях нечестных участников остальные участники вычисляют правильное значение , если только количество нечестных участников не превосходит .

    Протоколы конфиденциального вычисления, ввиду своей общности, представляют несомненный теоретический интерес. Кроме того, многие типы прикладных криптографических протоколов (например, протоколы голосования) по существу являются частными случаями протоколов конфиденциального вычисления.

    При различных предположениях о процессорах и о сети связи доказан ряд теорем следующего типа: если не превосходит некоторого порогового значения (зависящего от и от предположений), то всякая вычислимая функция имеет протокол конфиденциального вычисления.

    Next: 3.6. Поиграем в ``кубики''.

    Up: 3. Криптографические протоколы

    Previous: 3.4. Протоколы типа ``подбрасывание

    Contents:



    Где взять истинно случайную последовательность?


    На первый взгляд, эта задача очень проста. Можно, например, вычислить случайный адрес памяти и взять оттуда данные. Или можно вычислить случайный номер сектора на диске и взять данные оттуда. Эти данные, бесспорно, будут случайными. Но какое распределение будут иметь члены полученной случайной последовательности? Неизвестно. Если полученные случайные данные представляют собой фрагмент текстового файла, то распределение символов, представляемых байтами файла, будет одно, если это фрагмент машинного кода - совсем другое. Одно можно сказать точно - это распределение почти никогда не будет равномерным. Ниже приведены гистограммы встречаемости символов для различных видов информации.
    Как видите, из всех приведенных гистограмм только последняя более-менее похожа на гистограмму равномерного распределения. Однако, если приглядеться повнимательнее, в ней можно заметить пик вдоль оси (впрочем, этот пик нетипичен для архивов pkzip - он объясняется тем, что выбранный архив включал в себя очень много коротких файлов).
    Конечно, если распределение исходной последовательности задано априорно, путем несложного преобразования эту последовательность можно превратить в распределенную равномерно. Но подсчитать распределение символов для информации, хранимой в памяти и на дисках компьютера, не удается даже в том случае, если известно, откуда эта информация взялась. Посмотрите на гистограмму встречаемости символов в тексте этой главы. А теперь посмотрите на следующую гистограмму.
    Как видите, распределения отличаются довольно сильно. Получается, что если в документе есть картинки, исходное распределение одно, а если нет - совсем другое.
    Кроме того, в осмысленных текстах (в том числе и в текстах exe-файлов, баз данных и т.д.) обязательно присутствуют статистические закономерности более высокого порядка. Если построить гистограмму встречаемости биграмм и триграмм, она будет еще менее похожа на горизонтальную линию (что должно иметь место при равномерном распределении), чем гистограмма встречаемости отдельных символов. Например, в exe-файле, скомпилированном с помощью Visual C, машинный код подавляющего большинства функций (подпрограмм) начинается байтами
    55 8B EC 83 EC2)
    и заканчивается байтами
    8B E5 5D C3.3)
    Поэтому последовательность байтов, полученных из случайного места оперативной памяти или диска, нельзя считать случайной. В такой последовательности наверняка есть внутренние статистические зависимости.
    Next: Так где же взять
    Up: 6.3. Как зашифровать файл?
    Previous: Где взять ключи?
    Contents:


    Где взять ключи?


    Каким должен быть ключ шифрования? Случайным и равновероятным. А как получить случайную и равновероятную последовательность символов? Правильно, с помощью . Написать свой генератор ``случайных'' чисел очень просто. Хорошие по статистическим свойствам последовательности получаются по формуле линейного конгруэнтного метода:


    где - -й член псевдослучайной последовательности; , , - некоторые целые числа.
    Качество псевдослучайной последовательности зависит от выбора чисел , и . Эти числа обязательно должны быть взаимно просты. Есть и другие правила выбора этих коэффициентов, о них можно прочитать в []. В , например, используется следующий генератор псевдослучайной последовательности:

    Как видите, формула для получения очередного ``случайного'' числа рекурсивна - каждый член последовательности зависит от предыдущего. Возникает вопрос: откуда берется первый член? Обычно в качестве берут текущее время с точностью до тика таймера (0,054945 сек.). Если для генерации ключа используется линейный конгруэнтный метод, ключом является последовательность чисел , где

    Предположим, что с помощью линейного конгруэнтного метода сгенерирована последовательность , где каждое есть короткое целое число (16 бит). Созданный ключ представляет собой случайную равновероятную последовательность длиной 256 байт. Оценим, сколько различных вариантов ключа можно получить по данной схеме.
    Зафиксируем значение . Какие значения может принимать ? Только одно значение. Если фиксировано, то значение определено однозначно:

    Значение тоже определено однозначно. Оно равно

    Таким образом, значение однозначно определяет значения всех следующих членов последовательности. Получается, что различных последовательностей
    в точности столько же, сколько различных значений . В нашем примере - короткое целое число, принимающее значения от 0 до
    . Оказывается, что стойкость ключевой системы (число различных вариантов ключа) равна не , а всего лишь , что в раз меньше!
    Получается, что псевдослучайные последовательности в качестве ключей использовать нельзя. А что можно?
    В чем слабость псевдослучайных последовательностей? В том, что они псевдослучайны. Первый член последовательности однозначно определяет остальные. Чтобы ключ был по-настоящему случайным и равновероятным, последовательность должна быть не псевдослучайной, а истинно случайной.
    Next: Где взять истинно случайную
    Up: 6.3. Как зашифровать файл?
    Previous: А можно ли обойтись
    Contents:


    Идеальное разделение секрета и матроиды


    Начнем с определения идеальных СРС. Для этого вернемся к комбинаторному определению совершенной СРС. Следующее определение совершенной СРС [] является даже более общим, чем вероятностное , поскольку условие заменено в нем на более слабое.
    Для произвольного множества обозначим через -матрицу, полученную из матрицы удалением столбцов, номера которых не принадлежат множеству . Пусть обозначает число различных строк в матрице .
    Определение 3.
    Матрица задает БД-совершенную СРС, реализующую структуру доступа , если labeli4


    (4)



    где , если , и
    в противном случае.
    Это определение отличается от
    и тем, что на неразрешенные множества накладывается довольно слабое условие, а именно, если множество строк с данными значениями координат из множества непусто, то все возможные значения секрета встречаются в нулевой координате этих строк (без требований ``одинаково часто'' как в комбинаторном
    или же ``с априорной вероятностью'' как в вероятностном ). Легко видеть, что матрица любой совершенной вероятностной СРС задает БД-совершенную СРС, но обратное неверно.
    Для произвольной комбинаторной СРС, задаваемой матрицей , определим на множествах функцию
    где Легко проверить, что
    для любых множеств и , а условие (4) может быть переписано в виде

    Лемма . Для любой БД-совершенной СРС если и , то .
    Доказательство. По условиям леммы и
    . Следовательно,

    Так как мы предполагаем, что все точки существенные, т.е. для любого найдется подмножество такое, что и , то из леммы вытекает
    Следствие . Для любой БД-совершенной СРС
    для всех .
    Следствие означает, как мы и предупреждали в начале статьи, что для совершенных СРС ``размер'' проекции не может быть меньше ``размера'' секрета. Поэтому БД-совершенная СРС называется идеальной, если для всех .
    Замечание .
    Неравенство справедливо и для совершенных вероятностных СРС, поскольку их матрицы задают БД-совершенные СРС.
    Естественный вопрос состоит в том, для каких структур доступа существуют реализующие их идеальные (вероятностные или комбинаторные) СРС. Как уже отмечалось во введении, наилучший на сегодняшний день ответ использует слово ``матроид''. Напомним определение матроидов и некоторые их основные свойства (см. []).

    Матроидом называется конечное множество и семейство его подмножеств, называемых независимыми (остальные множества называются зависимыми), если выполнены следующие свойства:

    Пример 4.

    Множество - это множество векторов в некотором линейном векторном пространстве, а независимые подмножества - это линейно независимые подмножества векторов.

    Собственно с этого примера и началась теория матроидов, вначале как попытка дать аксиоматическое определение линейной независимости векторов через ``внутренние свойства'', т.е. не апеллируя к понятию вектора. К счастью, попытка не удалась, так как нашлись матроиды, не представимые как линейные (т.е. как системы векторов), а сама теория матроидов разрослась далеко за пределы ``линейной алгебры'' (см. []).

    Пример 5. (матроид Вамоса)



    Рассмотрим следующее множество: и положим , , и . Матроид Вамоса определяется как матроид, в котором множества , , , , , а также все подмножества из пяти или более элементов являются зависимыми. Известно, что этот матроид не является линейным.


    Матроид также можно определить через так называемую ранговую функцию матроида, определяемую как максимальная мощность независимого подмножества . Очевидно, что независимые множества (и только они) задаются условием . Ранговая функция матроида обладает свойствами

    Обратно, пусть некоторая функция обладает свойствами . Назовем независимыми те множества , для которых .

    Тогда эти множества задают матроид, а функция является его ранговой функцией. Возможно также определить матроид через минимальные зависимые множества, называемые циклами. Матроид называется связным, если для любых двух его точек существует содержащий их цикл.

    Теперь мы можем сформулировать основной результат.

    Теорема . ([]) Для любой БД-совершенной идеальной СРС, реализующей структуру доступа , независимые множества, определяемые условием

    , задают связный матроид на множестве

    . Все циклы этого матроида, содержащие точку , имеют вид , где

    .

    Главным в доказательстве теоремы является ``проверка'' целочисленности функции . В самом деле, очевидно обладает остальными свойствами и, следовательно, при условии целочисленности является ранговой функцией и задает матроид. Доказательство этой теоремы и несколько более общих утверждений можно найти в [].




    Отметим, что из второй части утверждения теоремы следует, что разным идеальным СРС, реализующим данную структуру доступа , всегда соответствует один и тот же матроид, поскольку матроид однозначно определяется всеми циклами, проходящими через фиксированную точку (см. []). Тем самым, каждой идеально реализуемой структуре доступа соответствует однозначно определенный матроид.

    В связи с теоремой возникает несколько естественных вопросов. Прежде всего, не порождают ли идеальные СРС все матроиды? Нет, например, матроид Вамоса не может быть получен как матроид идеальной СРС []. С другой стороны, линейные матроиды есть ни что иное как рассмотренные в разделе идеальные одномерные линейные СРС. В связи с этим возникает вопрос о существовании структуры доступа , которую невозможно реализовать в виде идеальной одномерной линейной СРС, но можно в виде идеальной многомерной линейной СРС. Недавно такой пример был построен [], и, значит, мы можем говорить о многомерных линейных матроидах как классе матроидов более общем, чем линейные.

    Итак, идеальных СРС больше, чем линейных матроидов, но меньше, чем всех матроидов. Уточнить, ``насколько больше'', представляется довольно сложной задачей. В частности, существует ли идеально реализуемая структура доступа , которую невозможно реализовать как идеальную линейную многомерную СРС?

    Next: Литература к главе 5

    Up: 5. Математика разделения секрета

    Previous: 5.3. Линейное разделение секрета

    Contents:



    -Я попытка


    Теперь встанем на сторону нападающей стороны и попробуем написать программу для нахождения неизвестного ключа. Пусть у вас есть исходный и закрытый файлы. Если это не так, то надо постараться получить хотя бы общее представление о том, что представляет собой исходный файл: исполняемый код, текст программы на каком-либо языке программирования, текст в кодировке ASCII, ANSI, KOI-8 и т.п. Если даже это неизвестно, то возможность определен ия правильного ключа зачастую вообще становится проблематичной. Но не будем о грустном. Пусть у вас есть оба файла. Воспользуемся написанной ранее программой шифрования и добавим к ней блоки генерации ключей и сравнения полученного зашифрованного текста с имеющимся открытым. Прежде чем запустить на исполнение программу, подумаем, сколько времени она может работать.
    Сначала найдем среднее число знаков текста, которое требуется для отбраковки случайного ключа. Предположим, что наша программа последовательно сравнивает биты текста, полученного шифрованием с помощью случайно выбранного ключа, с битами имеющегося закрытого файла. Если реализованный в программе шифр обладает хорошими свойствами и дает , похожий на случайную последовательность, то по первому биту будет забракована приблизительно половина ключей, по второму - еще четверть, и т.д. В итоге мы получим, что среднее число знаков для отбраковки оценивается бесконечной суммой

    Математики знают, что эта сумма равна двум. Поэтому, как это ни странно, потребуется в среднем всего два бита текста для отбраковки ложного случайного ключа. Это один из первых парадоксов криптографического анализа. А ведь для того, чтобы убедиться в том, что ключ найден правильно, надо расшифровать весь текст.
    Данный результат обнадеживает своей неожиданностью. Поэтому сразу переходим ко второй части задачи и найдем, сколько потребуется в среднем перебрать вариантов ключа до появления искомого. Считаем, что все ключи равноправны. Перенумеруем их и начнем по очереди проверять с помощью нашей программы. На первый взгляд кажется, что от выбора порядка нумерации ключей зависит очень много. Действительно, если у вас есть дар предвидения и вы выбрали такой порядок, что искомый ключ имеет первый номер, то программа сработает уже на первом шаге. Но не будем верить в чудо и найдем среднее число шагов для случайно выбранного порядка. Оно равно


    где - число различных упорядочений множества из ключей, у которых истинный ключ стоит на месте с номером . Так как легко подсчитать, что , то наша сумма равна

    Итак, в среднем придется перебрать чуть больше половины всех ключей.

    Теперь вернемся от математики к суровой действительности. Пусть вы написали великолепную программу, которая проверяет за одну секунду один миллион вариантов ключа. Тогда за час программа переберет 3600000000 ключей, за сутки - 86400000000 ключей, а за год - более 30000000000000. Короче, для перебора ключей шифратора DES вашей программе потребуется в среднем чуть более 1500 лет. Вдохновляющий результат, не правда ли? А теперь подсчитайте, сколько лет потребуется вашей программе для нахождения неизвестного ключа у отечественного алгоритма шифрования ГОСТ 28147, в котором число ключей равно .

    Подобные оценки помогут вам избежать излишеств и правильно выбрать длину ключа для вашей программы.

    А теперь перейдем к решению практических вопросов.

    Next: 6.3. Как зашифровать файл?

    Up: 6.2. Немного теории

    Previous: Удобно ли носить большую

    Contents:



    Э.По, ``Золотой жук''


    Найден пергамент с текстом криптограммы. Для удобства пронумеруем по порядку все символы этого текста:

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
    5 3 # # + 3 0 5 ) ) 6 * ; 4 8 2 6 ) 4


    20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
    # ) 4 # ) ; 8 0 6 * ; 4 8 + 8


    37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
    6 0 ) ) 8 5 ; ; ] 8 * ; : # * 8


    53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
    + 8 3 ( 8 8 ) 5 * + ; 4 6 ( ; 8 8


    70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
    * 9 6 * ? ; 8 ) * # ( ; 4 8 5 ) ;


    87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
    5 * + 2 : * # ( ; 4 9 5 6 * 2 (


    103 104 105 106 107 108 109 110 111 112 113 114 115
    5 * = 4 ) 8 8 * ; 4 0 6


    116 117 118 119 120 121 122 123 124 125 126 127 128
    9 2 8 5 ) ; ) 6 + 8 ) 4 #


    129 130 131 132 133 134 135 136 137 138 139 140 141 142
    # ; 1 ( # 9 ; 4 8 0 8 1 ; 8


    143 144 145 146 147 148 149 150 151 152 153 154 155 156
    : 8 # 1 ; 4 8 + 8 5 ; 4 ) 4


    157 158 159 160 161 162 163 164 165 166 167 168 169
    8 5 + 5 2 8 8 0 6 * 8 1 (


    170 171 172 173 174 175 176 177 178 179 180 181 182
    # 9 ; 4 8 ; ( 8 8 ; 4 ( #


    183 184 185 186 187 188 189 190 191 192 193 194 195
    ? 3 4 ; 4 8 ) 4 # ; 1 6 1


    196 197 198 199 200 201 202 203 204
    ; : 1 8 8 ; # ? ;

    Кроме того, на пергаменте изображены череп и козленок. Главный герой рассказа рассуждал следующим образом. По английски козленок - kid; череп связан с капитаном Киддом, по английски - kidd. Козленок был нарисован на пергаменте в том месте, где ставится подпись. Изображение черепа в противоположном по диагонали углу наводило на мысль о печати или гербе. Капитан Кидд владел несметным богатством. Кидд, насколько мы можем судить о нем, не сумел бы составить истинно сложную криптограмму. По-видимому, это была простая замена. Возникает только вопрос о языке, на котором был написан текст. В данном случае трудностей с определением языка не было: подпись давала разгадку. Игра слов kid и kidd возможна лишь в английском языке.

    Текст криптограммы идет в сплошную строку. Задача была бы намного проще, если бы отдельные слова были отделены пробелами. Тогда можно было бы начать с анализа и сличения более коротких слов, и как только нашлось бы слово из одной буквы (например, местоимение ``я'' или союз ``и'' - для русского языка), начало было бы положено. Но просветов в строке не было.

    Приходится подсчитывать частоты одинаковых символов, чтобы узнать, какие из них чаще, а какие реже встречаются в криптограмме. В результате получилась таблица частот всех символов:

    8 ; 4 ) # * 5 6 ( + 1 0 2 9 : 3 ? ] =
    34 27 19 16 15 14 12 11 9 8 7 6 5 5 4 4 3 2 1 1 1


    В английской письменной речи самая частая буква - e. Далее идут в нисходящем порядке: a, o, i, d, h, n, r, s, t, u, y, c, f, g, l, m, w, b, k, p, q, x, z. Буква e, однако, настолько часто встречается, что трудно построить фразу, в которой она не занимала бы господствующего положения. Итак, уже сразу у нас в руках путеводная нить. Составленная таблица, вообще говоря, может быть очень полезна, но в данном случае она понадобилась лишь в начале работы.

    Поскольку символ 8 встречается чаще других, примем его за букву e английского алфавита. Для проверки этой гипотезы взглянем, встречается ли этот символ дважды подряд, так как в английском языке буква e часто удваивается, например, в словах meet, fleet, speed, seen, seed, been, agree, и т.д. Хотя криптограмма невелика, пара 88 стоит в нем пять раз.

    Самое частое слово в английском языке - определенный артикль the. Посмотрим, не повторяется ли у нас сочетание из трех символов, расположенных в одинаковой последовательности и оканчивающихся символом 8. Если такое найдется, то это будет, по всей вероятности, the. Приглядевшись, находим семь раз сочетание из трех символов ;48. Итак, мы имеем право предположить, что символ ; - это буква t, а 4 - h; вместе с тем подтверждается, что 8 - это действительно e. Мы сделали важный шаг вперед.




    То, что мы расшифровали целое слово, потому так существенно, что позволяет найти границы некоторых других слов. Для примера возьмем предпоследнее из сочетаний этого рода ;48 (позиции 172-174). Идущий сразу за 8 символ ; будет, как видно, начальной буквой нового слова. Выпишем, начиная с него, 6 символов подряд. Только один из них нам незнаком. Обозначим известные символы буквами и оставим свободное место для неизвестного символа (обозначим его точкой) t.eeth, ни одно слово, начинающееся с t и состоящее из 6 букв, не имеет в английском языке окончания th. В этом легко убедиться, подставляя на свободное место все буквы по очереди. Попробуем отбросить две последние буквы и получим t.ee, для заполнения свободного места можно снова взяться за алфавит. Единственно верным прочтением этого слова будет tree (дерево). В таком случае мы узнаем еще одну букву - r, она обозначена символом ( и мы можем прочитать два слова подряд the tree, в дальнейшем эта гипотеза может либо подтвердиться, либо привести к некоторому ``нечитаемому'' фрагменту. В последнем случае следует попытаться восстановить либо слово t.e, либо t.eet, либо слово, целиком включающее в себя t.eeth

    Развиваем успех. Немного далее (186-188) находим уже знакомое нам сочетание ;48. Примем его опять за границу нового слова и выпишем целый отрывок, начиная с двух расшифрованных нами слов. Получаем такую запись:

    the tree ;4(#?34 the

    Заменим уже известные символы буквами:

    the tree thr#?3h the

    а неизвестные - точками:

    the tree thr...h the

    Нет никакого сомнения, что неясное слово - through (через). Это открытие дает нам еще три буквы - o, u и g, обозначенные в криптограмме символами # ? и 3.

    Надписывая над уже определенными символами криптограммы их значения, находим вблизи от ее начала (позиции 54-58) группу символов 83(88, которая читается так egree, это, конечно, слово degree (градус) без первой буквы. Теперь мы знаем, что буква d обозначена символом +. Вслед за словом degree через 4 символа встречаем группу ;46(;88*. Заменим известные символы буквами, а неизвестные - точками th.rtee, по-видимому, перед нами слово thirteen (тринадцать). К известным нам буквам прибавились i и n, обозначенные в криптограмме символами 6 и *.




    Криптограмма начинается так: 53##+. Подставляя буквы и точки, получаем .good, недостающая буква, конечно, a, и, значит, два первых слова будут читаться так: a good (хороший). Определены следующие 11 символов:

    5 + 8 3 4 6 * # ( ; ?
    a d e g h i n o r t u


    На этом анализ Э. По заканчивается. Дальнейшую работу проделаем самостоятельно.

    Четвертый по частоте (16 вхождений) символ ) еще не определен. Возвратимся к диаграмме встречаемости букв английского языка. Среди первого десятка букв этой диаграммы у нас не встретилась лишь буква s. Она - первый претендент на значение символа ). Эта гипотеза подтверждается тем, что вряд ли ) обозначает гласную букву, так как в таком случае мы получили бы ``нечитаемые'' фрагменты

    6 7 8 9 10 11 12
    g . a ) ) i n
    или
    37 38 39 40 41 42
    i . ) ) e a
    То, что символ ) - это буква s, легко проверяется на участке криптограммы с 60-й по 89-ю позиции .and thirteen .inutes north east and Поэтому полагаем, что символ ) - это s. Попутно определилось значение символа 9, это - m.

    Перебирая возможные значения символа 0, стоящего на позициях 7 и 28 криптограммы, убеждаемся в том, что единственно возможным его значением может быть лишь буква l (glass - стекло, hostel - общежитие, гостиница или трактир).

    Определяем, далее, значение символа как v по фрагменту текста в позициях 107-113.

    Теперь на участке текста с 22-й по 70-ю позиции остались неопределенными лишь значения символов ] и :, встретившихся по одному разу. Очевидно, что символ ] - это w, а символ : - это y. Теперь на участке текста с 172-й по 204-ю позиции не выявлено лишь значение символа 1, которое, как нетрудно заметить, может быть лишь буквой f.

    Символ 2, стоящий на позициях 117 и 90, очевидно, заменяет букву b.

    Осталось определить лишь значения символов и =. Небольшой перебор еще неустановленных букв показывает, что символ = - это c, а символ может обозначать одну из букв k, p, q, x или z. Обратившись к словарю, находим единственное подходящее окончание p слова bishop (епископ, слон).




    Таким образом, однозначно определились значения всех 21 символов, встречающихся в криптограмме. Получился следующий открытый текст:

    ``A good glass in the bishop's hostel in the devil's seat twenty one degrees and thirteen minutes northeast and by north main branch seventh limb east side shoot from the left eye of the death's head a bee line from the tree through the shot fifty feet out''.

    В переводе на русский язык: ``Хорошее стекло в трактире епископа на чертовом стуле двадцать один градус и тринадцать минут северо-северо-восток главный сук седьмая ветвь восточная сторона стреляй из левого глаза мертвой головы прямая от дерева через выстрел на пятьдесят футов''.

    Восстановленная простая замена:
    A B C D E F G H I L M N O P R S T U V W Y
    5 2 = + 8 1 3 4 6 0 9 * # ( ) ; ? ] :
    Next: Ж. Верн, ``Путешествие к центру

    Up: 7.2. Шифры замены

    Previous: А. Конан Дойл, ``Пляшущие человечки''

    Contents:



    К задачам четвертой олимпиады


    Исходный текст состоит из 48 букв, следовательно, при зашифровании было использовано три положения решетки полностью и еще три буквы вписаны в четвертом положении. Значит, незаполненные 12 клеток совпадают с вырезами решетки в четвертом положении. Так как текст вписывается последовательно, то неизвестные нам три выреза могут располагаться только в первой строке таблицы и первых пяти клетках второй строки (до первого известного выреза). Считаем, что трафарет лежит в четвертом положении. Учитывая, что в одну клетку листа нельзя вписать две буквы, получаем, что вырезы могут быть только в отмеченных знаком ``?'' местах трафарета (``'' - места известных вырезов):



    ? ?
    ? ?

    Очевидно, что из отмеченных в первой строке двух клеток вырезается только одна (так как они совмещаются поворотом). Получаем два возможных варианта решетки (либо первый ``?'', либо второй ``?'' в первой строке). Читаемый текст получается при втором варианте.
    Ответ: ПОЛЬЗУЯСЬШИФРОМРЕШЕТКАНЕЛЬЗЯОСТАВЛЯТЬПУСТЫЕМЕСТА
    Один из вариантов решения состоит из следующих этапов.
    1. 19=н из второй строки (``19,2 19,5'').
    2. 29=о из третьей строки (``29,н,10'') и 10=а или 10=и.
    3. 14=щ из ``но,14,но''.
    4. 8=д, 2=е, 10=и из ``денно и нощно''.
    Получили текст:


    5. 5=а и 27=з из второй строки.
    6. 17=в 6=п 16=й - последнее слово второй строки - водопой.
    Получили текст:


    7. 21=т 18=у 28=л 20=с из последней строки ``ищут веселой толпой''.
    8. 11=р из ``зве11ей'' первой строки.
    Итак,


    9. 24=г из ``егерей''.
    10. 12=б 3=ю из ``бегают''.
    11. 31=ы 22=ч из ``добычей''.
    Ответ: Бегают по лесу стаи зверей -

    Не за добычей, не на водопой:

    Денно и нощно они егерей

    Ищут веселой толпой.
    Ответ: .
    Занумеруем буквы латинского алфавита последовательно числами от 1 до 24. Пусть - некоторое число от 1 до 24, а - число, в которое переходит на втором этапе. Тогда перестановочность этапов можно записать в следующем виде:


    Это означает, что соседние числа и на втором этапе переходят в соседние же числа и , т.е. второй этап - тоже сдвиг. Последовательное применение двух сдвигов - очевидно тоже сдвиг и остается рассмотреть 24 варианта различных сдвигов. Читаемый текст определяется однозначно. Осложнения, связанные с переходом Z в A, устраняются либо переходом к остаткам при делении на 24, либо выписыванием после буквы Z второй раз алфавита AB...Z.

    Ответ: INTER ARMA SILENT MUSAE
    (интер арма силент музэ - когда гремит оружие, музы молчат).

    Составим возможные варианты переданных букв:
    ГЪЙ АЭЕ БПРК ЕЖЩЮ НМЬЧ СЫЗЛ ШДУ ЦХОТ ЯФВИ
    БШЗ АЫВ АНОИ ГЕЧЬ ЛКЪХ ПЩЕЙ ЦВС ФУМР ЭТАЖ
    ВЩИ БЬЕ БОПЙ ДШЭ МЛЫЦ РЪЖК ЧГТ ХФНС ЮУБЗ
    ГЪЙ ВЭ ВПРК ЕЖЩЮ НМЬЧ СЬЗЛ ШДУ ЦХОТ ЯФВИ
    ДЫК ЮЖ ГРСЛ ЗЪЯ ОНЭШ ТЬИМ ЩЕФ ЧЦПУ ХГЙ
    ЕЬЛ ЯЗ СТМ ЖИЫ ПОЮЩ УЭЙН ЪХ ШЧРФ ЦДК
    Выбирая вторую и последнюю группу букв (где есть короткие колонки букв), определяем слова, им соответствующие: ВЯЗ, ЭТАЖ. В исходных словах 33 буквы, поэтому буквы В, Я, З, Э, Т, А, Ж уже использованы и их можно вычеркнуть из всех колонок:
    ГЪЙ АЭЕ БПРК ЕЖЩЮ НМЬЧ СЫЗЛ ШДУ ЦХОТ ЯФВИ
    БШ НОИ ГЕЧЬ ЛКЪХ ПЩЕЙ Ц С ФУМР ЭТАЖ
    ЩИ БОПЙ ДШ МЛЫЦ РЪ К ЧГ ХФНС
    ГЪЙ В

    ПРК Е Щ НМЬЧ СЬ Л ШДУ ЦХО
    ГРСЛ Ъ ОН

    ЬИМ ЩЕФ ЧЦПУ
    ЕЬЛ ЯЗ С М ИЫ ПО

    У ЙН ЪХ ШЧРФ
    Из нескольких вариантов, например, в третьей группе:
    ГНОЙ ГНОМ ГРОМ

    выбираем варианты так, чтобы каждая буква использовалась один раз. Продолжая таким образом, получим ответ.

    Ответ:БЫК ВЯЗ ГНОЙ ДИЧЬ ПЛЮЩ СЪМ ЦЕХ ШУРФ ЭТАЖ

    Заметим, что для всех натуральных . Складывая почленно эти равенства при

    , получим . По условию . Следовательно, справедливо соотношение .

    Ясно, что при расшифровании так же, как и при зашифровании, вместо чисел , , , , , , можно воспользоваться их остатками от деления на 30. Так как для каждого целого неотрицательного




    где - некоторое целое число, то получаем следующие остатки при делении чисел на 30:
    0 3 12 3 12 15 18
    Заключительный этап представлен в таблице:
    шифрованное сообщение К Е Н З Э Р Е
    числовое шифрованноесообщение 9 5 12 7 27 15 5
    шифрующий отрезок 0 3 12 3 12 15 18
    числовое исходное сообщение 9 2 0 4 15 0 17
    исходное сообщение К В А Д Р А Т
    Ответ:

    .

    Next: ...к задачам пятой олимпиады

    Up: 7.6. Указания и решения

    Previous: ...к задачам третьей олимпиады

    Contents:



    К задачам девятой олимпиады


    а) Для доказательства достаточно указать хотя бы одну последовательность из 33 различных букв, сумма которой с русским алфавитом из 33 букв не содержит одинаковых букв. В качестве искомой последовательности возьмем сам алфавит. Докажем, что сумма алфавита с самим собой не содержит одинаковых букв. Пусть и - порядковые номера различных букв алфавита. Тогда по определению сложения букв достаточно показать, что числа и имеют разные остатки от деления на 33. В самом деле, если бы они были одинаковы, то число делилось бы на 33 без остатка. В силу того что
    , разность также делилась бы на 33 без остатка, что невозможно. Утверждение пункта а) доказано.
    Замечание. Утверждение пункта а) остается в силе для любого алфавита из нечетного числа букв.
    б) При сложении двух последовательностей сумма порядковых номеров всех букв получаемой при этом последовательности и сумма порядковых номеров всех букв обоих слагаемых имеет один и тот же остаток от деления на 26. Значит, разность упомянутых сумм должна делиться на 26 без остатка. Докажем утверждение пункта б) методом от противного. В самом деле, если такая последовательность из 26 различных букв существует, то упомянутая разность равна сумме порядковых номеров букв алфавита. Однако сумма
    при делении на 26 имеет остаток 13. Это доказывает утверждение пункта б).
    Замечание. Утверждение пункта б) остается в силе для любого алфавита из четного числа букв.
    Представляет интерес доказательство пункта б), предложенноеучастниками олимпиады.
    При делении на любое четное число суммы двух четных или двух нечетных чисел получается четный остаток, а при делении суммы четного и нечетного чисел - нечетный остаток.
    Соответствующие буквы складываемых последовательностей могут быть как одинаковой, так и различной четности. (Для краткости мы называем букву четной, если ее номер четен, и нечетной - если номер нечетен.) Будем решать задачу от противного. Предположим, что требуемая последовательность существует. Всего в сложении участвуют 52 буквы. Пар букв одинаковой и различной четности должно быть одинаковое количество, а именно 13 (так как в результате сложения должно получиться 13 четных и 13 нечетных букв). Пары букв различной четности включают в себя 26 букв. Оставшиеся 26 букв входят в 13 пар букв одинаковой четности. Однако, 13 пар букв одинаковой четности не могут содержать одинаковое количество четных и нечетных букв (так как 13 - нечетное число). Полученное противоречие доказывает утверждение пункта б).

    В этой задаче условимся писать , если числа и имеют одинаковые остатки при делении на 33. Пусть - номер первой буквы искомой последовательности. Эту букву указанное число раз прибавили к букве К, в результате получили букву А. Запишем соответствующее уравнение:

    (1)
    Имеем следующую цепочку соотношений:

    Уравнение () принимает вид: , или

    (2)
    Пользуясь арифметикой остатков, несложно составить следующую таблицу
    А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф
    17 1 18 2 19 3 20 4 21 5 22 6 23 7 24 8 25 9 26 10 27 11
    Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я
    28 12 29 13 30 14 31 15 32 16 0
    Здесь под каждой буквой подписан остаток от деления на 33 результата умножения ее номера на 17. Как видно из таблицы, уравнение (



    К задачам первой олимпиады


    Все клетки квадрата размера разобьем на непересекающиеся группы по четыре клетки в каждой.



    1 2 3 4 5 1
    5 6 7 8 6 2
    4 8 9 9 7 3
    3 7 9 9 8 4
    2 6 8 7 6 5
    1 5 4 3 2 1

    Отнесем клетки к одной и той же группе, если при каждом повороте квадрата до его самосовмещения они перемещаются на места клеток этой же группы. На рисунке показано такое разбиение на группы всех клеток квадрата , причем клетки одной группы помечены одной и той же цифрой. Всего таких групп будет (целое, так как - четное число). При наложении трафарета на квадрат ровно одна клетка из каждой группы окажется под его вырезами. Каждому трафарету поставим в соответствие упорядоченный набор всех клеток из таких групп, оказавшихся под вырезами трафарета при наложении его на квадрат помеченной стороной вверх. Такое соответствие является взаимнооднозначным, поскольку каждому ключу будет однозначно соответствовать упорядоченный набор из клеток (по одной из каждой группы), вырезанных в трафарете, и наоборот. Всего таких наборов . В самом деле, существует ровно четыре различных варианта выбора клетки из каждой группы независимо от выбранных клеток из других таких групп. Таким образом, число различных ключей шифра ``поворотная решетка'' при четных значениях равно .
    Легко видеть, что . Отсюда , где - корни многочлена . Получаем


    Буква ш.с. Ф В М Е Ж Т И В Ф Ю
    Номер 22 3 14 7 8 20 10 3 22 32


    Номер 20 1 12 5 6 18 8 1 20 30
    Буква о.с. Т А К Д Е Р Ж А Т Ь

    Ответ: ТАКДЕРЖАТЬ
    Ответ: начиная с 54.
    Разложим числа и на простые множители: ;
    . Обозначим буквой число , равное произведению . Найдем все его делители вида:
    , где числа , , и принимают только значения 0 и 1. Тогда, как нетрудно видеть, числа и окажутся взаимно простыми. Полагая и , получим все искомые пары . В самом деле, в указанных выше условиях наибольший общий делитель такой пары равен , а ее наименьшее общее кратное равно . Таким образом, искомое число упорядоченных пар совпадает с числом всех делителей вида: , которое равно числу всех упорядоченных наборов длины 4 и состоящих только из 0 и 1. Число всех таких наборов равно , так как для каждого места в наборах существует ровно 2 варианта его значений независимо от значений на других местах. В общем случае число представляется в виде , где ,,..., - различные простые числа, а ,,..., - натуральные числа. Число всех делителей вида:

    , где числа ,,..., принимают только по два значения (0 и соответствующий натуральный показатель степени в представлении числа ), равно , где - число всех простых делителей числа . Если число различных простых множителей в каноническом разложении числа равно , то число различных упорядоченных пар равно .

    Ответ: 16 пар (пары и разные). В общем случае число упорядоченных пар равно , где - число всех простых делителей .

    Из последней строчки легко заметить, что Ш=0. Тогда из первого столбца находим, что И=1. Затем из последнего столбца находим Ф=2. Итак,

    Из средней строки ясно, что Н$" width="16" height="28" >Е. Из первого столбца находим Е=7. Из средней строки можно вычислить значения Н и З: Н=8 и З=4. Получим

    Далее, последовательно вычисляем значения: А=5,Ы=9, М=6, Р=3. Расставим буквы в порядке возрастания их цифровых значений и получим текст ШИФРЗАМЕНЫ

    Ответ: ШИФРЗАМЕНЫ

    Ответ: например, .

    Обозначим - набор , выписанный в обратном порядке.

    В общем случае можно показать, что множество искомых наборов состоит из слов вида:

    Next: ...к задачам второй олимпиады

    Up: 7.6. Указания и решения

    Previous: 7.6. Указания и решения

    Contents:



    К задачам пятой олимпиады


    Указание. Найдите допустимые варианты для остатков от деления неизвестных и на 7. Таких вариантов будет восемь. Учитывая принадлежность неизвестных к заданному диапазону, найдите допустимые варианты для (19 вариантов). Для каждой пары найдите . В диапазон попадают только три решения: (12,16,11), (13,17,17), (13,18,12).
    Так как при записывании сообщения в таблицу пробелы опускались, можно сделать вывод, что столбцы, содержащие пробел в последней клетке, до перестановки стояли в конце таблицы. Таким образом, столбцы можно разбить на две группы, как показано на рис. . При этом для получения исходного текста потребуется переставлять столбцы только внутри групп.


    Рис. 17.


    Я Н Л В Р А Л О Е Г О М З Е
    Й Л Т А Ф Ы И П И О Г Е Б Р
    Ч Р Д Ч Е С М О К И Н Т К О
    Н У Л А Р Е Б Ы Е И О Н Ы Д
    Ы Т Д О М П П Т А И П Т З Л
    И К С И Т Ч Н О Е Л У Л Т Ж

    К Е Т Р И Я
    Л Е У О Д О
    И Н Д Х И Е
    Е Ы Е З Н Ч
    Е Щ В Н Я С
    - - - - - -

    Естественно предположить, что сообщение оканчивалось точкой. Поэтому на третьем с конца месте в первой группе должен быть столбец, оканчивающийся на Т, на втором - на Ч, на последнем - на К. Получаем два варианта (рис. ), из которых первый является явно ``нечитаемым''.



    Рис. 18.


    Р А Н З А Н Я Л В Р Л О Е Г О М Е
    Ф Ы Л Б Ы Л Й Т А Ф И П И О Г Е Р
    Е С Р К С Р Ч Д Ч Е М О К И Н Т О
    Р Е У Ы Е У Н Л А Р Б Ы Е И О Н Д
    М П Т З П Т Ы Д О М П Т А И П Т Л
    Т Ч К Т Ч К И С И Т Н О Е Л У Л Ж



    Рис. 19.


    З А Н Я Т И Е К Р
    Б Ы Л О У Д Е Л О
    К С Р Е Д И Н И Х
    Ы Е У Ч Е Н Ы Е З
    З П Т С В Я Щ Е Н
    Т Ч К - - - - - -

    Таким образом, удалось зафиксировать последние три столбца первой группы. Переставляя столбцы второй группы, ищем ``читаемые'' продолжения зафиксированных столбцов (рис. ). Действуя далее аналогичным образом с оставшимися столбцами первой группы, достаточно легко получаем исходное сообщение.

    Ответ:
    Д О Л Г О Е В Р Е М Я З А Н Я Т И Е К Р
    И П Т О Г Р А Ф И Е Й Б Ы Л О У Д Е Л О
    М О Д И Н О Ч Е К Т Ч К С Р Е Д И Н И Х
    Б Ы Л И О Д А Р Е Н Н Ы Е У Ч Е Н Ы Е З
    П Т Д И П Л О М А Т Ы З П Т С В Я Щ Е Н
    Н О С Л У Ж И Т Е Л И Т Ч К
    Во втором случае известны пары цифр, которыми шифруются буквы ``р'', ``е'', ``м'', ``о'', ``н'', ``т'', а в первом - пары цифр для тех же букв, за исключением буквы ``н''.

    Ответ: во втором случае легче.

    Ответ: 481.

    Можно заметить, что последовательность букв МОСКВА входит как подпоследовательность в каждый из шифртекстов первой тройки:
    й МывОт СьлКъгВц Аяя
    укМапОч Ср Кщ Вз Ах
    ш МфэОгчСйъКфьВыеАкк

    На основе этого наблюдения можно предположить, что шифрование заключается в следующем. В каждый промежуток между буквами исходного сообщения (начало и конец также считаются промежутками) вставляются одна либо две буквы в соответствии с известным только отправителю и получателю ключом.

    Очевидно, что первая буква сообщения должна попасть на 2-е или 3-е место шифрованного текста. Сравнивая буквы, стоящие на указанных местах в подлежащих расшифрованию криптограммах, делаем вывод, что одно и то же исходное сообщение соответствует первому и третьему шифртексту и что первая буква этого сообщения - П.

    Рассуждая далее аналогичным образом, заключаем, что второй буквой повторяющегося сообщения является О (сопоставили ОИ из 1-й криптограммы и ИО из 3-й) и так далее. В итоге получим, что первой и третьей криптограмме соответствует исходное сообщение
    ПОВТОРЕНИЕМАТЬУЧЕНИЯ

    Теперь расшифруем вторую криптограмму. Первой буквой сообщения могут быть только С или И. Далее, подбирая к каждой из них возможные варианты последующих букв и вычеркивая заведомо ``нечитаемые'' цепочки букв, получим:
    СЕ, СМ, ИМ, ИГ

    СЕГ, сео, СМО, СМР, ИМО, ИМР, ИГР, игт
    сегр, сегт, СМОТ, СМОК, смрк, смрр, ИМОТ, ИМОК,
    имрк, имрр, игрк, игрр




    СМОТР, СМОТО, СМОКО, смокм, ИМОТР, ИМОТО, ИМОКО, имокм

    СМОТРМ, СМОТРИ,
    смотои, смотот, смокои, смокот, имотрм, имотри,
    имотои, имотот, имокои, имокот

    СМОТРИВ, СМОТРИА

    СМОТРИВВ, СМОТРИВК, СМОТРИАК, СМОТРИАН и так далее.

    В итоге получим исходное сообщение СМОТРИВКОРЕНЬ.

    Ответ: 1,3 - ПОВТОРЕНИЕМАТЬУЧЕНИЯ

    2 - СМОТРИВКОРЕНЬ

    5.7. Обратив внимание на то, что некоторые символы в тексте условий задач пятой олимпиады набраны выделенным шрифтом, и выписав эти символы в порядке их следования, получаем текст:
    задачасемьпояснитекаквынашлитекстзадачи

    Next: ...к задачам шестой олимпиады

    Up: 7.6. Указания и решения

    Previous: ...к задачам четвертой олимпиады

    Contents:



    К задачам седьмой олимпиады


    Для того, чтобы сохранилась связь при выходе из строя любых двух узлов, необходимо, чтобы в каждый узел входило не менее трех линий связи. Ситуация


    недопустима, ибо при выходе из строя узлов и узел становится недоступным. Значит, всего линий должно быть не менее
    .
    Вот два примера, удовлетворяющие условиям задачи с 15-ю линиями связи:


    Приведем доказательство для первого примера. Если вышли из строя два узла на одном пятиугольнике, то связь сохранится через другие пятиугольники. Если вышли из строя по одному узлу на разных пятиугольниках, то связь сохранится по линиям, соединяющим эти пятиугольники.
    Ответ: 15.
    Процедура зашифрования может быть полностью описана квадратной таблицей . На пересечении строки с номером и столбца с номером записываем цифру, в которую при зашифровании переходит цифра , если она стоит в пароле после цифры . Из однозначности расшифрования следует, что в каждой строке каждая цифра встречается ровно один раз.
    Обозначим через и зашифрованные пароли и два известных пароля в порядке, определяемом условием задачи. Процедура зашифрования сохраняет длину, поэтому и не могут соответствовать ни , ни . Предположив, что соотвествует , получим часть таблицы, в которой в одной строке две одинаковые цифры. Это означает, что предположение неверно. Составляя таблицы, убеждаемся, что не шифруется ни в , ни в , ни в . В результате таких рассуждений остается только один вариант перехода , . Заполнение таблицы будет следующим:



    0 1 2 3 4 5 6 7 8 9
    0 5
    1 3
    2 4 3 7 8
    3 7
    4 2
    5 3
    6
    7 4
    8 1 9
    9

    0 1 2 3 4 5 6 7 8 9
    0 6 5
    1 3
    2 4 3 7 0 6 2 5 8 9
    3 3 7
    4 2
    5 3 7
    6
    7 4
    8 1 9
    9 1

    Очевидно, что в строке с номером 2 в последней клетке стоит 1. Знание этой таблицы позволяет однозначно расшифровать : получится 5830829. Пароли, соответствующие , , , , восстанавливаются не полностью.

    Ответ: полностью можно расшифровать только 5393511, получится 5830829.

    Сообщение состоит из буквы. Поэтому или (при и - получается нечитаемый текст). При не получается осмысленного текста при всех шести возможных вариантах перестановки букв (, ). Рассмотрим случай :
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
    Б Т И П Ч Ь Л О Я Ч Ы Ь Т О Т П У
    Н Т Н О Н З Л Ж А Ч О Ь О Т У Н И
    У Х Н И П П О Л О Ь Ч О Е Л О Л С
    Соседние буквы при перестановке переходят в буквы, отстоящие друг от друга на одинаковое расстояние: буква на -м месте переходит на место, определяемое остатком от деления на 17, а буква на -м месте - на место, определяемое остатком от деления на 17. Это верно для любого . Поэтому есть всего 16 вариантов переходов соседних букв (исходный текст нечитаем), которые определяют однозначно переходы всех остальных букв. Перебирая их, получаем нечитаемые тексты во всех случаях, кроме одного, который дает текст:
    Ч И Т Ь П Я Т Ь Ч Т О Б Ы П О Л У
    Ч Н О З Н А Т Ь Н У Ж Н О О Т Л И
    Ь Н Е П Л О Х О П О Л У Ч И Л О С
    Из трех вариантов начала текста легко определяется истинный вариант.

    Ответ:
    ЧТОБЫПОЛУЧИТЬПЯТЬНУЖНООТЛИЧНОЗНАТЬПОЛУЧИЛОСЬНЕПЛОХО

    Последовательность обхода доски показана на рисунке:
    Ответ:

    Кавалергардов век недолог

    И потому так сладок он.

    Труба трубит, откинут полог...

    Из однородности всех членов следует, что неравенство эквивалентно неравенству 1/4$" width="181" height="33" > при условии , 0$" width="42" height="28" >, 0$" width="40" height="29" >, 0$" width="40" height="28" >.

    Пусть - минимальное из чисел (. Тогда

    Находим минимум квадратного трехчлена с параметром и положительным коэффициентом при . Минимум достигается в точке , при этом значение будет положительным.




    Если мелом с квадратным сечением нарисовать на доске отрезок прямой так, чтобы стороны сечения были параллельны краям доски, то площадь полученной линии будет равна площади ступенчатой линии с такими же концами (см. рис. ).

    Если на доске нарисовать некоторый (выпуклый) многоугольник, то найдутся такие граничные ``точки'' этого многоугольника, которые являются ближайшими к одному из краев доски. Площадь границы прямоугольника, содержащей все такие ``точки'', равна площади границы нарисованного выпуклого многоугольника (см. рис. ).



    Рис. 20.



    Рис. 21.

    Такой прямоугольник назовем окаймляющим. Ясно, что площадь окаймляющего прямоугольника не меньше площади соответствующего многоугольника. Значит, для любого многоугольника данной площади найдется прямоугольник такой же площади, но с площадью границы не большей, чем площадь границы исходного многоугольника.

    Если многоугольник со сторонами и имеет площадь 10000 см, то площадь его границы равна

    Минимум достигается в случае, когда возводимое в квадрат выражение равно 0. В этом случае , что влечет . Таким образом, наименьшую площадь границы, равную 404 см, имеет квадрат со стороной 1 м.

    Ответ: квадрат со стороной 1 м; площадь его границы - 404 см.

    Если группа цифр, из которой образуются числа, состоит из цифр, то существует ровно различных чисел, для записи которых используются все цифры группы ровно по одному разу. Группу из цифр будем обозначать .

    Поскольку в сообщении отсутствуют цифры 2 и 9, эти цифры образуют либо две группы по одной цифре, либо одну группу из двух цифр. В обоих случаях эти цифры могут быть использованы для зашифрования ровно двух букв алфавита.

    Так как , то

    .

    Если , то из сообщения находим:

    а) , , либо

    б) , , .
    Случай а Случай б Случай а Случай б Случай а Случай б
    А 2 (4) 0 К 1738 1738 Х 7183 7183
    Б 4 (29) 2 (29) Л 1783 1783 Ц 7318 7318
    В 9 (56) 9 (92) М 1837 1837 Ч 7381 7381
    Г 56 (65) 456 Н 1873 1873 Ш 7813 7813
    Д 65 (92) 465 О 3178 3178 Щ 7831 7831
    Е 506 546 П 3187 3187 Ъ 8137 8137
    605 564 Р 3718 3718 Ы 8173 8173
    Ж 650 645 С 3781 3781 Ь 8317 8317
    З 650 654 Т 3817 3817 Э 8371 8371
    И 1378 1378 У 3871 3871 Ю 8713 8713
    Й 1387 1387 Ф 7138 7138 Я 8731 8731
    <


    Сообщение после расшифрования имеет вид: а) ЯАЗЧ или б) ЯДАЧ, т.е. не читается.

    Если , то из сообщения находим ,

    . В этом случае таблица замены букв числами имеет вид:
    А 1 465 Л 783 С 4560 Ч 5460 Э 6450
    Б 2(29) Ж 546 М 837 Т 4605 Ш 5604 Ю 6504
    В 9(92) З 564 Н 873 У 4650 Щ 5640 Я 6540
    Г 378 И 645 О 4056 Ф 5046 Ъ 6045
    Д 387 Й 654 П 4065 Х 5064 Ы 6054
    Е 456 К 738 Р 4506 Ц 5406 Ь 6405
    Сообщение легко прочитать: НАУКА.

    Next: ...к задачам восьмой олимпиады

    Up: 7.6. Указания и решения

    Previous: ...к задачам шестой олимпиады

    Contents:



    К задачам шестой олимпиады


    Так как каждый из 1997 абонентов связан ровно с другими, то общее число направлений связи равно . Отсюда общее число связанных пар абонентов равно , так как каждая связанная пара имеет ровно 2 направления связи. Поскольку число должно быть целым, а число 1997 - нечетное, то число должно быть четным.
    Докажем, что для каждого существует система связи из 1997 абонентов, в которой каждый связан ровно с другими. В самом деле, расположив всех абонентов на окружности и связав каждого из них с ближайшими к нему по часовой стрелке и с ближайшими к нему против часовой стрелки, получим пример такой сети связи.
    Покажем, что на диагонали присутствуют все числа от 1 до 1997. Пусть число не стоит на диагонали. Тогда, в силу симметрии таблицы, число встречается четное количество раз. С другой стороны, так как число по одному разу встречается в каждой строке, всего в таблице чисел нечетное количество (1997). Получили противоречие.
    Всего на диагонали 1997 клеток, поэтому каждое число из множества
    встретится на диагонали ровно по одному разу. Вычисляя сумму арифметической прогрессии, находим ответ.
    Ответ: 1995003.
    Ответ: ШЕСТАЯОЛИМПИАДАПОКРИПТОГРАФИИПОСВЯЩЕНАСЕМИДЕСЯТИ

    ПЯТИЛЕТИЮСПЕЦИАЛЬНОЙСЛУЖБЫРОССИИ
    Указание. Пусть некоторая буква при зашифровании первым способом заменялась на букву . Тогда количество повторов буквы в первой криптограмме будет равно числу повторов буквы во второй криптограмме.
    а) Определим моменты остановок после начала шифрования. Для этого каждой букве русского алфавита припишем ее порядковый номер: А - 0, Б - 1, и т.д. Тогда буквам из шифруемого слова будут соответствовать номера: О - 15, Л - 12, И - 9, М - 13, П -16, А - 0, Д - 4. Моменты остановок будем указывать числом одношаговых (на один зубец) поворотов I колеса до соответствующей остановки.



    # остановки 1 2 3 4 5 6 7 8 9
    Буква I колеса О Л И М П И А Д А
    Число одношаговых поворотовот начала до остановки 15 45 75 79 82 108 132 136 165
    Цифра II колеса 5 5 5 1 8 2 8 4 5
    Цифра III колеса 1 2 5 2 5 3 6 3 4
    <

    К задачам шестой олимпиады


    Так как каждый из 1997 абонентов связан ровно с другими, то общее число направлений связи равно . Отсюда общее число связанных пар абонентов равно , так как каждая связанная пара имеет ровно 2 направления связи. Поскольку число должно быть целым, а число 1997 - нечетное, то число должно быть четным.
    Докажем, что для каждого существует система связи из 1997 абонентов, в которой каждый связан ровно с другими. В самом деле, расположив всех абонентов на окружности и связав каждого из них с ближайшими к нему по часовой стрелке и с ближайшими к нему против часовой стрелки, получим пример такой сети связи.
    Покажем, что на диагонали присутствуют все числа от 1 до 1997. Пусть число не стоит на диагонали. Тогда, в силу симметрии таблицы, число встречается четное количество раз. С другой стороны, так как число по одному разу встречается в каждой строке, всего в таблице чисел нечетное количество (1997). Получили противоречие.
    Всего на диагонали 1997 клеток, поэтому каждое число из множества
    встретится на диагонали ровно по одному разу. Вычисляя сумму арифметической прогрессии, находим ответ.
    Ответ: 1995003.
    Ответ: ШЕСТАЯОЛИМПИАДАПОКРИПТОГРАФИИПОСВЯЩЕНАСЕМИДЕСЯТИ

    ПЯТИЛЕТИЮСПЕЦИАЛЬНОЙСЛУЖБЫРОССИИ
    Указание. Пусть некоторая буква при зашифровании первым способом заменялась на букву . Тогда количество повторов буквы в первой криптограмме будет равно числу повторов буквы во второй криптограмме.
    а) Определим моменты остановок после начала шифрования. Для этого каждой букве русского алфавита припишем ее порядковый номер: А - 0, Б - 1, и т.д. Тогда буквам из шифруемого слова будут соответствовать номера: О - 15, Л - 12, И - 9, М - 13, П -16, А - 0, Д - 4. Моменты остановок будем указывать числом одношаговых (на один зубец) поворотов I колеса до соответствующей остановки.



    # остановки 1 2 3 4 5 6 7 8 9
    Буква I колеса О Л И М П И А Д А
    Число одношаговых поворотовот начала до остановки 15 45 75 79 82 108 132 136 165
    Цифра II колеса 5 5 5 1 8 2 8 4 5
    Цифра III колеса 1 2 5 2 5 3 6 3 4
    <

    К задачам третьей олимпиады


    Если каждый из 993 абонентов связан с 99 абонентами, то для этого потребуется линий связи, которое не может быть целым числом.
    Ответ: нельзя.
    Несложно заметить, что рассматриваемый шифр обладает тем свойством, что при зашифровании разные буквы заменяются разными. Следовательно, при зашифровании разных слов получаются разные слова. С другой стороны, одинаковые буквы заменяются на одинаковые независимо от цикла шифрования, так как используется один и тот же ключ. Следовательно, при зашифровании одинаковых слов получаются одинаковые слова. Таким образом, число различных слов, которые можно получить в указанном процессе шифрования с начальным словом СРОЧНО, совпадает с наименьшим номером цикла шифрования, дающем это начальное слово.
    Так как буква С повторяется в каждом цикле шифрования, номер которого кратен 5, а буквы Р, О, Ч, Н - в каждом цикле, номера которых кратны 13, 7, 2 и 3 соответственно, то слово СРОЧНО появится впервые в цикле с номером, равным
    Ответ: 2730.
    Если символы одного отрезка занумеровать последовательно числами от 1 до 12, то после передачи его из А в Б символы расположатся в порядке (2,4,6,8,10,12,1,3,5,7,9,11), а после передачи этого отрезка (замена символов не меняет порядка) из Б в В - в порядке (4,8,12,3,7,11,2,6,10,1,5,9). Переставим символы перехваченных отрезков в соответствии с их номерами до передачи из пункта А. Получим отрезки вида:



    Л П Г С Ж Н Ж О О Б Т -
    Е С К Р У П Д С Б Х К Т
    Ю У П - О Б Ф Е Б - П -
    Л Ж Е С Ж У О П Л У К -
    Щ К Х С П Г Б М Ы О Э Ц
    Л К Л У Ж Н - Л Г Т И К

    Поскольку в пунктах А и Б одинаковые буквы заменялись одинаковыми, а разные - разными, то найденные отрезки можно рассматривать как замену одинаковых символов исходного текста одинаковыми, а разных - разными. Сравнивая места одинаковых букв слова КРИПТОГРАФИЯ и места одинаковых символов в отрезках, находим, что слово КРИПТОГРАФИЯ зашифровано во втором отрезке. Это дает возможность найти исходное сообщение, используя гипотезы о частых буквах русского языка и смысле исходного сообщения.

    Ответ:
    С О В Р Е М Е Н Н А Я -
    К Р И П Т О Г Р А Ф И Я
    Э Т О - Н А У К А - О -
    С Е К Р Е Т Н О С Т И -
    Ш И Ф Р О В А Л Ь Н Ы Х
    С И С Т Е М - С В Я З И
    Докажем, что 20 является периодом рассматриваемой последовательности. Заметим, что у двух натуральных чисел и совпадают цифры единиц тогда и только тогда, когда их разность делится на 10. Таким образом, мы достигнем цели, если докажем, что разность делится на 10 для всех натуральных значений . Исходя из того, что делится на , получаем, что

    делится на . Кроме того, делится на для всех 1$" width="43" height="28" >. Вместе с тем,

    где каждое из слагаемых делится на 2 (так как содержит произведение ) и делится на 5 (поскольку первое слагаемое есть произведение пяти последовательных чисел, а второе содержит множитель 5). Следовательно, делится на 10. Число

    делится на 10, так как каждое из слагаемых делится на 10.

    Проверим, что 20 является наименьшим периодом. Выписывая первые 20 значений последовательности , , ...
    1 4 7 6 5 3 6 9 0 1 6 3 6 5 6 7 4 9 0

    легко убедиться, что она не имеет периода меньшей длины.

    Для того, чтобы найти исходное сообщение, найдем сначала цифровое сообщение, полученное из него с помощью таблицы замены. Согласно этой таблице на нечетных местах цифрового образа исходного сообщения могут быть только цифры 0, 1, 2 и 3. Последовательно рассматривая эти значения для каждого нечетного места цифрового сообщения с использованием соответствующей цифры шифрованного сообщения, найдем соответствующие варианты значений цифр шифрующего отрезка. Для этого вычислим остатки от деления разностей цифр шифрованного и варианта цифрового сообщений:
    порядковый номер места 1 3 5 7 9 11 13 15 17 19 21 23 25 27
    шифрованное сообщение 2 3 8 7 1 4 8 6 6 0 1 3 5 8
    вариант 0 для 2 3 8 7 1 4 8 6 6 0 1 3 5 8
    вариант 1 для 1 2 7 6 0 3 7 5 5 9 0 2 4 7
    вариант 2 для 0 1 6 5 9 2 6 4 4 8 9 1 3 6
    вариант 3 для 9 0 5 4 8 1 5 3 3 7 8 0 2 5
    <


    По задаче 3. 4 последовательность, из которой выбран шифрующий отрезок, является периодической с периодом 20. Из таблицы вариантов значений цифр шифрующего отрезка видим, что 5-я его цифра может быть равна 5, 6, 7 или 8, а его 25-я цифра - 2, 3, 4 или 5. Отсюда получаем, что . На периоде последовательности, из которой выбран шифрующий отрезок, есть две цифры 5: и . Поэтому рассмотрим два случая. Если

    , то . Это противоречит таблице вариантов значений цифр шифрующего отрезка, в которой может быть равна 4, 5, 6 или 7. Если же , то соответствующий шифрующий отрезок: 1636567490147656369016365674 хорошо согласуется с таблицей вариантов значений его цифр. Вычитая цифры найденного отрезка из соответствующих цифр шифрованного сообщения и заменяя разности их остатками от деления на 10, получим по таблице замены пар цифр на буквы исходное сообщение:
    шифрованное сообщение 23 39 86 72 16 45 81 60 67 06 17 31 55 88
    шифрующийотрезок 16 36 56 74 90 14 76 56 36 90 16 36 56 74
    цифровоесообщение 17 03 30 08 26 31 15 14 31 16 01 05 09 14
    исходноесообщение С В Я З Ь - П О - Р А Д И О


    Рис. 16.

    -

    Обозначения понятны из рис. .

    1) центрально симметричен относительно .

    2) центрально симметричен относительно .

    3) (параллельный перенос).

    4) - квадрат.

    5) , .

    6) (, , ).

    7) Без ограничения общности .

    8) , , ,

    .

    9) (, , ) .

    10) .
    11) Площадь равна площади ,

    .

    12) (половина высоты ).

    13) .

    14) (теорема Пифагора), т.е.

    15)

    Замечание. Точки и можно построить с помощью циркуля и линейки. Подумайте, как это можно сделать.

    Ответ: .

    Next: ...к задачам четвертой олимпиады

    Up: 7.6. Указания и решения

    Previous: ...к задачам второй олимпиады

    Contents:



    К задачам восьмой олимпиады




    Рис. 22.


    Проведем прямые, проходящие через точки пересечения границ сложенной ленты параллельно ее краям. Очевидно, что тогда лента разобьется на равные равносторонние треугольники. Отметим цифрой 0 все просветы, а цифрой 2 все треугольники, которые получились наложением друг на друга двух треугольников в сложенной ленте. Построим дополнительно ряд треугольников вне эмблемы, как показано на рисунке . В полученной фигуре число треугольников, отмеченных цифрой 2, равно числу треугольников, отмеченных цифрой 0. Поэтому площадь всей ленты равна площади трапеции . Количества треугольников в горизонтальных рядах являются 9 последовательными членами арифметической прогрессии с первым членом, равным 3 (нижний ряд), и разностью 2. Следовательно, общее число треугольников равно

    Если - ширина ленты, то площадь одного равностороннего треугольника с высотой равна

    С другой стороны, если длина прямоугольника, полученного послеразрезания ленты, равна , то . Отсюда находим искомую величину: .
    Ответ: .
    Последовательность из нулей или единиц обозначим соответственно через или . Тогда шифрование каждого знака сообщения состоит в замене


    (1)

    В зашифрованном сообщении все серии из единиц имеют длину для первого способа и длину для второго способа, поэтому, для совпадения результатов зашифрования необходимо, чтобы


    (2)

    Теперь легко получить, что в сообщении должно быть одинаковое число нулей и единиц.
    Пусть - число нулей в сообщении. Тогда число нулей в зашифрованном I способом сообщении равно , а II способом - . Таким образом,


    (3)

    Из () видно, что сообщение должно начинаться с нуля и оканчиваться единицей. Пусть перед первой единицей сообщения расположено нулей. Тогда первые знаков сообщения представляются при шифровании в виде:


    (4)

    При получаем необходимость равенства , а значит, с учетом () - равенства .
    При 1$" width="42" height="28" > получаем условия:


    Подставляя в (), получаем равенство , которое при натуральных , и возможно лишь в случае . Следовательно, , а значит, с учетом () .

    Таким образом, при 1$" width="42" height="28" > необходимы условия , , где - натуральное. Из () следует, что сообщение должно иметь вид , где число нулей и число единиц равно .

    Ответ: При , , сообщения вида шифруются одинаково.

    При , , где - натуральное, сообщения вида

    (группы из нулей и единиц) шифруются одинаково.

    Примечание. Первый ответ не является частным случаем второго при .

    Естественно предположить, что все члены оргкомитета родились в ХХ веке. Отсюда сразу замечаем, что на 3, 7, 11, 15, 19 и 23 местах последовательности простых чисел расположены числа 11, 17, 47, 53, 83 и 89 соответственно.

    Выясним, какие числа являются соседними с указанными шестью числами. Для этого составим таблицу их возможных ``соседей''. В соответствии с условием имеем:
    число соседи
    11 13, 19, 43, 7, 3
    17 13, 19
    47 79, 43, 31
    53 61, 37
    83 79, 67, 19
    89 97, 73.
    Учитывая, что первая цифра в номере месяца принимает значения только 0 или 1, построим следующую таблицу:
    15 02 20 45 42 13 26 67 44 30 56 82 53 33 62 32 73 63 92 49 75 70 98 49
    19 19 19 19 19 19
    11 17 31 47 37 53 61 67 83 73 89 97
    03 03 13 13 43 19
    07 07 19 19 79 79
    13
    19
    43
    <


    где в первой строке расположено шифрованное сообщение, во второй строке - известные участки исходного сообщения, в третьей строке - ставшие известными участки ключевой последовательности, в остальных строках - возможные варианты ключевой последовательности в соответствующих позициях. При составлении таблицы учитывалось, что каждое число должно встретиться ровно один раз. Позиции чисел 31, 37, 67, 73 определяются однозначно. Их расположение однозначно определяет места для простых чисел 61 и 97.

    Снова выпишем известные числа последовательности простых чисел и варианты для их соседей (первые две строки таблицы на этом шаге не понадобятся):
    11

    17

    31

    47

    37

    53

    61

    67

    83

    73

    89

    97

    03 03 13 13 43 19
    07 07 19 19 79 79
    13
    19
    43
    Возможные соседи для числа 61 - лишь 59 и 29, а для 67 - лишь 59 и 3. Поэтому между 61 и 67 может находиться только число 59. Возможными соседями для числа 73 являются 89, 71 и 41. Ни одно из этих чисел не может быть соседом для 19, а для 79 может быть только 71. Таким образом, однозначно определяется расположение чисел 71 и 79. Для числа 47 остался только один кандидат в соседи справа - число 43. Общим соседом для 43 и 37 может быть только 41. Скорректируем таблицу с учетом сделанных выводов:
    11

    17

    31

    47

    43

    41

    37

    53

    61

    59

    67

    83

    79

    71

    73

    89

    97

    03 03 13 13 29
    07 07 19 19 23
    13
    19
    <


    Участок последовательности имеет только два варианта доопределения: (а) и (б) . Рассмотрим оба случая.

    а) Выпишем фрагмент таблицы для первого случая:
    13

    17

    19

    23

    31

    11
    03 03
    07 07
    Очевидно, что числа 3 и 7 должны обязательно быть соседними с числом 11. Число 29 еще не встречалось, значит оно должно располагаться либо на первом месте, либо на пятом. И то и другое невозможно, так как в обоих позициях оно является соседом либо для числа 3, либо для числа 7, что не соответствует условию (отличие соседних чисел на степень двойки). Следовательно, рассматриваемый случай невозможен.

    б) Выпишем фрагмент таблицы для второго случая:
    05

    11

    23

    19

    17

    13

    29

    31

    03 03
    07 07
    Очевидно, что числа 3 и 7 должны обязательно быть соседями для числа 11. Число 5 может попасть только на первую позицию (т.к. оно не может находиться рядом с 19). Значит, в пятой позиции должно быть число 23. Ясно, что числа 3 и 7 теперь расставляются однозначно.

    Таким образом, приходим к выводу, что возможен всего один вариант ключевой последовательности. Получим окончательный вариант таблицы и найдем ответ:
    15 02 20 45 42 13 26 67 44 30 56 82 53 33 62 32 73 63 92 49 75 70 98 49
    10 09 19 48 29 04 19 54 25 09 19 49 12 06 19 71 24 06 19 70 04 07 19 52
    05 03 11 07 23 19 17 13 29 31 47 43 41 37 53 61 59 67 83 79 71 73 89 97
    Ответ: 10.09.1948 29.04.1954 25.09.1949 12.06.1971 24.06.1970 04.07.1952

    Занумеруем горизонтали и вертикали квадрата натуральными числами от 1 до 13 сверху вниз и слева направо соответственно. Тогда каждая клетка квадрата однозначно определяется парой чисел , где - номер горизонтали, а - номер вертикали, в которых находится клетка.




    Расстояние между центром клетки и центром клетки равно . Заметим, что и . Обозначим , , . Тогда - число натуральное, если . Отсюда получаем, что

    В общем случае, если , то

    Ясно, что и должны быть одинаковой четности. По условию, , поэтому искомыми решениями будут только пары

    Клетку назовем существенной для клетки , если выполнено условие . Ясно, что цвет данной клетки менялся лишь тогда, когда Криптоша находился в какой-либо существенной для нее клетке. А так как в каждой клетке Криптоша побывал ровно 1999 раз (нечетное число), то цвет данной клетки изменился, если общее число существенных для нее клеток нечетно.

    Для определения четности числа всех существенных клеток для данной клетки воспользуемся тем, что у симметричных клеток относительно той или иной диагонали квадрата или относительно центрального вертикального или центрального горизонтального рядов эти числа будут одинаковы. Это, в частности, означает, что достаточно определить указанную четность только для клеток , где , (этих клеток 15, занумеруем их, как показано на рис. ).



    Рис. 23. Для клетки 1 жирными линиями выделена зона асимметрии. Серым цветом отмечены клетки верхнего левого угла , меняющие свой цвет
    Кроме того, отметим, что у каждой из клеток на диагоналях квадрата, а также у каждой из клеток центрального вертикального и горизонтального рядов обязательно будет четное число существенных для нее клеток.

    Зоной асимметрии для той или иной клетки мы назовем множество тех клеток, которые в пределах исходного квадрата не имеют клеток, симметричных относительно вертикального, горизонтального и правого диагональных рядов, содержащих данную клетку. Ясно, что для данной клетки число существенных клеток, не лежащих в ее зоне асимметрии, четно.

    На рис. показана зона асимметрии для клетки 1, а также все клетки верхнего левого угла , меняющие свой цвет.

    Ответ на рис. .



    Рис. 24.

    При решении этого уравнения надо учитывать возможные ограничения: , , , . Поэтому целесообразно выделить их сразу.




    1. Пусть , . Уравнение имеет вид

    , то есть - любое число.

    2. Пусть , . Уравнение имеет вид

    , или , то есть не имеет решений.

    3. Аналогично, при , нет решений.

    4. При , удобно рассмотреть три случая: а) , b) , c) .

    a) :

    , ,
    - любое, кроме .

    b) :

    , ,

    , , решений нет.

    c) :

    Ответ. При - любое число.

    При

    .

    При или или решений нет.

    При

    .

    Число представляет собой сумму кубов, сумму пятых степеней, а также из него можно выделить полный квадрат. Каждое из этих представлений позволяет найти некоторые делители исходного числа:

    Таким образом, установлено, что среди простых делителей числа содержатся 41, 13, 5. Непосредственной проверкой получаем равенство

    .

    Осталось проверить, что 1321 - простое число. Для этого достаточно показать, что 1321 не делится ни на одно простое число, меньшее 37 (, 1321$" width="89" height="28" >).

    Ответ: .

    Next: ...к задачам девятой олимпиады

    Up: 7.6. Указания и решения

    Previous: ...к задачам седьмой олимпиады

    Contents:



    К задачам второй олимпиады


    Рассмотрим один виток ленты на развертке цилиндра (разрез по горизонтальной линии). По условию высота , опущенная на сторону , равна . Угол равен . Отсюда равно . Так как высота строки равна , то всего на одном витке букв.


    Рис. 15.


    Ответ: чтобы прочитать текст, надо разрезать ленту на участки по букв и сложить их рядом.
    Согласно условию, исходное сообщение состоит из двух пятерок цифр: и . Пусть - последние две цифры суммы чисел, изображенных этими пятерками. Через обозначим последнюю цифру суммы чисел и . Пусть обозначает цифру переноса (цифру десятков) суммы . По условию имеем, что и .
    Пусть - первый член, а - разность арифметической прогрессии, которую коммерсант использовал при шифровании. Тогда из условия получаем:


    Обозначим символом равенство остатков от деления на 10 чисел и . Тогда записи и имеют одинаковый смысл. Если и , то , . Bсегда , так как остаток от деления единствен.
    Из соотношений (), (), () и () находим соответственно:


    Подставляя эти значения в равенства () и (), получим следующие равенства: и . Отсюда следует, что


    Подставив из () и из () в (), (),(), (), (), (), (), (), (), (), найдем выражения для цифр исходного сообщения:

    Найденные выражения дают два варианта исходных сообщений:

    4470416411 (при ), 2371640978 (при ).
    Ответ: - любое, - не должно делиться на 2 и на 5.
    Указание. Обозначим через - остаток от деления значения многочлена на 10. Для однозначного расшифрования необходимо и достаточно, чтобы разным значениям соответствовали разные значения . Поэтому , , ..., принимают все значения от 0 до 9. Найдем эти значения:

    где - остаток от деления числа на 10.
    Отсюда, пользуясь свойствами остатков, замечаем, что должно быть нечетным (иначе будут только четные числа) и не должно делиться на 5 (иначе будут только 0 и 5). Непосредственной проверкой можно убедиться, что при любом и при всех , удовлетворяющим приведенным условиям, гарантируется однозначность расшифрования.

    Обозначим через остаток от деления на 26 суммы чисел, которые соответствуют первым буквам алфавита ( ) .

    Если среди чисел

    есть нуль: , то искомой ключевой комбинацией является цепочка первых букв алфавита.

    Если среди чисел

    нет нуля, то обязательно найдутся два одинаковых числа: (считаем, что -й и заканчивающийся -й буквой.

    Если две буквы с порядковыми номерами и зашифрованы в буквы с порядковыми номерами и с помощью одной и той же буквы, то остатки от деления чисел и на 30 равны между собой и совпадают с порядковым номером шифрующей буквы (порядковым номером буквы удобно считать число 0). Тогда, с учетом соглашения о порядковом номере буквы , справедливо, что равен остатку от деления числа

    на 30, а, вместе с тем, равен остатку от деления числа

    на 30. Если каждое из выражений в скобках заменить соответствующим остатком от деления на 30, то упомянутая связь не нарушится.

    Представим в виде набора порядковых номеров известные шифрованные сообщения (обозначим их соответственно ш. с. 1 и ш. с. 2) и слово КОРАБЛИ:


    слово К О Р А Б Л И


    10 14 16 1 2 11 9



    ш.с.1 Ю П Т Ц А Р Г Ш А Л Ж Ж Е В Ц Щ Ы Р В У У


    29 15 18 22 1 16 4 24 1 11 7 7 6 3 22 25 27 16 3 19 19



    ш.с.2 Ю П Я Т Б Н Щ М С Д Т Л Ж Г П С Г Х С Ц Ц


    29 15 0 18 2 13 25 12 17 5 18 11 7 4 15 17 4 21 17 22 22
    Возможны 15 вариантов (номер варианта обозначим буквой ) расположения слова КОРАБЛИ в каждом из двух исходных сообщений (и. с. 1, и. с. 2).

    Вначале для каждого из 15 вариантов расположения слова КОРАБЛИ в и. с. 1 найдем соответствующий участок и. с. 2. Имеем:
    0 0 12 26 1 27 21 18 16 24 11 4 1 1 23 22 7 5 14 3 3

    10 14 16 1 2 11 9


    Поэтому для участка и. с. 2 получаем следующие 15 вариантов:
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15


    10 10 22 6 11 7 1 28 26 4 21 14 11 11 3
    14 26 10 15 11 5 2 0 8 25 18 15 15 7 6
    28 12 17 13 7 4 2 10 27 20 17 17 9 8 23
    27 2 28 22 19 17 25 12 5 2 2 24 23 8 6
    3 29 23 20 18 26 13 6 3 3 25 24 9 7 16
    28 2 29 27 5 22 15 12 12 4 3 18 16 25 14
    0 27 25 3 20 13 10 10 2 1 16 14 23 12 12
    <


    Теперь для каждого из 15 вариантов расположения слова КОРАБЛИ в и. с. 2 найдем соответствующий участок и. с. 1. Имеем:
    0 0 18 4 29 3 9 12 14 6 19 26 29 29 7 8 23 25 16 27 27

    10 14 16 1 2 11 9
    Поэтому для участка и. с. 1 получаем следующие 15 вариантов:
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
    10 10 28 14 9 13 19 22 24 16 29 6 9 9 17
    14 2 18 13 17 23 26 28 20 3 10 13 13 21 22
    4 20 15 19 25 28 0 22 5 12 15 15 23 24 9
    5 0 4 10 13 15 7 20 27 0 0 8 9 24 26
    1 5 11 14 16 8 21 28 1 1 9 10 25 27 18
    14 20 23 25 17 0 7 10 10 18 19 4 6 27 8
    18 21 23 15 28 5 8 8 16 17 2 4 25 6 6
    Заменим порядковые номера в найденных вариантах участков и. с. 1 и и. с. 2 на буквы русского алфавита. Получаем следующие таблицы:
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
    К К Ц Е Л Ж А Э Ь Г Х О Л Л В
    О Ь К П Л Д Б Я З Щ Т П П Ж Е
    участок Э М С Н Ж Г Б К Ы Ф С С И З Ч
    и.с.2 Ы Б Э Ц У С Щ М Д Б Б Ш Ч З Е
    В Ю Ч Ф Т Ь Н Е В В Щ Ш И Ж Р
    Э Б Ю Ы Д Ц П М М Г В Т Р Щ О
    Я Ы Щ В Ф Н К К Б А Р О Ч М М

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
    К К Э О И Н У Ц Ш Р Ю Е И И С
    О Б Т Н С Ч Ь Э Ф В К Н Н Х Ц
    участок Г Ф П У Щ Э Я Ц Д М П П Ч Ш И
    и.с.1 Д Я Г К Н П Ж Ф Ы Я Я З И Ш Ь
    А Д Л О Р З Х Э А А И К Щ Ы Т
    О Ф Ч Щ С Я Ж К К Т У Г Е Ы З
    Т Х Ч П Э Д З З Р С Б Г Щ Е Е
    Из таблиц видно, что осмысленными являются варианты:
    и.с.1 = К О Г Д А О Т . . . . . . . К О Р А Б Л И
    и.с.2 = К О Р А Б Л И . . . . . . . В Е Ч Е Р О М
    Естественно предположить, что в первом исходном сообщении речь идет об отплытии кораблей. Предположив, что неизвестным участком первого исходного сообщения является подходящая по смыслу часть слова ОТПЛЫВАЮТ, находим неизвестную часть второго исходного сообщения: слово ОТХОДЯТ.




    Каждую букву шифрованного сообщения расшифруем в трех вариантах, предполагая последовательно, что соответствующая буква шифрующей последовательности есть буква А, Б или буква В:
    шифрованное сообщение Р Б Ь Н П Т С И Т С Р Р Е З О Х
    вариант А П А Щ М О С Р З С Р П П Д Ж Н Ф
    вариант Б О Я Ш Л Н Р П Ж Р П О О Г Е М У
    вариант В Н Ю Ч К М П О Е П О Н Н В Д Л Т
    Выбирая из каждой колонки полученной таблицы ровно по одной букве, находим осмысленное сообщение НАШКОРРЕСПОНДЕНТ, которое и является искомым.

    Замечание. Из полученной таблицы можно было найти такое исходное сообщение как
    НАШ МОРОЗ ПОПОВ ЕМУ

    которое представляется не менее осмысленным, чем приведенное выше. А если предположить одно искажение в шифрованном сообщении (скажем, в качестве 11-й буквы была бы принята не буква Р, а буква П), то, наряду с правильным вариантом, можно получить и такой:
    НАШ МОРОЗ ПОМОГ ЕМУ
    Число всех различных вариантов исходных сообщений без ограничений на осмысленность равно или 43046721, т.е. более 40 миллионов!

    Next: ...к задачам третьей олимпиады

    Up: 7.6. Указания и решения

    Previous: ...к задачам первой олимпиады

    Contents:



    Как отличить составное число от простого


    Существует довольно эффективный способ убедиться, что заданное число является составным, не разлагая это число на множители. Согласно малой теореме Ферма, если число простое, то для любого целого , не делящегося на , выполняется сравнение


    (9)

    Если же при каком-то это сравнение нарушается, можно утверждать, что - составное. Проверка () не требует больших вычислений, это следует из алгоритма 1. Вопрос только в том, как найти для составного целое число , не удовлетворяющее (). Можно, например, пытаться найти необходимое число , испытывая все целые числа подряд, начиная с 2. Или попробовать выбирать эти числа случайным образом на отрезке
    К сожалению, такой подход не всегда дает то, что хотелось бы. Имеются составные числа , обладающие свойством () для любого целого с условием . Такие числа называются числами Кармайкла. Рассмотрим, например, число . Так как делится на каждое из чисел , , , то с помощью малой теоремы Ферма легко проверить, что есть число Кармайкла. Можно доказать (Carmichael, 1912), что любое из чисел Кармайкла имеет вид
    , , где все простые различны, причем делится на каждую разность . Лишь недавно, см. [], была решена проблема о бесконечности множества таких чисел.
    В 1976 г. Миллер предложил заменить проверку () проверкой несколько иного условия. Детали последующего изложения можно найти в []. Если - простое число, , где нечетно, то согласно малой теореме Ферма для каждого с условием хотя бы одна из скобок в произведении

    делится на . Обращение этого свойства можно использовать, чтобы отличать составные числа от простых.
    Пусть - нечетное составное число, , где нечетно. Назовем целое число , , если нарушается одно из двух условий:
    ) не делится на ;
    ) или существует целое ,
    Из сказанного ранее следует, что для простого числа не существует хороших чисел . Если же составное число, то, как доказал Рабин, их существует не менее
    .
    Теперь можно построить вероятностный алгоритм, отличающий составные числа от простых.
    Next: 4.5. Как строить большие
    Up: 4. Алгоритмические проблемы теории
    Previous: 4.3. Сложность теоретико-числовых алгоритмов
    Contents:


    Как проверить большое число на простоту


    Есть некоторое отличие в постановках задач предыдущего и настоящего разделов. Когда мы строим простое число , мы обладаем некоторой дополнительной информацией о нем, возникающей в процессе построения. Например, такой информацией является знание простых делителей числа . Эта информация иногда облегчает доказательство простоты .
    В этом разделе мы предполагаем лишь, что нам задано некоторое число , например, выбранное случайным образом на каком-то промежутке, и требуется установить его простоту, или доказать, что оно является составным. Эту задачу за полиномиальное количество операций решает указанный в разделе алгоритм Миллера. Однако, справедливость полученного с его помощью утверждения зависит от недоказанной . Если число выдержало испытания для 100 различных значений параметра , то, по-видимому, можно утверждать, что оно является простым с вероятностью большей, чем . Эта вероятность очень близка к единице, однако все же оставляет некоторую тень сомнения на простоте числа . В дальнейшем в этом разделе мы будем считать, что заданное число является простым, а нам требуется лишь доказать это.
    В настоящее время известны детерминированные алгоритмы различной сложности для доказательства простоты чисел. Мы остановимся подробнее на одном из них, предложенном в 1983 г. в совместной работе Адлемана, Померанца и Рамели []. Для доказательства простоты или непростоты числа этот алгоритм требует арифметических операций. Здесь - некоторая положительная абсолютная постоянная. Функция хоть и медленно, но все же возрастает с ростом , поэтому алгоритм не является полиномиальным. Но все же его практические реализации позволяют достаточно быстро тестировать числа на простоту. Существенные усовершенствования и упрощения в первоначальный вариант алгоритма были внесены в работах Х.Ленстры и А.Коена [,]. Мы будем называть описываемый ниже алгоритм алгоритмом Адлемана - Ленстры.
    В основе алгоритма лежит использование сравнений типа малой теоремы Ферма, но в кольцах целых чисел круговых полей, т.е. полей, порожденных над полем числами - корнями из . Пусть - простое нечетное число и - первообразный корень по модулю , т.е. образующий элемент мультипликативной группы поля , которая циклична. Для каждого целого числа , не делящегося на , можно определить его индекс, , называемый также дискретным логарифмом, с помощью сравнения . Рассмотрим далее два простых числа с условием, что делится на , но не делится на .

    Следующая функция, определенная на множестве целых чисел,

    является характером по модулю и порядок этого характера равен . Сумма

    называется суммой Гаусса. Формулируемая ниже теорема 3 представляет собой аналог малой теоремы Ферма, используемый в алгоритме Адлемана - Ленстры.

    Теорема 5. Пусть - нечетное простое число, . Тогда в кольце

    выполняется сравнение

    Если при каких-либо числах сравнение из теоремы 3 нарушается, можно утверждать, что составное число. В противном случае, если сравнение выполняется, оно дает некоторую информацию о возможных простых делителях числа . Собрав такую информацию для различных , в конце концов удается установить, что имеет лишь один простой делитель и является простым.

    В случае легко проверить, что сравнение из теоремы 3 равносильно хорошо известному в элементарной теории чисел сравнению

    (13)
    где - так называемый символ Якоби. Хорошо известно также, что последнее сравнение выполняется не только для простых , но и для любых целых , взаимно простых с . Заметим также, что для вычисления символа Якоби существует быстрый алгоритм, основанный на законе взаимности Гаусса и, в некотором смысле, подобный алгоритму Евклида вычисления наибольшего общего делителя. Следующий пример показывает, каким образом выполнимость нескольких сравнений типа () дает некоторую информацию о возможных простых делителях числа .

    Пример 1. (Х. Ленстра). Пусть - натуральное число, , для которого выполнены сравнения

    (14)
    а кроме того с некоторым целым числом имеем

    (15)
    Как уже указывалось, при простом сравнения () выполняются для любого , взаимно простого с , а сравнение () означает, что есть первообразный корень по модулю . Количество первообразных корней равно , т.е. достаточно велико. Таким образом, число с условием () при простом может быть найдено достаточно быстро с помощью случайного выбора и последующей проверки ().

    Докажем, что из выполнимости (14-15) следует, что каждый делитель числа удовлетворяет одному из сравнений




    (16)
    Не уменьшая общности, можно считать, что - простое число. Введем теперь обозначения , , где и - нечетные числа. Из (15) и сравнения следует, что . Далее, согласно (), выполняются следующие сравнения

    означающие (в силу того, что символ Якоби может равняться лишь или ), что

    При k$" width="48" height="29" > это равенство означает, что при , и, следовательно,

    . Если же , то имеем и . Этим () доказано.

    Информация такого рода получается и в случае произвольных простых чисел и с указанными выше свойствами.

    Опишем (очень грубо) схему алгоритма Адлемана - Ленстры для проверки простоты :


    1) выбираются различные простые числа и различные простые нечетные такие, что

    а) для каждого все простые делители числа содержатся

    среди и не делятся на квадрат простого числа,

    б) \sqrt{N} $" width="163" height="37" >;

    2) для каждой пары выбранных чисел , проводятся тесты, подобные сравнению из теоремы 3. Если не удовлетворяет какому-либо из этих тестов - оно составное. В противном случае

    3) определяется не очень большое множество чисел, с которыми только и могут быть сравнимы простые делители . А именно, каждый простой делитель числа должен удовлетворять сравнению вида


    4) проверяется, содержит ли найденное множество делители . Если при этом делители не обнаружены, утверждается, что - простое число.

    Если число составное, оно обязательно имеет простой делитель , меньший

    Пример 2.

    Если выбрать следующие множества простых чисел

    то таким способом удается проверять простоту чисел

    Отметим, что в работе [] для тестирования использовались не сравнения теоремы 3, а закон взаимности для степенных вычетов и так называемые суммы Якоби. Сумма Якоби


    определяется для двух характеров по модулю . Если характеры имеют порядок , то соответствующая сумма Якоби принадлежит кольцу . Поскольку числа , участвующие в алгоритме, сравнительно невелики, то вычисления с суммами Якоби производятся в полях существенно меньшей степени, чем вычисления с суммами Гаусса. Это главная причина, по которой суммы Якоби предпочтительнее для вычислений. При выполняется классическое соотношение




    связывающее суммы Гаусса с суммами Якоби и позволяющее переписать сравнение теоремы 3 в терминах сумм Якоби (см. [
    ]). Так, при и соответствующее сравнение, справедливое для простых , отличных от 2, 3, 7, принимает вид

    где и - некоторый корень кубический из 1.

    В 1984 г. в работе [] было внесено существенное усовершенствование в алгоритм, позволившее освободиться от требования неделимости чисел на квадраты простых чисел. В результате, например, выбрав число

    и взяв равным произведению простых чисел с условием, что делится на , получим 1{,}5\cdot10^{52} $" width="97" height="33" >, что позволяет доказывать простоту чисел , записываемых сотней десятичных знаков. При этом вычисления будут проводиться в полях, порожденных корнями из 1 степеней 16, 9, 5 и 7.

    Мой персональный компьютер с процессором Pentium-150, пользуясь реализацией этого алгоритма на языке UBASIC, доказал простоту записываемого 65 десятичными знаками, большего из простых чисел в примере Ривеста, Шамира и Адлемана (см. раздел ) за 8 секунд. Сравнение этих 8 секунд и 17 лет, потребовавшихся для разложения на множители предложенного в примере числа, конечно, впечатляет.

    Отметим, что оценка сложности этого алгоритма представляет собой трудную задачу аналитической теории чисел. Как уже указывалось, количество операций оценивается величиной . Однако соответствующие числа и , возникающие в процессе доказательства, не могут быть явно указаны в зависимости от . Доказано лишь существование чисел и , для которых достигается оценка. Впрочем, есть вероятностный вариант алгоритма, доказывающий простоту простого числа c вероятностью большей за

    арифметических операций. А в предположении эта оценка сложности может быть получена при эффективно указанных и .

    Next: 4.7. Как раскладывают составные

    Up: 4. Алгоритмические проблемы теории

    Previous: 4.5. Как строить большие

    Contents:



    Как проверять правильность ключа?


    Кстати, а как программа при расшифровании файла определяет, что пароль неправильный? По-разному. Некоторые программы вообще не проверяют правильность пароля. В этом случае, если вы ввели неправильный пароль, файл как бы расшифруется, но вы увидите совсем не то, что зашифровали. Это неудобно. Предположим, вы зашифровали файл мегабайт в 50 с помощью алгоритма ГОСТ. Сколько времени он будет расшифроваться? Если у вас дома стоит обычный Pentium, то, по крайней мере, минуту. А скорее всего, минуты три. Вы все это время сидите, ждете, а потом оказывается, что зря ждали - пароль-то ввели неправильный. А если вы exe-файл неправильно расшифровали, а потом запустили на выполнение? Скорее всего, придется давить Reset. Так что лучше, когда перед расшифрованием программа проверяет правильность пароля.
    Остается вопрос: как проверять правильность пароля? Можно просто вписать пароль в начало зашифрованного файла перед шифртекстом. При расшифровании вы вводите пароль, программа читает начало зашифрованного файла и сравнивает то, что вы ввели, и то, что в файле. Если совпало, значит, пароль правильный. А если не совпало - неправильный. Просто и удобно. Только что произойдет, если кто-нибудь другой случайно просмотрит зашифрованный файл, например, с помощью Norton Commander? Весь файл - сплошная абракадабра, а в начале файла - осмысленное слово. Не нужно быть семи пядей во лбу, чтобы догадаться, что это и есть пароль. Так что нужно придумывать что-то другое.
    Очевидно, эталон пароля, который хранится в зашифрованном файле, тоже надо зашифровать. Только как? Проще всего шифровать пароль по той же схеме, что и текст исходного файла. Если шифр стойкий (а иначе его и не стоит использовать), пароль будет закрыт надежно. А что брать в качестве ключа? Можно взять константу. Тогда в каждом зашифрованном файле эталон пароля будет зашифрован на одном и том же ключе. Так, например, делает встроенная система шифрования файлов электронной почты Sprint Mail. Только там зашифрованный пароль хранится не в начале зашифрованного файла, а в конце. Но что будет, если кто-то узнает ключ, на котором шифруются все пароли? Он сможет расшифровывать все файлы, которые вы зашифруете. И не важно, что пароли разные - злоумышленник возьмет нужный пароль прямо из файла, который хочет прочесть.

    Вы, скорее всего, подумали: а откуда злоумышленник узнает ключ, на котором шифруются эталоны паролей? Этот ключ встроен в программу шифрования, его никто не знает, даже вы его не знаете. Тем не менее, если злоумышленник достаточно квалифицирован, если он умеет пользоваться дизассемблером и отладчиком, этот ключ он узнает без труда. Обычно на решение такой задачи уходит всего несколько часов. Как это можно сделать - тема отдельной статьи. Пока поверьте на слово - имея только exe-файл, определенные навыки и много свободного времени, можно разобраться в том, что делает программа, до мельчайших подробностей.

    Лучше шифровать эталон пароля сам на себе. Взять пароль в качестве открытого текста и взять тот же пароль в качестве ключа. При расшифровании файла, когда вы вводите пароль, программа пытается расшифровать только начало файла. Если в результате получилась строка, совпадающая с паролем, значит, пароль правильный, и можно расшифровывать файл дальше. А если получилось что-то другое, значит, пароль неправильный.

    Некоторые программы шифрования шифруют пароли иначе. Берется какая-то строка, всегда одна и та же, шифруется на пароле и записывается в зашифрованный файл. Diskreet, например, шифрует на пароле строку ``ABCDEFGHENRIXYZ'' (эта строка завершается нулевым байтом, как принято в языке C). Когда Diskreet проверяет пароль, он берет начало зашифрованного файла (точнее, байты с 16-го по 31-й) и расшифровывает их на пароле, который ввел пользователь. Если после расшифрования получилось ``ABCDEFGHENRIXYZ'' - пароль правильный, если не получилось - неправильный.

    На первый взгляд кажется, что эта схема хуже, чем предыдущая. Действительно, в предыдущем случае злоумышленнику неизвестны ни открытый текст, ни ключ, а в последнем случае неизвестен только ключ, а открытый текст известен. Но если вы еще помните, что было написано в начале этой главы, то, наверное, уже поняли, что последняя схема ничуть не слабее предыдущей. Если шифр стойкий, то ключ

    невозможно получить за приемлемое время, даже если известны и открытый текст, и шифртекст.

    Next: Какой должен быть пароль?

    Up: 6.3. Как зашифровать файл?

    Previous: Как вводить ключ?

    Contents:



    Как раскладывают составные числа на множители


    Мы лишь кратко коснемся этой темы, отсылая читателей к книгам [,,]. Среди многих алгоритмов разложения мы выберем ту линию развития, которая привела к разложению числа, предложенного RSA.
    Поиском эффективных способов разложения целых чисел на множители занимаются уже очень давно. Эта задача интересовала выдающихся ученых в области теории чисел. Вероятно Ферма был первый, кто предложил представить разлагаемое число в виде разности квадратов , а затем, вычисляя , попытаться найти нетривиальный делитель . Он же предложил и способ, позволяющий найти требуемое представление. Если разлагаемое число имеет два не очень отличающиеся по величине множителя, этот способ позволяет определить их быстрее, чем простой перебор делителей. Лежандр обратил внимание на то, что при таком подходе достаточно получить сравнение


    (17)

    Конечно, не каждая пара чисел, удовлетворяющих ему, позволяет разложить на множители. Эйлер и Гаусс предложили некоторые способы нахождения чисел, связанных соотношением (). Лежандр использовал для этой цели непрерывные дроби.
    Напомним, что каждому иррациональному числу может быть поставлена в соответствие бесконечная последовательность целых чисел , называемая его непрерывной дробью. Это сопоставление строится следующим образом

    Лежандр доказал, что непрерывная дробь квадратичной иррациональности периодична. Если раскладывать в непрерывную дробь число , то возникающие в процессе разложения числа имеют вид с целыми , причем всегда , , вычисляемых по правилам

    и стремящихся к разлагаемому числу. Если в непрерывную дробь разлагается число , то справедливо соотношение


    (18)

    из которого следует


    (19)

    Заметим, что длина периода разложения в непрерывную дробь числа может быть большой и достигать величин порядка .
    В 1971 г. Шенкс предложил использовать сравнения () для конструирования чисел, удовлетворяющих (). Если вычисления проводить до тех пор, пока при четном не получится при некотором целом , то пара чисел

    $" width="69" height="31" > будет удовлетворять () и с ее помощью можно надеяться получить разложение на простые множители.

    В 1975 г. Моррисон и Бриллхарт стали перемножать сравнения () при различных с тем, чтобы таким способом получить квадрат целого числа в правой части. Этот метод, метод непрерывных дробей, позволил впервые разложить на множители седьмое число Ферма . Для реализации алгоритма выбирается так называемая база множителей . В нее входят ограниченные по величине некоторым параметром простые числа такие, что

    . Последнее условие связано с тем, что, согласно (
    ), в разложение на простые множители чисел могут входить лишь те простые, для которых является квадратичным вычетом.

    На первом этапе алгоритма каждое очередное число делится на все числа

    и, если оно не разлагается полностью в произведение степеней этих простых, то отбрасывается. Иначе получается разложение

    (20)
    Этому номеру сопоставляется вектор (вектор показателей). Затем вычисляется следующее значение , и с ним проделывается в точности такая же процедура.

    Эти вычисления проводятся до тех пор, пока не будет построено вектора показателей. В получившейся матрице показателей, очевидно, можно подобрать вектора-строки так, что их сумма будет вектором с четными координатами . Если - множество номеров векторов, вошедших в эту сумму, то, как легко проверить с помощью (), имеет место сравнение

    Если с помощью этого сравнения не удается разложить на множители, разложение в непрерывную дробь продолжается, продолжается набор векторов показателей и т.д.

    В этот алгоритм был внесен ряд усовершенствований: вместо можно раскладывать в непрерывную дробь число , где маленький множитель подбирается так, чтобы в базу множителей вошли все малые простые; была предложена так называемая стратегия раннего обрыва и т.д. Сложность этого алгоритма была оценена в 1982 г. величиной

    . При выводе этой оценки использовался ряд правдоподобных, но не доказанных гипотез о распределении простых чисел. Получившаяся в оценке функция растет медленнее любой степенной функции. Алгоритмы, сложность которых оценивается подобным образом, получили название субэкспоненциальных (в зависимости от ).





    В 1982 г. Померанцом был предложен еще один субэкспоненциальный алгоритм - алгоритм квадратичного решета. Его сложность оценивается такой же функцией, как и в методе непрерывных дробей, но вместо константы получена лучшая - . Обозначим , и выберем ту же базу множителей, что и в методе непрерывных дробей. При малых целых значениях величина будет сравнительно невелика. Следующий шаг объясняет название алгоритма - квадратичное решето. Вместо того, чтобы перебирать числа и раскладывать соответствующие значения на множители, алгоритм сразу отсеивает негодные значения , оставляя лишь те, для которых имеет делители среди элементов базы множителей.

    Задав некоторую границу , для каждого простого числа , входящего в базу множителей, и каждого показателя степени , с условием находим решения квадратичного сравнения

    . Множество решений обозначим буквой . Итак, для каждого найдется элемент базы множителей, а может быть и не один, входящий в некоторой степени в разложение на простые сомножители числа . Те числа , при которых значения оказываются полностью разложенными, дают нам вектор показателей, как и в алгоритме непрерывных дробей. Если таких векторов окажется достаточно много, с ними можно проделать те же операции, что и в алгоритме непрерывных дробей.

    Мы кратко описали здесь лишь основную идею алгоритма. Помимо этого, используется много других дополнительных соображений и различных технических приемов. Например, аналог соотношения () имеет вид

    (21)
    В нем допускается наличие двух дополнительных больших простых множителей исключаются.

    Некоторые детали реализации алгоритма можно найти в работе []. Отметим здесь только, что на множители раскладывалось число , база множителей состояла из и 524338 простых чисел, меньших, чем . При этом было использовано . В результате просеивания получилось 112011 соотношений вида () без множителей , 1431337 соотношений с одним таким множителем и 6881138 соотношений с двумя множителями. Именно на поиск всех этих соотношений понадобились 220 дней и большое количество работавших параллельно компьютеров. На втором шаге алгоритма, когда из соотношений () комбинировались четные векторы показателей степеней, приходилось работать с матрицами, размеры которых измерялись сотнями тысяч битов. Этот второй шаг потребовал 45 часов работы. Уже четвертый вектор с четными показателями привел к искомому разложению на множители.

    Next: 4.8. Дискретное логарифмирование

    Up: 4. Алгоритмические проблемы теории

    Previous: 4.6. Как проверить большое

    Contents:



    Как строить большие простые числа


    Мы не будем описывать здесь историю этой задачи, рекомендуем обратиться к книге [] и обзорам [,]. Конечно же, большие простые числа можно строить сравнительно быстро. При этом можно обеспечить их случайное распределение в заданном диапазоне величин. В противном случае теряла бы всякий практический смысл система шифрования RSA. Наиболее эффективным средством построения простых чисел является несколько модифицированная малая теорема Ферма.
    Теорема 4. Пусть , - нечетные натуральные числа,
    , причем для каждого простого делителя числа существует целое число такое, что


    (10)

    Тогда каждый простой делитель числа удовлетворяет сравнению

    Доказательство.
    Пусть - простой делитель числа , а - некоторый делитель . Из условий () следует, что в поле вычетов справедливы соотношения


    (11)

    Обозначим буквой порядок элемента в мультипликативной группе поля . Первые два из соотношений () означают, что входит в разложение на простые множители числа в степени такой же, как и в разложение , а последнее - что делится на . Таким образом, каждый простой делитель числа входит в разложение в степени не меньшей, чем в , так что делится на . Кроме того, четно. Теорема 2 доказана.
    Следствие . Если выполнены условия теоремы 2 и , то - простое число.
    Действительно, пусть равняется произведению не менее двух простых чисел. Каждое из них, согласно утверждению теоремы 2, не меньше, чем . Но тогда . Противоречие и доказывает следствие.
    Покажем теперь, как с помощью последнего утверждения, имея большое простое число , можно построить существенно большее простое число . Выберем для этого случайным образом четное число на промежутке
    и положим . Затем проверим число на отсутствие малых простых делителей, разделив его на малые простые числа; испытаем некоторое количество раз с помощью алгоритма 5. Если при этом выяснится, что - составное число, следует выбрать новое значение и опять повторить вычисления. Так следует делать до тех пор, пока не будет найдено число , выдержавшее испытания алгоритмом 5 достаточно много раз. В этом случае появляется надежда на то, что - простое число, и следует попытаться доказать простоту с помощью тестов теоремы 2.

    Для этого можно случайным образом выбирать число ,

    (12)
    Если при выбранном эти соотношения выполняются, то, согласно следствию из теоремы 2, можно утверждать, что число простое. Если же эти условия нарушаются, нужно выбрать другое значение и повторять эти операции до тех пор, пока такое число не будет обнаружено.

    Предположим, что построенное число действительно является простым. Зададимся вопросом, сколь долго придется перебирать числа , пока не будет найдено такое, для которого будут выполнены условия (). Заметим, что для простого числа первое условие (), согласно малой теореме Ферма, будет выполняться всегда. Те же числа , для которых нарушается второе условие (), удовлетворяют сравнению . Как известно, уравнение в поле вычетов имеет не более решений. Одно из них . Поэтому на промежутке чисел, для которых не выполняются условия (). Это означает, что, выбирая случайным образом числа на промежутке можно с вероятностью большей, чем , найти число , для которого будут выполнены условия теоремы 2, и тем доказать, что действительно является простым числом.

    Заметим, что построенное таким способом простое число будет удовлетворять неравенству S^2 $" width="58" height="33" >, т.е. будет записываться вдвое большим количеством цифр, чем исходное простое число . Заменив теперь число на найденное простое число и повторив с этим новым все указанные выше действия, можно построить еще большее простое число. Начав с какого-нибудь простого числа, скажем, записанного 10 десятичными цифрами (простоту его можно проверить, например, делением на маленькие табличные простые числа), и повторив указанную процедуру достаточное число раз, можно построить простые числа нужной величины.

    Обсудим теперь некоторые теоретические вопросы, возникающие в связи с нахождением простых чисел вида , где числа и удовлетворяют неравенствам . Прежде всего, согласно теореме Дирихле, доказанной еще в 1839 г., прогрессия , содержит бесконечное количество простых чисел. Нас интересуют простые числа, лежащие недалеко от начала прогрессии. Оценка наименьшего простого числа в арифметической прогрессии была получена в 1944 г. Ю.В.Линником. Соответствующая теорема утверждает, что наименьшее простое число в арифметической прогрессии не превосходит , где - некоторая достаточно большая абсолютная постоянная. В предположении справедливости расширенной гипотезы Римана можно доказать, [, с. 272], что наименьшее такое простое число не превосходит при любом положительном .




    Таким образом, в настоящее время никаких теоретических гарантий для существования простого числа , не существует. Тем не менее, опыт вычислений на ЭВМ показывает, что простые числа в арифметической прогрессии встречаются достаточно близко к ее началу. Упомянем в этой связи гипотезу о существовании бесконечного количества простых чисел с условием, что число также простое, т.е. простым является уже первый член прогрессии.

    Очень важен в связи с описываемым методом построения простых чисел также вопрос о расстоянии между соседними простыми числами в арифметической прогрессии. Ведь убедившись, что при некотором число составное, можно следующее значение взять равным и действовать так далее, пока не будет найдено простое число . И если расстояние между соседними простыми числами в прогрессии велико, нет надежды быстро построить нужное число . Перебор чисел до того момента, как мы наткнемся на простое число окажется слишком долгим. В более простом вопросе о расстоянии между соседними простыми числами и в натуральном ряде доказано лишь, что , что, конечно, не очень хорошо для наших целей. Вместе с тем существует так называемая гипотеза Крамера (1936 г.), что

    , дающая вполне приемлемую оценку. Примерно такой же результат следует и из расширенной гипотезы Римана. Вычисления на ЭВМ показывают, что простые числа в арифметических прогрессиях расположены достаточно плотно.

    В качестве итога обсуждения в этом разделе подчеркнем следующее: если принять на веру, что наименьшее простое число, а также расстояние между соседними простыми числами в прогрессии при

    оцениваются величиной , то описанная схема построения больших простых чисел имеет полиномиальную оценку сложности. Кроме того, несмотря на отсутствие теоретических оценок времени работы алгоритмов, отыскивающих простые числа в арифметических прогрессиях со сравнительно большой разностью, на практике эти алгоритмы работают вполне удовлетворительно. На обычном персональном компьютере без особых затрат времени строятся таким способом простые числа порядка .




    Конечно, способ конструирования простых чисел для использования в

    должен быть массовым, а сами простые числа должны быть в каком-то смысле хорошо распределенными. Это вносит ряд дополнительных осложнений в работу алгоритмов. Впрочем, описанная схема допускает массу вариаций. Все эти вопросы рассматриваются в статье [].

    Наконец, отметим, что существуют методы построения больших простых чисел, использующие не только простые делители , но и делители чисел , , . В основе их лежит использование последовательностей целых чисел, удовлетворяющих линейным рекуррентным уравнениям различных порядков. Отметим, что последовательность , члены которой присутствуют в формулировке малой теоремы Ферма, составляет решение рекуррентного уравнения первого порядка , .

    Next: 4.6. Как проверить большое

    Up: 4. Алгоритмические проблемы теории

    Previous: 4.4. Как отличить составное

    Contents:



    Как вводить ключ?


    Как вы собираетесь вводить ключ в программу шифрования? Проще всего - с клавиатуры. Именно этот вариант реализован в большинстве готовых программ, и знакомство с ними начинается с вежливого приглашения: ``enter your password: ...''. Только имейте в виду, что пароль, вводимый с клавиатуры, можно подсмотреть. Если программа шифрования при вводе пароля отображает его на экране, такой программой лучше не пользоваться. Когда при зашифровании файла вы вводите пароль, он тоже не должен отображаться на экране.
    А что случится, если при вводе пароля вы случайно нажали не ту клавишу? Вы думаете, что ввели один пароль, а на самом деле ввели другой. Пробуете расшифровать файл, а программа говорит: ``Пароль неправильный''. Чтобы такого не было, обычно программы шифрования при вводе пароля для зашифрования файла просят ввести пароль дважды. Если пользователь в первый раз ввел один пароль, а во второй раз - другой, значит, по крайней мере один раз он ошибся. А если оба раза пользователь ввел одно и то же, значит, все нормально. Вряд ли пользователь дважды ошибется одинаково.
    Next: Как проверять правильность ключа?
    Up: 6.3. Как зашифровать файл?
    Previous: Руки прочь от моих
    Contents:


    Как зашифровать файл?


    Next: Руки прочь от моих
    Up: 6. Компьютер и криптография
    Previous: 49783156431138-я попытка
    Contents:


    Какой алгоритм выбрать?


    Мы разговаривали со многими криптографами, и все они начинали с объяснения, что такое . Он прост и удобен в обращении, но имеет один существенный недостаток - раскрыть его может каждый школьник. Поэтому не будем на нем останавливаться и сразу перейдем к , либо , либо любому другому, в котором шифрование сводится к наложению одной последовательности на другую. Как признают все криптографы, при одноразовом использовании такого типа шифров дешифровать сообщение невозможно.
    Простейший способ построить программу шифрования - реализовать , знаки которой можно последовательно складывать со знаками исходного сообщения. Для наложения, конечно, нужна не любая последовательность, а именно случайная. Что это такое? На первый взгляд нет проблем. Различных генераторов известно великое множество. Какой из них выбрать? Ответ очевиден - тот, который вырабатывает последовательность, наиболее близкую к случайной.
    А теперь попробуйте дать определение случайной последовательности. Для эксперимента попросите кого-нибудь это сделать, и он наверняка скажет вам, что это такая последовательность, в которой каждый элемент случайно, независимо от других элементов и равновероятно может принимать каждое из возможных значений, или что-нибудь вроде ``это последовательность, являющаяся реализацией схемы независимых испытаний'', или - ``полученная в результате выборки из множества всех последовательностей с равномерным распределением''.
    Недостаток использования такого рода определений для целей криптографии становится очевидным при взгляде на последовательность
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.
    Она является одной из реализаций схемы последовательных независимых испытаний и ни в чем не уступает любой другой последовательности, например,
    1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1,
    так как вероятности появления их на выходе удовлетворяющего таким определениям случайного датчика одинаковы. С точки зрения теории, разницы нет никакой, но попробуйте их использовать для шифрования.

    Таким образом, наша случайная последовательность должна быть не просто получена по той или иной вероятностной схеме, но еще и быть похожей на случайную (ведь никому не придет в голову назвать первую из этих последовательностей случайной). Но кто может ответить, что значит ``похожей''? На что похожа, например, последовательность

    38765043353179975014693910353191097086635896251806230
    29822890926723711514115245155566479256098717968310496
    83605391251330391031054184702591128155858755970005635
    69377039492262413967236168374702472481350482084517454
    3990212200528238143667515252273 ?


    Попробуйте отличить ее от случайной последовательности. Вместе с тем, специалист по теории чисел скажет, что это десятичное представление простого числа . А теперь подумайте, как эта последовательность будет выглядеть в двоичной записи.

    Каковы возможные критерии похожести? Легко сформулировать условия похожести одной последовательности на другую. Но как сформулировать, что значит ``последовательность похожа на случайную последовательность''? Эта проблема не имеет однозначного ответа. Есть много подходов к определению понятия ``похожести'', но каждый из них страдает односторонностью. Поэтому от выбранного вами подхода во многом зависит качество шифрования.

    Next: Удобно ли носить большую

    Up: 6.2. Немного теории

    Previous: Что надо знать перед

    Contents:



    Какой должен быть пароль?


    Какой длины должен быть пароль, чтобы защита была стойкой? Число различных вариантов пароля должно быть не меньше числа различных ключей. Если вы шифруете файл с помощью алгоритма ГОСТ, а для пароля используете только строчные английские буквы и хотите, чтобы стойкость защиты была не ниже стойкости ГОСТа, то длина пароля должна быть не меньше, чем
    . (Здесь - число различных ключей ГОСТ, а 26 - число различных английских букв.) Так что вам придется придумывать 55-буквенный пароль. К тому же учтите, что если вы используете в качестве пароля не хаотичную последовательность букв, а осмысленную фразу, то нужно сделать поправку на избыточность языка. Если в пароль входят не только строчные буквы, но и заглавные, то для обеспечения необходимого числа ключей ГОСТ достаточно 51 символа. Только имейте в виду, что некоторые программы шифрования, получив пароль, преобразуют все его буквы к одному регистру. Например, делает все английские буквы, входящие в пароль, заглавными. Вы можете использовать в пароле русские буквы, но будьте осторожны! Не все программы шифрования корректно работают с русскими паролями. Таблица поможет вам оценить требуемую длину пароля в различных ситуациях.



    Таблица 1.
    Алфавит Мощность алфавита Количество вариантов 6-символьного пароля Длина пароля для достижения
    стойкости DES = стойкости ГОСТ =
    строчные английские буквы 26
    12 55
    строчные русские буквы 33
    12 51
    строчные и заглавные английские буквы 52
    10 45
    строчные и заглавные английские буквы и цифры 62
    10 43
    строчные и заглавные русские буквы 66
    10 43
    строчные и заглавные русские буквы и цифры 76
    9 41
    строчные и заглавные английские буквы, цифры и знаки препинания 94
    9 40
    строчные и заглавные русские буквы, цифры и знаки препинания 108
    9 38
    все алфавитно-цифровые символы русифицированной клавиатуры 160
    8 35

    Имейте в виду, что данные в этой таблице относятся к тому случаю, когда в качестве пароля берется равномерно распределенная случайная последовательность символов. Если в качестве пароля вы используете только осмысленные слова и фразы, количество возможных вариантов пароля будет гораздо меньше. Если в качестве пароля используется длинная фраза русского языка, то, как показывают теоретико-информационные исследования, количество возможных вариантов будет равно не , где - число символов во фразе, а всего лишь (эта приближенная оценка верна только для больших ). Так что в этом случае для достижения стойкости DES придется брать пароль длиной 56 символов, а для достижения стойкости ГОСТ - 256 символов.

    Так стоит ли вообще использовать для шифрования пароль, вводимый с клавиатуры? Для ответа на этот вопрос надо определить для себя - от кого вы собираетесь защищать информацию. Если ваш противник умеет только подбирать пароль с клавиатуры, то в качестве пароля лучше всего взять осмысленное слово длиной 6-8 символов. Главное, чтобы злоумышленнику было трудно догадаться до этого слова. При этом надо помнить, что нельзя использовать в качестве пароля:

  • свое имя (фамилию, отчество, прозвище, ...);


  • свою дату рождения (номер телефона, номер паспорта, ...);


  • имя того файла, который вам надо зашифровать;


  • и все другие пароли, которые легко угадать.


  • Если ваш противник, от которого вы защищаете информацию, умеет программировать, то он может написать программу, которая будет подбирать пароль автоматически. Даже если противник не умеет программировать, он может взять такую программу из Internet - там таких программ много. В этом случае пароль не должен быть осмысленным словом. В современном английском языке обычно употребляется всего около 100000 слов, в русском - чуть больше. Перебрать 100000 паролей можно очень быстро. Если в качестве шифра используется DES, на процессоре Pentium можно перебрать все английские слова-пароли всего за несколько секунд.

    Даже если пароль представляет собой слово, которого нет в словаре, его все равно можно легко угадать. Вы уже знаете, что порядок букв в словах и фразах естественного языка подчиняется определенным статистическим закономерностям. Например, в русском языке комбинация букв ий встречается часто, а оь - никогда. Для большинства естественных языков статистика встречаемости символов документирована. Если программа перебора вначале подбирает наиболее вероятные пароли, а менее вероятные оставляет на потом, то перебор сокращается в десятки и сотни раз. Один из авторов видел, как подобная программа подобрала пароль natenok на компьютере с процессором 386DX-40 всего за 10 минут. Общая сложность перебора была равна . Вот другие известные авторам случаи удачного подбора паролей:




    Сложность перебора

    Имеется в виду сложность тотального перебора. Поскольку реально проводился оптимизированный перебор, его сложность была гораздо меньше. Этим и объясняется несоответствие сложности перебора и времени подбора.
    Время подбора Тип процессора


    15 минут 486DX/4-100


    8 часов Pentium-120


    В первом случае пароль представлял собой два английских слова, записанных подряд без пробела. Одно из них было трехбуквенным, другое - пятибуквенным. Во втором случае пароль состоял из трех строчных английских букв, двух заглавных английских букв и одной цифры. Этот пароль был абсолютно бессмысленным. Выводы делайте сами.

    Лучший результат по подбору ключа был достигнут в 1997 году, когда в сети Internet был дешифрован файл, зашифрованный с помощью DES. В подборе ключа участвовали десятки тысяч пользователей Internet. Все множество ключей было разбито на непересекающиеся подмножества и каждый перебирал ключи из своего подмножества. Перебор длился несколько недель. Руководил работой добровольной ``виртуальной'' бригады взломщиков со своего сервера программист Рокки Версер - автор программы, перебирающей ключи. Общая сложность перебора составляла

    , но ключ был найден после перебора всего 25% ключей. При этом ``расколол'' сообщение компьютер с процессором Pentium/90 c 16 Мбайт оперативной памяти. Оно гласило: ``Надежная криптография делает мир безопасным''
    .

    Next: А можно ли обойтись

    Up: 6.3. Как зашифровать файл?

    Previous: Как проверять правильность ключа?

    Contents:



    Компьютер и криптография




    ``...задача воеводства совсем не в том состоит, чтобы достигать какого-то мечтательного благополучия, а в том, чтобы исстари заведенный порядок (хотя бы и не благополучный) от повреждений оберегать и ограждать''.

    М. Е. Салтыков-Щедрин
    Next: 6.1. Вместо введения
    Up: Введение в криптографию
    Previous: Литература к главе 5
    Contents:


    Криптографические протоколы




    Next: 3.1. Введение
    Up: Введение в криптографию
    Previous: Литература к главе 2
    Contents:


    Криптография и гипотеза PNP


    Как правило, знакомство математиков-неспециалистов с теорией сложности вычислений ограничивается классами P и NP и знаменитой гипотезой PNP.
    Напомним вкратце необходимые сведения из теории сложности вычислений. Пусть - множество всех конечных строк в двоичном алфавите . Подмножества в теории сложности принято называть языками. Говорят, что машина Тьюринга работает за полиномиальное время (или просто, что она полиномиальна), если существует полином такой, что на любом входном слове длины машина останавливается после выполнения не более, чем операций. Машина Тьюринга распознает (другой термин - принимает) язык , если на всяком входном слове машина
    останавливается в принимающем состоянии, а на всяком слове - в отвергающем. Класс P - это класс всех языков, распознаваемых машинами Тьюринга, работающими за полиномиальное время. Функция
    вычислима за полиномиальное время, если существует полиномиальная машина Тьюринга такая, что если на вход ей подано слово , то в момент останова на ленте будет записано значение . Язык принадлежит классу NP, если существуют предикат , вычислимый за полиномиальное время, и полином такие, что . Таким образом, язык принадлежит NP, если для всякого слова из длины можно угадать некоторую строку полиномиальной от длины и затем с помощью предиката убедиться в правильности догадки. Ясно, что
    . Является ли это включение строгим - одна из самых известных нерешенных задач математики. Большинство специалистов считают, что оно строгое (так называемая гипотеза PNP). В классе NP выделен подкласс максимально сложных языков, называемых NP-полными: любой NP-полный язык распознаваем за полиномиальное время тогда и только тогда, когда P=NP.
    Для дальнейшего нам потребуется еще понятие вероятностной машины Тьюринга. В обычных машинах Тьюринга (их называют детерминированными, чтобы отличить от вероятностных) новое состояние, в которое машина переходит на очередном шаге, полностью определяется текущим состоянием и тем символом, который обозревает головка на ленте. В вероятностных машинах новое состояние может зависеть еще и от случайной величины, которая принимает значения 0 и 1 с вероятностью каждое. Альтернативно, можно считать, что вероятностная машина Тьюринга имеет дополнительную случайную ленту, на которой записана бесконечная двоичная случайная строка. Случайная лента может читаться только в одном направлении и переход в новое состояние может зависеть от символа, обозреваемого на этой ленте.

    Рассмотрим теперь следующий естественный вопрос: не является ли гипотеза PNP необходимым и достаточным условием для существования стойких криптографических схем?

    Необходимость, и в самом деле, во многих случаях почти очевидна. Вернемся к примеру 1. Определим следующий язык

    существует сообщение такое, что и его -ый бит равен 1.

    Ясно, что : вместо описанного во введении полного перебора можно просто угадать открытый текст и проверить за полиномиальное время, что и -ый бит равен 1. Если да, то входное слово принимается, в противном случае - отвергается.

    В предположении P=NP существует детерминированный полиномиальный алгоритм, распознающий язык . Зная

    и , с помощью этого алгоритма можно последовательно, по биту, вычислить открытый текст . Тем самым криптосистема нестойкая.

    Тот же подход: угадать секретный ключ и проверить (за полиномиальное время) правильность догадки, применим в принципе и к другим криптографическим схемам. Однако, в некоторых случаях возникают технические трудности, связанные с тем, что по информации, которая имеется у противника, искомая величина (открытый текст, секретный ключ и т.п.) восстанавливается неоднозначно.

    Что же касается вопроса о достаточности предположения PNP, то здесь напрашивается следующий подход: выбрать какую-либо NP-полную задачу и построить на ее основе криптографическую схему, задача взлома которой (т.е. задача, стоящая перед противником) была бы NP-полной. Такие попытки предпринимались в начале 80-х годов, в особенности в отношении криптосистем с открытым ключом, но к успеху не привели. Результатом всех этих попыток стало осознание следующего факта: даже если PNP, то любая NP-полная задача может оказаться трудной лишь на некоторой бесконечной последовательности входных слов. Иными словами, в определение класса NP заложена мера сложности ``в худшем случае''. Для стойкости же криптографической схемы необходимо, чтобы задача противника была сложной ``почти всюду''. Таким образом, стало ясно, что для криптографической стойкости необходимо существенно более сильное предположение, чем PNP. А именно, предположение о существовании односторонних функций.

    Next: 2.3. Односторонние функции

    Up: 2. Криптография и теория

    Previous: 2.1. Введение

    Contents:



    Криптография и теория сложности


    Основное внимание в настоящей главе мы уделяем разъяснению важнейших идей, связанных с применением теоретико-сложностного подхода в криптографии. Изложение по необходимости недостаточно формальное - для математической криптографии типичны многостраничные определения. Предполагается знакомство читателя с основами теории сложности вычислений: понятиями машины Тьюринга, классов P и NP (см. []), а также с главой настоящей книги.
    Next: 2.1. Введение
    Up: Введение в криптографию
    Previous: 1.5. Заключение
    Contents:


    Линейное разделение секрета


    Начнем с предложенной А. Шамиром [] элегантной схемы разделения секрета для пороговых структур доступа. Пусть конечное поле из элементов (например, - простое число и ) и n.$" width="47" height="28" > Сопоставим участникам различных ненулевых элементов поля и положим . При распределении секрета дилер СРС генерирует независимых равномерно распределенных на случайных величин ( ) и посылает -му участнику () ``его'' значение многочлена
    , где . Поскольку любой многочлен степени однозначно восстанавливается по его значениям в произвольных точках (например, по интерполяционной формуле Лагранжа), то любые участников вместе могут восстановить многочлен и, следовательно, найти значение секрета как . По этой же причине для любых участников, любых полученных ими значений проекций и любого значения секрета существует ровно один ``соответствующий'' им многочлен, т.е. такой, что и . Следовательно, эта схема является совершенной в соответствии с . ``Линейность'' данной схемы становится ясна, если записать ``разделение секрета'' в векторно-матричном виде:

    (3)

    где , -матрица
    и . Заметим, что любые столбцов этой матрицы линейно независимы, а максимально возможное число столбцов матрицы равно , и чтобы добиться обещанного в разделе значения надо добавить столбец, соответствующий точке ``бесконечность''.
    Упражнение. Придумайте сами, как это сделать.
    Возьмем в в качестве произвольную -матрицу с элементами из поля . Получаемую СРС будем называть одномерной линейной СРС. Она является совершенной комбинаторной СРС со структурой доступа , состоящей из множеств таких, что вектор представим в виде линейной комбинации векторов где это -ый столбец матрицы Строками матрицы , соответствующей данной СРС являются, как видно из , линейные комбинации строк матрицы . Перепишем
    в следующем виде

    где - скалярное произведение векторов и . Если , т.е. если , то

    и, следовательно, значение секрета однозначно находится по его ``проекциям''. Рассмотрим теперь случай, когда вектор не представим в виде линейной комбинации векторов . Нам нужно показать, что в этом случае для любых заданных значений координат из множества число строк матрицы с данным значением нулевой координаты не зависит от этого значения. В этом нетрудно убедиться, рассмотрев как систему линейных уравнений относительно неизвестных и воспользовавшись тем, что система совместна тогда и только тогда, когда ранг матрицы коэффициентов равен рангу расширенной матрицы, а число решений у совместных систем одинаково и равно числу решений однородной системы.

    Указание. Рассмотрите две системы: без ``нулевого'' уравнения (т.е. со свободным членом) и с ним. Так как вектор не представим в виде линейной комбинации векторов , то ранг матрицы коэффициентов второй системы на 1 больше ранга матрицы коэффициентов первой системы. Отсюда немедленно следует, что если первая система совместна, то совместна и вторая при любом .

    Эта конструкция подводит нас к определению общей линейной СРС. Пусть секрет и его ``проекции'' представляются как конечномерные векторы

    и генерируются по формуле где - некоторые -матрицы. Сопоставим каждой матрице линейное пространство ее столбцов (т.е. состоящее из всех линейных комбинаций вектор-столбцов матрицы ). Несложные рассуждения, аналогичные приведенным выше для одномерного случая (все ), показывают, что данная конструкция дает совершенную СРС тогда и только тогда, когда семейство линейных подпространств конечномерного векторного пространства удовлетворяет упомянутому во введении свойству ``все или ничего''. При этом множество является разрешенным (), если и только если линейная оболочка подпространств содержит подпространство целиком. С другой стороны, множество является неразрешенным ( ), если и только если линейная оболочка подпространств пересекается с подпространством только по вектору . Отметим, что если бы для некоторого пересечение и линейной оболочки было нетривиальным, то участники не могли бы восстановить секрет однозначно, но получали бы некоторую информацию о нем, т.е. схема не была бы совершенной.

    Пример 3.

    Рассмотрим следующую структуру доступа для случая четырех участников, задаваемую

    Она известна как первый построенный пример структуры доступа, для которой не существует идеальной реализации. Более того, было доказано, что для любой ее совершенной реализации

    . С другой стороны, непосредственная проверка показывает, что выбор матриц , приведенных в табл. 1, дает совершенную линейную СРС с , реализующую эту структуру, которая, следовательно, является и оптимальной (наиболее экономной) СРС.



    Таблица 1.

    Next: 5.4. Идеальное разделение секрета

    Up: 5. Математика разделения секрета

    Previous: 5.2. Разделение секрета для

    Contents:



    Математические основы


    Большое влияние на развитие криптографии оказали появившиеся в середине XX века работы американского математика Клода Шеннона. В этих работах были заложены основы теории информации, а также был разработан математический аппарат для исследований во многих областях науки, связанных с информацией. Более того, принято считать, что теория информации как наука родилась в 1948 году после публикации работы К. Шеннона ``Математическая теория связи''1).
    В своей работе ``Теория связи в секретных системах'' Клод Шеннон обобщил накопленный до него опыт разработки шифров (см. Приложение ). Оказалось, что даже в очень сложных шифрах в качестве типичных компонентов можно выделить такие простые шифры как шифры замены, шифры перестановки или их сочетания.
    является простейшим, наиболее популярным шифром. Типичными примерами являются шифр Цезаря, ``цифирная азбука'' Петра Великого и ``пляшущие человечки'' А.Конан Дойла. Как видно из самого названия, шифр замены осуществляет преобразование замены букв или других ``частей'' открытого текста на аналогичные ``части'' шифрованного текста. Легко дать математическое описание шифра замены. Пусть и - два алфавита (открытого и шифрованного текстов соответственно), состоящие из одинакового числа символов. Пусть также - взаимнооднозначное отображение в . Тогда шифр замены действует так: открытый текст преобразуется в шифрованный текст .
    , как видно из названия, осуществляет преобразование перестановки букв в открытом тексте. Типичным примером шифра перестановки является шифр ``Сцитала''. Обычно открытый текст разбивается на отрезки равной длины и каждый отрезок шифруется независимо. Пусть, например, длина отрезков равна и - взаимнооднозначное отображение множества в себя. Тогда шифр перестановки действует так: отрезок открытого текста преобразуется в отрезок шифрованного текста
    .

    Важнейшим для развития криптографии был результат К. Шеннона о существовании и единственности абсолютно стойкого шифра.

    Единственным таким шифром является какая-нибудь форма так называемой ленты однократного использования, в которой открытый текст ``объединяется'' с полностью случайным ключом такой же длины.

    Этот результат был доказан К.Шенноном с помощью разработанного им теоретико- информационного метода исследования шифров. Мы не будем здесь останавливаться на этом подробно, заинтересованному читателю рекомендуем изучить работу К.Шеннона (cм. Приложение .).

    Обсудим особенности строения абсолютно стойкого шифра и возможности его практического использования. Типичным и наиболее простым примером реализации абсолютно стойкого шифра является шифр Вернама, который осуществляет побитовое сложение -битового открытого текста и -битового ключа:


    Здесь - открытый текст, - ключ, - шифрованный текст.



    Подчеркнем, что для абсолютной стойкости существенным является каждое из следующих требований к ленте однократного использования:


    1) полная случайность (равновероятность) ключа (это, в частности, означает, что ключ нельзя вырабатывать с помощью какого-либо детерминированного устройства);

    2) равенство длины ключа и длины открытого текста;

    3) однократность использования ключа.

    В случае нарушения хотя бы одного из этих условий шифр перестает быть абсолютно стойким и появляются принципиальные возможности для его вскрытия (хотя они могут быть трудно реализуемыми).

    Но, оказывается, именно эти условия и делают абсолютно стойкий шифр очень дорогим и непрактичным. Прежде чем пользоваться таким шифром, мы должны обеспечить всех абонентов достаточным запасом случайных ключей и исключить возможность их повторного применения. А это сделать необычайно трудно и дорого.

    Как отмечал Д.Кан: ``Проблема создания, регистрации, распространения и отмены ключей может показаться не слишком сложной тому, кто не имеет опыта передачи сообщений по каналам военной связи, но в военное время объем передаваемых сообщений ставит в тупик даже профессиональных связистов. За сутки могут быть зашифрованы сотни тысяч слов. Создание миллионов ключевых знаков потребовало бы огромных финансовых издержек и было бы сопряжено с большими затратами времени. Так как каждый текст должен иметь свой собственный, единственный и неповторимый ключ, применение идеальной системы потребовало бы передачи по крайней мере такого количества знаков, которое эквивалентно всему объему передаваемой военной информации.''




    В силу указанных причин абсолютно стойкие шифры применяются только в сетях связи с небольшим объемом передаваемой информации, обычно это сети для передачи особо важной государственной информации.

    Теперь уже понятно, что чаще всего для защиты своей информации законные пользователи вынуждены применять неабсолютно стойкие шифры. Такие шифры, по крайней мере теоретически, могут быть вскрыты. Вопрос только в том, хватит ли у противника сил, средств и времени для разработки и реализации соответствующих алгоритмов. Обычно эту мысль выражают так: противник с неограниченными ресурсами может вскрыть любой неабсолютно стойкий шифр.

    Как же должен действовать в этой ситуации законный пользователь, выбирая для себя шифр? Лучше всего, конечно, было бы доказать, что никакой противник не может вскрыть выбранный шифр, скажем, за 10 лет и тем самым получить теоретическую оценку стойкости. К сожалению, математическая теория еще не дает нужных теорем - они относятся к нерешенной проблеме нижних оценок вычислительной сложности задач.

    Поэтому у пользователя остается единственный путь- получение практических оценок стойкости. Этот путь состоит из следующих этапов:

    - понять и четко сформулировать, от какого противника мы собираемся защищать информацию; необходимо уяснить, что именно противник знает или сможет узнать о системе шифра, а также какие силы и средства он сможет применить для его вскрытия;

    - мысленно стать в положение противника и пытаться с его позиций атаковать шифр, т.е. разрабатывать различные алгоритмы вскрытия шифра; при этом необходимо в максимальной мере обеспечить моделирование сил, средств и возможностей противника;

    - наилучший из разработанных алгоритмов использовать для практической оценки стойкости шифра.

    Здесь полезно для иллюстрации упомянуть о двух простейших методах вскрытия шифра: случайное угадывание ключа (он срабатывает с маленькой вероятностью, зато имеет маленькую сложность) и перебор всех подряд ключей вплоть до нахождения истинного (он срабатывает всегда, зато имеет очень большую сложность). Отметим также, что не всегда нужна атака на ключ: для некоторых шифров можно сразу, даже не зная ключа, восстанавливать открытый текст по шифрованному.

    Next: 1.4. Новые направления

    Up: 1. Основные понятия криптографии

    Previous: 1.2. Предмет криптографии

    Contents:



    Математика разделения секрета



    Next: 5.1. Введение
    Up: Введение в криптографию
    Previous: Литература к главе 4
    Contents:


    Многоалфавитные шифры замены с периодическим ключом


    Рассмотрим 30-буквенный алфавит русского языка:

    АБВГДЕЖЗИКЛМНОПРСТУФХЦЧШЩЬЫЭЮЯ.
    В этом алфавите отсутствуют буквы , Й и Ъ, что практически не ограничивает возможностей по составлению открытых сообщений на русском языке. В самом деле, замена буквы на букву Е, буквы Й - на букву И, а буквы Ъ - на букву Ь позволяет понять смысл открытого сообщения, написанного с использованием этого алфавита.
    В алфавите любого естественного языка буквы следуют друг за другом в определенном порядке. Это дает возможность присвоить каждой букве алфавита ее естественный порядковый номер. Так, в приведенном алфавите букве А присваивается порядковый номер 1, букве О - порядковый номер 14, а букве Ы - порядковый номер 27. Если в открытом сообщении каждую букву заменить ее естественным порядковым номером в рассматриваемом алфавите, то преобразование числового сообщения в буквенное позволяет однозначно восстановить исходное открытое сообщение. Например, числовое сообщение 1 11 20 1 3 9 18 преобразуется в буквенное сообщение: АЛФАВИТ.
    Дополним естественный порядок букв в алфавите. Будем считать, что за последней буквой алфавита следует его первая буква. Такой порядок букв достигается, если расположить их на окружности в естественном порядке по часовой стрелке. При таком расположении можно каждой из букв присвоить порядковый номер относительно любой буквы алфавита. Такой номер назовем относительным порядковым номером. Заметим, что если число букв в алфавите равно , то относительный порядковый номер данной буквы может принимать все значения от 0 до в зависимости от буквы, относительно которой он вычисляется. Для примера рассмотрим исходный 30-буквенный алфавит русского языка, расположенный на окружности (см. рис.).


    В этом случае порядковый номер буквы А относительно буквы А равен 0, относительно буквы Я он уже равен 1 и так далее, относительно буквы Б порядковый номер А равен 29. Значения относительных порядковых номеров букв алфавита из букв совпадают со значениями всевозможных остатков от деления целых чисел на натуральное число . Убедитесь в том, что порядковый номер какой-либо буквы алфавита относительно другой буквы равен остатку от деления разности их естественных порядковых номеров на число букв в алфавите.

    Обозначим символами:
    - порядковый номер буквы с естественным порядковым номером относительно буквы с естественным порядковым номером ;
    - остаток от деления целого числа на натуральное число .

    При этом справедливо равенство

    , где - число букв в алфавите.

    Для удобства обозначим

    , . Тогда имеют место равенства:



    Формула () непосредственно получается из () и ее можно использовать для замены буквы с естественным порядковым номером на букву с естественным порядковым номером . Число называется знаком гаммы.

    Для уяснения введенных обозначений читателю предлагается самостоятельно решить следующие задачи.

    1. Докажите, что для любых целых , и любого натурального справедливо равенство: , где - целая часть числа (наибольшее целое число, не превосходящее числа ).

    2. Докажите равенство () и равенство:

    (7)
    Для зашифрования некоторого открытого сообщения, состоящего из букв, с помощью указанной замены требуется знаков гаммы: по одному на каждую букву сообщения. Последовательность знаков гаммы, необходимая для зашифрования открытого сообщения, является ключом данного шифра.

    Если последовательность знаков гаммы имеет небольшой (по сравнению с длиной открытого текста) период, то соответствующий шифр называется шифром замены с периодическим ключом. Ключом такого шифра, по существу, является отрезок гаммы, равный по длине периоду.

    Число отрезков некоторой длины , состоящих из чисел от 0 до равно , так как на каждой из позиций отрезка может быть любое из чисел (независимо от чисел, находящихся на других позициях). Для наглядности приведем значения при в зависимости от значений :
    1 2 3 4 5 6 7
    30 900 27000 810000 24300000

    8 9 10
    Как видно из приведенной таблицы, число ключей рассматриваемого шифра замены с ключом периода 10, достаточно внушительно и составляет уже сотни триллионов. Это обстоятельство делает практически невозможным вскрытие шифра методом перебора всех его ключей даже при меньших значениях периода гаммы.




    Для рассматриваемого шифра характерно то, что буквы открытого текста, зашифрованные одним и тем же знаком гаммы, по сути, зашифрованы одним и тем же шифром простой замены. Например, ключевая таблица этого шифра простой замены при знаке гаммы, равном 1, имеет вид:
    А Б В Г Д Е Ж З И К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ь Ы Э Ю Я
    Б В Г Д Е Ж З И К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ь Ы Э Ю Я А
    Вторую строку этой ключевой таблицы называют алфавитом шифрования, соответствующим данному знаку гаммы. Поскольку в рассматриваемом шифре возможны все значения гаммы от 0 до 29, то данный шифр можно рассматривать как 30-алфавитный шифр замены. Если каждому из этих алфавитов поставить в соответствие его первую букву, то каждый знак гаммы можно заменить этой буквой. В этом случае ключ рассматриваемого шифра можно взаимнооднозначно заменить соответствующим словом в этом же алфавите. Такой многоалфавитный шифр замены был описан в 1585 году французом Блезом де Виженером в его ``Трактате о шифрах'':
    ABCDEFGHIJKLMNOPQRSTUVWXYZ

    BCDEFGHIJKLMNOPQRSTUVWXYZA

    CDEFGHIJKLMNOPQRSTUVWXYZAB

    DEFGHIJKLMNOPQRSTUVWXYZABC

    EFGHIJKLMNOPQRSTUVWXYZABCD

    FGHIJKLMNOPQRSTUVWXYZABCDE

    GHIJKLMNOPQRSTUVWXYZABCDEF

    HIJKLMNOPQRSTUVWXYZABCDEFG

    IJKLMNOPQRSTUVWXYZABCDEFGH

    JKLMNOPQRSTUVWXYZABCDEFGHI

    KLMNOPQRSTUVWXYZABCDEFGHIJ

    LMNOPQRSTUVWXYZABCDEFGHIJK

    MNOPQRSTUVWXYZABCDEFGHIJKL

    NOPQRSTUVWXYZABCDEFGHIJKLM

    OPQRSTUVWXYZABCDEFGHIJKLMN

    PQRSTUVWXYZABCDEFGHIJKLMNO

    QRSTUVWXYZABCDEFGHIJKLMNOP

    RSTUVWXYZABCDEFGHIJKLMNOPQ

    STUVWXYZABCDEFGHIJKLMNOPQR

    TUVWXYZABCDEFGHIJKLMNOPQRS

    UVWXYZABCDEFGHIJKLMNOPQRST

    VWXYZABCDEFGHIJKLMNOPQRSTU

    WXYZABCDEFGHIJKLMNOPQRSTUV

    XYZABCDEFGHIJKLMNOPQRSTUVW

    YZABCDEFGHIJKLMNOPQRSTUVWX

    ZABCDEFGHIJKLMNOPQRSTUVWXY

    Все алфавиты шифрования относительно латинского алфавита были сведены им в таблицу, получившую впоследствии название ее автора. Выше приведена таблица Виженера для современного латинского алфавита, она состоит из списка 26 алфавитов шифрования. Способ зашифрования с помощью таблицы Виженера заключается в том, что первый из алфавитов соответствует алфавиту открытого текста, а букве ключевого слова соответствует алфавит шифрования из данного списка, начинающийся с этой буквы. Буква шифрованного текста находится в алфавите шифрования на месте, соответствующем данной букве открытого текста. Простота построения таблицы Виженера делает эту систему привлекательной для практического использования. Рассмотрим пример вскрытия многоалфавитного шифра замены с периодическим ключом, содержащийся в рассказе Жюля Верна ``Жангада''. Вот текст, который был получен с помощью такого типа шифра:
    <


    table cellpadding="3" >

    С Г У Ч П В Э Л Л З Й Р Т Е П Н Л Н Ф Г И Н Б О Р Г Й У Г Л Ч Д К О Т Х Ж Г У У М З Д Х Р Ъ С Г С Ю Д Т П Ъ А Р В Й Г Г И Щ В Ч Э Е Ц С Т У Ж В С Е В Х А Х Я Ф Б Ь Б Е Т Ф З С Э Ф Т Х Ж З Б З Ъ Г Ф Б Щ И Х Х Р И П Ж Т З В Т Ж Й Т Г О Й Б Н Т Ф Ф Е О И Х Т Т Е Г И И О К З П Т Ф Л Е У Г С Ф И П Т Ь М О Ф О К С Х М Г Б Т Ж Ф Ы Г У Ч О Ю Н Ф Н Ш З Г Э Л Л Ш Р У Д Е Н К О Л Г Г Н С Б К С С Е У П Н Ф Ц Е Е Е Г Г С Ж Н О Е Ы И О Н Р С И Т К Ц Ь Е Д Б У Б Т Е Т Л О Т Б Ф Ц С Б Ю Й П М П З Т Ж П Т У Ф К Д Г Догадавшись, что ключом является натуральное число, персонаж ``Жангады'', судья Жаррикес, объясняет сыну обвиняемого Маноэлю, как был зашифрован документ: -``Давайте возьмем фразу, все равно какую, ну хотя бы вот эту:
    У СУДЬИ ЖАРРИКЕСА ПРОНИЦАТЕЛЬНЫЙ УМ

    А теперь я возьму наудачу какое-нибудь число, чтобы сделать из этой фразы криптограмму. Предположим, что число состоит из трех цифр, например, 4, 2 и 3. Я подписываю число 423 под строчкой так, чтобы под каждой буквой стояла цифра, и повторяю число, пока не дойду до конца фразы. Вот что получится:
    У С У Д Ь И Ж А Р Р И К Е С А П Р О Н И Ц А Т Е Л Ь Н Ы Й У М
    4 2 3 4 2 3 4 2 3 4 2 3 4 2 3 4 2 3 4 2 3 4 2 3 4 2 3 4 2 3 4
    Будем заменять каждую букву нашей фразы той буквой, которая стоит после нее в алфавите
    АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ
    на месте, указанном цифрой. Например, если под буквой А стоит цифра 3, вы отсчитываете три буквы и заменяете ее буквой Г. Если буква находится в конце алфавита и к ней нельзя прибавить нужного числа букв, тогда отсчитывают недостающие буквы с начала алфавита.

    Доведем до конца начатую криптограмму, построенную на числе 423, и исходная фраза заменится следующей:
    <


    Ч У Ц И Ю Л К В У Ф К Н Й У Г У Т С С К Щ Д Ф И П Ю Р Я Л Ц Р
    Но как найти числовой ключ? Подсчет, проведенный Жаррикесом, показывает, что поиск ключа перебором всех возможных чисел, состоящих не более чем из 10 цифр, потребует более трехсот лет. Судья пытается наудачу отгадать заветное число. Наступает день казни. Обвиняемого Жоама Дакосту ведут на виселицу

    Но все заканчивается благополучно. Помог счастливый случай. Другу Жоама удается узнать, что автора криптограммы звали Ортега. Поставив буквы О, Р, Т, Е, Г, А над последними шестью буквами документа и подсчитав, на сколько эти буквы по алфавиту сдвинуты относительно букв криптограммы, судья, наконец, находит ключ к документу:
    исходное сообщение О Р Т Е Г А
    шифрованное сообщение Т У Ф К Д Г
    относительный сдвиг букв 4 3 2 5 1 3
    Г.А.Гуревич в статье ``Криптограмма Жюля Верна'' (журнал ``Квант'' #9, 1985 г.) обращает внимание на то, что судья прошел практически весь путь до отгадки. Будучи уверенным, что в документе упоминается имя Жоама Дакосты, судья строит предположение: ``Если бы строчки были разделены на слова, то мы могли бы выделить слова, состоящие из семи букв, как и фамилия Дакоста, и, опробуя их одно за другим, может быть и отыскали бы число, являющееся ключом криптограммы''. Маноэль, в свою очередь, поняв основную идею судьи, предлагает опробовать возможные расположения слова ДАКОСТА в исходном тексте. Поскольку текст состоит из 252 букв, то достаточно опробовать не более 246 вариантов. В один прекрасный момент, записав над фрагментом ЙБНТФФЕ слово ДАКОСТА, мы определили бы последовательность цифр 5134325. Естественно предположить, что последняя цифра 5 - начало следующего периода:
    исходное сообщение ... Д А К О С Т А ...
    шифрованное сообщение ... Й Б Н Т Ф Ф Е ...
    относительный сдвиг букв ... 5 1 3 4 3 2 5 ...
    Вместо ключа 432513 мы нашли его циклическую перестановку 513432, что ни в коей мере не мешает расшифрованию текста. Для этого достаточно для каждой буквы шифрованного текста определить букву, относительно которой данная буква сдвинута на величину соответствующей цифры ключа:
    С Г У Ч П В Э Л Л З Й Р Т Е П Н Л Н Ф Г И Н Б О Р
    4 3 2 5 1 3 4 3 2 5 1 3 4 3 2 5 1 3 4 3 2 5 1 3 4
    Н А С Т О Я Щ И Й В И Н О В Н И К К Р А Ж И А Л М




    Г Й У Г Л Ч Д К О Т Х Ж Г У У М З Д Х Р Ъ С Г С Ю
    3 2 5 1 3 4 3 2 5 1 3 4 3 2 5 1 3 4 3 2 5 1 3 4 3
    А З О В И У Б И Й С Т В А С О Л Д А Т О Х Р А Н Ы

    Д Т П Ъ А Р В Й Г Г И Щ В Ч Э Е Ц С Т У Ж В С Е В
    2 5 1 3 4 3 2 5 1 3 4 3 2 5 1 3 4 3 2 5 1 3 4 3 2
    В Н О Ч Ь Н А Д В А Д Ц А Т Ь В Т О Р О Е Я Н В А

    Х А Х Я Ф Б Ь Б Е Т Ф З С Э Ф Т Х Ж З Б З Ъ Г Ф Б
    5 1 3 4 3 2 5 1 3 4 3 2 5 1 3 4 3 2 5 1 3 4 3 2 5
    Р Я Т Ы С Я Ч А В О С Е М Ь С О Т Д В А Д Ц А Т Ь

    Щ И Х Х Р И П Ж Т З В Т Ж Й Т Г О Й Б Н Т Ф Ф Е О
    1 3 4 3 2 5 1 3 4 3 2 5 1 3 4 3 2 5 1 3 4 3 2 5 1
    Ш Е С Т О Г О Г О Д А Н Е Ж О А М Д А К О С Т А Н

    И Х Т Т Е Г И И О К З П Т Ф Л Е У Г С Ф И П Т Ь М
    3 4 3 2 5 1 3 4 3 2 5 1 3 4 3 2 5 1 3 4 3 2 5 1 3
    Е С П Р А В Е Д Л И В О П Р И Г О В О Р Е Н Н Ы Й

    О Ф О К С Х М Г Б Т Ж Ф Ы Г У Ч О Ю Н Ф Н Ш З Г Э
    4 3 2 5 1 3 4 3 2 5 1 3 4 3 2 5 1 3 4 3 2 5 1 3 4
    К С М Е Р Т И А Я Н Е С Ч А С Т Н Ы Й С Л У Ж А Щ

    Л Л Ш Р У Д Е Н К О Л Г Г Н С Б К С С Е П У Н Ф Ц
    3 2 5 1 3 4 3 2 5 1 3 4 3 2 5 1 3 4 3 2 1 5 3 4 3
    И Й У П Р А В Л Е Н И Я А Л М А З Н О Г О О К Р У

    Е Е Е Г Г С Ж Н О Е Ы И О Н Р С И Т К Ц Ь Е Д Б У
    2 5 1 3 4 3 2 5 1 3 4 3 2 5 1 3 4 3 2 5 1 3 4 3 2
    Г А Д А Я О Д И Н В Ч Е М И П О Д П И С Ы В А Ю С

    Б Т Е Т Л О Т Б Ф Ц С Б Ю Й П М П З Т Ж П Т У Ф К
    5 1 3 4 3 2 5 1 3 4 3 2 5 1 3 4 3 2 5 1 3 4 3 2 5
    Ь С В О И М Н А С Т О Я Щ И М И М Е Н Е М О Р Т Е


    Д Г
    1 3
    Г А
    Итак, первая идея состоит в использовании вероятного слова, то есть слова, которое с большой вероятностью может содержаться в данном открытом тексте. Речь идет в том числе и о словах, часто встречающихся в любых открытых текстах. К ним, например, относятся такие слова как КОТОРЫЙ, ТОГДА, ЧТО, ЕСЛИ, приставки ПРИ, ПРЕ, ПОД и т.п.

    Вторая идея основана на том, что буквы открытого сообщения находятся в открытом тексте на вполне определенных позициях. Если разность номеров их позиций окажется кратной периоду , то стоящие на этих позициях буквы будут зашифрованы одним и тем же знаком гаммы. Это означает, что определенные части открытого текста окажутся зашифрованными шифром простой замены. Эту идею можно использовать для определения периода ключа многоалфавитного шифра замены.

    Для определения периода гаммы могут быть применены два способа. Первый из них известен как тест Казизки, второй способ использует так называемый индекс совпадения.

    Тест Казизки был описан в 1863 году Фридрихом Казизки. Он основан на следующем наблюдении: два одинаковых отрезка открытого текста будут соответствовать двум одинаковым отрезкам шифрованного текста, если разность номеров позиций их начал кратна периоду гаммы. Следовательно, если мы обнаружим два одинаковых отрезка шифрованного текста, состоящих по крайней мере из трех букв, то с большой вероятностью им соответствуют одинаковые отрезки открытого текста (случайное совпадение маловероятно). Тест Казизки, по сути, заключается в том, что в шифрованном тексте надо найти пары одинаковых отрезков, вычислить разности номеров позиций их начал и определить общие делители найденных разностей. Как правило, один из этих общих делителей равен периоду гаммы.

    Для уточнения значения периода гаммы может быть использован индекс совпадения, предложенный в 1920 году Уильямом Фридманом. Для последовательности букв индекс совпадения представляет собой число, равное количеству всех пар номеров позиций последовательности, на которых находятся одинаковые буквы, деленному на общее количество всех пар номеров позиций этой последовательности, т.е. среднему числу пар, состоящих из одинаковых букв. Примечательно то, что при зашифровании последовательности с помощью шифра простой замены указанное число не меняется.




    Для иллюстрации этого подхода рассмотрим тот же самый шифрованный текст, записанный в виде последовательности столбцов, содержащих по шесть подряд идущих букв текста в каждом (подряд идущие буквы текста располагаются в столбцах сверху вниз):
    С Э Т Ф Р Ч Ж Д С А И Ц С Я Т Т Ъ Х Т Т Т Х И Ф Ф О М Ы Н Э Д Г С Ф Г Ы И Д Т Ц М Т
    Г Л Е Г Г Д Г Х Ю Р Щ С Е Ф Ф Х Г Х З Г Ф Т О Л И Ф Г Г Ф Л Е Г С Ц С И Т Б Л С П У
    У Л П И Й К У Р Д В В Т В Б З Ж Ф Р В О Ф Т К Е П О Б У Н Л Н Н Е Е Ж О К У О Б З Ф
    Ч З Н Н У О У Ъ Т Й Ч У Х Ь С З Б И Т Й Е Е З У Т К Т Ч Ш Ш К С У Е Н Н Ц Б Т Ю Т К
    П Й Л Б Г Т М С П Г Э Ж А Б Э Б Щ П Ж Б О Г П Г Ь С Ж О З Р О Б П Е О Р Ь Т Б Й Ж Д
    В Р Н О Л Х З Г Ъ Г Е В Х Е Ф З И Ж Й Н И И Т С М Х Ф Ю Г У Л К Н Г Е С Е Е Ф П П Г
    Составим для каждой из 6 получившихся строк соответствующий ей набор частот встречаемости букв в каждой из них:
    А Б В Г Д Е Ж З И Й К Л М Н О П
    1 строка 1 0 0 2 3 0 1 0 3 0 0 0 2 1 1 0
    2 строка 0 1 0 9 1 3 0 1 2 0 0 4 0 0 1 1
    3 строка 0 3 4 0 1 3 2 2 1 1 3 2 0 3 4 2
    4 строка 0 2 0 0 0 4 0 3 1 2 3 0 0 4 1 0
    5 строка 1 6 0 4 1 1 4 1 0 2 0 0 1 0 4 5
    6 строка 0 0 2 5 0 5 1 2 3 1 1 2 1 3 1 2

    Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я
    1 строка 1 4 8 0 4 2 2 1 0 0 1 2 0 2 0 1
    2 строка 1 4 2 1 5 3 1 0 0 1 0 0 0 0 1 0
    3 строка 2 0 2 4 3 0 0 0 0 0 0 0 0 0 0 0
    4 строка 0 2 6 4 0 1 1 3 2 0 1 0 1 0 1 0
    5 строка 2 2 2 0 0 0 0 0 0 1 0 0 2 2 0 0
    6 строка 1 2 1 1 3 3 0 0 0 0 1 0 0 0 1 0


    По этой таблице частот встречаемости букв вычислим для каждой строки соответствующий ей индекс совпадения:
    <


    Номер строки 1 2 3 4 5 6


    Индекс совпадения
    0,060 0,077 0,045 0,053 0,057 0,057
    Для всего шифрованного текста индекс совпадения равен 0,040, что заметно меньше, чем индекс совпадения для каждой из указанных строк. Это является хорошим подтверждением гипотезы о длине периода гаммы.

    Другие идеи подходов к вскрытию рассматриваемых шифров основаны на тех или иных особенностях их построения и использования (см. решения задач , , , , , , ).

    Next: 7.5. Условия задач олимпиад

    Up: 7. Олимпиады по криптографии

    Previous: Ответы к упражнению.

    Contents:



    Немного теории


    Next: Что надо знать перед
    Up: 6. Компьютер и криптография
    Previous: Для чего компьютеру нужна
    Contents:


    Ненадежность


    Предположим теперь, что для английского текста используется шифр простой подстановки и что перехвачено определенное число, скажем , букв зашифрованного текста. Если достаточно велико, скажем более 50, то почти всегда существует единственное решение шифра, т.е. единственная последовательность, имеющая смысл на английском языке, в которую переводится перехваченный материал с помощью простой подстановки. Для меньших шансы на неединственность решения увеличиваются; для , вообще говоря, будет существовать некоторое число подходящих отрывков осмысленного английского текста, в то время как для окажется подходящей значительная часть (порядка ) всех возможных значащих английских последовательностей такой длины, так как из восьми букв редко повторится больше чем одна. При , очевидно, возможна любая буква и апостериорная вероятность любой буквы будет равна ее априорной вероятности. Для одной буквы система является совершенно секретной.
    Это происходит, вообще говоря, со всеми разрешимыми шифрами. Прежде чем перехвачена криптограмма, можно представить себе априорные вероятности, связанные с различными возможными сообщениями, а также с различными ключами. После того как материал перехвачен, шифровальщик противника вычисляет их апостериорные вероятности. При увеличении числа вероятности некоторых сообщений возрастают, но для большинства сообщений они убывают до тех пор, пока не останется только одно сообщение, имеющее вероятность, близкую к единице, в то время как полная вероятность всех других близка к нулю.



    Таблица I. Апостериорныевероятности для криптограммы типа

    Цезаря

    Расшифровки
    0,028 0,0377 0,1111 0,3673 1
    0,038 0,0314
    0,131 0,0881
    0,029 0,0189
    0,020
    0,053 0,0063
    0,063 0,0126
    0,001
    0,004
    0,034 0,1321 0,2500
    0,025 0,0222
    0,071 0,1195
    0,080 0,0377
    0,020 0,0818 0,4389 0,6327
    0,001
    0,068 0,0126
    0,061 0,0881 0,0056
    0,105 0,2830 0,1667
    0,025
    0,009
    0,015 0,0056
    0,002
    0,020
    0,001
    0,082 0,0503
    0,014
    (десятичных единиц) 1,2425 0,9686 0,6034 0,285 0
    <
    Для самых простых систем эти вычисления можно эффективно выполнить. дает апостериорные вероятности для , примененного к английскому тексту, причем ключ выбирался случайно из 26 возможных ключей. Для того чтобы можно было использовать обычные таблицы частот букв, диграмм и триграмм, текст был начат в случайном месте (на страницу открытой наугад книги был случайно опущен карандаш). Сообщение, выбранное таким способом, начинается с ``creases to'' (карандаш опущен на третью букву слова increases). Если известно, что сообщение начинается не с середины, а с начала некоторого предложения, то нужно пользоваться иной таблицей, соответствующей частотам букв, диграмм и триграмм, стоящих в начале предложения.

    Шифр Цезаря со случайным ключом является чистым, и выбор частного ключа не влияет на апостериорные вероятности. Чтобы определить эти вероятности, надо просто выписать возможные расшифровки с помощью всех ключей и вычислить их априорные вероятности. Апостериорные вероятности получатся из этих последних в результате деления их на их сумму. Эти возможные расшифровки, образующие остаточный класс этого сообщения, найдены с помощью стандартного процесса последовательного ``пробегания алфавита'', в они даны слева. Для одной перехваченной буквы апостериорные вероятности равны априорным вероятностям для всех букв1) (они приведены в таблице под рубрикой ).

    Для двух перехваченных букв эти вероятности равны априорным вероятностям диграмм, пронормированным на их сумму (они приведены в столбце ). Триграммные частоты получены аналогично и приведены в столбце . Для четырех- и пятибуквенных последовательностей вероятности находились из триграммных частот с помощью умножения, так как с некоторым приближением

    Заметим, что для трех букв число возможных сообщений снижается до четырех сообщений достаточно высокой вероятности, причем вероятности всех других сообщений малы по сравнению с вероятностями этих четырех сообщений. Для четырех букв имеются два возможных сообщения и для пяти -- только одно, а именно правильная дешифровка.




    В принципе это может быть проведено для любой системы, однако в том случае, когда объем ключа не очень мал, число возможных сообщений настолько велико, что вычисления становятся практически невыполнимыми.

    Получаемое таким образом множество апостериорных вероятностей описывает, как постепенно, по мере получения зашифрованного материала, становятся более точными сведения шифровальщика противника относительно сообщения и ключа.

    Это описание, однако, является слишком исчерпывающим и слишком сложным для наших целей. Хотелось бы иметь упрощенное описание такого приближения к единственности возможного решения.

    Аналогичная ситуация возникает в теории связи, когда передаваемый сигнал искажается шумом. Здесь необходимо ввести подходящую меру неопределенности того, что действительно было передано, при условии, что известен только искаженный шумом вариант -- принятый сигнал.

    В ``Математической теории связи'' показано, что естественной математической мерой этой неопределенности является условная энтропия передаваемого сигнала при условии, что принятый сигнал известен. Эта условная энтропия для удобства будет называться ненадежностью.

    С криптографической точки зрения секретная система почти тождественна системе связи при наличии шума. На сообщение (передаваемый сигнал) действует некоторый статистический элемент (секретная система с ее статистически выбранным ключом). В результате получается криптограмма (аналог искаженного сигнала), подлежащая дешифрированию. Основное различие заключается в следующем: во-первых, в том, что преобразование при помощи шифра имеет обычно более сложную природу, чем возникающее за счет шума в канале; и, во-вторых, ключ в секретной системе обычно выбирается из конечного множества, в то время как шум в канале чаще является непрерывным, выбранным по существу из бесконечного множества.

    Учитывая эти соображения, естественно использовать ненадеж-ность в качестве теоретической меры секретности. Следует отметить, что имеются две основные ненадежности: ненадежность ключа и ненадежность сообщения. Они будут обозначаться через и соответственно. Их величины определяются соотношениями




    где , и -- криптограмма, сообщение и ключ;

    -- вероятность ключа и криптограммы ;

    -- апостериорная вероятность ключа , если перехвачена криптограмма ;

    и -- аналогичные вероятности, но не для ключа, а для сообщения.

    Суммирование в проводится по всем возможным криптограммам определенной длины (скажем, ) и по всем возможным ключам. Для суммирование проводится по всем сообщениям и криптограммам длины . Таким образом, и являются функциями от -- числа перехваченных букв. Это будет иногда указываться в обозначении так: , . Заметим, что эти ненадежности являются ``полными'', т.е. не делятся на с тем, чтобы получить скорость ненадежности, которая рассматривалась в работе ``Математическая теория связи''.

    Те же самые рассуждения, которые были использованы в ``Математической теории связи'' для обоснования введения ненадежности в качестве меры неопределенности в теории связи, применимы и здесь. Так, из того, что ненадежность равна нулю, следует, что одно сообщение (или ключ) имеет единичную вероятность, а все другие -- нулевую. Этот случай соответствует полной осведомленности шифровальщика. Постепенное убывание ненадежности с ростом соответствует увеличению сведений об исходном ключе или сообщении. Кривые ненадежности сообщения и ключа, нанесенные на график как функции от , мы будем называть характеристиками ненадежности рассматриваемой секретной системы.

    Величины и для криптограммы шифра Цезаря, рассмотренной выше, сосчитаны и приведены в нижней строке . Числа и в этом случае равны и даны в десятичных единицах (т.е. при вычислениях в качестве основания логарифма бралось 10). Следует отметить, что ненадежность здесь сосчитана для частной криптограммы, так как суммирование ведется только по (или ), но не по . В общем случае суммирование должно было бы проводиться по всем перехваченным криптограммам длины , в результате чего получилась бы средняя неопределенность. Вычислительные трудности не позволяют сделать это практически.

    Up: Часть II. ТЕОРЕТИЧЕСКАЯ СЕКРЕТНОСТЬ

    Previous: 10. Совершенная секретность

    Contents:



    Неотслеживаемость. Электронные деньги



    ``И он сделает то, что всем - малым и великим, богатым и нищим, свободным и рабам - положено будет начертание на правую руку их или на чело их,

    И что никому нельзя будет ни покупать, ни продавать, кроме того, кто имеет это начертание, или имя зверя, или число имени его.

    Здесь мудрость. Кто имеет ум, тот сочти число зверя, ибо это число человеческое; число его шестьсот шестьдесят шесть.''

    Откровение святого Иоанна Богослова, глава 13.
    Лет пятнадцать назад, а может быть и больше, жители некоторых районов Москвы обнаруживали в своих почтовых ящиках необычные послания. На листочках, вырванных из ученических тетрадей, не слишком грамотные люди старательно переписывали один и тот же текст, повествующий о том, что где-то в Брюсселе (не иначе, как в штаб-квартире НАТО) появился конфьютер (сохраняем терминологию авторов) под названием ``Зверь'' и с номером 666. И этот конфьютер якобы предначертал каждому смертному определенное число, без которого не то что покупать или продавать, но даже шагу ступить нельзя будет. В заключение, разумеется, предрекался скорый конец света.
    Безусловно, это сочинение, как и все ему подобные, не заслуживало бы никакого внимания, если бы его авторы, сами того не ведая, не нащупали весьма серьезную угрозу, которую несет компьютеризация правам и свободам личности.
    Поскольку данный раздел посвящен электронным деньгам, рассмотрим эту угрозу на следующем простом примере. Столь популярная ныне во всем мире кредитная карточка представляет собой носитель информации, который при каждом платеже полностью идентифицирует своего владельца. И если владелец карточки использует ее для покупки билетов на транспорт, то можно отследить все его поездки, что в цивилизованном обществе без санкции прокурора недопустимо. Аналогичным образом, для каждого владельца кредитных карточек возможно собирать информацию о том, какие товары и где он покупает, какими услугами пользуется, какие культурно-зрелищные мероприятия посещает и т.д.
    Дальше - больше. Организация компьютерного доступа к хранилищам информации и перевод документов в электронную форму создадут предпосылки для ведения досье, отражающих весь круг интересов каждого из граждан. Этот перечень угроз правам и свободам личности, безусловно, можно продолжить1). Резюмируя, можно сказать, что компьютеризация создает беспрецедентные возможности для организации тотальной слежки. Угроза эта тем более серьезная, что она до сих пор еще не осознана даже многими специалистами.

    Для предотвращения подобной угрозы необходима система контроля за доступом к ресурсам, которая удовлетворяет двум, казалось бы, взаимно исключающим требованиям. Во-первых, всякий желающий должен иметь возможность обратиться к этой системе анонимно, а во-вторых, при этом все же доказать свое право на доступ к тому или иному ресурсу. Обычные бумажные деньги обеспечивают оба этих свойства. Если ресурсом, например, является некоторый товар, то наличие у покупателя достаточного количества купюр является доказательством его права на доступ к ресурсу. С другой стороны, хотя каждая бумажная купюра и имеет уникальный номер, отслеживать купюры по номерам практически невозможно. Кредитные карточки удовлетворяют только второму требованию.

    Всюду ниже под электронными деньгами мы будем понимать электронные платежные средства, обеспечивающие неотслеживаемость. Понятие неотслеживаемости, также как и целостности, по-видимому, не может быть формализовано и будет поясняться на конкретных примерах протоколов.

    Для работы с электронными деньгами разрабатываются специальные криптографические протоколы, называемые протоколами электронных платежей. В таком протоколе задействованы три участника, которых мы будем называть: банк, покупатель и продавец. Покупатель и продавец, каждый, имеют счет в банке, и покупатель желает заплатить продавцу за товар или услугу.

    В платежной системе используются три основные транзакции:

    - снятие со счета;

    - платеж;

    - депозит.

    В транзакции снятия со счета покупатель получает подписанную банком электронную банкноту на затребованную сумму. При этом счет покупателя уменьшается на эту сумму. В транзакции платежа покупатель передает банкноту продавцу и указывает сумму платежа. Продавец, в свою очередь, передает эту информацию банку, который проверяет подлинность банкноты. Если банкнота подлинная, банк проверяет, не была ли она потрачена ранее. Если нет, то банк заносит банкноту в специальный регистр, зачисляет требуемую сумму на счет продавца, уведомляет продавца об этом, и, если достоинство банкноты выше, чем сумма платежа, возвращает покупателю ``сдачу'' (через продавца). С помощью транзакции депозита, покупатель может положить ``сдачу'' на свой счет в банке.




    Безопасность банка основывается на невозможности подделать его подпись для создания фальшивой банкноты, или, более общим образом, на невозможности, получив набор подлинных электронных банкнот, подделать подпись еще хотя бы для одной банкноты. Для неотслеживаемости покупателя необходимо, чтобы банк, получив банкноту в транзакции платежа, не мог установить, кому она была выдана. То же относится и к ``сдаче''. Это, казалось бы, парадоксальное требование удовлетворяется с помощью схемы так называемой затемненной (слепой) подписи: в транзакции снятия со счета банк подписывает не банкноту, а некоторую ``абракадабру'', из которой покупатель восстанавливает подписанную банкноту. Таким образом, неотслеживаемость гарантируется тем, что банк просто не знает, что именно он подписал.

    Рассмотрим простейший вариант платежной системы, в которой используется затемненная подпись, соответствующая Последняя основана на тех же принципах, что и криптосистема RSA (см. главу ). Подписывающий, в нашем случае - банк, выбирает два секретных простых числа и достаточно большой длины и публикует их произведение . Пусть и , где , - соответственно открытый и секретный ключи криптосистемы RSA. Генерация подписи в схеме электронной подписи RSA состоит в применении к сообщению функции дешифрования криптосистемы RSA: . Для проверки подписи нужно применить к ней функцию шифрования. Если , то - корректная подпись для сообщения .

    Итак, банк выбирает и публикует числа и , а также некоторую одностороннюю функцию , назначение которой станет ясно из дальнейшего. Пара ключей используется банком исключительно для создания электронных банкнот, т.е. устанавливается соглашение о том, что электронной подписи, сгенерированной на ключе , соответствует электронная банкнота достоинством, скажем, в 1 фантик.

    В транзакции снятия со счета покупатель выбирает случайное число и вычисляет . Ему нужно получить подпись банка на этой банкноте, т.е. значение . Но просто послать значение банку покупатель не может, поскольку для снятия денег со счета он должен идентифицировать себя. Поэтому, если банк получает , он в дальнейшем всегда узнает данную банкноту и неотслеживаемость будет потеряна. Решение проблемы состоит в использовании затемненной подписи: покупатель выбирает случайное число , , вычисляет




    и посылает это значение банку. Множитель часто называют затемняющим множителем. Банк вычисляет значение и возвращает его покупателю. Покупатель легко ``снимает'' затемняющий множитель и получает подписанную банкноту

    .

    В транзакции платежа покупатель передает продавцу электронную банкноту . В принципе, продавец может проверить подлинность любой банкноты самостоятельно. Для этого достаточно вычислить и проверить, что . Но дело в том, что электронные банкноты, как и любую другую информацию, представленную в электронной форме, легко копировать. Поэтому нечестный покупатель может заплатить одной и той же электронной банкнотой многократно. Для предотвращения подобного злоупотребления продавец передает банкноту на проверку банку. Банк проверяет по специальному регистру, не была ли эта банкнота потрачена ранее, и если нет, то зачисляет 1 фантик на счет продавца и уведомляет его об этом.

    Безопасность банка в этой системе электронных платежей основывается на вере в стойкость схемы

    Применение функции в этой конструкции необходимо ввиду известного свойства мультипликативности схемы RSA: если и - подписи для и соответственно, то

    - подпись для . Поэтому, если бы в системе электронных платежей использовались банкноты вида , то из двух подлинных банкнот всегда можно было бы изготовить третью. Неотслеживаемость клиентов в данной системе абсолютна. Все, что остается у банка от транзакции снятия со счета, - это значение , которое благодаря затемняющему множителю представляет собой просто случайное число из . Поэтому у банка нет никакой информации о том, какую именно банкноту он выдал данному клиенту.

    В этом примере банк выдает банкноты только достоинством в 1 фантик и все платежи должны быть кратны этой величине. Оказывается, можно реализовать и более гибкую систему. Рассмотрим следующую систему электронных платежей из работы Шаума []. Здесь уместно отметить, что все основные идеи, связанные с понятием неотслеживаемости, электронными деньгами и со схемами затемненной подписи, принадлежат этому голландскому математику.




    Система из работы [] также основана на схеме электронной подписи RSA. Допуская некоторую вольность в обозначениях будем писать вместо , где , и называть эту величину корнем -ой степени из . Как и выше, - некоторая односторонняя функция, которую выбирает и публикует банк.

    Устанавливается соглашение, согласно которому корню степени, равной -му нечетному простому числу, соответствует номинал в фантиков. Т.е. предъявитель пары является владельцем электронной банкноты достоинством в 1 фантик. Если в этой паре вместо корня кубического присутствует корень 7-ой степени, то банкнота имеет достоинство 4 фантика, а если 21-ой степени - то 5 фантиков. Иными словами, для банкноты достоинством фантиков необходим корень степени, равной произведению всех простых чисел, соответствующих единицам в двоичном представлении числа .

    Все банкноты, выдаваемые банком, имеют одинаковое достоинство. Для простоты изложения будем, как и в [], предполагать, что оно равно 15 фантикам. Тогда подпись банка на банкноте, это - корень -ой степени, где . Для этой схемы нужен также еще дополнительный модуль RSA , который используется в работе с так называемой копилкой (см. ниже). Этот модуль выбирается и публикуется таким же образом, как и модуль .

    Транзакция снятия со счета выполняется таким же образом, как описано выше. В результате покупатель получает электронную банкноту .

    Предположим теперь, что покупатель желает заплатить продавцу 5 фантиков. Для этого он вычисляет

    , просто возводя полученную банкноту в 55-ую степень, и создает копилку, выбирая случайное значение и вычисляя . Здесь опять - затемняющий множитель. Транзакция платежа начинается с пересылки значений ,

    , а также суммы платежа (5 фантиков) продавцу. Продавец, в свою очередь, передает всю эту информацию банку. Банк легко проверяет, что пара

    представляет собой подлинную банкноту достоинством 5 фантиков. Он проверяет по специальному регистру, не была ли банкнота с номером потрачена ранее. Если нет, записывает в регистр вновь полученную банкноту, увеличивает счет продавца на 5 фантиков и посылает продавцу уведомление о завершении транзакции платежа, а также ``сдачу'' (10 фантиков) покупателю, возвращаемую через копилку: .




    В транзакции депозита покупатель посылает банку копилку

    . Банк проверяет ее таким же образом, как и банкноту в транзакции платежа, и если копилка с номером подлинная и ранее не использовалась в транзакции депозита, то зачисляет сумму 10 фантиков на счет покупателя.

    Если все платежи, осуществляемые покупателями, делаются на максимальную сумму (15 фантиков), то схема обеспечивает безусловную (или теоретико-информационную) неотслеживаемость покупателя: выдавая затемненную подпись, банк не получает никакой информации о номере подписываемой банкноты.

    Необходимость депозита полученной от банка ``сдачи'' нарушает неотслеживаемость: банк запоминает все платежи, а значит, и все ``сдачи'', и при выполнении транзакции депозита может ``вычислить'' клиента, если последний выполнил платеж на уникальную или достаточно редко встречающуюся сумму. Эта проблема частично может быть решена за счет многократного использования копилки в транзакциях платежа.

    Предположим, что покупатель получил в банке вторую банкноту с номером и желает заплатить тому же или другому продавцу сумму в 3 фантика. Тогда в транзакции платежа он может использовать копилку со ``сдачей'', оставшейся после первого платежа, и послать продавцу ,

    , . Платеж выполняется таким же образом, как было описано выше, и в результате покупатель получит копилку .

    В транзакции депозита покупатель кладет накопленную в копилке сумму на свой счет в банке. Для этого он посылает банку значения , и указывает сумму. Банк проверяет копилку так же, как банкноту, т.е. устанавливает наличие всех корней с объявленными покупателем кратностями, а также проверяет, что копилка с номером не использовалась ранее ни в одной транзакции депозита. При выполнении всех этих условий банк зачисляет сумму, находящуюся в копилке, на счет покупателя.

    Если количество клиентов в платежной системе достаточно велико и если каждый из них использует в транзакциях платежа одну и ту же копилку до тех пор, пока накапливаемая в ней сумма не превысит определенный предел (скажем, 100 фантиков), а после этого сразу же выполняет депозит, то шансы банка отследить действия кого-либо из клиентов представляются практически ничтожными.




    Оба рассмотренных примера относятся к классу так называемых централизованных систем, отличительная черта которых - необходимость участия банка во всех транзакциях платежа. С точки зрения эффективности значительно привлекательнее выглядят автономные системы электронных платежей, в которых продавец самостоятельно, без обращения к банку, проверяет подлинность полученных от покупателя электронных денег. Последние, чтобы отличить автономные системы от централизованных, будем называть электронной монетой (заметим, что общепринятой терминологии здесь нет).

    Как уже отмечалось выше, без обращения к банку в каждой транзакции платежа невозможно предотвратить повторную трату одной и той же электронной монеты. Вместо этого автономные системы обеспечивают идентификацию нарушителя post factum. Конструкции автономных систем электронных платежей достаточно сложны (см., например, [], []), поэтому здесь мы описываем лишь их основную идею, да и то в самых общих чертах. Наше описание предполагает использование схемы аутентификации Шнорра, но можно использовать и любую другую схему, обладающую всеми необходимыми свойствами.

    Каждый клиент банка выбирает секретный ключ , содержащий идентификатор этого клиента, и затем вычисляет открытый ключ . В транзакции снятия со счета клиент выбирает случайное значение и вычисляет . Электронная монета состоит из некоторой строки, содержащей и , и подписи банка для этой строки. Основная трудность здесь состоит в том, что банк должен подписать монету затемненной подписью, но при этом убедиться в том, что монета имеет требуемую структуру. Один из способов решения этой проблемы заинтересованный читатель может найти в работе Якоби [].

    В транзакции платежа продавец сначала проверяет подпись банка, и, если она корректна, выбирает случайный запрос , как в схеме аутентификации Шнорра, и посылает покупателю. Последний вычисляет и посылает продавцу. Продавец проверяет правильность ответа, используя те значения и , которые содержатся в монете.




    В транзакции депозита продавец посылает банку электронную монету, а также и . Если банк обнаруживает, что данная монета уже была потрачена ранее, то у него оказываются две различные пары и , удовлетворяющие проверочному соотношению в схеме Шнорра при одних и тех же и . Как было показано в предыдущем разделе, этого достаточно для того, чтобы банк смог вычислить секретный ключ , а значит, и идентифицировать нарушителя.

    Замечательное свойство автономных систем электронных платежей состоит в том, что они, с одной стороны, обеспечивают неотслеживаемость честных клиентов, а с другой - позволяют однозначно идентифицировать нарушителей. Но в таких системах банк идет на определенный риск, поскольку в момент обнаружения повторной траты электронной монеты на счету нарушителя может не оказаться суммы, достаточной для покрытия перерасхода. Несколько более подробно эта проблема обсуждается в [].

    В большинстве автономных систем могут использоваться лишь в одном платеже, после чего необходимо выполнить депозит. Если монета может использоваться во многих платежах, без промежуточных депозитов, то такая монета называется переводимой. Если бы переводимые монеты могли находиться в обращении достаточно долго, то это обеспечило бы практическую неотслеживаемость клиентов. Но с другой стороны, стало бы значительно сложнее обнаруживать повторные траты одной и той же монеты. Еще один недостаток в том, что длина переводимой монеты возрастает с каждым ее переводом от клиента к клиенту. С интуитивной точки зрения это представляется естественным, поскольку монета должна содержать информацию, позволяющую банку идентифицировать нарушителя, потратившего монету дважды. Поэтому каждый клиент, через которого проходит монета, должен оставить на ней свои ``отпечатки пальцев''. Шаум и Педерсен [] доказали, что возрастание длины переводимой монеты и в самом деле неизбежно.

    Next: 3.4. Протоколы типа ``подбрасывание

    Up: 3. Криптографические протоколы

    Previous: 3.2. Целостность. Протоколы аутентификации

    Contents:



    Новые направления


    В 1983 году в книге ``Коды и математика'' М.Н.Аршинова и Л.Е.Садовского (библиотечка ``Квант'') было написано: ``Приемов тайнописи - великое множество, и, скорее всего, это та область, где уже нет нужды придумывать что-нибудь существенно новое.'' Однако это было очередное большое заблуждение относительно криптографии. Еще в 1976 году была опубликована работа молодых американских математиков У.Диффи и М.Э.Хеллмана ``Новые направления в криптографии''1), которая не только существенно изменила криптографию, но и привела к появлению и бурному развитию новых направлений в математике. Центральным понятием ``новой криптографии'' является понятие односторонней функции (подробнее об этом см. главу ).
    , обладающая двумя свойствами:

    а) существует полиномиальный алгоритм вычисления значений ;

    б) не существует полиномиального алгоритма инвертирования функции (т.е. решения уравнения относительно , точное определение см. на стр. ).
    Отметим, что односторонняя функция существенно отличается от функций, привычных со школьной скамьи, из-за ограничений на сложность ее вычисления и инвертирования. Вопрос о существовании односторонних функций пока открыт.
    Еще одним новым понятием является понятие функции с секретом. Иногда еще употребляется термин функция с ловушкой. Функцией с секретом называется функция
    , зависящая от параметра и обладающая тремя свойствами:
    а) существует полиномиальный алгоритм вычисления значения для любых и ;
    б) не существует полиномиального алгоритма инвертирования при неизвестном ;
    в) существует полиномиальный алгоритм инвертирования при известном .
    Про существование функций с секретом можно сказать то же самое, что сказано про односторонние функции. Для практических целей криптографии было построено несколько функций, которые могут оказаться функциями с секретом. Для них свойство б) пока строго не доказано, но считается, что задача инвертирования эквивалентна некоторой давно изучаемой трудной математической задаче. Наиболее известной и популярной из них является теоретико-числовая функция, на которой построен (подробнее об этом см. главу ).

    Применение функций с секретом в криптографии позволяет:

    1) организовать обмен шифрованными сообщениями с использованием только открытых каналов связи, т.е. отказаться от секретных каналов связи для предварительного обмена ключами;

    2) включить в задачу вскрытия шифра трудную математическую задачу и тем самым повысить обоснованность стойкости шифра;

    3) решать новые криптографические задачи, отличные от шифрования ( и др.).

    Опишем, например, как можно реализовать п. 1). Пользователь , который хочет получать шифрованные сообщения, должен выбрать какую-нибудь функцию с секретом . Он сообщает всем заинтересованным (например, публикует) описание функции в качестве своего алгоритма шифрования. Но при этом значение секрета он никому не сообщает и держит в секрете. Если теперь пользователь хочет послать пользователю защищаемую информацию , то он вычисляет и посылает по открытому каналу пользователю . Поскольку для своего секрета умеет инвертировать , то он вычисляет по полученному . Никто другой не знает и поэтому в силу свойства б) функции с секретом не сможет за полиномиальное время по известному шифрованному сообщению вычислить защищаемую информацию .

    Описанную систему называют криптосистемой с открытым ключом, поскольку алгоритм шифрования является общедоступным или открытым. В последнее время такие криптосистемы еще называют асимметричными, поскольку в них есть асимметрия в алгоритмах: алгоритмы шифрования и дешифрования различны. В отличие от таких систем традиционные шифры называют симметричными: в них ключ для шифрования и дешифрования один и тот же. Для асимметричных систем алгоритм шифрования общеизвестен, но восстановить по нему алгоритм дешифрования за полиномиальное время невозможно.

    Описанную выше идею Диффи и Хеллман предложили использовать также для электронной цифровой подписи сообщений, которую невозможно подделать за полиномиальное время. Пусть пользователю необходимо подписать сообщение . Он, зная секрет , находит такое , что , и вместе с сообщением




    посылает

    пользователю в качестве своей цифровой подписи. Пользователь хранит в качестве доказательства того, что подписал сообщение .

    Сообщение, подписанное цифровой подписью, можно представлять себе как пару , где - сообщение, - решение уравнения

    ,

    - функция с секретом, известная всем взаимодействующим абонентам. Из определения функции очевидны следующие полезные свойства цифровой подписи:

    1) подписать сообщение , т.е. решить уравнение , может только абонент - обладатель данного секрета ; другими словами, подделать подпись невозможно;

    2) проверить подлинность подписи может любой абонент, знающий открытый ключ, т.е. саму функцию ;

    3) при возникновении споров отказаться от подписи невозможно в силу ее неподделываемости;

    4) подписанные сообщения можно, не опасаясь ущерба, пересылать по любым каналам связи.

    Кроме принципа построения криптосистемы с открытым ключом, Диффи и Хеллман в той же работе предложили еще одну новую идею - открытое распределение ключей. Они задались вопросом: можно ли организовать такую процедуру взаимодействия абонентов и по открытым каналам связи, чтобы решить следующие задачи:

    1) вначале у и нет никакой общей секретной информации, но в конце процедуры такая общая секретная информация (общий ключ) у и

    появляется, т.е. вырабатывается;

    2) пассивный противник, который перехватывает все передачи информации и знает, что хотят получить и , тем не менее не может восстановить выработанный общий ключ и .

    Диффи и Хеллман предложили решать эти задачи с помощью функции

    где - большое простое число, - произвольное натуральное число, - некоторый примитивный элемент поля . Общепризнанно, что инвертирование функции , т.е. дискретное логарифмирование, является трудной математической задачей. (Подробнее см. главу .)

    Сама процедура или, как принято говорить, протокол выработки общего ключа описывается следующим образом.

    Абоненты и независимо друг от друга случайно выбирают по одному натуральному числу - скажем и . Эти элементы они держат в секрете. Далее каждый из них вычисляет новый элемент:




    (Числа и считаются общедоступными.) Потом они обмениваются этими элементами по каналу связи. Теперь абонент , получив и зная свой секретный элемент , вычисляет новый элемент:

    Аналогично поступает абонент :

    Тем самым у и появился общий элемент поля, равный . Этот элемент и объявляется общим ключом и .

    Из описания протокола видно, что противник знает

    , не знает и и хочет узнать . В настоящее время нет алгоритмов действий противника, более эффективных, чем дискретное логарифмирование, а это - трудная математическая задача.

    Успехи, достигнутые в разработке схем цифровой подписи и открытого распределения ключей, позволили применить эти идеи также и к другим задачам взаимодействия удаленных абонентов. Так возникло большое новое направление теоретической криптографии - (подробнее см. главу ).

    Объектом изучения теории криптографических протоколов являются удаленные абоненты, взаимодействующие, как правило, по открытым каналам связи. Целью взаимодействия абонентов является решение какой-то задачи. Имеется также противник, который преследует собственные цели. При этом противник в разных задачах может иметь разные возможности: например, может взаимодействовать с абонентами от имени других абонентов или вмешиваться в обмены информацией между абонентами и т.д. Противником может даже оказаться один из абонентов или несколько абонентов, вступивших в сговор.

    Приведем еще несколько примеров задач, решаемых удаленными абонентами. (Читателю рекомендуем по своему вкусу самостоятельно придумать еще какие-нибудь примеры.)

    1. Взаимодействуют два не доверяющих друг другу абонента. Они хотят подписать контракт. Это надо сделать так, чтобы не допустить следующую ситуацию: один из абонентов получил подпись другого, а сам не подписался.

    Протокол решения этой задачи принято называть протоколом подписания контракта.

    2. Взаимодействуют два не доверяющих друг другу абонента. Они хотят бросить жребий с помощью монеты. Это надо сделать так, чтобы абонент, подбрасывающий монету, не мог изменить результат подбрасывания после получения догадки от абонента, угадывающего этот результат.




    Протокол решения этой задачи принято называть .

    Опишем один из простейших протоколов подбрасывания монеты по телефону (так называемая схема Блюма-Микали). Для его реализации у абонентов и должна быть односторонняя функция , удовлетворяющая следующим условиям:

    1) - множество целых чисел, которое содержит одинаковое количество четных и нечетных чисел;

    2) любые числа , имеющие один образ , имеют одну четность;

    3) по заданному образу ``трудно'' вычислить четность неизвестного аргумента .

    Роль подбрасывания монеты играет случайный и равновероятный выбор элемента , а роль орла и решки - четность и нечетность соответственно. Пусть - абонент, подбрасывающий монету, а - абонент, угадывающий результат. Протокол состоит из следующих шагов:

    1) выбирает (``подбрасывает монету''), зашифровывает , т. e. вычисляет , и посылает абоненту ;

    2) получает , пытается угадать четность и посылает свою догадку абоненту ;

    3) получает догадку от и сообщает , угадал ли он, посылая ему выбранное число ;

    4) проверяет, не обманывает ли , вычисляя значение и сравнивая его с полученным на втором шаге значением .

    3. Взаимодействуют два абонента и (типичный пример: - клиент банка, - банк). Абонент хочет доказать абоненту , что он именно , а не противник.

    Протокол решения этой задачи принято называть .

    4. Взаимодействуют несколько удаленных абонентов, получивших приказы из одного центра. Часть абонентов, включая центр, могут быть противниками. Необходимо выработать единую стратегию действий, выигрышную для абонентов.

    Эту задачу принято называть задачей о византийских генералах, а протокол ее решения - протоколом византийского соглашения.

    Осмысление различных протоколов и методов их построения привело в 1985-1986 г.г. к появлению двух плодотворных математических моделей - и . Математические исследования этих новых объектов позволили доказать много утверждений, весьма полезных при разработке криптографических протоколов (подробнее об этом см. главу ).




    Под интерактивной системой доказательства понимают протокол взаимодействия двух абонентов: (доказывающий) и

    (проверяющий). Абонент хочет доказать , что утверждение истинно. При этом абонент самостоятельно, без помощи , не может проверить утверждение (поэтому и называется проверяющим). Абонент может быть и противником, который хочет доказать , что утверждение

    истинно, хотя оно ложно. Протокол может состоять из многих раундов

    обмена сообщениями между и и должен удовлетворять двум условиям:

    1) полнота - если действительно истинно, то абонент

    убедит абонента признать это;

    2) корректность - если ложно, то абонент вряд ли убедит абонента , что истинно.

    Здесь словами ``вряд ли'' мы для простоты заменили точную математическую формулировку.

    Подчеркнем, что в определении системы не допускалось, что

    может быть противником. А если оказался противником, который хочет ``выведать'' у какую-нибудь новую полезную для себя информацию об утверждении ? В этом случае , естественно, может не хотеть, чтобы это случилось в результате работы протокола . Протокол , решающий такую задачу, называется доказательством с нулевым разглашением и должен удовлетворять, кроме условий 1) и 2), еще и следующему условию:

    3) - в результате работы протокола абонент не увеличит свои знания об утверждении

    или, другими словами, не сможет извлечь никакой информации о том, почему истинно.

    Next: 1.5. Заключение

    Up: 1. Основные понятия криптографии

    Previous: 1.3. Математические основы

    Contents:



    Оценка секретных систем


    Имеется несколько различных критериев, которые можно было бы использовать для оценки качества предлагаемой секретной системы. Рассмотрим наиболее важные из этих критериев.
    1. Количество секретности.
    Некоторые секретные системы являются совершенными в том смысле, что положение противника не облегчается в результате перехвата любого количества сообщений. Другие системы, хотя и дают противнику некоторую информацию при перехвате очередной криптограммы, но не допускают единственного ``решения''. Системы, допускающие единственное решение, очень разнообразны как по затрате времени и сил, необходимых для получения этого решения, так и по количеству материала, который необходимо перехватить для получения единственного решения.
    2. Объем ключа.
    Ключ должен быть передан из передающего пункта в приемный пункт таким способом, чтобы его нельзя было перехватить. Иногда его нужно запомнить. Поэтому желательно иметь ключ настолько малый, насколько это возможно.
    3. Сложность операции шифрования и дешифрирования.
    Операции шифрования и дешифрирования должны быть, конечно, по возможности простыми. Если эти операции производятся вручную, то их сложность приводит к потере времени, появлению ошибок и т.д. Если они производятся механически, то сложность приводит к использованию больших и дорогих устройств.
    4. Разрастание числа ошибок.
    В некоторых типах шифров ошибка в одной букве, допущенная при шифровании или передаче, приводит к большому числу ошибок в расшифрованном тексте. Такие ошибки разрастаются в результате операции дешифрирования, вызывая значительную потерю информации и часто требуя повторной передачи криптограммы. Естественно, желательно минимизировать это возрастание числа ошибок.
    5. Увеличение объема сообщения.
    В некоторых типах секретных систем объем сообщения увеличивается в результате операции шифрования. Этот нежелательный эффект можно наблюдать в системах, в которых делается попытка потопить статистику сообщения в массе добавляемых нулевых символов, или где используются многократные замены. Он имеет место также во многих (которые не являются обычными секретными системами в смысле нашего определения).
    Next: 6. Алгебра секретных систем
    Up: Часть I. МАТЕМАТИЧЕСКАЯ СТРУКТУРА СЕКРЕТНЫХ
    Previous: 4. Примеры секретных систем
    Contents:


    Односторонние функции


    Говоря неформально, односторонняя функция - это эффективно вычислимая функция, для задачи инвертирования которой не существует эффективных алгоритмов. Под инвертированием понимается массовая задача нахождения по заданному значению функции одного (любого) значения из прообраза (заметим, что обратная функция, вообще говоря, может не существовать).
    Поскольку понятие односторонней функции - центральное в математической криптографии, ниже мы даем его формальное определение.
    Пусть - множество всех двоичных строк длины . Под функцией мы понимаем семейство , где , . Для простоты изложения мы предполагаем, что пробегает весь натуральный ряд и что каждая из функций всюду определена.
    Функция называется честной, если существует полином такой, что для всех .

    Определение 1. Честная функция называется односторонней,

    если
    1. Существует полиномиальный алгоритм, который для всякого вычисляет .
    2. Для любой полиномиальной вероятностной машины Тьюринга выполнено следующее. Пусть строка выбрана наудачу из множества (обозначается ). Тогда для любого полинома и всех достаточно больших
    Вероятность здесь определяется случайным выбором строки и случайными величинами, которые использует в своей работе.
    Условие 2 качественно означает следующее. Любая полиномиальная вероятностная машина Тьюринга может по данному найти из уравнения лишь с пренебрежимо малой вероятностью.
    Заметим, что требование честности нельзя опустить. Поскольку длина входного слова машины равна , ей может не хватить полиномиального (от ) времени просто на выписывание строки , если слишком сильно ``сжимает'' входные значения.
    Ясно, что из предположения о существовании односторонних функций следует, что PNP. Однако, не исключена следующая ситуация: PNP, но односторонних функций нет.
    Существование односторонних функций является необходимым условием для стойкости многих типов криптографических схем. В некоторых случаях этот факт устанавливается достаточно просто. Обратимся опять к примеру 1. Рассмотрим функцию такую, что . Она вычислима с помощью алгоритма за полиномиальное время. Покажем, что если - не односторонняя функция, то криптосистема нестойкая. Предположим, что существует полиномиальный вероятностный алгоритм , который инвертирует с вероятностью по крайней мере для некоторого полинома . Здесь - длина ключа . Противник может подать на вход алгоритму ключ и получить с указанной вероятностью некоторое значение из прообраза. Далее противник подает на вход алгоритма и получает пару ключей . Хотя не обязательно совпадает с , тем не менее, по определению криптосистемы для любого открытого текста . Поскольку найден с вероятностью по крайней мере , которая в криптографии не считается пренебрежимо малой, криптосистема нестойкая.

    Для других криптографических схем подобный результат доказывается не столь просто. В работе Импальяццо и Луби [] доказана необходимость односторонних функций для существования целого ряда стойких криптографических схем.

    Из всего сказанного следует, что предположение о существовании односторонних функций является самым слабым криптографическим предположением, которое может оказаться достаточным для доказательства существования стойких криптографических схем различных типов. На выяснение того, является ли это условие и в самом деле достаточным, направлены значительные усилия специалистов. Трудность задачи построения криптографических схем из односторонних функций можно пояснить на следующем примере. Пусть - односторонняя функция и нам требуется построить криптосистему с секретным ключом. В такой криптосистеме имеется только один ключ - секретный, который известен и отправителю, и получателю шифрованного сообщения. Алгоритмы шифрования и дешифрования оба зависят от этого секретного ключа и таковы, что для любого открытого текста . Ясно, что если криптограмму сообщения вычислять как , то противник, перехвативший , может вычислить лишь с пренебрежимо малой вероятностью. Но во-первых, непонятно, каким образом сможет восстановить сообщение из криптограммы законный получатель? Во-вторых, из того, что функция

    односторонняя следует лишь, что противник не может вычислить все сообщение целиком. А это - весьма низкий уровень стойкости. Желательно, чтобы противник, знающий криптограмму , не мог вычислить ни одного бита открытого текста.

    На настоящий момент доказано, что существование односторонних функций является необходимым и достаточным условием для существования стойких криптосистем с секретным ключом, а также стойких криптографических протоколов нескольких типов, включая протоколы электронной подписи. С другой стороны, имеется результат Импальяццо и Рудиха [], который является достаточно сильным аргументом в пользу того, что для некоторых типов криптографических схем (включая протоколы распределения ключей типа Диффи-Хеллмана) требуются более сильные предположения, чем предположение о существовании односторонних функций. К сожалению, этот результат слишком сложный, чтобы его можно было разъяснить в настоящей главе.

    Next: 2.4. Псевдослучайные генераторы

    Up: 2. Криптография и теория

    Previous: 2.2. Криптография и гипотеза

    Contents:



    Олимпиады по криптографии для школьников



    Next: Предисловие
    Up: Введение в криптографию
    Previous: Литература к главе 6
    Contents:


    Ответы к упражнению.


    1) Шифр маршрутной перестановки

    1 2 3 4 5 6 7 8 9 10 11 12 13 14
    25 24 17 16 9 8 1 2 7 10 15 18 23 26


    15 16 17 18 19 20 21 22 23 24 25 26 27 28
    27 22 19 14 11 6 3 4 5 12 13 20 21 28


    2) Шифр ``решетка''

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
    2 11 15 17 18 22 26 30 34 38 42 53 56 57 60


    16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
    1 4 5 8 19 23 27 31 35 39 43 44 46 50 59


    31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
    3 6 7 10 12 24 28 32 36 40 41 45 47 48 52


    46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
    9 13 14 16 20 21 25 29 33 37 49 51 54 55 58


    3) ШВП

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
    23 1 17 34 7 29 12 24 2 18 35 8 30 13 25


    16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
    3 19 36 9 31 14 26 4 20 37 10 32 15 27 5


    31 32 33 34 35 36 37 38
    21 38 11 33 16 28 6 22

    Next: 7.4. Многоалфавитные шифры замены
    Up: 7.3. Шифры перестановки
    Previous: 7.3. Шифры перестановки
    Contents:


    Подобные системы


    Две секретные системы и будем называть подобными, если существует отображение , имеющее обратное , такое, что

    Это означает, что шифрование с помощью даст то же, что шифрование с помощью с последующим применением отображения . Если использовать запись для обозначения того, что подобно , то, очевидно, из следует . Кроме того, из и следует, что и, наконец, . Резюмируя вышеизложенное, можно сказать, что подобие систем является соотношением эквивалентности.
    Криптографический смысл подобия состоит в том, что если , то и -- эквивалентны с точки зрения дешифрирования. Действительно, если шифровальщик противника перехватывает криптограмму из системы , он может перевести ее в криптограмму из системы простым применением к ней отображения . Обратно, криптограмма из системы переводится в криптограмму из системы с помощью . Если и применяются к одному и тому же пространству сообщений или языку, то имеется взаимооднозначное соответствие между получающимися криптограммами. Соответствующие друг другу криптограммы дают одинаковое апостериорное распределение вероятностей для всех сообщений.
    Если имеется некоторый способ раскрытия системы , то любая система , подобная , может быть раскрыта после приведения ее к с помощью операции . Этот способ часто используется на практике.
    В качестве тривиального примера рассмотрим , в которой буквы сообщения заменяются не буквами, а произвольными символами. Она подобна обычной простой подстановке с заменой на буквы. Вторым примером могут служить и . Последний иногда раскрывают, переводя его сначала в шифр Цезаря. Это можно сделать, обратив алфавит в криптограмме. , Бофора и вариант Бофора все подобны, если ключ является случайным. (т.е. сообщением, используемым в качестве ``ключа'') с используемыми вначале ключами
    подобен шифру Виженера с ключом, поочередно складываемым и вычитаемым по модулю 26. Отображение в этом случае представляет собой ``дешифровку'' автоключа с помощью последовательности из таких отображений для каждого из начальных ключей.
    Next: Часть II. ТЕОРЕТИЧЕСКАЯ СЕКРЕТНОСТЬ
    Up: Часть I. МАТЕМАТИЧЕСКАЯ СТРУКТУРА СЕКРЕТНЫХ
    Previous: 7. Чистые и смешанные
    Contents:


    Поиграем в ``кубики''. Протоколы голосования



    ``...всеобщее голосование бессмысленно.

    ...Вы, вероятно, согласитесь со мной, что гениальные люди встречаются редко, не правда ли? Но будем щедры и допустим, что во Франции их сейчас имеется человек пять. Прибавим, с такой же щедростью, двести высокоталантливых людей, тысячу других, тоже талантливых, каждый в своей области, и десять тысяч человек так или иначе выдающихся. Вот вам генеральный штаб в одиннадцать тысяч двести пять умов. За ним идет армия посредственности, за которой следует вся масса дурачья. А так как посредственность и дураки всегда составляют огромное большинство, то немыслимо представить, чтобы они могли избрать разумное правительство."

    Г. де Мопассан. ``Обед и несколько мыслей''.
    В этом разделе мы займемся бессмысленными вещами, а именно, обсудим, как помочь ``массе дурачья'' избрать ``неразумное правительство'', т.е. рассмотрим протоколы голосования.
    У читателя, ознакомившегося с предшествующими разделами, могло сложиться впечатление, что криптографические протоколы - в общем-то не такая уж и сложная вещь. Но дело в том, что до сих пор мы выбирали именно такие протоколы, конструкции которых, на наш взгляд, наиболее просто понять при первом знакомстве с предметом. К тому же изложение велось на полуформальном уровне, чтобы основные идеи не затуманивались обилием технических деталей. Большинство же типов прикладных криптографических протоколов достаточно сложны, и хорошим примером здесь служат протоколы голосования.
    Как отмечалось во введении, примитивные криптографические протоколы используются как своеобразные ``строительные блоки'' или ``кубики'', из которых складывается прикладной протокол. В данном разделе мы рассмотрим не столько конструкцию каждого отдельного ``кубика'', сколько процесс сборки.
    Пусть в голосовании участвуют избирателей , которые являются абонентами компьютерной сети и подают свои голоса в электронной форме. Предположим для простоты, что голосование имеет два исхода: ``за'' и ``против'', которые будут представляться как 1 и соответственно. Из всех возможных требований к протоколу голосования выделим пока два основных:

    1) голосование должно быть тайным;

    2) должна быть обеспечена правильность подсчета голосов.

    Как уже отмечалось в предыдущем разделе, протоколы голосования можно рассматривать как частный случай

    В начальный момент у каждого участника есть секретное значение - его голос, - и требуется вычислить функцию

    . Протокол конфиденциального вычисления удовлетворяет двум указанным требованиям, если только доля нечестных участников не слишком велика. У такого решения есть одно замечательное достоинство - в протоколе участвуют только избиратели, т.е. не требуется никакого центрального органа, который пользовался бы доверием голосующих. Но есть и весьма серьезный недостаток. Протоколы конфиденциального вычисления настолько сложны (с точки зрения количества вычислений, выполняемых каждым участником, и количества пересылаемой информации), что уже при сравнительно небольших они практически невыполнимы.

    Остается второй путь - создание центра подсчета голосов (в дальнейшем для краткости будем называть его просто центр). Сначала предположим, что центр честный и пользуется безусловным доверием всех избирателей. В такой ситуации напрашивается следующее решение. Центр выбирает секретный и открытый - ключи некоторой криптосистемы с открытым ключом - и публикует . Каждый избиратель посылает центру сообщение, содержащее идентификатор этого избирателя и его голос , зашифрованный на ключе . Центр проверяет соответствие поданных бюллетеней спискам избирателей, расшифровывает бюллетени и отбрасывает недействительные (в которых голоса отличны от и 1), подсчитывает и публикует итог.

    Уже в этой простой схеме есть ``подводный камень''. Если каждый избиратель просто шифрует свой бит на ключе , то возможных криптограмм всего две и ни о какой анонимности голосов речи быть не может. Можно шифровать строку, которая состоит из бита , дополненного, например, справа случайной строкой. Это накладывает дополнительные требования на криптосистему: старший бит открытого текста должен быть трудным, т.е. задача его вычисления по криптограмме должна быть эквивалентна (в смысле полиномиальной сводимости) задаче вычисления всего открытого текста. Такие криптосистемы существуют, но лучше использовать криптосистему вероятностного шифрования (см. []), в ней криптограмма сообщения на ключе вычисляется с помощью рандомизированного алгоритма: , где - случайная строка. Это означает, что у каждого сообщения существует, вообще говоря, экспоненциально много криптограмм, вычисленных на одном и том же ключе. Но дешифрование при этом всегда однозначно! Криптосистемы вероятностного шифрования были введены в работе Гольдвассер и Микали [], где при некоторых предположениях доказано существование криптосистем такого типа, обладающих так называемой семантической стойкостью. Это - своего рода аналог шенноновской абсолютной стойкости, но относительно противника, работающего за полиномиальное время.




    Мы рассмотрим в качестве примера один из вариантов криптосистемы Эль-Гамаля [], основанной на задаче дискретного логарифмирования. В обозначениях из раздела пусть - подгруппа , порожденная . Для сообщения выбирается и вычисляется криптограмма , где ,

    . Получатель, знающий секретный ключ , вычисляет

    Вернемся к протоколу голосования. Пусть - еще один порождающий группы . Тогда для бюллетень вычисляется в виде . После применения алгоритма дешифрования центр получит значение , после чего бит можно извлечь, просто подставляя оба значения 1 и .

    В такой схеме голосование, по существу, не может быть тайным, поскольку центр знает, как голосовал каждый избиратель. Но с правильностью подсчета голосов ситуация иная. Предположим, что для проведения голосования создано табло - хранилище информации, в котором для каждого избирателя выделена отдельная строка. Эта строка содержит, например, полные паспортные данные избирателя, и в эту строку он помещает свой бюллетень. Предполагается, что табло доступно на чтение всем участникам голосования, а также сторонним наблюдателям. По истечении срока подачи голосов табло ``закрывается'', т.е. фиксируется его состояние. После этого выделяется некоторое время, в течение которого каждый избиратель проверяет содержимое своей строки на табло. Все претензии разбираются, при необходимости вносятся соответствующие изменения и, когда все избиратели удовлетворены, содержимое табло фиксируется окончательно.

    После этого центр вычисляет

    и публикует итог голосования . Пусть - бюллетень избирателя . Поскольку все бюллетени находятся на табло, любой избиратель, а также всякий сторонний наблюдатель, может вычислить

    Обозначим , . Если центр правильно подсчитал голоса, то должно выполняться равенство . Поэтому, если вторую из вычисленных выше величин поделить на , то должно получиться значение . Пусть

    . Проблема в том, что проверяющий не знает значение и не может самостоятельно выяснить, верно ли, что . Но нетрудно проверить, что должно выполняться сравнение . Поэтому проверяющий может потребовать от центра доказательство следующего факта: дискретный логарифм по основанию равен дискретному логарифму по основанию . Мы приводим предназначенный для этой цели протокол Шаума и Педерсена [], цитируя его по работе [].

    Next: 3.7. За пределами стандартных

    Up: 3. Криптографические протоколы

    Previous: 3.5. Еще раз о

    Contents:



    Поучимся на чужих ошибках


    Next: Удобно, красиво, но ...
    Up: 6. Компьютер и криптография
    Previous: Так где же взять
    Contents:


    и информатики Академии ФСБ Российской


    C 1991 г. Институт криптографии, связи и информатики Академии ФСБ Российской Федерации проводит ежегодные олимпиады по криптографии и математике для школьников г. Москвы и Подмосковья. Год от года растет популярность этих олимпиад, о чем свидетельствует, например, то, что в последней из них приняло участие более пятисот школьников 9-11 классов. Олимпиады по криптографии и математике вызывают интерес у школьников необычностью своего жанра. Кроме того, призерам предоставляются льготы при поступлении в Институт.
    Школьники часто спрашивают, с какой литературой по криптографии им следует познакомиться, чтобы успешно выступить на олимпиаде. Никаких специальных знаний для решения задач не требуется - в этом вы убедитесь, ознакомившись с задачами, которые приводятся в данной главе. Вместе с тем, мы не можем отрицать, что предварительное знакомство с криптографией полезно хотя бы чисто психологически, поскольку ``внешний вид'' задач может показаться необычным. Многие задачи нашей олимпиады - криптографические. Часть задач имеет криптографическую окраску, но их суть - математическая. Отдельные задачи - чисто математические.
    При подведении итогов каждой олимпиады мы знакомим участников с общедоступными книгами по криптографии, которых в последние годы появилось достаточно много. Однако эти книги либо слишком сложны для школьников, либо поверхностны или недостаточно полны, либо малодоступны. Поэтому авторы настоящей главы поставили перед собой две основные цели: во-первых, предложить элементарное введение в криптографию, используя при этом чудесные детективные сюжеты известных произведений Ж. Верна, А. Конан Дойла, Э. По, В. Каверина, связанные с зашифрованными сообщениями; во-вторых, привести условия задач всех наших олимпиад с ответами и решениями.
    Next: 7.1. Введение
    Up: 7. Олимпиады по криптографии
    Previous: 7. Олимпиады по криптографии
    Contents:


    Предмет криптографии


    Что же является предметом криптографии?
    Для ответа на этот вопрос вернемся к задаче ТП, чтобы уточнить ситуацию и используемые понятия.

    Прежде всего заметим, что эта задача возникает только для информации, которая нуждается в защите. Обычно в таких случаях говорят, что информация содержит тайну или является защищаемой, приватной, конфиденциальной, секретной.

    Для наиболее типичных, часто встречающихся ситуаций такого типа введены даже специальные понятия:
    - государственная тайна;
    - военная тайна;
    - коммерческая тайна;
    - юридическая тайна;
    - врачебная тайна и т.д.
    Далее мы будем говорить о защищаемой информации, имея в виду следующие признаки такой информации:
    - имеется какой-то определенный круг законных пользователей, которые имеют право владеть этой информацией;
    - имеются незаконные пользователи, которые стремятся овладеть этой информацией с тем, чтобы обратить ее себе во благо, а законным пользователям во вред.

    Для простоты мы вначале ограничимся рассмотрением только одной угрозы - угрозы разглашения информации. Существуют и другие угрозы для защищаемой информации со стороны незаконных пользователей: подмена, имитация и др.

    О них мы поговорим ниже.
    Теперь мы можем изобразить ситуацию, в которой возникает задача ТП, следующей схемой (см. рис. 1).


    Рис. 1.

    Здесь A и B - удаленные законные пользователи защищаемой информации; они хотят обмениваться информацией по общедоступному каналу связи. П - незаконный пользователь (противник), который может перехватывать передаваемые по каналу связи сообщения и пытаться извлечь из них интересующую его информацию. Эту формальную схему можно считать моделью типичной ситуации, в которой применяются криптографические методы защиты информации.
    Отметим, что исторически в криптографии закрепились некоторые военные слова (противник, и др.) Они наиболее точно отражают смысл соответствующих криптографических понятий. Вместе с тем широко известная военная терминология, основанная на понятии кода (военно-морские коды, коды Генерального штаба, кодовые книги, кодобозначения и т.п.), уже не применяется в теоретической криптографии. Дело в том, что за последние десятилетия сформировалась теория кодирования - большое научное направление, которое разрабатывает и изучает методы защиты информации от случайных искажений в каналах связи. И если ранее термины кодирование и шифрование употреблялись как синонимы, то теперь это недопустимо. Так, например, очень распространенное выражение ``кодирование - разновидность шифрования'' становится просто неправильным.

    Криптография занимается методами преобразования информации, которые бы не позволили извлечь ее из перехватываемых сообщений. При этом по каналу связи передается уже не сама защищаемая информация, а результат ее преобразования с помощью шифра, и для противника возникает сложная задача вскрытия шифра.

    Вскрытие (взламывание) шифра - процесс получения защищаемой информации из шифрованного сообщения без знания примененного шифра.

    Однако помимо перехвата и вскрытия шифра противник может пытаться получить защищаемую информацию многими другими способами. Наиболее известным из таких способов является агентурный, когда противник каким-либо путем склоняет к сотрудничеству одного из законных пользователей и с помощью этого агента получает доступ к защищаемой информации. В такой ситуации криптография бессильна.



    Противник может пытаться не получить, а уничтожить или модифицировать защищаемую информацию в процессе ее передачи. Это - совсем другой тип угроз для информации, отличный от перехвата и вскрытия шифра.
    Для защиты от таких угроз разрабатываются свои специфические методы.



    Следовательно, на пути от одного законного пользователя к другому информация должна защищаться различными способами, противостоящими различным угрозам. Возникает ситуация цепи из разнотипных звеньев, которая защищает информацию. Естественно, противник будет стремиться найти самое слабое звено, чтобы с наименьшими затратами добраться до информации. А значит, и законные пользователи должны учитывать это обстоятельство в своей стратегии защиты: бессмысленно делать какое-то звено очень прочным, если есть заведомо более слабые звенья (``принцип равнопрочности защиты'').


    Не следует забывать и еще об одной важной проблеме: проблеме соотношения цены информации, затрат на ее защиту и затрат на ее добывание. При современном уровне развития техники сами средства связи, а также разработка средств перехвата информации из них и средств защиты информации требуют очень больших затрат. Прежде чем защищать информацию, задайте себе два вопроса:




    1) является ли она для противника более ценной, чем стоимость атаки;

    2) является ли она для вас более ценной, чем стоимость защиты.

    Именно перечисленные соображения и являются решающими при выборе подходящих средств защиты: физических, стеганографических, криптографических и др.

    Некоторые понятия криптографии удобно иллюстрировать историческими примерами, поэтому сделаем небольшое историческое отступление.

    Долгое время занятие криптографией было уделом чудаков-одиночек. Среди них были одаренные ученые, дипломаты, священнослужители. Известны случаи, когда криптография считалась даже черной магией. Этот период развития криптографии как искусства длился с незапамятных времен до начала ХХ века, когда появились первые шифровальные машины. Понимание математического характера решаемых криптографией задач пришло только в середине ХХ века - после работ выдающегося американского ученого К.Шеннона.

    История криптографии связана с большим количеством дипломатических и военных тайн и поэтому окутана туманом легенд. Наиболее полная книга по истории криптографии содержит более тысячи страниц. Она опубликована в 1967 году и на русский язык не переведена1). На русском языке недавно вышел в свет фундаментальный труд по истории криптографии в России2).

    Свой след в истории криптографии оставили многие хорошо известные исторические личности. Приведем несколько наиболее ярких примеров. Первые сведения об использовании шифров в военном деле связаны с именем спартанского полководца Лисандра (). Цезарь использовал в переписке шифр, который вошел в историю как . В древней Греции был изобретен вид шифра, который в дальнейшем стал называться ``квадрат Полития''. Одну из первых книг по криптографии написал аббат И.Трителий (1462-1516), живший в Германии. В 1566 году известный математик Д.Кардано опубликовал работу с описанием изобретенной им системы шифрования (``решетка Кардано''). Франция ХVI века оставила в истории криптографии шифры короля Генриха IV и Ришелье. В упомянутой книге Т.А.Соболевой подробно описано много российских шифров, в том числе и 1700 года, автором которой был Петр Великий. (Некоторые примеры из книги приведены на форзаце.)




    Некоторые сведения о свойствах шифров и их применении можно найти и в художественной литературе, особенно в приключенческой, детективной и военной. Хорошее подробное объяснение особенностей одного из простейших шифров - и методов его вскрытия содержится в двух известных рассказах: и .

    Рассмотрим более подробно два примера.

    Шифр ``Сцитала''. Этот шифр известен со времен войны Спарты против Афин в V веке до н.э. Для его реализации использовалась сцитала - жезл, имеющий форму цилиндра. На сциталу виток к витку наматывалась узкая папирусная лента (без просветов и нахлестов), а затем на этой ленте вдоль оси сциталы записывался открытый текст. Лента разматывалась и получалось (для непосвященных), что поперек ленты в беспорядке написаны какие-то буквы. Затем лента отправлялась адресату. Адресат брал такую же сциталу, таким же образом наматывал на нее полученную ленту и читал сообщение вдоль оси сциталы.

    Отметим, что в этом шифре преобразование открытого текста в шифрованный заключается в определенной перестановке букв открытого текста. Поэтому класс шифров, к которым относится и шифр ``Сцитала'', называется .

    Шифр Цезаря.

    Этот шифр реализует следующее преобразование открытого текста: каждая буква открытого текста заменяется третьей после нее буквой в алфавите, который считается написанным по кругу, т.е. после буквы ``я'' следует буква ``а''. Отметим, что Цезарь заменял букву третьей после нее буквой, но можно заменять и какой-нибудь другой. Главное, чтобы тот, кому посылается шифрованное сообщение, знал эту величину сдвига. Класс шифров, к которым относится и шифр Цезаря, называется .

    Из предыдущего изложения понятно, что придумывание хорошего шифра - дело трудоемкое. Поэтому желательно увеличить ``время жизни'' хорошего шифра и использовать его для шифрования как можно большего количества сообщений. Но при этом возникает опасность, что уже разгадал (вскрыл) шифр и читает защищаемую информацию. Если же в шифре есть сменный ключ, то, заменив ключ, можно сделать так, что разработанные противником методы уже не дают эффекта.




    Под ключом в криптографии понимают сменный элемент шифра, который применяется для шифрования конкретного сообщения. Например, в шифре ``Сцитала'' ключом является диаметр сциталы, а в шифрах типа шифра Цезаря ключом является величина сдвига букв шифртекста относительно букв открытого текста.

    Описанные соображения привели к тому, что безопасность защищаемой информации стала определяться в первую очередь ключом. Сам шифр, шифрмашина или принцип шифрования стали считать известными противнику и доступными для предварительного изучения, но в них появился неизвестный для противника ключ, от которого существенно зависят применяемые преобразования информации. Теперь законные пользователи, прежде чем обмениваться шифрованными сообщениями, должны тайно от противника обменяться ключами или установить одинаковый ключ на обоих концах канала связи. А для противника появилась новая задача - определить ключ, после чего можно легко прочитать зашифрованные на этом ключе сообщения.

    Вернемся к формальному описанию основного объекта криптографии (рис. 1, стр. ). Теперь в него необходимо внести существенное изменение - добавить недоступный для противника секретный канал связи для обмена ключами (см. рис. 2). Создать такой канал связи вполне реально, поскольку нагрузка на него, вообще говоря, небольшая.



    Рис. 2.

    Отметим теперь, что не существует единого шифра, подходящего для всех случаев. Выбор способа шифрования зависит от особенностей информации, ее ценности и возможностей владельцев по защите своей информации. Прежде всего подчеркнем большое разнообразие видов защищаемой информации: документальная, телефонная, телевизионная, компьютерная и т.д. Каждый вид информации имеет свои специфические особенности, и эти особенности сильно влияют на выбор методов шифрования информации. Большое значение имеют объемы и требуемая скорость передачи шифрованной информации. Выбор вида шифра и его параметров существенно зависит от характера защищаемых секретов или тайны. Некоторые тайны (например, государственные, военные и др.) должны сохраняться десятилетиями, а некоторые (например, биржевые) - уже через несколько часов можно разгласить. Необходимо учитывать также и возможности того противника, от которого защищается данная информация. Одно дело - противостоять одиночке или даже банде уголовников, а другое дело - мощной государственной структуре.




    Способность шифра противостоять всевозможным атакам на него называют стойкостью шифра.

    Под атакой на шифр понимают попытку вскрытия этого шифра.

    Понятие стойкости шифра является центральным для криптографии. Хотя качественно понять его довольно легко, но получение строгих доказуемых оценок стойкости для каждого конкретного шифра - проблема нерешенная. Это объясняется тем, что до сих пор нет необходимых для решения такой проблемы математических результатов. (Мы вернемся к обсуждению этого вопроса ниже.) Поэтому стойкость конкретного шифра оценивается только путем всевозможных попыток его вскрытия и зависит от квалификации криптоаналитиков, атакующих шифр. Такую процедуру иногда называют проверкой стойкости.

    Важным подготовительным этапом для проверки стойкости шифра является продумывание различных предполагаемых возможностей, с помощью которых противник может атаковать шифр. Появление таких возможностей у противника обычно не зависит от криптографии, это является некоторой внешней подсказкой и существенно влияет на стойкость шифра. Поэтому оценки стойкости шифра всегда содержат те предположения о целях и возможностях противника, в условиях которых эти оценки получены.

    Прежде всего, как это уже отмечалось выше, обычно считается, что противник знает сам шифр и имеет возможности для его предварительного изучения. Противник также знает некоторые характеристики открытых текстов, например, общую тематику сообщений, их стиль, некоторые стандарты, форматы и т.д.

    Из более специфических приведем еще три примера возможностей противника:

    - противник может перехватывать все шифрованные сообщения, но не имеет соответствующих им открытых текстов;

    - противник может перехватывать все шифрованные сообщения и добывать соответствующие им открытые тексты;

    - противник имеет доступ к шифру (но не к ключам!) и поэтому может зашифровывать и дешифровывать любую информацию.

    На протяжении многих веков среди специалистов не утихали споры о стойкости шифров и о возможности построения . Приведем три характерных высказывания на этот счет.




    Английский математик Чарльз Беббидж (ХIХ в.):
    `` Всякий человек, даже если он не знаком с техникой вскрытия шифров, твердо считает, что сможет изобрести абсолютно стойкий шифр, и чем более умен и образован этот человек, тем более твердо это убеждение. Я сам разделял эту уверенность в течение многих лет.''

    ``Отец кибернетики'' Норберт Винер:
    ``Любой шифр может быть вскрыт, если только в этом есть настоятельная необходимость и информация, которую предполагается получить, стоит затраченных средств, усилий и времени...''

    Автор шифра

    Ф. Зиммерманн (``Компьютерра'', # 48 от 1.12.1997, стр. 45-46):
    ``Каждый, кто думает, что изобрел непробиваемую схему шифрования, - или невероятно редкий гений, или просто наивен и неопытен...''
    ``Каждый программист воображает себя криптографом, что ведет к распространению исключительно плохого криптообеспечения...''

    В заключение данного раздела сделаем еще одно замечание - о терминологии. В последнее время наряду со словом ``криптография'' часто встречается и слово ``криптология'', но соотношение между ними не всегда понимается правильно. Сейчас происходит окончательное формирование этих научных дисциплин, уточняются их предмет и задачи.

    Криптология - наука, состоящая из двух ветвей: криптографии и криптоанализа.

    Криптография - наука о способах преобразования (шифрования) информации с целью ее защиты от незаконных пользователей.

    Криптоанализ - наука (и практика ее применения) о методах и способах вскрытия шифров.

    Соотношение криптографии и криптоанализа очевидно: криптография - защита, т.е. разработка шифров, а криптоанализ - нападение, т.е. атака на шифры. Однако эти две дисциплины связаны друг с другом, и не бывает хороших криптографов, не владеющих методами криптоанализа.

    Next: 1.3. Математические основы

    Up: 1. Основные понятия криптографии

    Previous: 1.1. Введение

    Contents:



    Работы по теории информации



    Отрывок из статьи К. Шеннона ``Теория связи в секретных системах'' приводится по изданию: К. Шеннон `` Работы по теории информации и кибернетике'', М., ИЛ, 1963, с. 333-369 (перевод В. Ф. Писаренко).
    Next: 1. Введение и краткое
    Up: Введение в криптографию
    Previous: Литература к главе 7
    Contents:


    Примеры секретных систем


    В данном разделе рассматриваются несколько примеров шифров. В дальнейшем в целях иллюстрации будем часто ссылаться на эти примеры.

    1. Шифр простой подстановки.
    В производится замена каждой буквы сообщения на некоторый определенный символ (обычно также на букву).
    Таким образом, сообщение

    где -- последовательные буквы, переходит в

    причем функция имеет обратную функцию. Ключ является просто перестановкой алфавита (если буквы заменяются на буквы), например,

    Первая буква -- заменяет букву , заменяет и т.д.

    2. Транспозиция с фиксированным периодом .
    сообщение делится на группы символов длины и к каждой группе применяется одна и та же перестановка. Эта перестановка является ключом; она может быть задана некоторой перестановкой первых целых чисел.
    Таким образом, для в качестве перестановки можно взять 23154. Это будет означать, что

    переходит в

    Последовательное применение двух или более транспозиций будет называться составной транспозицией. Если периоды этих транспозиций , ..., , то, очевидно, в результате получится транспозиция периода , где -- наименьшее общее кратное
    .
    3. Шифр Виженера и его варианты.
    ключ задается набором из букв. Такие наборы подписываются с повторением под сообщением и полученные две последовательности складываются по модулю 26 (каждая буква рассматриваемого алфавита нумеруется от до ).
    Таким образом,

    где -- буква ключа, полученная сокращением числа по модулю . Например, с помощью ключа получаем


    Сообщение
    Повторяемый ключ
    Криптограмма

    Шифр Виженера с периодом 1 называется . Он представляет собой простую подстановку, в которой каждая буква сообщения сдвигается вперед на фиксированное число мест по алфавиту. Это число и является ключом; оно может быть любым от 0 до 25. Так называемый шифр Бофора (Beaufort) и видоизмененный шифр Бофора подобны шифру Виженера. В них сообщения зашифровываются с помощью равенств

    соответственно. Шифр Бофора с периодом 1 называется обратным шифром Цезаря.

    Повторное применение двух или более шифров Виженера будет называться составным шифром Виженера. Он имеет уравнение

    где вообще говоря, имеют различные периоды. Период их суммы
    , как и в составной транспозиции, будет наименьшим общим кратным отдельных периодов.
    Если используется шифр Виженера с неограниченным неповторяющимся ключом, то мы имеем , в котором

    и выбираются случайно и независимо среди чисел 0, 1, ..., 25. Если ключом служит текст, имеющий смысл, то имеем шифр ``бегущего ключа''.
    4. Диграммная, триграммная и -граммная подстановки.
    Вместо подстановки одной буквы можно использовать подстановку диграмм, триграмм и т.д. Для диграммной подстановки в общем виде требуется ключ, состоящий из перестановок диграмм. Он может быть представлен с помощью таблицы, в которой ряд соответствует первой букве диграммы, а столбец -- второй букве, причем клетки таблицы заполнены заменяющими символами (обычно также диграммами).
    5. Шифр Виженера с перемешанным один раз алфавитом.
    Такой шифр представляет собой простую подстановку с последующим применением шифра Виженера



    ``Обратным'' к такому шифру является шифр Виженера с последующей простой подстановкой



    6. Матричная система
    Имеется один метод подстановки -грамм, который заключается в применении к последовательным -граммам некоторой матрицы, имеющей обратную. Предполагается, что буквы занумерованы от 0 до 25 и рассматриваются как элементы некоторого алгебраического кольца. Если к -грамме сообщения применить матрицу , то получится -грамма криптограммы

    Матрица является ключом, и расшифровка выполняется с помощью обратной матрицы. Обратная матрица будет существовать тогда и только тогда, когда определитель имеет обратный элемент в нашем кольце.
    7. Шифр Плэйфер
    Этот шифр является частным видом диграммной подстановки, которая производится с помощью перемешанного алфавита из 25 букв, записанных в виде квадрата . (Буква часто опускается при криптографической работе, так как она редко встречается, и в тех случаях, когда она встречается, ее можно заменить буквой ). Предположим, что ключевой квадрат записывается следующим образом:




    В этом случае диграмма , например, заменяется на пару букв, расположенных в противоположных углах прямоугольника, определяемого буквами и , т.е. на , причем взята первой, так как она выше . Если буквы диграммы расположены на одной горизонтали, то используются стоящие справа от них буквы. Таким образом, заменяется на , заменяется на . Если буквы расположены на одной вертикали, то используются буквы, стоящие под ними. Таким образом, заменяется на . Если обе буквы диграммы совпадают, то можно использовать для их разделения нуль или же одну из букв опустить и т.п.
    8. Перемешивание алфавита с помощью многократной подстановки.
    В этом шифре используются последовательно простых подстановок. Так, если , то

    заменяется на

    и т.д.
    9. Шифр с автоключом.
    Шифр типа Виженера, в котором или само сообщение или результирующая криптограмма используются в качестве ``ключа'', называется шифром с автоключом. Шифрование начинается с помощью ``первичного ключа'' (который является настоящим ключом в нашем смысле) и продолжается с помощью сообщения или криптограммы, смещенной на длину первичного ключа, как в указанном ниже примере, где первичным ключом является набор букв . В качестве ``ключа'' используется сообщение:

    Сообщение
    Ключ
    Криптограмма

    Если в качестве ``ключа'' использовать криптограмму, то получится1)

    Сообщение
    Ключ
    Криптограмма

    10. Дробные шифры.
    В этих шифрах каждая буква сначала зашифровывается в две (или более) буквы или в два (или более) числа, затем полученные символы каким-либо способом перемешиваются (например, с помощью транспозиции), после чего их можно снова перевести в первоначальный алфавит. Таким образом, используя в качестве ключа перемешанный25-буквенный алфавит, можно перевести буквы в двухзначные пятеричные числа с помощью таблицы:

    Например, букве соответствует ``число'' 41. После того как полученный ряд чисел подвергнут некоторой перестановке, его можно снова разбить на пары чисел и перейти к буквам.
    11. Коды.
    В кодах слова (или иногда слоги) заменяются группами букв. Иногда затем применяется шифр того или иного вида.
    Next: 5. Оценка секретных систем
    Up: Часть I. МАТЕМАТИЧЕСКАЯ СТРУКТУРА СЕКРЕТНЫХ
    Previous: 3. Способы изображения систем
    Contents:




    Биржевой анализ - Теория Фибоначчи

    Последовательность чисел Фибоначчи была открыта (на самом деле, повторно) Леонардо Фибоначчи де Пиза, математиком тринадцатого века (в России известен как Леонардо Пизанский). Мы обрисуем исторические предпосылки этого удивительного человека и затем более полно обсудим последовательность (формально, это действительно последовательность, а не ряд) чисел, которая носит его имя.

    Анализ теории Фибоначчи
    Теория Фибоначчи - Время
    Теория Фибоначчи и ДиНаполи
    Инструменты теории Фибоначчи
    Теория Фибоначчи - Каналы

    Теория Фибоначчи - Фигуры
    Комбинации теории Фибоначчи
    Теория Фибоначчи - Коррекции
    Теория Фибоначчи - Методы
    Последовательность Фибоначчи

    Теория Фибоначчи - Торговля
    Теория Фибоначчи - Уровни
    ФИ-спирали в теории Фибоначчи
    Принципы теории Фибоначчи
    Расширения теории Фибоначчи

    Теория Фибоначчи - Сечение
    Софт по теории Фибоначчи
    Теория Фибоначчи
    Теория Фибоначчи - Числа

        Работа с информацией: Безопасность - Защита - Софт - Криптография




    Протоколы типа ``подбрасывание монеты по телефону''



    ``- Хорошо, дайте же сюда деньги.

    - На что-ж деньги? У меня вот они в руке! Как только напишете расписку, в ту же минуту их возьмете.

    - Да позвольте, как же мне писать расписку? Прежде нужно видеть деньги.

    Чичиков выпустил из рук бумажки Собакевичу, который, приблизившись к столу и накрывши их пальцами левой руки, другою написал на лоскутке бумаги, что задаток двадцать пять рублей государственными ассигнациями за проданные души получен сполна.''

    Н. В. Гоголь. ``Мертвые души'', глава 5.
    В данном разделе мы кратко обсудим те типы криптографических протоколов, в которых два участника должны обменяться некоторой информацией. Но участники не доверяют друг другу и каждый из них может оказаться обманщиком. Поэтому, если один из участников по неосторожности ``выпустит информацию из рук'' преждевременно, то в обмен он может получить совсем не то, проблемы здесь те же, что и в ``протоколе'' обмена расписки на ассигнации у Чичикова и Собакевича.
    Из всех криптографических протоколов данного типа, пожалуй, наиболее наглядным, и к тому же достаточно простым, является протокол подбрасывания монеты. Предположим, что двум участникам, Алисе и Бобу, необходимо бросить жребий. В случае, когда они оба физически находятся в одном и том же месте, задачу можно решить с помощью обычной процедуры подбрасывания монеты. Если кто-либо из участников не доверяет монете, можно использовать другие источники случайности. Правда, создание надежных источников случайности - весьма непростая задача, но она уже относится к математической статистике, а не к криптографии.
    Если же Алиса и Боб удалены друг от друга и могут общаться лишь по каналу связи, то задача о жребии, на первый взгляд, кажется неразрешимой. В самом деле, если, следуя обычной процедуре подбрасывания монеты, первый ход делает Алиса, которая выбирает один из возможных вариантов - ``орел'' или ``решка'', то Боб всегда может объявить тот исход, который ему выгоден.
    Тем не менее, эта задача была решена Блюмом []. Любопытно, что даже в заголовке своей работы Блюм охарактеризовал предложенный им метод как метод ``решения нерешаемых задач''.

    Легко понять, что задача о жребии решается очень просто, если существует надежный агент - третья сторона, которая пользуется полным доверием и Алисы, и Боба, и которая имеет конфиденциальные (закрытые) каналы связи с обоими участниками. В этом случае Боб и Алиса выбирают случайные биты и соответственно и посылают их в тайне друг от друга агенту. Последний ждет, пока не поступят оба бита, и после этого публикует , и - исход подбрасывания монеты.

    В отсутствие надежного агента срабатывает идея, которую проще всего понять на следующей ``физической'' реализации. Боб выбирает случайный бит , записывает его на листе бумаги, запирает этот лист в ящике, оставляя ключ от замка у себя, и посылает ящик Алисе. Предполагается, что, не имея ключа, Алиса не может добраться до содержимого ящика. Получив ящик, Алиса выбирает случайный бит и посылает его Бобу. В ответ Боб посылает Алисе ключ от ящика. Исходом подбрасывания монеты будет опять-таки бит .

    Ниже мы излагаем криптографическую реализацию той же идеи, основанную на задаче дискретного логарифмирования, и используем при этом обозначения из раздела .

    Next: 3.5. Еще раз о

    Up: 3. Криптографические протоколы

    Previous: 3.3. Неотслеживаемость. Электронные деньги

    Contents:



    Псевдослучайные генераторы


    Существенный недостаток состоит в том, что ключи одноразовые. Можно ли избавиться от этого недостатка за счет некоторого снижения стойкости? Один из способов решения этой проблемы состоит в следующем. Отправитель и получатель имеют общий секретный ключ длины и с помощью некоторого достаточно эффективного алгоритма
    генерируют из него последовательность длины , где - некоторый полином. Такая криптосистема (обозначим ее ) позволяет шифровать сообщение (или совокупность сообщений) длиной до битов по формуле , где - поразрядное сложение битовых строк по модулю 2. Дешифрование выполняется по формуле . Из результатов Шеннона вытекает, что такая криптосистема не является абсолютно стойкой, т.е. стойкой против любого противника (в чем, впрочем, нетрудно убедиться и непосредственно). Но что будет, если требуется защищаться только от полиномиально ограниченного противника, который может атаковать криптосистему лишь с помощью полиномиальных вероятностных алгоритмов? Каким условиям должны удовлетворять последовательность и алгоритм , чтобы криптосистема была стойкой? Поиски ответов на эти вопросы привели к появлению понятия псевдослучайного генератора, которое было введено Блюмом и Микали [].
    Пусть - функция, вычислимая за полиномиальное (от ) время. Такая функция называется генератором. Интуитивно, генератор является псевдослучайным, если порождаемые им последовательности неотличимы никаким полиномиальным вероятностным алгоритмом от случайных последовательностей той же длины . Формально этот объект определяется следующим образом.
    Пусть - полиномиальная вероятностная машина Тьюринга, которая получает на входе двоичные строки длины и выдает в результате своей работы один бит. Пусть

    Вероятность здесь определяется случайным выбором строки
    и случайными величинами, которые
    использует в своей работе. Пусть

    Эта вероятность определяется случайным выбором строки и случайными величинами, которые использует в своей работе. Подчеркнем, что функция
    вычисляется детерминированным алгоритмом.



    Определение 2. Генератор называется криптографически стойким псевдослучайным генератором, если для любой полиномиальной вероятностной машины Тьюринга , для любого полинома и всех достаточно больших

    Всюду ниже мы для краткости будем называть криптографически стойкие псевдослучайные генераторы просто псевдослучайными генераторами. Такое сокращение является общепринятым в криптографической литературе.

    Нетрудно убедиться, что для существования псевдослучайных генераторов необходимо существование односторонних функций. В самом деле, сама функция должна быть односторонней. Доказательство этого простого факта мы оставляем читателю в качестве упражнения. Вопрос о том, является ли существование односторонних функций одновременно и достаточным условием, долгое время оставался открытым. В 1982 г. Яо [] построил псевдослучайный генератор, исходя из предположения о существовании односторонних перестановок, т.е. сохраняющих длину взаимнооднозначных односторонних функций. За этим последовала серия работ, в которых достаточное условие все более и более ослаблялось, пока наконец в 1989-1990 гг. Импальяццо, Левин и Луби [] и Хостад [] не получили следующий окончательный результат.



    Теорема 1. Псевдослучайные генераторы существуют тогда и только тогда, когда существуют односторонние функции.

    Псевдослучайные генераторы находят применение не только в криптографии, но и в теории сложности, и в других областях дискретной математики. Обсуждение этих приложений выходит за рамки настоящей главы. Здесь же в качестве иллюстрации мы рассмотрим описанную в начале данного раздела криптосистему , использующую псевдослучайный генератор в качестве алгоритма . Прежде всего, нам необходимо дать определение стойкости криптосистемы с секретным ключом.

    Пусть - алгоритм шифрования криптосистемы с секретным ключом. Обозначим результат его работы , здесь - секретный ключ длиной

    битов, а - открытый текст длиной битов. Через обозначается -ый бит открытого текста. Пусть - полиномиальная вероятностная машина Тьюринга, которая получает на вход криптограмму и выдает пару , где , . Интуитивно, криптосистема является стойкой, если никакая машина Тьюринга не может вычислить ни один бит открытого текста с вероятностью успеха, существенно большей, чем при простом угадывании.






    Определение 3. Криптосистема называется стойкой, если для любой полиномиальной вероятностной машины Тьюринга , для любого полинома и всех достаточно больших

    Эта вероятность (всюду ниже для краткости мы ее обозначаем просто ) определяется случайным выбором секретного ключа , случайным выбором открытого текста из множества всех двоичных строк длины и случайными величинами, которые использует в своей работе.

    Покажем, что криптосистема с псевдослучайным генератором в качестве является стойкой в смысле данного определения. Предположим противное, т.е. что существуют полиномиальный вероятностный алгоритм и полином такие, что для бесконечно многих . Рассмотрим алгоритм , который получает на входе двоичную строку длины , выбирает , вычисляет и вызывает

    как подпрограмму, подавая ей на вход строку . Получив от пару , проверяет, действительно ли и если да, то выдает 1, в противном случае - 0, и останавливается. Легко видеть, что работает за полиномиальное (от ) время. Убедимся, что алгоритм

    отличает псевдослучайные строки, порожденные генератором , от случайных строк длины . В самом деле, если строки , поступающие на вход , являются случайными, то - криптограмма шифра Вернама и, согласно теореме Шеннона, . Если строки порождены генератором , то криптограммы имеют такое же распределение вероятностей, как в криптосистеме , и, согласно предположению, для бесконечно многих . Полученное противоречие с определением псевдослучайного генератора доказывает утверждение о стойкости криптосистемы .

    Разумеется, стойкость криптосистемы с секретным ключом можно определять различным образом. Например, можно рассматривать стойкость против атаки с выбором открытого текста: противник может предварительно выбрать полиномиальное количество открытых текстов и получить их криптограммы, после чего он получает ту криптограмму, по которой ему требуется вычислить хотя бы один бит соответствующего открытого текста. Нетрудно убедиться, что криптосистема с псевдослучайным генератором в качестве является стойкой и против атаки с выбором открытого текста.

    Таким образом, мы убедились, что с помощью псевдослучайных генераторов можно строить стойкие криптосистемы. Основное направление исследований в данной области - поиск методов построения эффективных псевдослучайных генераторов на основе различных криптографических предположений. Показателем эффективности здесь служит количество операций, затрачиваемых на вычисление каждого очередного бита псевдослучайной последовательности.

    Next: 2.5. Доказательства с нулевым

    Up: 2. Криптография и теория

    Previous: 2.3. Односторонние функции

    Contents:



    Разделение секрета для произвольных структур доступа


    Начнем с формальной математической модели. Имеется множество
    и (совместное) распределение вероятностей на их декартовом произведении
    . Соответствующие случайные величины обозначаются через . Имеется также некоторое множество подмножеств множества , называемое структурой доступа.
    Определение 1.
    Пара называется совершенной вероятностной СРС, реализующей структуру доступа , если

    (1)



    (2)

    Это определение можно истолковать следующим образом. Имеется множество всех возможных секретов, из которого секрет выбирается с вероятностью , и имеется СРС, которая ``распределяет'' секрет между участниками, посылая ``проекции'' секрета с вероятностью . Отметим, что -й участник получает свою ``проекцию'' и не имеет информации о значениях других ``проекций'', однако знает все множества , а также оба распределения вероятностей и
    Эти два распределения могут быть эквивалентно заменены на одно:
    , что и было сделано выше. Цель СРС, как указывалось во введении, состоит в том, чтобы:

    а) участники из разрешенного множества (т.е. ) вместе могли бы однозначно восстановить значение секрета - это отражено в свойстве ;

    б) участники, образующие неразрешенное множество ( ), не могли бы получить дополнительную информацию об , т.е., чтобы вероятность того, что значение секрета , не зависела от значений ``проекций'' при - это свойство .
    Замечание о терминологии. В англоязычной литературе для обозначения ``порции'' информации, посылаемой участнику СРС, были введены термины ``share'' (А. Шамир) и ``shadow'' (Г. Блейкли). Первый термин оказался наиболее популярным и автор долго боролся с соблазном привлечь массового читателя, постоянно используя в качестве его перевода слово ``акция''. Неадекватная (во всех смыслах) замена ``акции'' на ``проекцию'' может быть несколько оправдана следующим примером.
    Пример 1.
    Множество всех возможных секретов состоит из , и , ``представленных'' соответственно: шаром; кубом, ребра которого параллельны осям координат; цилиндром, образующие которого параллельны оси . При этом диаметры шара и основания цилиндра, и длины ребра куба и образующей цилиндра, равны. Первый участник получает в качестве своей ``доли'' секрета его проекцию на плоскость , а второй - на плоскость . Ясно, что вместе они однозначно восстановят секрет, а порознь - не могут. Однако, эта СРС не является совершенной, так как любой из участников получает информацию о секрете, оставляя только два значения секрета как возможные при данной проекции (например, если проекция - квадрат, то шар невозможен).

    Еще одно замечание. Элемент (участник) называется несущественным (относительно ), если для любого неразрешенного множества множество также неразрешенное. Очевидно, что несущественные участники настолько несущественны для разделения секрета, что им просто не нужно посылать никакой информации. Поэтому далее, без ограничения общности, рассматриваются только такие структуры доступа , для которых все элементы являются существенными. Кроме того, естественно предполагать, что является монотонной структурой, т.е. из следует

    Пример 2.

    Рассмотрим простейшую структуру доступа - -пороговую схему, т.е. все участники вместе могут восстановить секрет, а любое подмножество участников не может получить дополнительной информации о секрете. Будем строить идеальную СРС, выбирая и секрет, и его проекции из группы вычетов по модулю , т.е. Дилер генерирует независимых равномерно распределенных на случайных величин и посылает -му участнику ( ) его ``проекцию'' , а -му участнику посылает . Кажущееся ``неравноправие'' -ого участника тут же исчезает, если мы выпишем распределение

    , которое очевидно равно , если , и равно - в остальных случаях. Теперь легко проверяется и свойство
    , означающее в данном случае независимость случайной величины от случайных величин при любом собственном подмножестве .

    Данное выше определение СРС, оперирующее словами ``распределение вероятностей'', ниже переведено, почти без потери общности, на комбинаторный язык, который представляется автору более простым для понимания. Произвольная -матрица , строки которой имеют вид

    , где , называется матрицей комбинаторной СРС, а ее строки - ``правилами'' распределения секрета. Для заданного значения секрета дилер СРС случайно и равновероятно выбирает строку из тех строк матрицы , для которых значение нулевой координаты равно .

    Определение 2.



    Матрица задает совершенную комбинаторную СРС, реализующую структуру доступа , если, во-первых, для любого множества нулевая координата любой строки матрицы однозначно определяется значениями ее координат из множества , и, во-вторых, для любого множества и любых заданных значений координат из множества число строк матрицы с данным значением нулевой координаты не зависит от .





    Сопоставим совершенной вероятностной СРС, задаваемой парой , матрицу состоящую из строк , таких что 0$" width="66" height="31" >. Заметим, что если в положить все ненулевые значения одинаковыми, а условия и

    переформулировать на комбинаторном языке, то получится . Это комбинаторное определение несколько обобщается, если допустить в матрице повторяющиеся строки, что эквивалентно вероятностному , когда значения вероятностей - рациональные числа.

    Пример 2. (продолжение)

    Переформулируем данную выше конструкцию -пороговой СРС на комбинаторном языке. Строками матрицы являются все векторы такие, что . Очевидно, что матрица задает совершенную комбинаторную СРС для

    , так как для любого собственного подмножества и любых заданных значений координат из множества число строк матрицы с данным значением нулевой координаты равно .

    Удивительно, но простой схемы примера 2 оказывается достаточно, чтобы из нее, как из кирпичиков, построить совершенную СРС для произвольной структуры доступа. А именно, для всех разрешенных множеств, т.е. для , независимо реализуем описанную только что пороговую -СРС, послав тем самым -му участнику столько ``проекций'' , скольким разрешенным множествам он принадлежит. Это словесное описание несложно перевести на комбинаторный язык свойств матрицы и убедиться, что эта СРС совершенна. Как это часто бывает, ``совершенная'' не значит ``экономная'', и у данной СРС размер ``проекции'' оказывается, как правило, во много раз больше, чем размер секрета. Эту схему можно сделать более экономной, так как достаточно реализовать пороговые -СРС только для минимальных разрешенных множеств , т.е. для , где - совокупность минимальных (относительно включения) множеств из . Тем не менее, для пороговой -СРС размер ``проекции'' (измеренный, например, в битах) будет в раз больше размера секрета (это наихудший случай для рассматриваемой конструкции). С другой стороны, как мы убедимся чуть позже, любая пороговая структура доступа может быть реализована идеально, т.е. при совпадающих размерах ``проекции'' и секрета. Поэтому естественно возникает вопрос о том, каково максимально возможное превышение размера ``проекции'' над размером секрета для наихудшей структуры доступа при наилучшей реализации. Формально, , где берется по всем структурам доступа на участниках, а , где берется по всем СРС, реализующим данную структуру доступа , а - по . Приведенная конструкция показывает, что

    . С другой стороны, как было доказано лишь недавно [], . Такая огромная ``щель'' между верхней и нижней оценкой дает, по нашему мнению, достаточный простор для исследований (автор предполагает, что растет экспоненциально от ).

    Next: 5.3. Линейное разделение секрета

    Up: 5. Математика разделения секрета

    Previous: 5.1. Введение

    Contents:



    Руки прочь от моих файлов!


    Представьте себе: вы приходите домой после трудного дня и в прихожей вас встречает ваш младший брат, громко декламируя ваши стихи, посвященные любимой девушке из соседнего класса, которые вы вчера набрали на своем компьютере. И не только декламирует, а еще и комментирует, и из его комментариев следует, что Пушкина из вас ну никак не получится.
    Вы, конечно, можете объяснить брату, что он не прав, подкрепив свои слова парой подзатыльников и другими весомыми аргументами. Это называется административные меры защиты.
    Вы можете поставить пароль на включение компьютера. Как думаете, сколько времени продержится такая защита? Правильно. Дня три-четыре. Потом ваш брат замучает вас просьбами разрешить ему поиграть в WarCraft, и вам придется поделиться с ним паролем.
    Было бы хорошо сделать так, чтобы ваш брат мог бы беспрепятственно играть в любимые игры, а доступ к чужим файлам был бы для него закрыт. Это называется разграничение доступа.
    Как же организовать разграничение доступа на своем компьютере? Если бы у вас была установлена не Windows 95, а Windows NT или UNIX, вы легко могли бы ограничить доступ к своим файлам. В UNIX вам пришлось бы набрать команду chmod с нужными параметрами, а в Windows NT хватило бы нескольких движений мышью. Но у вас стоит Windows 95, а Windows 95 разграничение доступа не поддерживает. Так что же вам делать? Неужели нельзя защитить свои файлы от других пользователей?
    Можно. Тут нам на помощь приходит криптография. Если вы не хотите, чтобы другие читали ваш файл, этот файл нужно зашифровать. Пусть его теперь читают все кому не лень. Все равно, если кто-то, кроме вас, прочитает этот файл, он увидит не содержимое файла, а шифртекст. Конечно, используемый шифр должен быть достаточно стойким.
    Next: Как вводить ключ?
    Up: 6.3. Как зашифровать файл?
    Previous: 6.3. Как зашифровать файл?
    Contents:


    Секретные системы


    Чтобы приступить к математическому анализу криптографии, необходимо ввести удовлетворительную идеализацию и определить математически приемлемым способом, что будет пониматься под термином секретная система. Схематическая структура секретной системы показана на рис. .
    На передающем конце имеются два источника информации -- источник сообщений и источник ключей. Источник ключей


    Рис. 1. Схема общей секретной системы.


    отбирает конкретный ключ среди всех возможных ключей данной системы. Этот ключ передается некоторым способом на приемный конец, причем предполагается, что его нельзя перехватить (например, ключ передается посыльным). Источник сообщений формирует некоторое сообщение (незашифрованное), которое затем зашифровывается, и готовая криптограмма передается на приемный конец, причем криптограмма может быть перехвачена (например, пересылается по радио). На приемном конце шифровальщик с помощью ключа по криптограмме восстанавливает исходное сообщение.
    Очевидно, шифровальщик на передающем конце выполняет некоторую функциональную операцию. Если -- сообщение, -- ключ и -- зашифрованное сообщение (криптограмма), то имеем

    т.е. является функцией от и . Удобнее, однако, понимать не как функцию двух переменных, а как (однопараметрическое) семейство операций или отображений, и записывать его в виде:

    Отображение , примененное к сообщению , дает криптограмму . Индекс соответствует конкретному используемому ключу.
    Вообще мы будем предполагать, что имеется лишь конечное число возможных ключей, каждому из которых соответствует вероятность . Таким образом, источник ключей является статистическим процессом, или устройством, которое выбирает одно из множества отображений
    с вероятностями соответственно. Будем также предполагать, что число возможных сообщений конечно и эти сообщения имеют априорные вероятности . Например, возможными сообщениями могли бы быть всевозможные последовательности английских букв, включающих по букв каждая, а соответствующими вероятностями тогда были бы относительные частоты появления таких последовательностей в нормативном английском тексте.

    Должна иметься возможность восстанавливать на приемном конце, когда известны и . Поэтому отображение из нашего семейства должно иметь единственное обратное отображение , так что , где -- тождественное отображение. Таким образом:

    Во всяком случае, это обратное отображение должно существовать и быть единственным для каждого , которое может быть получено из с помощью ключа . Приходим, таким образом, к следующему определению: секретная система есть семейство однозначно обратимых отображений множества возможных сообщений во множество криптограмм, при этом отображение имеет вероятность . Обратно, любое множество объектов такого типа будет называться ``секретной системой''. Множество возможных сообщений для удобства будет называться ``пространством сообщений'', а множество возможных криптограмм -- ``пространством криптограмм''.

    Две секретные системы совпадают, если они образованы одним и тем же множеством отображений и одинаковыми пространствами сообщений и криптограмм, причем вероятности ключей в этих системах также совпадают.

    Секретную систему можно представлять себе как некоторую машину с одним или более переключающими устройствами. Последовательность букв (сообщение) поступает на вход машины, а на выходе ее получается другая последовательность. Конкретное положение переключающих устройств соответствует конкретному используемому ключу. Для выбора ключа из множества возможных ключей должны быть заданы некоторые статистические методы.

    Для того чтобы нашу проблему можно было рассмотреть математически, предположим, что противнику известна используемая система. Иными словами, он знает семейство отображений и вероятности выбора различных ключей. Можно было бы, во-первых, возразить, что такое предположение нереалистично, так как шифровальщик противника часто не знает, какая система использовалась или чему равны рассматриваемые вероятности. На это возражение имеется два ответа.

    1. Наложенное ограничение слабее, чем кажется с первого взгляда, из-за широты нашего определения секретной системы. Предположим, что шифровальщик перехватывает сообщение и не знает, использовалась ли здесь , или , или шифр типа . Он может считать, что сообщение зашифровано с помощью системы, в которой часть ключа является указанием того, какой из трех типов имеющихся ключей был использован, а следующая часть -- конкретный ключ этого типа. Указанным трем различным возможностям шифровальщик приписывает вероятности, учитывая при этом все имеющиеся у него сведения об априорных вероятностях использования шифровальщиком противника соответствующих типов шифров.




    2. Наше ограничение обычно в криптографических исследованиях. Оно является пессимистичным, но безопасно, и в конечном счете реалистично, так как можно ожидать, что противник рано или поздно раскроет любую секретную систему. Поэтому даже в том случае, когда разработана совершенно новая система, так что противник не может приписать ей никаких априорных вероятностей, если только он ее уже не раскрыл, нужно иметь в виду его возможную осведомленность.

    Эта ситуация аналогична ситуации, возникающей в теории игр, где предполагается, что партнер ``обнаруживает'' используемую стратегию игры. В обоих случаях это предположение служит для более четкого описания сведений, которыми располагает противная сторона.

    Второе возможное возражение против нашего определения секретной системы состоит в том, что в нем не принимаются в расчет используемые обычно на практике вставки в сообщение посторонних нулевых знаков и использование многократных подстановок. В таких случаях для данного сообщения и ключа имеется не единственная криптограмма и шифровальщик может выбрать по своему желанию одну из нескольких различных криптограмм. Эту ситуацию можно было бы рассмотреть, но это только внесло бы дополнительные усложнения на данном этапе рассуждений без существенного изменения каких-либо из основных выводов.

    Если сообщения создаются марковским процессом, то вероятности разных сообщений определяются структурой этого марковского процесса. Однако подойдем к вопросу с более общей точки зрения и будем трактовать сообщения просто как абстрактное множество объектов, которым приписаны вероятности, причем эти объекты не обязательно состоят из последовательностей букв и не обязательно создаются марковским процессом.

    Следует подчеркнуть, что далее во всех случаях секретная система означает не одно, а целое множество отображений. После того как выбран ключ, используется только одно из этих отображений и отсюда можно было бы прийти к определению секретной системы как единственного преобразования языка. Однако противник не знает, какой ключ выбран, и остальные возможные ключи столь же важны для него, как и истинный. Именно существование этих других возможных ключей и придает системе секретность. Так как мы интересуемся в первую очередь секретностью, то вынуждены предпочесть данное нами определение понятия секретной системы. Тип ситуации, когда остальные возможности так же важны, как и осуществившаяся, часто встречается в стратегических играх. Ход шахматной игры в большой степени контролируется угрозами, которые не осуществляются. Нечто подобное представляет из себя ``фактическое существование'' нереализованных возможностей в теории игр.




    Следует отметить, что система, состоящая из единственной операции над языком, представляет собой при нашем определении вырожденный тип секретной системы. Это -- система с единственным ключом, который имеет вероятность, равную единице. В такой системе нет секретности -- шифровальщик противника находит сообщение, применяя к перехваченной криптограмме обратное отображение, также единственное в такой системе. В этом случае шифровальщик противника и шифровальщик получателя информации располагают одинаковой информацией. В общем же случае единственное различие их сведений состоит в том, что последнему известен конкретно использовавшийся ключ, в то время как первому известны лишь априорные вероятности различных ключей из данного множества. Процесс расшифровки для получателя информации состоит в применении к криптограмме отображения, обратного по отношению к конкретному отображению, использованному для составления криптограммы. Процесс расшифровки для противника представляет собой , имея в распоряжении только криптограмму и априорные вероятности различных ключей и сообщений.

    Существует много трудных эпистемологических вопросов, связанных с теорией секретности, или вернее с любой теорией, связанной с реальным применением вопросов теории вероятностей (так обстоит дело, в частности, с априорными вероятностями, теоремой Байеса и т.д.). Трактуемая абстрактно теория вероятности может быть изложена на строгих логических основах с использованием современной теории меры. Однако в применениях к физическим ситуациям, особенно когда дело касается ``субъективных'' вероятностей и неповторимых экспериментов, возникают многочисленные вопросы, связанные с логическим обоснованием. Например, при нашем подходе к проблеме секретности допускается, что априорные вероятности различных ключей и сообщений известны шифровальщику противника, но как он может определить их эффективным способом даже при использовании всех своих сведений о данной обстановке?

    Можно создать искусственные криптографические ситуации типа ``урны и игральной кости'', в которых априорные вероятности имеют вполне определенный смысл и идеализация, использованная здесь, является наверняка подходящей. Но в других случаях, которые можно себе представить, например, при перехвате сообщений, передаваемых между собой марсианами, высадившимися на Землю, априорные вероятности были бы настолько неопределенными, что не имели бы никакого значения.

    Наиболее часто встречающиеся на практике криптографические задачи лежат где-то между этими крайними пределами. Шифровальщик противника может иметь желание разделить возможные сообщения на категории ``приемлемых'', ``возможных, но малоправдоподобных'' и ``неприемлемых'', но чувствуется, что более подробное подразделение не имело бы смысла.

    К счастью, на практике только очень большие ошибки в априорных вероятностях ключей и сообщений могут вызвать заметные ошибки в важных параметрах. Это происходит из-за того, что число сообщений и криптограмм ведет себя как экспоненциальная функция, а измеряется логарифмической мерой.

    Next: 3. Способы изображения систем

    Up: Часть I. МАТЕМАТИЧЕСКАЯ СТРУКТУРА СЕКРЕТНЫХ

    Previous: Часть I. МАТЕМАТИЧЕСКАЯ СТРУКТУРА СЕКРЕТНЫХ

    Contents:



    Шифры перестановки


    Шифр, преобразования из которого изменяют только порядок следования символов исходного текста, но не изменяют их самих, называется .
    Рассмотрим преобразование из ШП, предназначенное для зашифрования сообщения длиной символов. Его можно представить с помощью таблицы


    (6)

    где - номер места шифртекста, на которое попадает первая буква исходного сообщения при выбранном преобразовании, - номер места для второй буквы и т.д. В верхней строке таблицы выписаны по порядку числа от 1 до , а в нижней - те же числа, но в произвольном порядке. Такая таблица называется подстановкой степени .
    Зная подстановку, задающую преобразование, можно осуществить как зашифрование, так и расшифрование текста. Например, если для преобразования используется подстановка

    и в соответствии с ней зашифровывается слово МОСКВА, то получится КОСВМА. Попробуйте расшифровать сообщение НЧЕИУК, полученное в результате преобразования с помощью указанной выше подстановки.
    В качестве упражнения читателю предлагается самостоятельно выписать подстановки, задающие преобразования в описанных ниже трех примерах шифров перестановки. помещены в конце раздела.
    Читатель, знакомый с методом математической индукции, может легко убедиться в том, что существует
    (обозначается , читается `` факториал'') вариантов заполнения нижней строки таблицы (). Таким образом, число различных преобразований шифра перестановки, предназначенного для зашифрования сообщений длины , меньше либо равно (заметим, что в это число входит и вариант преобразования, оставляющий все символы на своих местах!).
    С увеличением числа значение растет очень быстро. Приведем таблицу значений для первых 10 натуральных чисел:


    1 2 3 4 5 6 7 8 9 10
    1 2 6 24 120 720 5040 40320 362880 3628800

    При больших для приближенного вычисления можно пользоваться известной формулой Стирлинга

    где .

    Примером ШП, предназначенного для зашифрования сообщений длины , является шифр, в котором в качестве множества ключей взято множество всех подстановок степени , а соответствующие им преобразования шифра задаются, как было описано выше. Число ключей такого шифра равно .

    Для использования на практике такой шифр не удобен, так как при больших значениях приходится работать с длинными таблицами.

    Широкое распространение получили шифры перестановки, использующие некоторую геометрическую фигуру. Преобразования из этого шифра состоят в том, что в фигуру исходный текст вписывается по ходу одного ``маршрута'', а затем по ходу другого выписывается с нее. Такой шифр называют маршрутной перестановкой. Например, можно вписывать исходное сообщение в прямоугольную таблицу, выбрав такой маршрут: по горизонтали, начиная с левого верхнего угла поочередно слева направо и справа налево. Выписывать же сообщение будем по другому маршруту: по вертикали, начиная с верхнего правого угла и двигаясь поочередно сверху вниз и снизу вверх.

    Зашифруем, например, указанным способом фразу:
    ПРИМЕРМАРШРУТНОЙПЕРЕСТАНОВКИ

    используя прямоугольник размера :

    П Р И М Е Р М
    Н Т У Р Ш Р А
    О Й П Е Р Е С
    И К В О Н А Т
    Зашифрованная фраза выглядит так:
    МАСТАЕРРЕШРНОЕРМИУПВКЙТРПНОИ

    Теоретически маршруты могут быть значительно более изощренными, однако запутанность маршрутов усложняет использование таких шифров.

    Ниже приводятся описания трех разновидностей шифров перестановки, встречавшихся в задачах олимпиад.

    . Одним из самых первых шифровальных приспособлений был жезл (``Сцитала''), применявшийся еще во времена войны Спарты против Афин в V веке до н. э. Это был цилиндр, на который виток к витку наматывалась узкая папирусная лента (без просветов и нахлестов), а затем на этой ленте вдоль его оси записывался необходимый для передачи текст. Лента сматывалась с цилиндра и отправлялась адресату, который, имея цилиндр точно такого же диаметра, наматывал ленту на него и прочитывал сообщение. Ясно, что такой способ шифрования осуществляет перестановку местами букв сообщения.

    Шифр ``Сцитала'', как видно из решения задачи , реализует не более перестановок (, по прежнему, - длина сообщения). Действительно, этот шифр, как нетрудно видеть, эквивалентен следующему шифру маршрутной перестановки: в таблицу, состоящую из столбцов, построчно записывают сообщение, после чего выписывают буквы по столбцам. Число задействованных столбцов таблицы не может превосходить длины сообщения.




    Имеются еще и чисто физические ограничения, накладываемые реализацией шифра ``Сцитала''. Естественно предположить, что диаметр жезла не должен превосходить 10 сантиметров. При высоте строки в 1 сантиметр на одном витке такого жезла уместится не более 32 букв (

    Шифр ``Поворотная решетка''. Для использования шифра, называемого поворотной решеткой, изготавливается трафарет из прямоугольного листа клетчатой бумаги размера клеток. В трафарете вырезано клеток так, что при наложении его на чистый лист бумаги того же размера четырьмя возможными способами его вырезы полностью покрывают всю площадь листа.

    Буквы сообщения последовательно вписываются в вырезы трафарета (по строкам, в каждой строке слева направо) при каждом из четырех его возможных положений в заранее установленном порядке.

    Поясним процесс шифрования на примере. Пусть в качестве ключа используется решетка , приведенная на рис. .



    Рис. 6.

    Зашифруем с ее помощью текст

    ШИФРРЕШЕТКАЯВЛЯЕТСЯЧАСТНЫМСЛУЧАЕМШИФРАМАРШРУТНОЙПЕРЕСТАНОВКИ

    Наложив решетку на лист бумаги, вписываем первые 15 (по числу вырезов) букв сообщения: ШИФРРЕШЕТКАЯВЛЯ.... Сняв решетку, мы увидим текст, представленный на рис. . Поворачиваем решетку на . В окошечках появятся новые, еще не заполненные клетки. Вписываем в них следующие 15 букв. Получится запись, приведенная на рис. . Затем переворачиваем решетку на другую сторону и зашифровываем остаток текста аналогичным образом (рис. , ).



    Рис. 7.



    Рис. 8.



    Рис. 9.



    Рис. 10.

    Получатель сообщения, имеющий точно такую же решетку, без труда прочтет исходный текст, наложив решетку на шифртекст по порядку четырьмя способами.

    Можно доказать, что число возможных трафаретов, то есть количество ключей шифра ``решетка'', составляет (см. задачу ). Этот шифр предназначен для сообщений длины . Число всех перестановок в тексте такой длины составит , что во много раз больше числа . Однако, уже при размере трафарета число возможных решеток превосходит 4 миллиарда.




    Широко распространена разновидность шифра маршрутной перестановки, называемая ``шифром вертикальной перестановки'' (ШВП). В нем снова используется прямоугольник, в который сообщение вписывается обычным способом (по строкам слева направо). Выписываются буквы по вертикали, а столбцы при этом берутся в порядке, определяемом ключом. Пусть, например, этот ключ таков: (5,4,1,7,2,6,3), и с его помощью надо зашифровать сообщение:
    ВОТПРИМЕРШИФРАВЕРТИКАЛЬНОЙПЕРЕСТАНОВКИ

    Впишем сообщение в прямоугольник, столбцы которого пронумерованы в соответствии с ключом:
    5 1 4 7 2 6 3
    В О Т П Р И М
    Е Р Ш И Ф Р А
    В Е Р Т И К А
    Л Ь Н О Й П Е
    Р Е С Т А Н О
    В К И - - - -
    Теперь, выбирая столбцы в порядке, заданном ключом, и выписывая последовательно буквы каждого из них сверху вниз, получаем такую криптограмму:
    ОРЕЬЕКРФИЙА-МААЕО-ТШРНСИВЕВЛРВИРКПН-ПИТОТ-
    Число ключей ШВП не более , где - число столбцов таблицы. Как правило, гораздо меньше, чем длина текста (сообщение укладывается в несколько строк по букв), а, значит, и много меньше .

    Пользуясь приведенной выше

    при больших и , попытайтесь оценить, во сколько раз число возможных перестановок ШВП с столбцами меньше числа всех перестановок на тексте длины , кратном .

    В случае, когда ключ ШВП не рекомендуется записывать, его можно извлекать из какого-то легко запоминающегося слова или предложения. Для этого существует много способов. Наиболее распространенный состоит в том, чтобы приписывать буквам числа в соответствии с обычным алфавитным порядком букв. Например, пусть ключевым словом будет ПЕРЕСТАНОВКА. Присутствующая в нем буква А получает номер 1. Если какая-то буква входит несколько раз, то ее появления нумеруются последовательно слева направо. Поэтому второе вхождение буквы А получает номер 2. Поскольку буквы Б в этом слове нет, то буква В получает номер 3 и так далее. Процесс продолжается до тех пор, пока все буквы не получат номера. Таким образом, мы получаем следующий ключ:




    П Е Р Е С Т А Н О В К А
    9 4 10 5 11 12 1 7 8 3 6 2
    Перейдем к вопросу о методах вскрытия шифров перестановки. Проблема, возникающая при восстановлении сообщения, зашифрованного ШП, состоит не только в том, что число возможных ключей велико даже при небольших длинах текста. Если и удастся перебрать все допустимые варианты перестановок, не всегда ясно, какой из этих вариантов истинный. Например, пусть требуется восстановить исходный текст по криптограмме АОГР, и нам ничего не известно, кроме того, что применялся шифр перестановки. Какой вариант ``осмысленного'' исходного текста признать истинным: ГОРА или РОГА? А может быть АРГО? Приведем пример еще более запутанной ситуации. Пусть требуется восстановить сообщение по криптограмме
    ААНИНК-ТЕОМЛ,З.ЬЬЗИВТЛП-ЬЯО

    полученной шифром перестановки. Возможны, как минимум, два варианта исходного сообщения:
    КАЗНИТЬ,-НЕЛЬЗЯ-ПОМИЛОВАТЬ. и

    КАЗНИТЬ-НЕЛЬЗЯ,-ПОМИЛОВАТЬ.
    Эти варианты имеют прямо противоположный смысл и в имеющихся условиях у нас нет возможности определить, какой из вариантов истинный.

    Иногда, за счет особенностей реализации шифра, удается получить информацию об использованном преобразовании (перестановке). Рассмотрим шифр ``Сцитала'' из задачи . Выше уже рассматривался вопрос о количестве перестановок, реализуемых ``Сциталой''. Их оказалось не более 32. Это число невелико, поэтому можно осуществить перебор всех вариантов. При достаточной длине сообщения, мы, скорее всего, получим единственный читаемый вариант текста. Однако, используя информацию о расположении линий, оставленных шифровальщиком, удается определить диаметр стержня, а значит, и возникающую перестановку букв (см. задачу ).

    В рассмотренном примере шифровальщик по неосторожности оставил на папирусе следы, позволяющие нам легко прочитать сообщение. Возможны и другие ситуации, когда не очень ``грамотное'' использование шифра облегчает вскрытие переписки.

    В задаче содержится пример текста, зашифрованного ШВП. По условию пробелы между словами при записи текста в таблицу опускались. Поэтому заключаем, что все столбцы, содержащие пробел в последней строке, должны стоять в конце текста. Таким образом, возникает разбиение столбцов на две группы (содержащие 6 букв, и содержащие 5 букв). Для завершения восстановления исходного текста достаточно найти порядок следования столбцов в каждой из групп в отдельности, что гораздо проще.




    Аналогичная ситуация возникает и при ``неполном'' использовании шифра ``решетка'' (см. задачу ). Пусть имеется решетка размера , и зашифрованное с ее помощью сообщение длины , не содержащее пробелов. Незаполненные мест в решетке при условии, что , соответствуют вырезам в четвертом положении решетки. На основе такой информации, происходит резкое уменьшение числа допустимых решеток (их будет ). Читателю предлагается самостоятельно подсчитать число допустимых решеток при mr/4$" width="72" height="31" >.

    На примере решения задачи продемонстрируем еще один подход к вскрытию шифров вертикальной перестановки - лингвистический. Он основан на том, что в естественных языках некоторые комбинации букв встречаются очень часто, другие - гораздо реже, а многие вообще не встречаются (например - ``ыьъ'').

    Будем подбирать порядок следования столбцов друг за другом так, чтобы во всех строках этих столбцов получались ``читаемые'' отрезки текста. В приведенном решении задачи восстановление текста начинается с подбора цепочки из трех столбцов первой группы, содержащей в последней строке сочетание ТЧК, так как естественно предположить, что сообщение заканчивается точкой. Далее подбираются столбцы, продолжающие участки текста в других строках, и т.д.

    Сочетание лингвистического метода с учетом дополнительной информации довольно быстро может привести к вскрытию сообщения.

    В заключение рассказа о шифрах перестановки приведем историю с зашифрованным автографом А. С. Пушкина, описанную в романе В. Каверина ``Исполнение желаний''.

    Главный герой романа - студент-историк Н. Трубачевский, - занимавшийся работой в архиве своего учителя - академика Бауэра С. И., - нашел в одном из секретных ящиков пушкинского бюро фрагмент недописанной Х главы ``Евгения Онегина''. Это был перегнутый вдвое полулист плотной голубоватой бумаги с водяным знаком 1829 года. На листе было написано следующее.




    1. Властитель слабый и лукавый 1. Нечаянно пригретый славой
    2. Его мы очень смирным знали 2. Орла двуглавого щипали
    3. Гроза двенадцатого года 3. Остервенение народа
    4. Но Бог помог - стал ропот ниже 4. Мы очутилися в Париже
    5. И чем жирнее, тем тяжеле 5. Скажи, зачем ты в самом деле
    6. Авось, о Шиболет народный 6. Но стихоплет великородный
    7. Авось, аренды забывая 7. Авось по манью Николая
    8. Сей муж судьбы, сей странник бранный 8. Сей всадник, папою венчанный
    9. Тряслися грозно Пиринеи 9. Безрукий князь друзьям Мореи
    10. Я всех уйму с моим народом 10. А про себя и в ус не дует
    11. Потешный полк Петра Титана 11. Предавших некогда тирана
    12. Россия присмирела снова 12. Но искра пламени иного
    13. У них свои бывали сходки 13. Они за рюмкой русской водки
    14. Витийством резким знамениты 14. У беспокойного Никиты
    15. Друг Марса, Вакха и Венеры 15. Свои решительные меры
    16. Так было над Невою льдистой 16. Блестит над каменкой тенистой
    17. Плешивый щеголь, враг труда 17. Над нами царствовал тогда
    18. Когда не наши повара 18. У Бонапартова шатра
    19. Настала - кто тут нам помог? 19. Барклай, зима иль русский бог?
    20. И скоро силою вещей 20. А русский царь главой царей
    21. О русский глупый наш народ 21. ...
    22. Тебе б я оду посвятил 22. Меня уже предупредил
    23. Ханжа запрется в монастырь 23. Семействам возвратит Сибирь
    24. Пред кем унизились цари 24. Исчезнувший как тень зари
    25. Волкан Неаполя пылал 25. Из Кишинева уж мигал
    26. Наш царь в конгрессе говорил 26. Ты александровский холоп (?)
    27. Дружина старых усачей 27. Свирепой шайке палачей
    28. И пуще царь пошел кутить 28. Уже издавна, может быть
    29. Они за чашею вина 29. ...
    30. Сбирались члены сей семьи 30. У осторожного Ильи
    31. Тут Лунин дерзко предлагал 31. И вдохновенно бормотал
    32. Но там, где ранее весна 32. И над холмами Тульчина
    Без особых усилий Трубачевский прочитал рукопись, и ничего не понял. Он переписал ее, получилась бессвязная чепуха, в которой одна строка, едва начавшая мысль, перебивается другой, а та - третьей, еще более бессмысленной и бессвязной. Он попробовал разбить рукопись на строфы, - опять не получилось. Стал искать рифмы, - как будто и рифм не было, хотя на белый стих все это мало похоже. Просчитал строку - четырехстопный ямб, размер, которым написан ``Евгений Онегин''.




    Трубачевский с азартом взялся за рукопись, пытался читать ее, пропуская по одной строке, потом по две, по три, надеясь случайно угадать тайную последовательность, в которой были записаны строки. У него ничего не получалось. Тогда он стал читать третью строку вслед за первой, пятую за третьей, восьмую за пятой, предположив, что пропуски должны увеличиваться в арифметической прогрессии. Все то же! Отчаявшись, он бросил эту затею. Однако, она не давала ему покоя ни на лекции, ни в трамвае... Как шахматист, играющий в уме, он не только знал наизусть каждую строчку, он видел ее в десяти комбинациях сразу.

    Прошло время. Однажды, когда он смотрел на светлые пятна окон подходящего к перрону поезда, каким-то внутренним зрением он увидел перед собой всю рукопись - и с такой необыкновенной отчетливостью, как это бывает только во сне.

    Сможете ли вы прочитать эти стихи? Ответ вы найдете в романе В. Каверина.

    Next: Ответы к упражнению.

    Up: 7. Олимпиады по криптографии

    Previous: Ж. Верн, ``Путешествие к центру

    Contents:



    Шифры замены


    Наиболее известными и часто используемыми шифрами являются . Они характеризуются тем, что отдельные части сообщения (буквы, слова, ...) заменяются на какие-либо другие буквы, числа, символы и т.д. При этом замена осуществляется так, чтобы потом по шифрованному сообщению можно было однозначно восстановить передаваемое сообщение.
    Пусть, например, зашифровывается сообщение на русском языке и при этом замене подлежит каждая буква сообщения. Формально в этом случае шифр замены можно описать следующим образом. Для каждой буквы исходного алфавита строится некоторое множество символов так, что множества и попарно не пересекаются при
    , то есть любые два различные множества не содержат одинаковых элементов. Множество называется множеством для буквы .
    Таблица


    (1)

    является шифра замены. Зная ее, можно осуществить как зашифрование, так и расшифрование.
    При зашифровании каждая буква открытого сообщения, начиная с первой, заменяется любым символом из множества . Если в сообщении содержится несколько букв , то каждая из них заменяется на любой символ из . За счет этого с помощью одного ключа () можно получить различные варианты зашифрованного сообщения для одного и того же открытого сообщения. Например, если ключом является таблица


    а б в г д е ж з и к л м н о п р
    21 37 14 22 01 24 62 73 46 23 12 08 27 53 35 04
    40 26 63 47 31 83 88 30 02 91 72 32 77 68 60 44
    10 03 71 82 15 70 11 55 90 69 38 61 54 09 84 45


    с т у ф х ц ч ш щ ъ ы ь э ю я
    20 13 59 25 75 43 19 29 06 65 74 48 36 28 16
    52 39 07 49 33 85 58 80 50 34 17 56 78 64 41
    89 67 93 76 18 51 87 66 81 92 42 79 86 05 57

    то сообщение ``я знаком с шифрами замены'' может быть зашифровано, например, любым из следующих трех способов:

    16 55 54 10 69 09 61 89 29 90 49 44 10 08 02 73 21 32 83 54 74
    41 55 77 10 23 68 08 20 66 90 76 44 21 61 90 55 21 61 83 54 42
    57 30 27 10 91 68 32 20 80 02 49 45 40 32 46 55 40 08 83 27 42
    <
    Так как множества , , , ..., попарно не пересекаются, то по каждому символу шифрованного сообщения можно однозначно определить, какому множеству он принадлежит, и, следовательно, какую букву открытого сообщения он заменяет. Поэтому расшифрование возможно и открытое сообщение определяется единственным образом.

    Часто состоит из одного элемента. Например, в романе Ж. Верна ``Путешествие к центру Земли'' в руки профессора Лиденброка попадает пергамент с рукописью из знаков рунического письма. Каждое множество состоит из одного элемента. Элемент каждого множества выбирается из набора символов вида

    (2)
    В рассказе А. Конан Дойла ``Пляшущие человечки'' каждый символ изображает пляшущего человечка в самых различных позах

    (3)
    На первый взгляд кажется, что чем хитрее символы, тем труднее вскрыть сообщение, не имея ключа. Это, конечно, не так. Если каждому символу однозначно сопоставить какую-либо букву или число, то легко перейти к зашифрованному сообщению из букв или чисел. В романе Ж. Верна ``Путешествие к центру Земли'' каждый рунический знак был заменен на соответствующую букву немецкого языка, что облегчило восстановление открытого сообщения. С точки зрения криптографов использование различных сложных символов не усложняет шифра. Однако, если зашифрованное сообщение состоит из букв или цифр, то вскрывать такое сообщение удобнее.

    Рассмотрим некоторые примеры шифров замены. Пусть каждое множество состоит из одной буквы. Например,

    (4)
    Такой шифр называется шифром простой однобуквенной замены. По ключу () удобно проводить зашифрование и расшифрование: при зашифровании каждая буква открытого текста заменяется на соответствующую букву из второй строки (а на г и т.д.) При расшифровании, наоборот, г заменяется на а и т.д. При шифровании и расшифровании надо помнить вторую строчку в (), то есть ключ.

    Запомнить произвольный порядок букв алфавита достаточно сложно. Поэтому всегда пытались придумать какое-либо правило, по которому можно просто восстановить вторую строчку в ().




    Одним из первых шифров, известных из истории, был так называемый , для которого вторая строка в () является последовательностью, записанной в алфавитном порядке, но начинающейся не с буквы а:

    (5)
    В одной из задач (задача ) используется шифр Цезаря. Запомнить ключ в этом случае просто - надо знать первую букву второй строки () (последовательность букв в алфавите предполагается известной). Однако такой шифр обладает большим недостатком. Число различных ключей равно числу букв в алфавите. Перебрав эти варианты, можно однозначно восстановить открытое сообщение, так как при правильном выборе ключа получится ``осмысленный'' текст. В других случаях обычно получается ``нечитаемый'' текст. Задача именно на это и рассчитана. Несмотря на то, что используется фраза на латинском языке, которого школьники не знают, многие участники олимпиады смогли указать открытое сообщение.

    Другим примером шифра замены может служить лозунговый шифр. Здесь запоминание ключевой последовательности основано на лозунге - легко запоминаемом слове. Например, выберем слово-лозунг ``учебник'' и заполним вторую строку таблицы по следующему правилу: сначала выписываем слово-лозунг, а затем выписываем в алфавитном порядке буквы алфавита, не вошедшие в слово-лозунг. Вторая строка в () примет вид
    у ч е б н и к а в г д ж з л м о

    п р с т ф х ц ш щ ъ ы ь э ю я
    В данном случае число вариантов ключа существенно больше числа букв алфавита.

    Рассмотренные шифры имеют одну слабость. Если в открытом сообщении часто встречается какая-либо буква, то в шифрованном сообщении часто будет встречаться соответствующий ей символ или буква. Поэтому при вскрытии шифра замены обычно стараются наиболее часто встречающимся символам шифрованного сообщения поставить в соответствие буквы открытого сообщения с наибольшей предполагаемой частотой появления. Если шифрованное сообщение достаточно большое, то этот путь приводит к успеху, даже если вы не знаете ключа.

    Кроме частоты появления букв, могут быть использованы другие обстоятельства, помогающие раскрыть сообщение. Например, может быть известна разбивка на слова, как в задаче , и расставлены знаки препинания. Рассматривая небольшое число возможных вариантов замены для предлогов и союзов, можно попытаться определить часть ключа. В этой задаче существенно используется, какие гласные или согласные могут быть удвоенными: ``нн'', ``ее'', ``ии'' и др.




    При анализе шифрованного сообщения следует исходить из того, что число различных вариантов для части определяемого ключа не такое уж большое, если вы находитесь на правильном пути. В противном случае либо вы получите противоречие, либо число вариантов ключа будет сильно возрастать. Обычно, начиная с некоторого момента определение открытого сообщения становится делом техники. Так, в задаче , если вы определили ``денно и нощно'', то дальнейшее определение открытого текста не представляет труда.

    Вообще-то можно сказать, что вскрытие шифров замены является искусством и достаточно трудно формализовать этот процесс.

    Популярные у школьников криптограммы (типа рассмотренной в задаче ) по сути дела являются шифром замены с ключом
    0 1 2 3 4 5 6 7 8 9
    ш и ф р з а м е н ы
    в котором каждой цифре ставится в соответствие буква. При этом должны соблюдаться правила арифметики. Эти правила значительно облегчают определение открытого текста, так же, как правила синтаксиса и орфографии в задаче облегчают нахождение четверостишия В. Высоцкого.

    Любые особенности текста, которые могут быть вам известны, - ваши помощники. Например, в задаче прямо сказано, что в тексте есть выражения ``зпт'', ``тчк'', как часто бывает в реальных телеграммах. И эта подсказка - путь к решению задачи.

    Шифрование даже относительно небольших текстов на одном ключе для рассмотренных шифров замены создает условия для вскрытия открытых сообщений. Поэтому такие шифры пытались усовершенствовать. Одно из направлений - построение шифров разнозначной замены, когда каждой букве ставится в соответствие один или два символа. (Простейшим примером является шифр, определяемый в задаче .) Например,
    а б в г д е ж з и к л м н о п р
    73 74 51 65 2 68 59 1 60 52 75 61 8 66 58 3
    с т у ф х ц ч ш щ ъ ы ь э ю я
    69 64 53 54 9 62 71 4 67 56 72 63 55 70 57
    Если шифрованное сообщение написано без пробелов между символами, то появляется дополнительная трудность при разбиении шифрованного сообщения на отдельные символы и слова.




    Другое направление создания шифров замены состоит в том, чтобы множества шифробозначений содержали более одного элемента. Такие шифры получили название шифров многозначной замены. Они позволяют скрыть истинную частоту букв открытого сообщения, что существенно затрудняет вскрытие этих шифров. Главная трудность, которая возникает при использовании таких шифров, заключается в запоминании ключа. Надо запомнить не одну строчку, а для каждой буквы алфавита - множество ее шифробозначений . Как правило, элементами множеств являются числа. Из художественной литературы и кинофильмов про разведчиков вам известно, что во время второй мировой войны часто использовались так называемые книжные шифры. Множество шифробозначений для каждой буквы определяется всеми пятизначными наборами цифр, в каждом из которых первые две цифры указывают номер страницы, третья цифра - номер строки, четвертая и пятая цифры - номер места данной буквы в указанной строке. Поэтому при поимке разведчика всегда пытались найти книгу, которая могла быть использована им в качестве ключа.

    Мы не останавливаемся здесь на более сложных методах построения шифров замены. Приведенных примеров достаточно, чтобы оценить многообразие таких шифров. Но все они имеют серьезный недостаток - на одном ключе нельзя шифровать достаточно длинные сообщения. Поэтому, как правило, шифры замены используются в комбинации с другими шифрами. Чаще всего - с шифрами перестановки, о которых вы прочитаете в следующем .

    В заключение, следуя героям известных литературных произведений, вскроем некоторые шифры замены. Обратите внимание на то, какие неожиданные обстоятельства при этом используются. Действительно, вскрытие шифров - искусство.

    Next: А. Конан Дойл, ``Пляшущие человечки''

    Up: 7. Олимпиады по криптографии

    Previous: 7.1. Введение

    Contents:



    Система шифрования RSA


    В дальнейшем мы будем предполагать, что читатель знаком с элементарными фактами теории чисел. Тех же, кто хотел бы ознакомиться с ними или напомнить себе эти факты, мы отсылаем к книге [].
    Пусть и натуральные числа. Функция , реализующая схему RSA, устроена следующим образом


    (1)

    Для дешифрования сообщения достаточно решить сравнение


    (2)

    При некоторых условиях на и это сравнение имеет единственное решение .
    Для того, чтобы описать эти условия и объяснить, как можно найти решение, нам потребуется одна теоретико-числовая функция, так называемая функция Эйлера. Эта функция натурального аргумента обозначается и равняется количеству целых чисел на отрезке от до , взаимно простых с . Так и для любого простого числа и натурального . Кроме того, для любых натуральных взаимно простых и . Эти свойства позволяют легко вычислить значение , если известно разложение числа на простые сомножители.
    Если показатель степени в сравнении () взаимно прост с , то сравнение () имеет единственное решение. Для того, чтобы найти его, определим целое число , удовлетворяющее условиям


    (3)

    Такое число существует, поскольку , и притом единственно. Здесь и далее символом будет обозначаться наибольший общий делитель чисел и . Классическая теорема Эйлера, см. [], утверждает, что для каждого числа , взаимно простого с , выполняется сравнение
    и, следовательно,


    (4)

    Таким образом, в предположении , единственное решение сравнения () может быть найдено в виде


    (5)

    Если дополнительно предположить, что число состоит из различных простых сомножителей, то сравнение () будет выполняться и без предположения . Действительно, обозначим и . Тогда делится на , а из () следует, что . Подобно (), теперь легко находим . А кроме того, имеем . Получившиеся сравнения в силу дают нам ().
    Функция (), принятая в системе RSA, может быть вычислена достаточно быстро. Как это сделать, мы обсудим чуть ниже. Пока отметим лишь, что обратная к функция вычисляется по тем же правилам, что и , лишь с заменой показателя степени на . Таким образом, для функции () будут выполнены указанные выше свойства а) и б).

    Для вычисления функции () достаточно знать лишь числа и . Именно они составляют открытый ключ для шифрования. А вот для вычисления обратной функции требуется знать число , оно и является ``секретом'' , о котором речь идет в пункте в). Казалось бы, ничего не стоит, зная число , разложить его на простые сомножители, вычислить затем с помощью известных правил значение и, наконец, с помощью () определить нужное число . Все шаги этого вычисления могут быть реализованы достаточно быстро, за исключением первого. Именно разложение числа на простые множители и составляет наиболее трудоемкую часть вычислений. В теории чисел несмотря на многолетнюю ее историю и на очень интенсивные поиски в течение последних 20 лет, эффективный алгоритм разложения натуральных чисел на множители так и не найден. Конечно, можно, перебирая все простые числа до , и, деля на них , найти требуемое разложение. Но, учитывая, что количество простых в этом промежутке, асимптотически равно

    , см. [, гл. 5], находим, что при , записываемом 100 десятичными цифрами, найдется не менее простых чисел, на которые придется делить при разложении его на множители. Очень грубые прикидки показывают, что компьютеру, выполняющему миллион делений в секунду, для разложения числа 10^{99}$" width="69" height="33" > таким способом на простые сомножители потребуется не менее, чем лет. Известны и более эффективные способы разложения целых чисел на множители, чем простой перебор простых делителей, но и они работают очень медленно. Таким образом, название статьи М. Гарднера вполне оправдано.

    Авторы схемы RSA предложили выбирать число в виде произведения двух простых множителей и , примерно одинаковых по величине. Так как

    (6)
    то единственное условие на выбор показателя степени в отображении () есть

    (7)
    Итак, лицо, заинтересованное в организации шифрованной переписки с помощью схемы RSA, выбирает два достаточно больших простых числа и . Перемножая их, оно находит число . Затем выбирается число , удовлетворяющее условиям (), вычисляется с помощью () число и с помощью () - число . Числа и публикуются, число остается секретным. Теперь любой может отправлять зашифрованные с помощью () сообщения организатору этой системы, а организатор легко сможет дешифровывать их с помощью ().




    Для иллюстрации своего метода Ривест, Шамир и Адлеман зашифровали таким способом некоторую английскую фразу. Сначала она стандартным образом (a=01, b=02, ..., z=26, пробел=00) была записана в виде целого числа , а затем зашифрована с помощью отображения () при


    и . Эти два числа были опубликованы, причем дополнительно сообщалось, что , где и - простые числа, записываемые соответственно и десятичными знаками. Первому, кто дешифрует соответствующее сообщение

    была обещана награда в 100$.

    Эта история завершилась спустя 17 лет в 1994 г., см. [], когда D. Atkins, M. Graff, A. K. Lenstra и P. C. Leyland сообщили о дешифровке фразы, предложенной в []. Она1) была вынесена в заголовок статьи [], а соответствующие числа и оказались равными

    Интересующиеся могут найти детали вычислений в работе []. Здесь же мы отметим, что этот замечательный результат (разложение на множители 129-значного десятичного числа) был достигнут благодаря использованию алгоритма разложения чисел на множители, называемого методом квадратичного решета. Выполнение вычислений потребовало колоссальных ресурсов. В работе, возглавлявшейся четырьмя авторами проекта, и продолжавшейся после предварительной теоретической подготовки примерно 220 дней, на добровольных началах участвовало около 600 человек и примерно 1600 компьютеров, объединенных сетью Internet. Наконец, отметим, что премия в 100$ была передана в Free Software Foundation.

    Описанная выше схема RSA ставит ряд вопросов, которые мы и попробуем обсудить ниже. Например, как проводить вычисления с большими числами, ведь стандартное математическое обеспечение не позволяет перемножать числа размером по 65 десятичных знаков? Как вычислять огромные степени больших чисел? Что значит быстрый алгоритм вычисления и что такое сложная вычислительная задача? Где взять большие простые числа? Как, например, построить простое число в 65 десятичных знаков? Существуют ли другие способы решения сравнения ()? Ведь, если можно найти решение (), не вычисляя секретный показатель или не разлагая число на простые сомножители, да еще сделать это достаточно быстро, вся система RSA разваливается. Наверное, читателю могут прийти в голову и другие вопросы.




    Начнем с конца. За 17 лет, прошедших между публикациями работ [] и [], никто так и не смог дешифровать предложенную авторами RSA фразу. Конечно, это всего лишь косвенное подтверждение стойкости системы RSA, но все же достаточно убедительное. Ниже мы обсудим теоретические проблемы, возникающие при решении полиномиальных сравнений.

    Мы не будем обсуждать, как выполнять арифметические действия с большими целыми числами, рекомендуем читателю обратиться к замечательной книжке Д. Кнута [, гл. 4]. Заметим только, что большое число всегда можно разбить на меньшие блоки, с которыми компьютер может оперировать так же, как мы оперируем с цифрами, когда проводим вычисления вручную на бумаге. Конечно, для этого нужны специальные программы. Созданы и получили достаточно широкое распространение даже специальные языки программирования для вычислений с большими числами. Укажем здесь два из них - PARI и UBASIC. Эти языки свободно распространяются. Информацию о том, как их получить в пользование, можно найти в книге [].

    Next: 4.3. Сложность теоретико-числовых алгоритмов

    Up: 4. Алгоритмические проблемы теории

    Previous: 4.1. Введение

    Contents:



    Сколько дырок в вычислительных сетях?


    При современном уровне развития компьютерных и информационных технологий даже обычный домашний ПК уже не мыслится отдельно от всего компьютерного киберпространства. Проникновение вычислительных сетей всюду, где есть компьютеры, стремление самих пользователей объединяться вынесло на передний план лозунг компании Sun Microsystem ``Сеть - это компьютер''. Разработчики современного программного обеспечения также стали ориентироваться на использование сетевых технологий и обеспечение пользователей удобными средствами для работы с распределенными ресурсами и удаленными источниками информации.
    Многие из вас пользовались ресурсами глобальной сети Internet, кто-то имел возможность работать в локальных вычислительных сетях (ЛВС). Наверное, при этом вы задавали себе вопросы:
    - как защищается информация, передаваемая по открытым каналам связи;
    - можно ли, перехватывая данные, которыми обмениваются компьютеры в вычислительной сети, получить информацию о действиях работающих на них пользователей;
    - можно ли вмешаться в протокол взаимодействия компьютеров;
    - как защитить свои данные при их передаче по каналам локальных или глобальных сетей.
    Мы не будем пытаться дать исчерпывающие ответы на поставленные вопросы, в этом случае мы вышли бы далеко за рамки данной главы. Попробуем просто посмотреть на примере существующих сейчас популярных систем, как эти вопросы решаются на практике.
    Во-первых, как защищается информация, передаваемая по каналам ЛВС и в глобальных сетях? Для большинства распространенных сетевых ОС можно ответить - никак!
    Информация между компьютерами передается в открытом виде по специальным коммуникационным протоколам. В этом легко убедиться, воспользовавшись специальными программами перехвата и анализа данных сетевого информационного обмена.
    Такой программой является широко распространенный программный пакет LANalyzer for Windows фирмы Novell. Для его использования не требуется каких-то специальных навыков работы в ЛВС. Для начала перехвата информации достаточно нажать кнопку ``Start'', а для просмотра пойманных пакетов кнопку ``View''. Дополнительные возможности программы, например настройки фильтров перехвата, можно изучить и использовать в дальнейшем, по ходу дела.

    Просмотрев улов, вы обнаружите, что каждый пакет имеет весьма сложную структуру, представляющую иерархию вложенных друг в друга сетевых протоколов. Но главное не в этом. Попробуйте перехватить пакеты, когда с одного компьютера на другой копируется текстовый файл. Без особого труда вы найдете файл в перехвате. Если он маленький, то он размещен в одном пакете, если большой, то в нескольких.

    Например, пусть копируется файл help.txt с содержанием: Help, I need somebody, Help, not just anybody, Help, you know I need someone, help.

    Этот файл может выглядеть при передаче по каналам ЛВС так (пакет декодирован программой LANalyzer):

    ip: ======================= Internet Protocol ======================= Station:127.0.0.1 --->127.0.0.2 Protocol: TCP Version: 4 Header Length (32 bit words): 5 Precedence: Routine Normal Delay, Normal Throughput, Normal Reliability Total length: 194 Identification: 12292 Fragmentation not allowed, Last fragment Fragment Offset: 0 Time to Live: 128 seconds Checksum: 0xB689(Valid) tcp: ================= Transmission Control Protocol ================= Source Port: 1091 Destination Port: NETBIOS-SSN Sequence Number: 20624641 Acknowledgement Number: 849305 Data Offset (32-bit words): 5 Window: 7473 Control Bits: Acknowledgement Field is Valid (ACK) Push Function Requested (PSH) Checksum: 0xCB85(Valid) Urgent Pointer: 0 Data: 0: 00 00 00 96 FF 53 4D 42 2F 00 00 00 00 18 03 80 |.....SMB/....... 10: 00 00 00 00 00 00 00 00 00 00 00 00 00 08 FE CA |................ 20: 00 08 00 06 0E FF 00 00 00 00 08 00 00 00 00 FF |................ 30: FF FF FF 00 00 57 00 00 00 57 00 3F 00 00 00 00 |.....W...W.?.... 40: 00 57 00 48 65 6C 70 2C 20 49 20 6E 65 65 64 20 |.W.Help, I need 50: 73 6F 6D 65 62 6F 64 79 2C 0D 0A 48 65 6C 70 2C |somebody,..Help, 60: 20 6E 6F 74 20 6A 75 73 74 20 61 6E 79 62 6F 64 | not just anybod 70: 79 2C 0D 0A 48 65 6C 70 2C 20 79 6F 75 20 6B 6E |y,..Help, you kn 80: 6F 77 20 49 20 6E 65 65 64 20 73 6F 6D 65 6F 6E |ow I need someon 90: 65 2C 20 68 65 6C 70 2E 0D 0A |e, help...




    Таким образом, если злоумышленник нашел возможность подключиться к и установил необходимое программное обеспечение, то он без особого труда может собирать информацию о работе пользователей сети, запускаемых программных продуктах, содержании разрабатываемых документов и т.п.

    Кроме того, злоумышленник иногда может вмешиваться в работу пользователей сети. В частности, некоторые атаки на сетевые ОС используют слабости протоколов идентификации получателей и отправителей информации в ЛВС. Дело в том, что каждый пакет, передаваемый по каналам ЛВС, снабжается электронными сетевыми адресами компьютера-отправителя пакета и компьютера, которому этот пакет предназначен. Это как адреса на почтовых конвертах.

    В начале 90-х годов широко использовалась сетевая ОС Novell NetWare ver 3.11. Пользуясь слабостью реализованных в этой системе сетевых протоколов, злоумышленник с помощью специальной программы, подменяющей сетевые адреса, мог выдать свой компьютер за компьютер, на котором работает другой пользователь, в том числе Супервизор []. После чего мог давать системе любые запросы на использование ее ресурсов, заводить новых пользователей, устанавливать их права доступа. Данный способ подмены сетевых адресов получил название ``Голландская атака'' и широко описан в литературе.

    Более того, при работе с Novell NetWare ver 3.11, пользуясь описанными выше слабостями, можно было создавать в ложные серверы (компьютеры, где находится информация о пользователях и основные ресурсы сети) и направлять запросы других пользователей через свой компьютер.

    Рассмотрим еще один важный вопрос, связанный с безопасностью сетевых ОС. В большинстве случаев компьютеры ЛВС объединяются в группы, которые в различных системах называются по разному: подсеть, домен, рабочая группа и т.д. Однако часто эти группы имеют некоторую общую структуру. В группе выделяется один (иногда несколько) мощный компьютер, называемый сервером или контроллером домена, который отвечает за общую безопасность. Остальные компьютеры (рабочие станции) предназначаются для работы пользователей сети.




    Сервер несет ответственность за разрешение санкционированного доступа к ресурсам всей группы, например, к хранящимся на нем файлам или сетевым принтерам. Он отвечает и за допуск в сеть зарегистрированных пользователей.

    Если пользователь хочет воспользоваться ресурсами компьютеров группы, он должен отправить на сервер информацию, подтверждающую свою подлинность. Как уже говорилось выше, чаще всего это делается с помощью пароля. Пользователь на рабочей станции вводит свои имя и пароль, которые отправляются на сервер для проверки. Сервер сравнивает полученные данные с хранящимся у него эталонным паролем пользователя и по результатам проверки принимает решение о доступе пользователя к ресурсам группы.

    Так поступают серверы большинства современных операционных систем. Но мы знаем, что информация, передаваемая по каналам локальных вычислительных сетей, может быть легко перехвачена злоумышленником. Следовательно, пароль пользователя должен передаваться с рабочей станции на сервер таким образом, что, даже перехватив его, им нельзя было воспользоваться. Здесь на помощь приходит криптография.

    Разберем это на примере сетевой ОС Novell NetWare ver 3.11.

    Заметим, что в версии 2.12 этой системы пароль пользователя вообще передавался в открытом виде. Данное обстоятельство делало все усилия по организации разграничения доступа к информации совершенно бесполезными.

    В версии 3.11 был использован протокол передачи информации о пароле пользователя, состоящий из следующих шагов.

    Шаг 1. Пользователь рабочей станции в ответ на запрос системы вводит свое имя и пароль.

    Шаг 2. Рабочая станция преобразует пароль пользователя, вычисляя массив данных, называемый образом или сверткой пароля.

    Шаг 3. Рабочая станция запрашивает у сервера разовый ключ (случайный массив данных, используемый однократно, для одного входа пользователя в систему).

    Шаг 4. С использованием разового ключа и образа пароля пользователя рабочая станция вычисляет разовый билет на вход в систему, который отправляет на сервер для проверки.




    Шаг 5. Сервер осуществляет проверку билета и направляет рабочей станции сообщение о ее результате. Если проверка прошла успешно, то пользователь получает разрешение на доступ в систему.

    При реализации данного протокола решался ряд задач по обеспечению его безопасности, а именно:

    - сделать максимально трудным подбор пароля пользователя злоумышленником, перехватившим в ЛВС разовый ключ и билет;

    - добиться невозможности повторного использования билета для получения доступа к ресурсам системы.

    Как видно из описания протокола, вторая задача была успешно решена. При каждом запросе пользователя на вход в систему билет вычислялся с участием разового ключа, а значит в дальнейшем он не повторялся и не мог быть использован еще раз.

    Для решения первой задачи в качестве базового элемента протокола использовался криптографический алгоритм, участвующий в преобразовании пароля в его образ на Шаге 2 и в вычислении разового билета на Шаге 4.

    Алгоритм перерабатывает массив данных длиной 32 байта, его схема приведена ниже (см. рис. ). На ней:



    Рис. 5. Схема криптографического преобразования, используемого ОС Novell NetWare.
    - массив данных из 32 элементов (байтов), после каждого шага работы схемы заполнение массива сдвигается на один элемент влево, а в записывается результат побитного сложения;

    - фиксированная таблица из 32 элементов (байтов), после каждого шага работы схемы заполнение таблицы циклически сдвигается на один элемент влево;

    - один элемент памяти (байт);

    - операция побитного сложения байтов;

    и - операции сложения и вычитания, соответственно, байтов по модулю 256;

    - операция получения остатка от деления на 32, результат этой операции используется как индекс для выборки элемента массива .

    Схема работает 64 такта.

    Несмотря на кажущуюся сложность схемы, оказалось, что она содержит ряд недостатков, позволяющих, при некоторых благоприятных условиях, подбирать пароль пользователя []. Например, злоумышленник, перехватив разовый ключ и билет, мог попытаться в лоб подобрать пароль пользователя. При этом он мог использовать словари наиболее часто встречающихся паролей, которые любой из вас может найти в Internet. Конечно, пароль не любого пользователя удастся таким образом подобрать. Но это слабое утешение.




    Какой же может быть найден выход для пользователей, желающих надежно защитить свою информацию при ее передаче по открытым каналам вычислительных сетей?

    Ответ здесь один - использование программ шифрования, реализующих надежные криптографические алгоритмы.

    Здесь может быть предложено два основных подхода по организации системы шифрования:

    - предварительное шифрование информации перед передачей ее по сети;

    - прозрачное шифрование пакетов сетевого информационного обмена.

    Первый подход наиболее удобен в глобальных информационных сетях, например, Internet. Суть его в том, что пользователи, предварительно обменявшись ключами, шифруют свои данные, а потом передают их по каналам сети стандартными средствами файлового обмена. Выгоды этого подхода очевидны, он позволяет пользователям, работающим с различными ОС, без особых затрат обмениваться шифрованными данными.

    Так работают пользователи программы Pretty Good Private (PGP), разработанной Филиппом Зиммерманом в начале 90-х годов и широко распространенной во всем мире. PGP позволяет вырабатывать индивидуальные ключи пользователей, безопасно ими обмениваться и шифровать данные. В нем реализованы алгоритм блочного шифрования IDEA и .

    Если вы не доверяете PGP (и это, по-видимому, правильно), то можете разработать свои собственные программы шифрования, взяв за основу только его общую схему.

    Для работы в эффективнее использовать второй подход. Связано это с тем, что в локальных сетях происходит достаточно интенсивный информационный обмен, и поэтому предварительное шифрование оказывается неудобным и занимает много времени.

    Прозрачное шифрование пакетов сетевого информационного обмена обеспечивает защиту не только данных файлов пользователей, но и служебной информации, передаваемой по каналам ЛВС, о чем пользователь может и не подозревать. Например, в этом случае будут шифроваться данные о пароле пользователя, передаваемые на сервер для проверки, данные о запросах пользователя на доступ к ресурсам системы, а также данные, посылаемые на печать.




    Однако, данный подход значительно сложнее для реализации. Больше того, в настоящее время среди распространенных на рынке сетевых ОС нет ни одной, которая бы предоставляла пользователям такую возможность. Скорее всего, появление доступных систем прозрачного шифрования пакетов - дело ближайшего будущего.

    В глобальных сетях дела с этим обстоят значительно лучше. Уже достаточно давно получили широкое распространение программные продукты, предоставляющие пользователям возможность прозрачного шифрования данных, передаваемых по сети. Например, Netscape Navigator, занимающий 75% рынка программ, предназначенных для работы с World Wide Web (WWW) сети Internet и проведения через Internet расчетов по кредитным карточкам, включает в себя криптографическую подсистему.

    Netscape используют миллионы людей по всему миру, тем не менее, в этой программе были найдены существенные ``дыры''. Ранние версии Netscape содержали изъяны в двух основных элементах криптографической подсистемы []:

  • собственно в самом алгоритме шифрования;


  • алгоритме генерации ключей.


  • Первый изъян состоял в том, что для шифрования данных сетевого информационного обмена в программе Netscape в варианте, предназначенном для экспорта из США (а именно им большинство и пользуется), реализован алгоритм гаммирования RC4 [] с ключом 40 бит! Возможности современной вычислительной техники таковы, что ключ такой длины можно определить простым перебором в течении нескольких дней. Какое-то время среди пользователей сети Internet даже развернулось нечто вроде соревнования - кто быстрее сможет найти ключ.

    В июле 1994 года ключ шифрования был восстановлен за 8 дней с использованием объединенных вычислительных ресурсов 120 рабочих станций и двух параллельных суперкомпьютеров.

    В августе 1995 года данная задача была решена за то же время с использованием около 100 компьютеров.

    В декабре 1995 года один суперкомпьютер подобрал ключ за 7 дней.

    Вторая ``дыра'' в системе защиты была выявлена у программы Netscape (версия 1.2) двумя студентами Калифорнийского университета в сентябре 1995 года. Суть ее в том, что были обнаружены существенные слабости в алгоритме генерации ключей шифрования. Ключ должен являться случайным числом. В Netscape для его вычисления был реализован алгоритм генерации ``случайных'' чисел, основанный на показании внутреннего таймера и значениях сетевых адресов. В результате анализа ими был предложен алгоритм подбора ключа в течение всего одной минуты, а программа, реализующая данный алгоритм, была опубликована в Internet.

    Next: 6.5. Вместо заключения

    Up: 6.4. Поучимся на чужих

    Previous: Удобно, красиво, но ...

    Contents:



    Сложность теоретико-числовых алгоритмов


    Сложность алгоритмов теории чисел обычно принято измерять количеством арифметических операций (сложений, вычитаний, умножений и делений с остатком), необходимых для выполнения всех действий, предписанных алгоритмом. Впрочем, это определение не учитывает величины чисел, участвующих в вычислениях. Ясно, что перемножить два стозначных числа значительно сложнее, чем два однозначных, хотя при этом и в том, и в другом случае выполняется лишь одна арифметическая операция. Поэтому иногда учитывают еще и величину чисел, сводя дело к так называемым битовым операциям, т.е. оценивая количество необходимых операций с цифрами 0 и 1, в двоичной записи чисел. Это зависит от рассматриваемой задачи, от целей автора и т.д.
    На первый взгляд странным также кажется, что операции умножения и деления приравниваются по сложности к операциям сложения и вычитания. Житейский опыт подсказывает, что умножать числа значительно сложнее, чем складывать их. В действительности же, вычисления можно организовать так, что на умножение или деление больших чисел понадобится не намного больше битовых операций, чем на сложение. В книге [] описывается алгоритм Шенхаге - Штрассена, основанный на так называемом быстром преобразовании Фурье, и требующий битовых операций для умножения двух -разрядных двоичных чисел. Таким же количеством битовых операций можно обойтись при выполнении деления с остатком двух двоичных чисел, записываемых не более, чем цифрами. Для сравнения отметим, что сложение -разрядных двоичных чисел требует битовых операций.
    Говоря в этой главе о сложности алгоритмов, мы будем иметь в виду количество арифметических операций. При построении эффективных алгоритмов и обсуждении верхних оценок сложности обычно хватает интуитивных понятий той области математики, которой принадлежит алгоритм. Формализация же этих понятий требуется лишь тогда, когда речь идет об отсутствии алгоритма или доказательстве нижних оценок сложности. Более детальное и формальное обсуждение этих вопросов см. в главе .
    Приведем теперь примеры достаточно быстрых алгоритмов с оценками их сложности. Здесь и в дальнейшем мы не будем придерживаться формального описания алгоритмов, стараясь в первую очередь объяснить смысл выполняемых действий.
    Следующий алгоритм вычисляет за арифметических операций. При этом, конечно, предполагается, что натуральные числа и не превосходят по величине .
    Next: 4.4. Как отличить составное
    Up: 4. Алгоритмические проблемы теории
    Previous: 4.2. Система шифрования RSA
    Contents:


    Совершенная секретность


    Предположим, что имеется конечное число возможных сообщений
    с априорными вероятностями и что эти сообщения преобразуются в возможные криптограммы , так что

    После того как шифровальщик противника перехватил некоторую криптограмму , он может вычислить, по крайней мере в принципе, апостериорные вероятности различных сообщений . Естественно определить совершенную секретность с помощью следующего условия: для всех апостериорные вероятности равны априорным вероятностям независимо от величины этих последних. В этом случае перехват сообщения не дает шифровальщику противника никакой информации1). Теперь он не может корректировать никакие свои действия в зависимости от информации, содержащейся в криптограмме, так как все вероятности, относящиеся к содержанию криптограммы, не изменяются. С другой стороны, если это условие равенства вероятностей не выполнено, то имеются такие случаи, в которых для определенного ключа и определенных выборов сообщений апостериорные вероятности противника отличаются от априорных. А это в свою очередь может повлиять на выбор противником своих действий и, таким образом, совершенной секретности не получится. Следовательно, приведенное определение неизбежным образом следует из нашего интуитивного представления о совершенной секретности.
    Необходимое и достаточное условие для того, чтобы система была совершенно секретной, можно записать в следующем виде. По теореме Байеса

    где
    -- априорная вероятность сообщения ;
    -- условная вероятность криптограммы при условии, что выбрано сообщение , т.е. сумма вероятностей всех тех ключей, которые переводят сообщение в криптограмму ;
    -- вероятность получения криптограммы ;
    -- апостериорная вероятность сообщения при условии, что перехвачена криптограмма .
    Для совершенной секретности системы величины и должны быть равны для всех и . Следовательно, должно быть выполнено одно из равенств: или [это решение должно быть отброшено, так как требуется, чтобы равенство осуществлялось при любых значениях ], или же


    для любых и .

    Наоборот, если , то

    и система совершенно секретна. Таким образом, можно сформулировать следующее:

    Теорема 6.

    Необходимое и достаточное условие для совершенной секретности состоит в том, что


    для всех и , т.е. не должно зависеть от .

    Другими словами, полная вероятность всех ключей, переводящих сообщение в данную криптограмму , равна полной вероятности всех ключей, переводящих сообщение в ту же самую криптограмму для всех и .

    Далее, должно существовать по крайней мере столько же криптограмм , сколько и сообщений , так как для фиксированного отображение дает взаимнооднозначное соответствие между всеми и некоторыми из . Для совершенно секретных систем для каждого из этих и любого

    . Следовательно, найдется по крайней мере один ключ, отображающий данное в любое из . Но все ключи, отображающие фиксированное в различные , должны быть различными, и поэтому число различных ключей не меньше числа сообщений . Как показывает следующий пример, можно получить совершенную секретность, когда число сообщений точно равно числу ключей. Пусть занумерованы числами от 1 до , так же как и , и пусть используются ключей. Тогда

    где . В этом случае оказывается справедливым равенство и система является совершенно секретной. Один пример такой системы показан на рис. , где



    Рис. 5. Совершенная система.
    Совершенно секретные системы, в которых число криптограмм равно числу сообщений, а также числу ключей, характеризуются следующими двумя свойствами: 1) каждое связывается с каждым только одной линией; 2) все ключи равновероятны. Таким образом, матричное представление такой системы является ``латинским квадратом''.

    В ``Математической теории связи'' показано, что количественно информацию удобно измерять с помощью энтропии. Если имеется некоторая совокупность возможностей с вероятностями

    , то энтропия дается выражением

    Секретная система включает в себя два статистических выбора: выбор сообщения и выбор ключа. Можно измерять количество информации, создаваемой при выборе сообщения, через






    где суммирование выполняется по всем возможным сообщениям. Аналогично, неопределенность, связанная с выбором ключа, дается выражением



    В совершенно секретных системах описанного выше типа количество информации в сообщении равно самое большее (эта величина достигается для равновероятных сообщений). Эта информация может быть скрыта полностью лишь тогда, когда неопределенность ключа не меньше . Это является первым примером общего принципа, который будет часто встречаться ниже: существует предел, которого нельзя превзойти при заданной неопределенности ключа -- количество неопределенности, которое может быть введено в решение, не может быть больше чем неопределенность ключа.

    Положение несколько усложняется, если число сообщений бесконечно. Предположим, например, что сообщения порождаются соответствующим марковским процессом в виде бесконечной последовательности букв. Ясно, что никакой конечный ключ не даст совершенной секретности. Предположим тогда, что источник ключа порождает ключ аналогичным образом, т.е. как бесконечную последовательность символов. Предположим далее, что для шифрования и дешифрирования сообщения длины требуется только определенная длина ключа . Пусть логарифм числа букв в алфавите сообщений будет , а такой же логарифм для ключа -- . Тогда из рассуждений для конечного случая, очевидно, следует, что для совершенной секретности требуется, чтобы выполнялось неравенство

    Такой вид совершенной секретности реализован в .

    Эти выводы делаются в предположении, что априорные вероятности сообщений неизвестны или произвольны. В этом случае ключ, требуемый для того, чтобы имела место совершенная секретность, зависит от полного числа возможных сообщений.

    Можно было бы ожидать, что если в пространстве сообщений имеются фиксированные известные статистические связи, так что имеется определенная скорость создания сообщений в смысле, принятом в ``Математической теории связи'', то необходимый объем ключа можно было бы снизить в среднем в раз, и это действительно верно. В самом деле, сообщение можно пропустить через преобразователь, который устраняет избыточность и уменьшает среднюю длину сообщения как раз во столько раз. Затем к результату можно применить шифр Вернама. Очевидно, что объем ключа, используемого на букву сообщения, статистически уменьшается на множитель , и в этом случае источник ключа и источник сообщений в точности согласован -- один бит ключа полностью скрывает один бит информации сообщения. С помощью методов, использованных в ``Математической теории связи'', легко также показать, что это лучшее, чего можно достигнуть.




    Совершенно секретные системы могут применяться и на практике, их можно использовать или в том случае, когда полной секретности придается чрезвычайно большое значение, например, для кодирования документов высших военных инстанций управления или же в случаях, где число возможных сообщений мало. Так, беря крайний пример, когда имеются в виду только два сообщения -- ``да'' или ``нет'', -- можно, конечно, использовать совершенно секретную систему со следующей таблицей отображений:

    да 0 1
    нет 1 0
    Недостатком совершенно секретных систем для случая корреспонденции большого объема является, конечно, то, что требуется посылать эквивалентный объем ключа. В следующих разделах будет рассмотрен вопрос о том, чего можно достигнуть при помощи меньших объемов ключа, в частности, с помощью конечного ключа.

    Next: 11. Ненадежность

    Up: Часть II. ТЕОРЕТИЧЕСКАЯ СЕКРЕТНОСТЬ

    Previous: 9. Введение

    Contents:



    Способы изображения систем


    , в том виде как она определена выше, может быть изображена различными способами. Один из них (удобный для целей иллюстрации) использует линейные схемы, изображенные на рис. и рис. . Возможные сообщения представляются точками слева, а возможные криптограммы -- точками справа. Если некоторый ключ, скажем, ключ , отображает сообщение в криптограмму , то и соединяются линией, обозначенной значком и т.д. Для каждого ключа из каждого сообщения должна выходить ровно одна линия. Если это же верно и для каждой криптограммы, скажем, что система является замкнутой.


    Рис. 2. Схемы простых систем.

    Более общий способ описания системы состоит в задании операции, с помощью которой, применяя к сообщению произвольный ключ, можно получить криптограмму. Аналогично неявным образом можно определить вероятности различных ключей или с помощью задания способа выбора ключей, или с помощью описания сведений о том, как обычно выбирает ключи противник. Вероятности сообщений определяются просто посредством изложения наших априорных сведений о языке противника, тактической обстановке (которая будет влиять на возможное содержание сообщений) и любой специальной информации, касающейся криптограммы.
    Next: 4. Примеры секретных систем
    Up: Часть I. МАТЕМАТИЧЕСКАЯ СТРУКТУРА СЕКРЕТНЫХ
    Previous: 2. Секретные системы
    Contents:


    Так где же взять случайную последовательность?


    Возможно, у вас уже появилась мысль, что истинно случайную последовательность программным путем не получить. Это не так. Существует, по крайней мере, один способ, позволяющий получить истинно случайную последовательность байтов. Основная идея этого способа заключается в том, чтобы привлечь к процессу выработки случайной последовательности самого пользователя.
    Пользователь работает с компьютером. Он двигает мышь, нажимает клавиши на клавиатуре. Попробуем взять в качестве элементов случайной последовательности интервалы между последовательными нажатиями клавиш. Какая получится последовательность?
    Случайная? Несомненно. Равномерно распределенная? Вряд ли. Какое у нее будет распределение? Трудно сказать. Если пользователь набирает текст, получится одно распределение, если работает с Norton Commander - другое, если играет в Tetris - третье. Будут ли соседние элементы последовательности зависеть друг от друга? Скорее всего, да.
    Кажется, что никаких преимуществ по сравнению с предыдущим методом нет. Однако в отличие от предыдущего метода в данном случае все перечисленные проблемы можно решить.
    Для начала посмотрим, можно ли написать программу генерации ключа так, чтобы распределение исходной случайной величины было известно. Исходная случайная величина у нас - это продолжительность интервала между нажатиями клавиш. В разных ситуациях эта величина распределена по-разному. Выберем ситуацию, когда распределение этой случайной величины легко посчитать. Пусть, например, пользователь в процессе выработки ключа играет в Tetris. При игре в Tetris частота нажатий на клавиши мало зависит от пользователя, другими словами, все пользователи, играя в Tetris, нажимают на клавиши примерно одинаково часто (конечно, кроме пользователей, которые играют в Tetris первый раз в жизни).
    Распределение интервалов времени между последовательными нажатиями на клавиши несложно рассчитать. Для этого нужно прежде всего написать резидентную программу, которая перехватывала бы прерывание 16h, отвечающее за работу с клавиатурой, при каждом вызове прерывания получала бы текущее значение таймера, сравнивала его с предыдущим полученным значением, вычисляла разность и записывала полученное число в файл4). Затем нужно запустить эту программу и, пока она работает, поиграть некоторое время в Tetris. Проведите этот эксперимент в качестве упражнения.

    Посмотрите на рисунок. Распределение нашей случайной величины будет выглядеть примерно так:

    Распределение явно неравномерное, но это и не важно. Важно то, что распределение случайной величины при разных испытаниях примерно одинаково. Преобразовать это распределение в равномерное совсем несложно.

    Остается решить последнюю проблему. Таймер компьютера тикает с частотой 18,2 раза в секунду, т.е. один тик занимает примерно 55 миллисекунд. Когда пользователь нажимает клавиши подряд, не думая, или просто держит клавишу нажатой, интервалы между последовательными нажатиями составляют 100-200 миллисекунд. Получается, что первый пик на приведенном графике на самом деле выглядит примерно так, как показано на рисунке.

    А это нехорошо - в полученной случайной последовательности числа 2 и 3 будут встречаться гораздо чаще, чем любые другие. После преобразования к равномерному распределению значения этих часто встречающихся чисел изменятся, но сам факт наличия двух-трех значений, на которые приходится львиная доля наблюдений, останется.

    Получается, что нам мешает дискретность таймера персонального компьютера. Как от нее избавиться? Подумайте сами. Один из возможных вы найдете в конце главы.

    Next: 6.4. Поучимся на чужих

    Up: 6.3. Как зашифровать файл?

    Previous: Где взять истинно случайную

    Contents:



    Удобно, красиво, но ...


    Рассмотрим примеры использования криптографических алгоритмов в широко распространенных программных продуктах.
    В последнее время проблема защиты информации перестала быть головной болью только государственных структур, над нею начинают задумываться многие обычные пользователи ПК. Идя навстречу их пожеланиям, многие производители программ стали включать в свои продукты функции защиты данных. Однако в большинстве случаев разработчики таких программ не ставят своей целью использовать в них сколько-нибудь стойкие алгоритмы. Они считают основной своей задачей предоставить пользователям возможность защитить информацию либо от случайного несанкционированного доступа, либо от неквалифицированного взломщика. Программные продукты, о которых речь пойдет ниже, широко известны. Они, скорее, маскируют информацию, чем реализуют алгоритмы надежного криптографического закрытия.
    Многие из вас, наверное, пользовались для редактирования документов программным продуктом Microsoft Word. Эта программа предоставляет пользователю широкий спектр возможностей для работы с документами, в том числе возможность сохранения информации в файлах в различном формате.
    Если вы посмотрите в меню сохранения документов программы Word, то в параметрах этой операции обнаружите возможность указать пароль для доступа к документу. То есть для его открытия и дальнейшей работы с ним пользователь должен ввести пароль. Что происходит с документом, если в соответствующем поле параметров ввести пароль?
    Для ответа на этот вопрос достаточно посмотреть на два документа, желательно идентичных по содержанию, но сохраненных с паролем и без него. В редакторе они будут выглядеть совершенно одинаково. Однако, откроем эти документы (они имеют расширение .doc) какой-нибудь программой просмотра файлов.
    Мы увидим, что файл, представляющий документ в формате Microsoft Word, имеет сложную структуру. Он состоит из заголовка и нескольких разделов, которые описывают текст, а также содержат данные о работе пользователя с документом и служебную информацию. В одном из разделов файла, соответствующем документу без пароля, мы можем увидеть сам открытый текст. При этом в том же разделе файла с паролем мы обнаружим уже случайную последовательность символов. Оказывается, пароль использовался не только для разрешения доступа к документу при его открытии, но и являлся ключом некоторой криптографической схемы, зашифровавшей текст.

    Очевидно, что если не зашифровывать текст, то сама идея использовать пароль была бы бесполезной. Любой пользователь сначала мог бы ``вытащить руками'' из файла большую часть текста, а потом перенести его в Word. В то же время, выбранная в Microsoft Word схема шифрования информации остановит только начинающего хакера []. Рассмотрим ее подробнее.

    Из пароля пользователя Word вырабатывает массив длиной 16 байт, который назовем гаммой (gamma[0..15]). Далее, каждый байт открытого текста (plain_text[i]) последовательно складывается побитно (XOR) с байтом гаммы, в результате получаются знаки шифрованного текста

    (cipher_text[i]),

    которые мы можем видеть в файле с паролем. То есть шифрование производится согласно формуле:

    cipher_text[i] := plain_text[i] XOR gamma[i mod 16] ,

    где mod 16 - операция получения остатка от целочисленного деления на 16.

    Перед нами типичный пример криптографической схемы гаммирования короткой гаммой. Так как каждый шестнадцатый символ шифрованного текста получается прибавлением к символу открытого текста одного и того же значения гаммы, можно считать, что мы имеем дело с 16-ю простыми заменами. Для каждой из шестнадцати позиций символа в тексте подсчитаем таблицу частот его значений, после чего выберем в каждой из них значения символа, встретившегося чаще других.

    Заметим, что самый частый символ в документе Word - это пробел (его значение в кодировке ASCII есть 0x20). В этом легко убедиться, просматривая документ в шестнадцатиричном формате. Следовательно, самым частым символам в таблице частот соответствуют зашифрованные пробелы, и, складывая побитно значения этих символов с 0x20, мы получим все 16 знаков гаммы. Далее, зная гамму, расшифровываем весь текст. Не правда ли, просто!

    На эту очевидную слабость многие сразу обратили внимание. Поэтому фирма Microsoft для последних версий текстового процессора Microsoft Word, начиная с Word 97, полностью изменила алгоритм шифрования файлов, встроив в него хорошо известные алгоритмы шифрования RC4 и хеширования MD5.




    Теперь посмотрим, как защищаются пароли пользователя в операционных системах (ОС) MicrosoftWindows95 первых версий (до OSR 2).

    Большинство современных сетевых ОС являются многопользовательскими, это и Novell NetWare, и Microsoft Windows NT, и т.д. Для разграничения доступа пользователей к своим ресурсам эти ОС требуют от последних доказать свою подлинность. Делается это с помощью пароля, который известен и ОС, и пользователю. Ясно, насколько важно системе для обеспечения ее безопасности надежно и недоступно для постороннего доступа хранить информацию о паролях пользователей.

    ОС Microsoft Windows 95 не является многопользовательской и не предоставляет возможность пользователям разделять свои ресурсы. Тем не менее, для удобства работы она запрашивает у пользователя при входе в систему его имя и пароль. Но если он ничего не ответит (нажмет кнопку ``Cancel''), ОС все равно разрешит ему работать дальше. Для чего же тогда запрашивается пароль?

    Дело в том, что ПК может работать в локальной вычислительной сети (ЛВС), где ему доступны ресурсы или серверы, для обращения к которым требуются пароли, причем, возможно, различные. Чтобы пользователю не нужно было их все запоминать, ОС Microsoft Windows 95 запоминает пароли для доступа к ресурсам ЛВС в специальном файле с именем ``имя_пользователя.pwl''. В этом файле данные шифруются на том самом пароле, который система запрашивает у пользователя при его входе в систему. Если пароль введен правильно, то в дальнейшем ОС сама подставляет соответствующий пароль при запросе пользователя на доступ к ресурсам или серверам ЛВС.

    Данные в .pwl файлах шифруются следующим образом []. Из пароля пользователя по алгоритму шифрования RC4 вырабатывается . Каждый пароль на доступ к соответствующему ресурсу вместе с некоторой служебной информацией суммируется побитно с полученной гаммой. То есть каждый раз при шифровании используется одна и та же гамма. Если учесть, что .pwl файл содержит зашифрованную запись, начинающуюся с имени пользователя, дополненного до 20 символов пробелами, то задача вскрытия пароля становится элементарной. Получив первые 20 знаков гаммы, мы можем прочитать любой сохраненный в файле пароль (учитывая то обстоятельство, что редко когда используются пароли длиной более 10 символов).

    Следует отметить, что сам по себе алгоритм RC4 довольно сложный, и в данном случае использовались слабости не самого алгоритма, а схемы его применения, а именно многократное использование одной гаммы.

    Next: Сколько дырок в вычислительных

    Up: 6.4. Поучимся на чужих

    Previous: 6.4. Поучимся на чужих

    Contents:



    Удобно ли носить большую с вязку ключей?


    Перед вами программа для шифрования. Что является секретным в этой программе? Сама программа? Исходный текст? Описание алгоритма? Ответ, безусловно, зависит от условий ее применения. Конечно, лучше всего сделать так, чтобы ваш конкурент не имел ни того, ни другого, ни третьего. Поэтому обычно подобные программы защищают и от копирования, и от дизассемблирования, и от работы под отладчиком и т.д. Если она защищена грамотным специалистом, то пройдет не один месяц, пока защита будет снята. Тем не менее, программа, как правило, используется длительное время, а хакеров сейчас великое множество. Поэтому лучше сразу исходить из того, что все связанное с программой секрета на представляет.
    Что еще представляет интерес для вашего конкурента? Закрытая программой информация? От нее никто не откажется, но она мало что дает. Если алгоритм шифрования выбран надежный, то закрытая информация не представляет секрета, так как она непосредственно предназначена для хранения и передачи в открытом виде. Поэтому при отсутствии следов не уничтоженной открытой информации можно быть спокойным.
    Остаются ключи. Имея ключи, ваши конкуренты откроют все закрытые двери. Это главный секрет во всем процессе шифрования, и, можете не сомневаться, что основные усилия вашего конкурента будут направлены именно на подкуп персонала, имеющего доступ к ключам.
    Но как вводить ключ в программу и где хранить ключи? Если программу использовать интенсивно, то ключей нужно очень много. Где их брать и как заменять один на другой?
    Скупой рыцарь хранил свои сокровища в сундуках, которые были закрыты с помощью замков, ключи от которых он постоянно носил с собой. Он правильно делал, что никогда не расставался с ключами. Но поскольку он был очень богат, то ключей у него было очень много, и носить такую связку ему, наверно, было очень неудобно. Вообще-то, он мог завести еще один сундук, куда можно было бы сложить все ключи. Тогда бы ему потребовалось носить всего один ключ. Именно эта идея используется в ключевых системах с главным ключом, когда все ключи, кроме главного, хранятся в компьютере на винчестере в зашифрованном виде. Хотя такой способ хранения ключей несколько усложняет процедуру доступа к зашифрованной информации, преимущества здесь неоспоримы. Действительно, можете ли вы представить себе человека, который помнит несколько сотен ключей?

    Таким образом, задача сводится к обеспечению надежного хранения всего одного ключа. Правда, при этом ценность этого ключа резко возрастает и носить его в кармане становится очень опасным. Не только потому, что наверняка найдутся люди, которые будут испытывать непреодолимое желание взять у вас его, хотя бы на время; но еще и потому, что если он потеряется или испортится, получив механическое повреждение, то вы уже никогда не сможете ничего восстановить из той информации, которую вы хранили в своем компьютере. С ключами надо быть очень осторожным.

    В 1976 году американские математики Диффи и Хеллман предложили перейти к . Давайте издадим книгу-справочник с открытыми ключами всех корреспондентов и поместим ее на общедоступном сервере. Это полностью снимет проблему с хранением большого числа ключей.

    Нетрудно догадаться, сколь неоднозначный и шокирующий эффект это предложение произвело на криптографическую общественность. Но уж больно заманчивы были те возможности, которые предоставляла такая система. Как показали авторы идеи, такая система дает возможность подписывать сообщения электронной цифровой подписью, которая выполняет роль обычной подписи под документом. Таким образом, сразу снимался тяжкий груз по производству, запоминанию, хранению, распределению и уничтожению огромного количества секретных ключей, да к тому же открывались новые возможности и сферы применения.

    Более того, плодотворность идеи выразилась в проявлении большого интереса к ней у значительной части крупных математиков. Ведь для реализации такой системы нужны были труднорешаемые математические задачи. А кто, кроме самих математиков, может придумать такие задачи!

    Посмотрим, например, как организуется выработка ключей в широко распространенном протоколе SSH (Secure Shell). Данный протокол обеспечивает аутентификацию и закрытие коммуникаций при взаимодействии UNIX машин. Для выработки ключей в нем используется протокол, являющийся модификацией хорошо известного протокола обмена ключами, предложенного Диффи и Хеллманом. Пусть - большое простое число и . Пусть - число, имеющее порядок равный по модулю . Оно является образующим элементом мультипликативной группы порядка . Помимо операции возведения в степень в протоколе используются алгоритмы и , принятые в США в качестве стандартов. Протокол состоит в следующем (см. []).




  • Клиент C генерирует случайное число , , вычисляет значение и отправляет сообщение ``'' серверу S.


  • Сервер S генерирует случайное число , , вычисляет значение , вычисляет значение ключа , вычисляет проверочное значение (здесь - функция хеширования на основе алгоритма SHA, - некоторая строка, содержащая идентифицирующую информацию о клиенте и сервере, - открытый ключ сервера), вычисляет значение цифровой подписи под на своем секретном ключе в соответствии с алгоритмом DSS, а затем отправляет сообщение ``'' клиенту C.


  • Клиент C проверяет, действительно ли является ключом сервера. Если да, то вычисляет значение ключа , проверяет правильность значения вектора . Наконец, проверяет подпись под этим значением.




  • В этом протоколе простое число строится из известного каждому школьнику числа по формуле

    и равно

    179769313486231590770839156793787453197860296048756011706444
    423684197180216158519368947833795864925541502180565485980503
    646440548199239100050792877003355816639229553136239076508735
    759914822574862575007425302077447712589550957937778424442426
    617334727629299387668709205606050270810842907692932019128194
    467627007.
    Его шестнадцатиричная запись имеет ``менее случайный'' вид

    FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DC1CD1
    29024E08 8A67CC74 020BBEA6 3B139B22 514A0879 8E3404DD
    EF9519B3 CD3A431B 302B0A6D F25F1437 4FE1356D 6D51C245
    E485B576 625E7EC6 F44C42E9 A637ED6B 0BFF5CB6 F406B7ED
    EE386BFB 5A899FA5 AE9F2411 7C4B1FE6 49286651 ECE65381
    FFFFFFFF FFFFFFFF.


    Данное число построено Ричардом Шреппелем из университета штата Аризона, а его свойства описаны в работе [].

    В качестве образующего элемента для этого простого числа взято число . Возведение в степень такого числа выполняется достаточно быстро, так как умножение на 2 - это простой сдвиг двоичной записи числа в сторону старших разрядов.

    Next: 49783156431138-я попытка

    Up: 6.2. Немного теории

    Previous: Какой алгоритм выбрать?

    Contents:



    Указания и решения


    Next: ...к задачам первой олимпиады
    Up: 7. Олимпиады по криптографии
    Previous: Задачи девятой олимпиады
    Contents:


    Условия задач олимпиад по математике и криптографии


    Ниже приводятся задачи девяти олимпиад по криптографии и математике. Нумерация задач двойная: первая цифра - номер олимпиады, вторая - номер задачи в олимпиаде. Для решения задач не требуется специальных знаний. Все необходимые определения даны в условиях. Задачи рассчитаны на учащихся 9, 10 и 11 классов.
    Next: Задачи первой олимпиады
    Up: 7. Олимпиады по криптографии
    Previous: 7.4. Многоалфавитные шифры замены
    Contents:


    Вместо введения


    Next: Для чего криптографии нужен
    Up: 6. Компьютер и криптография
    Previous: 6. Компьютер и криптография
    Contents:


    Вместо заключения


    Математическая теория криптографических протоколов развивается совместными усилиями ученых различных стран. Среди авторов работ, посвященных протоколам, встречаются имена математиков США и Израиля, Канады и Голландии, Италии и Японии, Франции и Германии, Дании и Венгрии. Этот список можно продолжить. И лишь наша замечательная математическая школа практически никаких заслуг в этой области не имеет. Будем надеяться, что в недалеком будущем ситуация изменится и не без участия кого-либо из наших читателей.
    Next: Литература к главе 3
    Up: 3. Криптографические протоколы
    Previous: 3.7. За пределами стандартных
    Contents:

    Next: Полезные советы
    Up: 6. Компьютер и криптография
    Previous: Сколько дырок в вычислительных
    Contents:


    Введение в криптографию


    под общей редакцией В. В. Ященко 1)
    www.cryptography.ru
    В книге впервые на русском языке дается систематическое изложение научных основ криптографии от простейших примеров и основных понятий до современных криптографических конструкций. Понимание принципов криптографии стало для многих потребностью в связи с широким распространением криптографических средств обеспечения информационной безопасности. Поэтому книга может быть полезна массовому читателю.
    Книга рассчитана на студентов-математиков и специалистов по информационной безопасности.

    Авторский коллектив: В. В. Ященко (редактор, глава 1), Н. П. Варновский (глава 2,3),
    Ю. В. Нестеренко (глава 4), Г. А. Кабатянский (глава 5),
    П. Н. Девянин, В. Г. Проскурин, А. В. Черемушкин (глава 6),
    П. А. Гырдымов, А. Ю. Зубов, А. В. Зязин, В. Н. Овчинников (глава 7).

    Next:
    Contents:


    За пределами стандартных предположений. Конфиденциальная передача сообщений



    ``Ты умеешь считать? - спросила Белая Королева.- Сколько будет один плюс один плюс один плюс один плюс один плюс один плюс один плюс один плюс один плюс один?

    - Я не знаю, - ответила Алиса. - Я сбилась со счета.

    Она не умеет считать,- сказала Черная Королева.''

    Л. Кэрролл. ``Алиса в зазеркалье''.
    Криптографические протоколы в своем большинстве относятся к одной из двух категорий. В первую входят протоколы, обладающие теоретико-информационной или абсолютной стойкостью. Вторая категория - это те протоколы, стойкость которых основывается на вычислительной сложности каких-либо математических задач. Основывается в том смысле, что либо стойкость протокола доказана при некотором конкретном предположении, либо справедливость предположения необходима для стойкости, т.е. противник, научившийся решать соответствующую задачу эффективно, заведомо ``взламывает'' протокол.
    В теоретической криптографии, как и во всякой научной дисциплине, представлено все многообразие направлений научного поиска. Одно из таких направлений - разработка криптографических схем, стойких при каких-либо нестандартных предположениях. Работ, посвященных этой тематике, немного, но они есть. И в этом заключительном разделе мы рассмотрим пример криптографического протокола, доказуемо стойкого при нестандартном предположении.
    Задача конфиденциальной передачи сообщений состоит в следующем. Имеются два участника, Алиса и Боб, которые являются абонентами сети связи. Участники соединены проводами, по каждому из которых можно пересылать сообщения в обе стороны, независимо от того, что происходит с другими проводами. Никакой общей секретной информации у Алисы и Боба изначально нет. У Алисы имеется конфиденциальное сообщение , и задача состоит в том, чтобы его конфиденциальным же образом передать Бобу. Против участников действует активный противник, который может полностью контролировать не более проводов. Полный контроль означает, что противник перехватывает все сообщения, передаваемые по данному проводу, и может заменять их любыми другими сообщениями.

    Если положить и рассматривать пассивного противника, который только подслушивает, то получим классическую модель секретной связи, введенную еще Шенноном. Задача конфиденциальной передачи сообщений в этой модели всегда решалась с помощью криптосистем. Но выделение криптосистем в отдельную категорию - это, скорее, дань традиции. На самом деле требуется протокол конфиденциальной передачи сообщений, при построении которого используются такие криптографические примитивы, как алгоритмы шифрования и дешифрования, протокол распределения ключей и т.д. Например, в случае криптосистемы с открытым ключом примитивом может быть и протокол электронной подписи, если тот орган (центр доверия), которому поручено вести сертифицированный справочник, заверяет все открытые ключи, хранящиеся в этом справочнике, своей подписью.

    В предположении задача конфиденциальной передачи сообщений может быть решена с помощью следующего простого протокола.

    Прежде всего заметим, что при данном предположении Алиса и Боб имеют абсолютно надежный открытый канал связи. Если, например, Алисе необходимо послать сообщение Бобу, то она посылает по каждому из проводов, а Боб выбирает из всех полученных значений то, которое появилось по крайней мере раз.

    Далее, пусть - большое простое число, n$" width="43" height="28" >. Алиса выбирает случайный полином степени над . Пусть . Идея состоит в том, чтобы передать Бобу в качестве одноразового ключа для шифра Вернама. При этом нужно обеспечить такую передачу, чтобы противник не мог узнать ничего о значении . Для этого Алиса использует пороговую схему разделения секрета, т.е. посылает значение по -му проводу. Пусть , - значение, которое Боб получил по -му проводу. Если все пар интерполируются полиномом степени , то передача успешна и Боб может вычислить ключ . Далее Алиса и Боб общаются по описанному выше открытому каналу. Если Боб получил ключ , то он уведомляет об этом Алису специальным сообщением. Алиса вычисляет и посылает Бобу криптограмму . Боб дешифрует криптограмму и получает сообщение . Если пары не интерполируются полиномом степени , то Боб посылает все эти пары Алисе, которая обнаружит хотя бы для одного , что . Ясно, что в этом случае провод контролируется противником. Алиса посылает Бобу список всех таких номеров , и соответствующие провода исключаются из работы. После этого Алиса и Боб повторяют весь протокол, используя оставшиеся провода. Ясно, что после не более повторений передача ключа будет успешной.




    Данный протокол - простейший вариант протокола конфиденциальной передачи сообщений из работы Долева и др. []. В этой работе предложен значительно более эффективный протокол, который при том же предположении является доказуемо стойким против более сильного противника.

    Если противник пассивный, т.е. он лишь подслушивает не более проводов, то задача конфиденциальной передачи сообщений решается совсем просто. Мы предлагаем читателю в качестве несложного упражнения самостоятельно сконструировать соответствующий протокол при t$" width="41" height="28" >.

    Протокол конфиденциальной передачи сообщений является доказуемо стойким в предположении, что противнику не хватает ресурсов, чтобы контролировать хотя бы половину проводов, которыми соединены Алиса и Боб. Этот результат наводит на следующие размышления. Так называемый здравый смысл подсказывает, что для построения системы секретной связи целесообразно создать закрытую сеть связи, т.е. такую, доступ к которой сильно ограничен. Но, по-видимому, действительно надежное решение следует искать в прямо противоположном направлении: объединить все сети связи в единую открытую сеть с очень большим количеством соединений между каждой парой абонентов. Конечно, это - всего лишь теоретические рассуждения, относящиеся к математической модели реальных систем. Но сколько раз еще результаты, полученные в математической криптографии, как и в любых других научных дисциплинах, заставят нас усомниться в очевидности тех решений, которые подсказываются здравым смыслом.

    Next: 3.8. Вместо заключения

    Up: 3. Криптографические протоколы

    Previous: 3.6. Поиграем в ``кубики''.

    Contents:



    Задачи четвертой олимпиады


    Ключом шифра, называемого , является прямоугольный трафарет размера клеток. В трафарете вырезаны 15 клеток так, что при наложении его на прямоугольный лист бумаги размера клеток четырьмя возможными способами его вырезы полностью покрывают всю площадь листа.
    Буквы сообщения (без пропусков) последовательно вписываются в вырезы трафарета (по строкам, в каждой строке слева направо) при каждом из четырех его возможных положений. Прочтите исходный текст, если после зашифрования на листе бумаги оказался следующий текст (на русском языке):

    Р П Т Е Ш А В Е С Л
    О Я Т А Л - Ь З Т -
    - У К Т - Я А Ь - С
    Н П - Ь Е У - Ш Л С
    Т И Ь З Ы Я Е М - О
    - Е Ф - - Р О - С М

    Криптограмма

    12 2 24 5 3 21 6 29 28 2 20 18 20 21 5 10 27 17 2 11 2 16 -

    19 2 27 5 8 29 12 31 22 2 16, 19 2 19 5 17 29 8 29 6 29 16:

    8 2 19 19 29 10 19 29 14 19 29 29 19 10 2 24 2 11 2 16

    10 14 18 21 17 2 20 2 28 29 16 21 29 28 6 29 16.
    получена заменой букв на числа (от 1 до 32) так, что разным буквам соответствуют разные числа. Отдельные слова разделены несколькими пробелами, буквы - одним пробелом, знаки препинания сохранены. Буквы ``е'' и ``'' не различаются. Прочтите четверостишие В. Высоцкого.
    ``Шифровальный диск'' используется для зашифрования числовых сообщений. Он состоит из неподвижного диска и соосно вращающегося на нем диска меньшего диаметра. На обоих дисках нанесены цифры от 0 до 9, которые расположены в вершинах правильных 10-угольников, вписанных в диски.
    Цифра на неподвижном диске зашифровывается в цифру подвижного диска, лежащую на том же радиусе, что и .

    Для построения вписанного 10- угольника без транспортира надо уметь строить угол в . Попытайтесь вычислить с точностью до 0,1 значение какой-либо тригонометрической функции такого угла без таблиц и калькулятора.
    Зашифрование фразы на латинском языке осуществлено в два этапа. На первом этапе каждая буква текста заменяется на следующую в алфавитном порядке (последняя Z заменяется на первую A). На втором этапе применяется шифр простой замены с неизвестным ключом. Его применение заключается в замене каждой буквы шифруемого текста буквой того же алфавита, при этом разные буквы заменяются разными буквами. Ключом такого шифра является таблица, в которой указано, какой буквой надо заменить каждую букву алфавита.
    По данному шифртексту


    OSZJX FXRE YOQJSZ RAYFJ
    восстановите открытое сообщение, если известно, что для использованного (неизвестного) ключа результат шифрования не зависит от порядка выполнения указанных этапов для любого открытого сообщения. Пробелы в тексте разделяют слова.
    Латинский алфавит состоит из следующих 24 букв:


    A B C D E F G H I J L M N O P Q R S T U V X Y Z.
    Для проверки телетайпа, печатающего буквами русского алфавита

    АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ
    передан набор из 9 слов, содержащий все 33 буквы алфавита. В результате неисправности телетайпа на приемном конце получены слова


    ГЪЙ АЭЕ БПРК ЕЖЩЮ НМЬЧ СЫЛЗ ШДУ ЦХОТ ЯФВИ
    Восстановите исходный текст, если известно, что характер неисправности таков, что каждая буква заменяется буквой, отстоящей от нее в указанном алфавите не дальше, чем на две буквы. Например, буква Б может перейти в одну из букв А, Б, В, Г.
    Исходное сообщение из букв русского алфавита преобразуется в числовое сообщение заменой каждой его буквы числом по следующей таблице:


    А Б В Г Д Е Ж З И К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ь Ы Э Ю Я
    00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29

    Для зашифрования полученного числового сообщения используется шифрующий отрезок последовательности



    подходящей длины, начинающийся с .
    При зашифровании каждое число числового сообщения складывается с соответствующим числом шифрующего отрезка. Затем вычисляется остаток от деления полученной суммы на 30, который по данной таблице заменяется буквой. Восстановите сообщение КЕНЗЭРЕ, если шифрующий отрезок взят из последовательности, у которой и
    для любого натурального .
    Чтобы запомнить периодически меняющийся пароль в ЭВМ, математики придумали следующий способ. При известном числе (например, номере месяца в году), пароль представляет собой первые шесть цифр наименьшего решения уравнения

    (Число меньшей значности дополняется справа необходимым числом нулей.)
    Решите такое уравнение при произвольном 0$" width="42" height="28" >.
    Next: Задачи пятой олимпиады
    Up: 7.5. Условия задач олимпиад
    Previous: Задачи третьей олимпиады
    Contents:


    Задачи девятой олимпиады


    Суммой двух букв назовeм букву, порядковый номер которой в алфавите имеет тот же остаток от деления на число букв в алфавите, что и сумма порядковых номеров исходных двух букв. Суммой двух буквенных последовательностей одинаковой длины назовем буквенную последовательность той же длины, полученную сложением букв исходных последовательностей, стоящих на одинаковых местах.
    а) Докажите, что существует последовательность из 33 различных букв русского алфавита, сумма которой с последовательностью букв, представляющей собой сам этот алфавит, не содержит одинаковых букв.
    б) Докажите, что сумма любой последовательности из 26 различных букв английского алфавита с последовательностью букв, представляющей собой сам этот алфавит, содержит не менее двух одинаковых букв.
    Некоторую последовательность из букв русского алфавита

    А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я
    раз прибавили по правилу задачи 9.1 к слову КРИПТОША. Получили слово АНАЛИТИК. Найдите эту последовательность. Какое наименьшее число раз надо прибавить ее к слову АНАЛИТИК, чтобы получить слово КРИПТОША?
    Каждую букву исходного сообщения заменили ее двузначным порядковым номером в русском алфавите согласно таблице



    А Б В Г Д Е Ж З И Й К Л М Н О П
    01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17
    Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я
    18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33

    Полученную цифровую последовательность разбили (справа налево) на трехзначные цифровые группы без пересечений и пропусков. Затем, каждое из полученных трехзначных чисел умножили на 77 и оставили только три последние цифры произведения. В результате получилась следующая последовательность цифр:

    317564404970017677550547850355.
    Восстановите исходное сообщение.
    Клетки квадрата пронумеровали так, что клетка в правом нижнем углу получила номер 1, а все остальные получили разные номера от 2 до 16. Оказалось, что суммы номеров клеток каждой строки, каждого столбца, а также каждой из двух диагоналей квадрата одинаковы (``магический'' квадрат). Клетки квадрата заполнили буквами некоторого сообщения так, что его первая буква попала в клетку с номером 1, вторая - в клетку с номером 2 и т.д. В результате построчного выписывания букв заполненного квадрата (слева направо и сверху вниз) получилась последовательность букв
    <
    Ы Р Е У С Т Е В Ь Т А Б Е В К П.
    Восстановите магический квадрат и исходное сообщение.
    Окружность радиуса 5 с центром в начале координат пересекает ось абсцисс в точках и . Укажите все возможные расположения на окружности точек , и , удовлетворяющие одновременно следующим четырем условиям:
    (1) координаты точек , и - целые числа;
    (2) ордината точки меньше нуля, а ординаты точек и больше нуля;
    (3) абсцисса точки меньше абсциссы точки ;
    (4) сумма площадей частей круга, лежащих внутри углов и равна половине площади круга, ограниченного исходной окружностью.
    Для всех значений параметра решите неравенство

    Next: 7.6. Указания и решения
    Up: 7.5. Условия задач олимпиад
    Previous: Задачи восьмой олимпиады
    Contents:


    Задачи первой олимпиады


    Ключом шифра, называемого , является трафарет, изготовленный из квадратного листа клетчатой бумаги размера ( - четно). Некоторые из клеток вырезаются. Одна из сторон трафарета помечена. При наложении этого трафарета на чистый лист бумаги четырьмя возможными способами (помеченной стороной вверх, вправо, вниз, влево) его вырезы полностью покрывают всю площадь квадрата, причем каждая клетка оказывается под вырезом ровно один раз.
    Буквы сообщения, имеющего длину , последовательно вписываются в вырезы трафарета, сначала наложенного на чистый лист бумаги помеченной стороной вверх. После заполнения всех вырезов трафарета буквами сообщения трафарет располагается в следующем положении и т.д. После снятия трафарета на листе бумаги оказывается зашифрованное сообщение.
    Найдите число различных ключей для произвольного четного числа .
    В адрес олимпиады пришло зашифрованное сообщение:

    Ф В М Е Ж Т И В Ф Ю
    Найдите исходное сообщение, если известно, что шифрпреобразование заключалось в следующем. Пусть , - корни трехчлена . К порядковому номеру каждой буквы в стандартном русском алфавите (33 буквы) прибавлялось значение многочлена , вычисленное либо при , либо при (в неизвестном нам порядке), а затем полученное число заменялось соответствующей ему буквой.
    Для передачи информации от резидента Гарриваса в Нагонии только что внедренному разведчику был установлен следующий порядок.
    Все сообщения резидента определены заранее и пронумерованы числами . Разведчик, обладающий феноменальной памятью, полностью запомнил соответствие между сообщениями и их номерами. Теперь для того, чтобы передать информацию разведчику, достаточно было сообщить ему лишь соответствующее число.
    Для передачи числа в условленном месте оставлялась равная этому числу денежная сумма.
    На момент разработки операции в Нагонии имели хождение денежные купюры достоинством 1,3,7 и 10 бут (бут - денежная единица Нагонии). Однако в результате денежной реформы купюры достоинством 1 и 3 бут были изъяты из обращения.

    Выясните, начиная с какого номера можно передать разведчику любое сообщение, пользуясь только оставшимися в обращении купюрами.
    Сколько существует упорядоченных пар натуральных чисел и , для которых известны их наибольший общий делитель и их наименьшее общее кратное . Сформулируйте ответ и в общем случае, используя канонические разложения и на простые множители.
    Дана криптограмма:

    Восстановите цифровые значения букв, при которых справедливы все указанные равенства, если разным буквам соответствуют различные цифры. Расставьте буквы в порядке возрастания их цифровых значений и получите искомый текст.
    Одна фирма предложила устройство для автоматической проверки пароля. Паролем может быть любой непустой упорядоченный набор букв в алфавите . Будем обозначать такие наборы большими латинскими буквами. Устройство перерабатывает введенный в него набор в набор . Отображение держится в секрете, однако про него известно, что оно определено не для каждого набора букв и обладает следующими свойствами. Для любого набора букв
    1) ;
    2) ;
    3) набор получается из набора выписыванием букв в обратном порядке.
    Устройство признает предъявленный пароль верным, если . Например, трехбуквенный набор является верным паролем, так как
    . Подберите верный пароль, состоящий более чем из трех букв.
    Next: Задачи второй олимпиады
    Up: 7.5. Условия задач олимпиад
    Previous: 7.5. Условия задач олимпиад
    Contents:


    Задачи пятой олимпиады


    Комбинация трех натуральных чисел, лежащих в диапазоне от 10 до 20 включительно, является отпирающей для кодового замка, если выполнено соотношение . Найдите все отпирающие комбинации для замка с

    Сообщение было построчно записано в таблицу, имеющую 20 столбцов. При этом в каждую клетку таблицы записывалось по одной букве сообщения, пробелы между словами были опущены, а знаки препинания заменены на условные комбинации: точка - ТЧК, запятая - ЗПТ. Затем столбцы таблицы были некоторым образом переставлены, в результате чего был получен текст:


    Я Н Л В К Р А Д О Е Т Е Р Г О М И З Я Е
    Й Л Т А Л Ф Ы И П Е У И О О Г Е Д Б О Р
    Ч Р Д Ч И Е С М О Н Д К Х И Н Т И К Е О
    Н У Л А Е Р Е Б Ы Ы Е Е З И О Н Н Ы Ч Д
    Ы Т Д О Е М П П Т Щ В А Н И П Т Я З С Л
    И К С И - Т Ч Н О - - Е - Л У Л - Т - Ж

    Прочтите исходное сообщение.
    5.3. Из точки внутри треугольника на его стороны , , опущены перпендикуляры , , . Докажите, что .
    Зашифрование сообщения состоит в замене букв исходного текста на пары цифр в соответствии с некоторой (известной только отправителю и получателю) таблицей, в которой разным буквам алфавита соответствуют разные пары цифр. Криптографу дали задание восстановить зашифрованный текст. В каком случае ему будет легче выполнить задание: если известно, что первое слово второй строки - ``термометр'' или что первое слово третьей строки - ``ремонт''? Обоснуйте свой ответ. (Предполагается, что таблица зашифрования криптографу неизвестна).
    Решите уравнение:

    При передаче сообщений используется некоторый шифр. Пусть известно, что каждому из трех шифрованных текстов

    ЙМЫВОТСЬЛКЪГВЦАЯЯ

    УКМАПОЧСРКЩВЗАХ

    ШМФЭОГЧСЙЪКФЬВЫЕАКК
    соответствовало исходное сообщение МОСКВА. Попробуйте расшифровать три текста
    ТПЕОИРВНТМОЛАРГЕИАНВИЛЕДНМТААГТДЬТКУБЧКГЕИШНЕИАЯРЯ

    ЛСИЕМГОРТКРОМИТВАВКНОПКРАСЕОГНАЬЕП

    РТПАИОМВСВТИЕОБПРОЕННИГЬКЕЕАМТАЛВТДЬСОУМЧШСЕОНШЬИАЯК
    при условии, что двум из них соответствует одно и то же сообщение. Сообщениями являются известные крылатые фразы.
    Next: Задачи шестой олимпиады
    Up: 7.5. Условия задач олимпиад
    Previous: Задачи четвертой олимпиады
    Contents:


    Задачи седьмой олимпиады


    Какое наименьшее число соединений требуется для организации проводной сети связи из 10 узлов, чтобы при выходе из строя любых двух узлов связи сохранялась возможность передачи информации между любыми двумя оставшимися (хотя бы по цепочке через другие узлы)?
    В компьютерной сети используются пароли, состоящие из цифр. Чтобы избежать хищения паролей, их хранят на диске в зашифрованном виде. При необходимости использования происходит однозначное расшифрование соответствующего пароля. Зашифрование пароля происходит посимвольно одним и тем же преобразованием. Первая цифра остается без изменения, а результат зашифрования каждой следующей цифры зависит только от нее и от предыдущей цифры.
    Известен список зашифрованных паролей:

    4249188780319, 4245133784397, 5393511, 428540012393,

    4262271910365, 4252370031465, 4245133784735
    и два пароля 4208212275831, 4242592823026, имеющиеся в зашифрованном виде в этом списке. Можно ли определить какие-либо другие пароли? Если да, то восстановите их.
    В результате перестановки букв сообщения получена криптограмма:

    БТИПЧЬЛОЯЧЫЬТОТПУНТНОНЗЛЖАЧОЬОТУНИУХНИППОЛОЬЧОЕЛОЛС
    Прочтите исходное сообщение, если известно, что оно было разбито на отрезки одинаковой длины , в каждом из которых буквы переставлены одинаково по следующему правилу. Буква отрезка, имеющая порядковый номер (), в соответствующем отрезке криптограммы имеет порядковый номер , где и - некоторые натуральные числа, равно остатку от деления суммы на , если остаток не равен нулю, и равно , если остаток равен нулю.
    Знаменитый математик Леонард Эйлер в 1759 г. нашел замкнутый маршрут обхода всех клеток шахматной доски ходом коня ровно по одному разу. Прочтите текст, вписанный в клетки шахматной доски по такому маршруту (см. рис. ). Начало текста в a4.


    Рис. 12.


    При 0$" width="42" height="28" >, 0$" width="40" height="29" >, 0$" width="40" height="28" > докажите неравенство:

    \frac{1}{4}(a+b+c)^3. \end{displaymath}" width="250" height="38" >

    Для рисования на большой прямоугольной доске используется мел с квадратным сечением со стороной 1 см. При движении мела стороны сечения всегда параллельны краям доски. Как начертить выпуклый многоугольник площадью 1 м с наименьшей площадью границы (площадь границы не входит в площадь многоугольника)?
    Цифры 0,1,...,9 разбиты на несколько непересекающихся групп. Из цифр каждой группы составляются всевозможные числа, для записи каждого из которых все цифры группы используются ровно один раз (учитываются и записи, начинающиеся с нуля). Все полученные числа расположили в порядке возрастания и -ому числу поставили в соответствие -ую букву алфавита

    АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ
    Оказалось, что каждой букве соответствует число и каждому числу соответствует некоторая буква. Шифрование сообщения осуществляется заменой каждой буквы соответствующим ей числом. Если ненулевое число начинается с нуля, то при шифровании этот нуль не выписывается. Восстановите сообщение 873146507381 и укажите таблицу замены букв числами.
    Next: Задачи восьмой олимпиады
    Up: 7.5. Условия задач олимпиад
    Previous: Задачи шестой олимпиады
    Contents:


    Задачи шестой олимпиады


    В системе связи, состоящей из 1997 абонентов, каждый абонент связан ровно с другими. Определите все возможные значения .
    Квадратная таблица размером
    заполнена натуральными числами от 1 до 1997 так, что в каждой строке присутствуют все числа от 1 до 1997. Найдите сумму чисел, стоящих на диагонали, которая соединяет левый верхний и правый нижний углы таблицы, если заполнение таблицы симметрично относительно этой диагонали.
    Текст


    М И М О П Р А С Т Е Т И Р А С И С П Д
    И С А Ф Е И И Б О Е Т К Ж Р Г Л Е О Л О
    И Ш И С А Н Н С Й С А О О Л Т Л Е Я Т У
    И Ц В Ы И П И Я Д П И Щ П Ь П С Е Ю Я Я

    получен из исходного сообщения перестановкой его букв. Текст

    У Щ Ф М Ш П Д Р Е Ц Ч Е Ш Ю Ш Ч Д А К Е
    Ч М Д В К Ш Б Е Е Ч Д Ф Э П Й Щ Г Ш Ф Щ
    Ц Е Ю Щ Ф П М Е Ч П М Е Р Щ М Е О Ф Ч Щ
    Х Е Ш Р Т Г Д И Ф Р С Я Ы Л К Д Ф Ф Е Е

    получен из того же исходного сообщения заменой каждой буквы на другую букву так, что разные буквы заменены разными, а одинаковые - одинаковыми. Восстановите исходное сообщение.
    На каждой из трех осей установлено по одной вращающейся шестеренке и неподвижной стрелке. Шестеренки соединены последовательно. На первой шестеренке 33 зубца, на второй - 10, на третьей - 7. На каждом зубце первой шестеренки по часовой стрелке написано по одной букве русского языка в алфавитном порядке:

    АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ
    На зубцах второй и третьей шестеренки в порядке возрастания по часовой стрелке написаны цифры от 0 до 9 и от 0 до 6 соответственно. Когда стрелка первой оси указывает на букву, стрелки двух других осей указывают на цифры.
    Буквы сообщения шифруются последовательно. Зашифрование производится вращением первой шестеренки против часовой стрелки до первого попадания шифруемой буквы под стрелку. В этот момент последовательно выписываются цифры, на которые указывают вторая и третья стрелки. В начале шифрования стрелка 1-го колеса указывала на букву А, а стрелки 2-го и 3-го колес - на цифру 0.

    а) зашифруйте слово О Л И М П И А Д А;
    б) расшифруйте сообщение 2 4 8 0 9 2 8 3 9 1 1 2 1 1.
    Цифры от 1 до 9 расположены на окружности в некотором неизвестном порядке. При зашифровании цифрового сообщения каждая отличная от 0 цифра заменяется на соседнюю с ней цифру на окружности по часовой стрелке, а при расшифровании - на соседнюю с ней цифру на окружности против часовой стрелки. Цифра 0 остается без изменения в обоих случаях.
    Укажите условия, при которых порядок цифр на данной окружности можно однозначно восстановить по двум цифровым текстам - результатам расшифрования и зашифрования одного и того же цифрового текста с помощью данной окружности.
    Докажите, что для каждого простого числа последовательность является периодической с периодом 2, если равно остатку от деления числа на 24 при всех .
    Найдите все значения параметра , при которых уравнение

    имеет ровно 1997 различных решений.
    Next: Задачи седьмой олимпиады
    Up: 7.5. Условия задач олимпиад
    Previous: Задачи пятой олимпиады
    Contents:


    Задачи третьей олимпиады


    Установите, можно ли создать проводную телефонную сеть связи, состоящую из 993 абонентов, каждый из которых был бы связан ровно с 99 другими.
    Шифрпреобразование простой замены в алфавите
    , состоящем из различных букв, заключается в замене каждой буквы шифруемого текста буквой того же алфавита, причем разные буквы заменяются разными. Ключом шифра простой замены называется таблица, в которой указано, какой буквой надо заменить каждую букву алфавита . Если слово СРОЧНО зашифровать простой заменой с помощью ключа:


    А Б В Г Д Е Ж З И К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ь Ы Э Ю Я
    Ч Я Ю Э Ы Ь Щ Ш Ц Х Ф У Б Д Т З В Р П М Л К А И О Ж Е С Г Н

    то получится слово ВЗДАБД. Зашифровав полученное слово с помощью того же ключа еще раз, получим слово ЮШЫЧЯЫ. Сколько всего различных слов можно получить, если указанный процесс шифрования продолжать неограниченно?
    Сообщение, зашифрованное в пункте А шифром простой замены в алфавите из букв русского языка и знака пробела (-) между словами, передается в пункт Б отрезками по 12 символов. При передаче очередного отрезка сначала передаются символы, стоящие на четных местах в порядке возрастания их номеров, начиная со второго, а затем - символы, стоящие на нечетных местах (также в порядке возрастания их номеров), начиная с первого. В пункте B полученное шифрованное сообщение дополнительно шифруется с помощью некоторого другого шифра простой замены в том же алфавите, а затем таким же образом, как и из пункта А, передается в пункт В. По перехваченным в пункте В отрезкам:


    С О - Г Ж Т П Н Б Л Ж О
    Р С Т К Д К С П Х Е У Б
    - Е - П Ф П У Б - Ю О Б
    С П - Е О К Ж У У Л Ж Л
    С М Ц Х Б Э К Г О Щ П Ы
    У Л К Л - И К Н Т Л Ж Г

    восстановите исходное сообщение, зная, что в одном из переданных отрезков зашифровано слово КРИПТОГРАФИЯ.
    Дана последовательность чисел
    в которой есть последняя цифра числа . Докажите, что эта последовательность периодическая и ее наименьший период равен 20.

    Исходное сообщение, состоящее из букв русского алфавита и знака пробела (-) между словами, преобразуется в цифровое сообщение заменой каждого его символа парой цифр согласно следующей таблице:


    А Б В Г Д Е Ж З И К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ь Ы Э Ю Я -
    01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

    Для зашифрования полученного цифрового сообщения используется отрезок последовательности из задачи 3.4, начинающийся с некоторого члена . При зашифровании каждая цифра сообщения складывается с соответствующей цифрой отрезка и заменяется последней цифрой полученной суммы. Восстановите сообщение:

    2339867216458160670617315588
    Равносторонний треугольник разбит на четыре части так, как показано на рисунке, где и - середины сторон и соответственно. Известно, что и . В каком отношении точки и делят сторону , если известно, что из этих частей можно составить квадрат?


    Рис. 11.



    Next: Задачи четвертой олимпиады
    Up: 7.5. Условия задач олимпиад
    Previous: Задачи второй олимпиады
    Contents:


    Задачи восьмой олимпиады


    На рисунке изображена эмблема олимпиады. Она представляет собой замкнутую ленту, сложенную так, что образовавшиеся просветы являются одинаковыми равносторонними треугольниками. Если в некотором месте ленту разрезать перпендикулярно к ее краям и развернуть, то получится прямоугольник. Найдите минимальное отношение его сторон.


    Рис. 13.


    Сообщение, составленное из нулей и единиц, шифруется двумя способами. При первом способе каждый нуль заменяется на последовательность из нулей и следующих за ними единиц, а каждая единица заменяется на последовательность из нулей. При втором способе шифрования каждая единица заменяется на последовательность из единиц и следующих за ними нулей, а каждый нуль заменяется на последовательность из нулей. При каких натуральных значениях , , найдется хотя бы одно сообщение, которое будет одинаково зашифровано обоими способами? Укажите общий вид таких сообщений.
    Сообщение, подлежащее зашифрованию, представляет собой цифровую последовательность, составленную из дат рождения 6 членов оргкомитета олимпиады. Каждая дата представлена в виде последовательности из 8 цифр, первые две из которых обозначают день,следующие две - месяц, а остальные - год. Например, дата рождения великого математика Л.Эйлера 4 апреля 1707 года представляется в виде последовательности 04041707. Для зашифрования сообщения строится ключевая последовательность длины 48. Для еепостроения все нечетные простые числа, меньшие 100, выписываются через запятую в таком порядке, что модуль разности любых двух соседних чисел есть та или иная степень числа 2. При этом каждое простое число выписано ровно один раз, а числа 3, 5 и 7 записаны в виде 03, 05 и 07 соответственно. Удалив запятые из записи этой последовательности, получим искомую ключевую последовательность.
    При зашифровании цифровой последовательности, представляющей сообщение, ее цифры почленно складываются с соответствующими цифрами ключевой последовательности, при этом каждая полученная сумма заменяется ее остатком от деления на 10. В результате зашифрования сообщения получена последовательность:
    <
    150220454213266744305682533362327363924975709849
    Определите даты рождения членов оргкомитета олимпиады.
    Квадрат размера разбит на клетки размера . В начальный момент некоторые клетки окрашены в черный цвет, а остальные - в белый. По клеткам квадрата прыгает Криптоша. В момент попадания Криптоши в очередную клетку происходит изменение цвета на противоположный у всех тех клеток, расстояния от центров которых до центра клетки с Криптошей есть натуральные числа. После того как Криптоша побывал в каждой клетке квадрата ровно 1999 раз, квадрат оказался раскрашенным так, как показано на рисунке. Восстановите цвет всех клеток квадрата в начальный момент.


    Рис. 14.


    Для всех действительных чисел , решите уравнение

    Разложите число на простые множители.
    Next: Задачи девятой олимпиады
    Up: 7.5. Условия задач олимпиад
    Previous: Задачи седьмой олимпиады
    Contents:


    Задачи второй олимпиады


    В древнем шифре, известном под названием , использовалась полоска папируса, которая наматывалась на круглый стержень виток к витку без просветов и нахлестов. Далее, при горизонтальном положении стержня, на папирус построчно записывался текст сообщения. После этого полоска папируса с записанным на ней текстом посылалась адресату, имеющему точно такой же стержень, что позволяло ему прочитать сообщение.
    В наш адрес поступило сообщение, зашифрованное с помощью шифра ``Сцитала''. Однако ее автор, заботясь о том, чтобы строчки были ровные, во время письма проводил горизонтальные линии, которые остались на полоске в виде черточек между буквами. Угол наклона этих черточек к краю ленты равен , ширина полоски равна , а ширина каждой строки равна . Укажите, как, пользуясь имеющимися данными, прочитать текст.
    Исходное цифровое сообщение коммерсант шифрует и передает. Для этого он делит последовательность цифр исходного сообщения на группы по пять цифр в каждой и после двух последовательных групп приписывает еще две последние цифры суммы чисел, изображенных этими двумя группами. Затем к каждой цифре полученной последовательности он прибавляет соответствующий по номеру член некоторой целочисленной арифметической прогрессии, заменяя результат сложения остатком от деления его на 10.
    Найдите исходное цифровое сообщение по шифрованному сообщению:
    4 2 3 4 6 1 4 0 5 3 1 3
    Рассмотрим преобразование цифрового текста, в котором каждая цифра заменяется остатком от деления значения многочлена
    на число 10, где , - фиксированные натуральные числа.
    Выясните, при каких значениях , указанное преобразованиеможет быть шифрпреобразованием (т.е. допускает однозначное расшифрование).
    При установке кодового замка каждой из 26 латинских букв, расположенных на его клавиатуре, сопоставляется произвольное натуральное число, известное лишь обладателю замка. Разным буквам сопоставляются не обязательно разные числа. После набора произвольной комбинации попарно различных букв происходит суммирование числовых значений, соответствующих набранным буквам. Замок открывается, если сумма делится на 26.

    Докажите, что для любых числовых значений букв существует комбинация, открывающая замок.
    Сообщение, записанное в алфавите

    АБВГДЕЖЗИКЛМНОПРСТУФХЦЧШЩЬЫЭЮЯ
    зашифровывается при помощи последовательности букв этого же алфавита. Длина последовательности равна длине сообщения. Шифрование каждой буквы исходного сообщения состоит в сложении ее порядкового номера в алфавите с порядковым номером соответствующей буквы шифрующей последовательности и замене такой суммы на букву алфавита, порядковый номер которой имеет тот же остаток от деления на 30, что и эта сумма.
    Восстановите два исходных сообщения, каждое из которых содержит слово КОРАБЛИ, если результат их зашифрования при помощи одной и той же шифрующей последовательности известен:

    ЮПТЦАРГШАЛЖЖЕВЦЩЫРВУУ и ЮПЯТБНЩМСДТЛЖГПСГХСЦЦ
    Буквы русского алфавита занумерованы в соответствии с таблицей:


    А Б В Г Д Е Ж З И К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ь Ы Э Ю Я
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

    Для зашифрования сообщения, состоящего из букв, выбирается ключ - некоторая последовательность из букв приведенного выше алфавита. Зашифрование каждой буквы сообщения состоит в сложении ее номера в таблице с номером соответствующей буквы ключевой последовательности и замене полученной суммы на букву алфавита, номер которой имеет тот же остаток от деления на 30, что и эта сумма.
    Прочтите шифрованное сообщение: РБЬНТСИТСРРЕЗОХ, если известно, что шифрующая последовательность не содержала никаких букв, кроме А, Б и В.
    Next: Задачи третьей олимпиады
    Up: 7.5. Условия задач олимпиад
    Previous: Задачи первой олимпиады
    Contents:


    и криптографические методы все шире


    За последние годы криптография и криптографические методы все шире входят в нашу жизнь и даже быт. Вот несколько примеров. Отправляя Email, мы в некоторых случаях отвечаем на вопрос меню: ``Нужен ли режим зашифрования?'' Владелец интеллектуальной банковской карточки, обращаясь через терминал к банку, вначале выполняет криптографический протокол аутентификации карточки. Пользователи сети Интернет наверняка знакомы с дискуссиями вокруг возможного принятия стандарта цифровой подписи для тех страниц, которые содержат ``критическую'' информацию (юридическую, прайс-листы и др.). С недавних пор пользователи сетей стали указывать после своей фамилии наряду с уже привычным ``Email ...'' и менее привычное - ``Отпечаток открытого ключа ...''.
    С каждым днем таких примеров становится все больше. Именно новые практические приложения криптографии и являются одним из источников ее развития.

    Next: 2. Криптография и теория
    Up: 1. Основные понятия криптографии
    Previous: 1.4. Новые направления
    Contents:

    Мы затронули в этой главе лишь небольшую часть вопросов, связанных с теоретико-числовыми алгоритмами и оценками их сложности. Мы не описывали перспективные исследования, связанные с распространением алгоритмов решета на поля алгебраических чисел (решето числового поля), и использование их для разложения целых чисел на множители или решения задачи дискретного логарифмирования, см. []. Именно с помощью этих алгоритмов достигнуты теоретические оценки сложности разложения на множители

    Не были затронуты эллиптические кривые, т.е. определенные с точностью до обратимого множителя пропорциональности множества точек

    обладающие групповой структурой. С их помощью удалось построить весьма эффективные алгоритмы разложения чисел на множители и проверки целых чисел на простоту. В отличие от мультипликативной группы порядок группы при одном и том же меняется в зависимости от целых параметров , . Это оказывается весьма существенным, например, при разложении чисел на множители. Мы отсылаем читателей за подробностями использования эллиптических кривых к статье [].
    Next: Литература к главе 4
    Up: 4. Алгоритмические проблемы теории
    Previous: 4.8. Дискретное логарифмирование
    Contents:


    Ж.Верн, ``Путешествие к центру Земли''


    В руки профессора Лиденброка попадает пергамент со следующей рукописью:
    ``Это - рунические письмена; знаки эти совершенно похожи на знаки манускрипта Снорре. Но ...что же они означают? - спрашивает профессор, - ...Ведь это все же древнеисландский язык, - бормотал он себе под нос''. Изучение рукописи привело профессора к выводу о том, что это зашифрованное сообщение. Для его прочтения профессор решил заменить буквы сообщения их аналогами в современном немецком алфавите: ``А теперь я буду диктовать тебе, - говорит он своему помощнику, - буквы нашего алфавита, соответствующие каждому из этих исландских знаков''. Он называл одну букву за другой, и таким образом последовательно составлялась таблица непостижимых слов:


    m . r n l l s e s r e u e l s e e c J d e
    s g t s s m f u n t e i e f n i e d r k e
    k t , s a m n a t r a t e S S a o d r r n
    e m t n a e I n u a e c t r r i l S a
    A t v a a r . n s c r c i e a a b s
    c c d r m i e e u t u l f r a n t u
    d t , i a c o s e i b o K e d i i I

    Можно было предположить, что таинственная запись сделана одним из обладателей книги, в которой находился пергамент. Не оставил ли он своего имени на какой-нибудь странице? На обороте второй страницы профессор обнаружил что-то вроде пятна, похожего на чернильную кляксу. Воспользовавшись лупой, он различил несколько наполовину стертых знаков, которые можно было восстановить. Получилась запись
    которая читалась как ``арне сакнуссем'' - имя ученого XVI столетия, знаменитого алхимика!
    Далее профессор рассуждал так: ``Документ содержит 132 буквы, 79 согласных и 53 гласных. Приблизительно такое же соотношение существует в южных языках, в то время как наречия севера бесконечно богаче согласными. Следовательно, мы имеем дело с одним из южных языков.'' ``...Сакнуссем, - продолжал профессор, - был ученый человек; поэтому раз он писал не на родном языке, то, разумеется, должен был отдавать предпочтение языку, общепринятому среди образованных умов XVI века, а именно - латинскому. Если я ошибаюсь, то можно будет испробовать испанский, французский, итальянский, греческий или еврейский. Но ученые XVI столетия писали обычно по-латински. Таким образом, я вправе признать не подлежащим сомнению, что это - латынь.''

    ``Всмотримся хорошенько, - сказал он, снова взяв исписанный листок. - Вот ряд из 132 букв, расположенных крайне беспорядочно. Вот слова, в которых встречаются только согласные, как, например, первое m.rnlls; в других, напротив, преобладают гласные, например, в пятом unteief, или в предпоследнем - oseibo. Очевидно, что эта группировка не случайна; она произведена автоматически, при помощи неизвестного нам соотношения, которое определило последовательность этих букв. Я считаю несомненным, что первоначальная фраза была написана правильно, но затем по какому-то принципу, который надо найти, подверглась преобразованию. Тот, кто владел бы ключом этого шифра, свободно прочел бы ее. Но что это за ключ?''

    ``При желании затемнить смысл фразы первое, что приходит на ум, как мне кажется, это написать слова в вертикальном направлении, а не в горизонтальном''. Проверяя эту гипотезу, он начал диктовать, называя сначала первые буквы каждого слова, потом вторые; он диктовал буквы в таком порядке:
    messunkaSenrA.icefdoK.segnittamurtnece

    rtserrette,rotaivsadua,ednecsedsadnelak

    artniiiluJsiratracSarbmutabiledmekmeret

    arcsilucoIsleffenSn I

    С полученным текстом у профессора долго ничего не выходило. Это почти привело его в отчаяние. Однако ``...совершенно машинально я стал обмахиваться этим листком бумаги, так что лицевая и оборотная стороны листка попеременно представали перед моими глазами. ... Каково же было мое изумление, когда вдруг мне показалось, что передо мной промелькнули знакомые, совершенно ясные слова, латинские слова: craterem, terrestre!'' Дело в том, что читать этот текст нужно было не слева направо, как обычно, а наоборот! Таким образом, случай помог профессору найти ключ к решению задачи. Документ гласил следующее:

    ``In Sneffels Ioculis craterem kem delibat umbra Scartaris Julii intra calendas descende, audas viator, et terrestre centrum attinges. Kod feci. Arne Saknussem''.

    В переводе это означало: ``Спустись в кратер Екуль Снайфедльс, который тень Скартариса ласкает перед июльскими календами, отважный странник, и ты достигнешь центра Земли. Это я совершил. Арне Сакнуссем''.

    Next: 7.3. Шифры перестановки

    Up: 7.2. Шифры замены

    Previous: Э. По, ``Золотой жук''

    Contents:



    

        Работа с информацией: Безопасность - Защита - Софт - Криптография