www.adept7.kiev.ua
| Форум| Гостевая| Ссылки| Программы| Исходные тексты| Наши партнеры|
   
| Главная| Рассылки| Услуги| Библиотека| Новости| Авторам| Программистам| Студентам|
delphi c++ assembler
 

FAQ по компьютерной криптографии


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

Широкодоступность программного обеспечения ограничивает рассмотрение только алгоритмами, удовлетворяющими правилу Кирхгоффа (не путать с электротехникой), согласно которому результат (шифрование и/или аутентификация) обеспечивается наличием секретного ключа, а не недокументированными деталями используемого метода. Таким образом, тема, связанная с использованием алгоритмов Clipper, Skipjack и их развитием, оставляется на рассмотрение iXBT :-)

Основные задачи криптографии.

Основными задачами криптографии (к которым сводится большинство других) можно считать

  • шифрование - защиту данных от несанкционированного ознакомления с ними, и
  • аутентификацию - защиту данных от несанкционированного изменения.

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

В начало

Надежность криптографических методов.

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

В книге "Секреты Internet" все криптографические методы были разделены по уровню их стойкости на пять групп:

Группа 1.
Просто любопытствующие, не имеющие особых навыков.
Группа 2.
Небольшие группы, имеющие некоторую теоретическую подготовку и практический опыт работы с широкодоступным криптографическим программным обеспечением.
Группа 3.
Организованные группы и небольшие организации, имеющие исчерпывающую теоретическую подготовку по широко распространенным несекретным криптографическим технологиям и значительные вычислительные ресурсы.
Группа 4.
Крупные международные корпорации и некоторые государственные криптоаналитические службы, имеющие полное представление обо всех доступных криптографических технологиях, а также некоторых секретных исследованиях в этой области. Имеют доступ к крупным вычислительных ресурсам, а также возможность проектирования и изготовления мелкосерийных специальных аппаратных средств.
Группа 5.
Крупные государственные криптоаналитические службы, обладающие "абсолютными" знаниями современных криптографических технологий, в том числе и секретных. Имеют приоритетное право использовать силу государства для привлечения как вычислительных ресурсов, так и производственных мощностей по производству серийных специальных аппаратных средств.
В начало

От чего зависит криптостойкость.

Перечисленные в статье Павла Семьянова "Почему криптосистемы ненадежны?" причины можно условно разделить на объективные (рассматриваемые ниже) и субъективные:

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

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

DES 2,3
Тройной DES 3,4
GOST 3,4
BlowFish 3,4
RC5 3,4
IDEA 3,4
RSA, RIPEM ключ 512 бит - 2, 768 бит - 3, 1024 бит - 4
PGP в зависимости от используемых внутренних алгоритмов, в целом несколько выше, чем в предыдущем пункте
ECC согласно последним исследованиям, устойчивость эквивалентна RSA с примерно втрое более длинным ключом

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

Регулярно объявляемые компанией RSA конкурсы привели к разработке эффективных методов атак на алгоритм DES, использующих как распределенные вычисления, так и специальные аппаратные средства. Последняя такая атака в рамках проекта Monarch была проведена 18 января 1999 года. В настоящее время продолжается проект Bovine - криптоатака алгоритма RC5/64.

Слабые алгоритмы и ключи, люки.

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

Характерные примеры - некоторые архиваторы, MS Office до Office97, Novell версий 3.x и 4.x, и Paradox - криптостойкость которых была настолько низкой, что, во-первых, не требовала никаких специфических знаний для написания программы поиска пароля (необязательно истинного), и, во-вторых, эти программы работали о-о-очень быстро даже на слабых ПЭВМ. Т.е., по введенной выше классификации, с трудом обеспечивали защиту от группы 1.

Но даже многие в целом неплохие алгоритмы (в частности, DES, IDEA, BlowFish, ГОСТ) имеют слабые ключи, использование которых не обеспечивает должного уровня криптостойкости. И хотя таких ключей (по крайней мере, известных) у каждого конкретного алгоритма обычно немного, пренебрегать ими не рекомендуется.

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

В начало

Экспортные ограничения.

В США существуют ограничения на экспорт криптографической продукции. Ряд успешных криптоатак показал, что первоначально установленное ограничение длины ключа 40 бит не обеспечивало защиты даже от группы 2. Поэтому ограничения были ослаблены, но все равно многие разработанные в Америке программные продукты существуют в двух вариантах - для "внутреннего" использования и "international"-версия. Желающие работать с полнофункциональными (с точки зрения защиты) программами могут взять их на расположенных в Нидерландах ftp и www серверах Replay.com.

В начало

Секретные или открытые ключи?

Какие алгоритмы лучше: "классические" - с секретными ключами, или "современные" - с открытыми? Хороший вопрос :-) И совершенно неправильный, потому что выбор во многом зависит от постановки задачи и условий применения.

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

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

В начало

Потоковое и блочное шифрование.

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

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

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

В блочных схемах информация делится на блоки и часть блоков используется для выработки гаммы, которая применяется при криптопреобразовании оставшейся части блоков, после чего части блоков меняются местами. Детальное описание общей схемы и некоторых вариантов ее реализации можно найти в статье Андрея Винокурова "Как устроен блочный шифр?" Этому же автору принадлежат подробное описание одного из лучших на сегодняшний день блочных криптоалгоритмов ГОСТ 28147-89 и доступный для широкого использования исходный текст соответствующей программы.

В начало

Применение.

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

Для Linux'а и Windows95/98/NT такие программы можно взять, например, на ftp и www серверах Replay.com. Простейшие из этих программ используют PGP и позволяют шифровать как файлы, так и информацию, пересылаемую по электронной почте, а также обеспечивают возможность создания полностью PGP-криптованных файловых систем. Для Windows95/98/NT есть использующий алгоритмы ГОСТ и BlowFish (и поэтому работающий несколько быстрее) пакет BestCrypt. К сожалению, этот пакет является коммерческим, но у него имеется 30-дневный trial, подробную инструкцию по работе с которым желающие смогут найти на AstalaVist'е.

В начало

Rambler's Top100 Rambler's Top100
Используются технологии uCoz

Rambler's Top100 Rambler's Top100

©  Adept Design Studio

Используются технологии uCoz