Алгоритмы шифрования с открытым ключом 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Алгоритмы шифрования с открытым ключом



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

Стойкие алгоритмы с открытым ключом, как правило, основываются на математических задачах, которые на настоящий момент не имеют эффективного решения. Однако далеко не все стойкие алгоритмы применяются на практике. Некоторые из них требуют очень больших ключей. Например, размер открытого ключа криптосистемы HFE (Hidden Fields Equations) может достигать десятков мегабайт, что затрудняет распределение таких ключей. При использовании некоторых алгоритмов размер шифртекста значительно превышает размер соответствующего ему открытого текста. Не последнюю роль играет и скорость выполнения шифрования — все асимметричные алгоритмы значительно медленнее, чем симметричные.

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

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

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

(бонентами.

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

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

 

Надежность криптосистем

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

Можно выделить следующие основные группы причин ненадежности криптографических систем:

- применение нестойких алгоритмов;

- ошибки в реализации криптоалгоритмов;

- неправильное применение криптоалгоритмов;

- человеческий фактор.

Более подробно причины ненадежности криптосистем представлены на рис. 2.9.

 

Рис. 2.9. Причины ненадежности криптосистем

Научный подход к анализу криптостойкости шифров сформировался после публикации в 1949 году работы К. Шеннона "Теория связи в секретных системах". Он предложил рассматривать криптостойкость систем с двух точек зрения - теоретической (совершенной) и практической (вычислительной) стойкости.

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

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

Малая скорость криптоалгоритмов - это основной фактор, затрудняющий применение хороших алгоритмов. В частности, программа Norton DiskReet, хотя и имеет реализацию криптоалгоритма DES, при смене пользователем ключа может не перешифровывать весь диск, так как это займет слишком много времени. Аналогично, программа сжатия Stacker фирмы Stac Electronics имеет опцию закрытия паролем компрессируемых данных. Однако она не имеет физической возможности зашифровать этим паролем свой файл, обычно имеющий размеры в несколько сот мегабайт, поэтому она ограничивается очень слабым алгоритмом и хранит хэш-функцию от пароля вместе с защищаемыми данными.

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

Использование собственных криптоалгоритмов идет от незнания или нежелания использовать уже известные алгоритмы - такая ситуация, как ни парадоксально, также имеет место быть, особенно в программах типа Freeware и Shareware, например, архиваторах. Например, архиватор ARJ (до версии 2.60 включительно) использует (по умолчанию) очень слабый алгоритм шифрования - простое гаммирование. Аналогичная ситуация имеет место и в случае с популярными программами из Microsoft Office - для определения пароля там необходимо знать всего 16 байт файла.doc или.xls, после чего достаточно перебрать всего 16 вариантов. В Microsoft Office 97 сделаны значительные улучшения алгоритмов шифрования, в результате чего осталась возможность только полного перебора, но не везде. MS Access 97 использует примитивнейший алгоритм, причем шифруются не данные, а сам пароль операцией XOR с фиксированной константой.

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

Некоторые криптоалгоритмы при шифровании со специфическими ключами не могут обеспечить должный уровень криптостойкости. Такие ключи называют слабыми (weak). Для DES известно 4 слабых и 12 полуслабых (semi-weak) ключей. И хотя вероятность попасть в них очень мала, для серьезных криптографических систем пренебрегать ею нельзя.

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

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

Ясно, что пока программы будут создаваться людьми, ошибки в программной реализации всегда будут иметь место. Пример - ОС Novell Netware 3.12, где, несмотря на достаточно продуманную систему аутентификации, при которой, по заявлениям фирмы Novell, "нешифрованный пароль никогда не передается по сети", удалось найти ошибку в программе SYSCON версии 3.76, при которой пароль именно в открытом виде попадает в один из сетевых пакетов. Этого не наблюдается ни с более ранними, ни с более поздними версиями этой программы, что позволяет говорить именно об ошибке программиста.

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

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

Малый период и плохой разброс относятся к математическим недостаткам ДСЧ и появляются в том случае, если по каким-то причинам выбирается собственный ДСЧ. Иначе говоря, выбор собственного ДСЧ так же опасен, как и выбор собственного криптоалгоритма. В случае малого периода (когда псевдослучайных значений, вырабатываемых датчиком, меньше, чем возможных значений ключа) злоумышленник может сократить время поиска ключа, перебирая не сами ключи, а псевдослучайные значения и генерируя из них ключи.

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

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

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

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

Уже классическим примером стала уязвимость в Windows 3-х и первых версиях Windows 95, связанная с шифрованием. В этом случае программисты фирмы Microsoft применяли алгоритм RC4 (представляющим собой ни что иное, как шифрование гаммированием), не меняя гаммы, несколько раз к разным данным - сетевым ресурсам, хранящимся в файлах типа.pwl. Оказалось, что один из наборов данных файла.pwl представлял собой текст - 20-символьное имя пользователя (в верхнем регистре) и набор указателей на ресурсы. Таким образом, угадав имя пользователя, (которое в большинстве случаев к тому же совпадает с именем файла), можно вычислить, по крайней мере, 20 байт гаммы. Так как гамма не меняется при шифровании других ресурсов (в этом заключается основная ошибка применения RC4 в этом случае), могут быть вычислены первые 20 байт всех ресурсов, в которые входит длина каждого из них. Вычислив длину, можно найти значения указателей и тем самым прибавить еще несколько десятков байт к угаданной гамме.

Хранение ключа вместе с данными приводит к тому, что данные, зашифрованные с помощью криптостойкого и корректно реализованного алгоритма, могут быть легко расшифрованы. Это связано со спецификой решаемой задачи, при которой невозможно вводить ключ извне, и он хранится где-то внутри в практически незашифрованном виде. Иначе говоря, здесь наиболее уязвимым будет алгоритм шифрования не ключом, а ключа (с помощью некоего вторичного ключа). Но так как (что опять-таки очевидно следует из специфики задачи) этот вторичный ключ хранить извне нельзя, то основные данные рано или поздно будут расшифрованы без использования методов перебора. Типичным примером здесь будут все WWW-, ftp-, e-mail-клиенты. Дело в том, что для базовой (наиболее часто встречающейся) аутентификации в этих протоколах пароль должен передаваться серверу в открытом виде. Поэтому клиентские программы вынуждены шифровать, (а не кешировать) пароль, причем с фиксированным ключом, чтобы не надоедать пользователю постоянными вопросами. Отсюда следует, что где-то внутри любого браузера, почтового или ftp-клиента лежат все пароли в практически открытом виде, и что расшифровать их не составляет труда.

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

 



Поделиться:


Последнее изменение этой страницы: 2017-02-05; просмотров: 290; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.134.118.95 (0.019 с.)