id: Гость   вход   регистрация
текущее время 13:44 28/03/2024
Владелец: unknown редакция от 01/02/2010 10:13 (автор: unknown) Печать
Категории: сайт проекта, faq
создать
просмотр
редакции
ссылки

Криптография: Общие вопросы


Оглавление документа:

Что такое криптографический примитив?


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


Иногда при конструировании примитивов второго рода, термин "примитив" используется к их составным частям — например S-блокам блочного шифра AES.


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

Что такое режим использования криптопримитива?


Сам по себе криптопримитив может быть несовершенен и/или недостаточен. Асимметричный алгоритм RSA требует дополнения определённым способом по размеру блока, блочные шифры требуют использования определённого режима шифрования. Режим использования — это промежуточный уровень детализации между самим криптопримитивом и протоколом.

Что такое криптографический протокол?


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

Что такое криптографический стандарт?


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

Что представляет собой модель случайного оракула?


Случайный оракул — это абстрактная функция, которую можно представить в виде следующей модели. Пусть существует некий чёрный ящик, на вход которого можно подать строку любой длины. При первом запросе на выходе случайный оракул (RO — Random Oracle ) выдаёт строку истинно случайных чисел фиксированной длины и записывает "запрос/ответ" в память. При последующих запросах RO проверяет: если такой запрос уже был, то выдаётся предыдущий ответ. Если не было, то производится новый цикл: генерация истинно случайной строки, её вывод, запись в память запроса и ответа. Такое гипотетическое устройство могло бы состоять из генератора истинно случайных чисел, но при количестве запросов, стремящимся к очень большим величинам (что требуется для моделирования криптопротоколов), его память и быстродействие также должны стремиться к бесконечности.


В большей степени из всех криптопримитивов RO моделируется хэш-функциями (они пытаются воплотить идею RO в реальном мире на основе псевдослучайных функций вида f: 2256 -> 212), но они не являются идеальными.


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


С другой стороны, протокол, построенный с учётом модели случайного оракула (ROM — Random Oracle Model), будет обладать свойствами неразличимости от идеальной модели. Доказательство стойкости в ROM даёт уверенность в том, что протокол собран из исходных частей правильно при условии, что сами исходные части идеальны. Такое доказательство является разновидностью статистической проверки, в виде расширенного формального языка, адаптированного к анализу криптографических протоколов.


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

Что такое доказуемая безопасность (стойкость)?


Форма доказательства, показывающая, что в рамках модели, рассматривающей широкий спектр атак, противнику придётся проделать для взлома протокола такую же работу, как и для решения сложной математической проблемы или для нахождения различителя между протоколом и идеальной моделью (Random Oracle Model).

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


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


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


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

Я хочу предложить специалистам на рассмотрение новый криптоалгоритм или новую идею в области криптографии. Есть ли такой интернет-ресурс, где это можно сделать?


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


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


Перед тем, как кто-то из специалистов уделит хоть небольшое внимание новому алгоритму, он спросит сам себя:

  • Автор предлагаемого алгоритма известен в научных кругах? Состоит ли он в организациях, занимающихся криптологическими исследованиями? У него есть публикации в журналах по криптологии, он выступал с докладами на конференциях? Какой университет он представляет? С его кафедры уже были успешные работы? Какими работами известен его научный руководитель?
  • Автор публиковал успешные работы по взлому уже существующих алгоритмов? Или хотя бы открыл в них ранее неизученные свойства? Он изобрёл новый вид криптоанализа? У него есть оригинальные теоретические работы по новому направлению в дизайне алгоритмов, которые он публиковал и представлял в сообществе в течении примерно 5-10 лет и которые постепено получили признание специалистами мирового уровня? Можно ли проследить по публикациям прогресс в развитии теории, которую автор положил в основу своего алгоритма?
  • Есть ли у автора какие-то теоретические работы кроме той узкой области, которую он хочет представить? И т.д.

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


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


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


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


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


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


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


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

У меня есть файл, зашифрованный вероятно слабым криптоалгоритмом. Могу я обратиться к криптографам, чтобы мне помогли его расшифровать?

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


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


До практического криптоанализа в открытом сообществе дело обычно не доходит, но иногда его всё-таки проводят.


Основные причины его проведения таковы:


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

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