Работа с цодом как задача руководителя 


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



ЗНАЕТЕ ЛИ ВЫ?

Работа с цодом как задача руководителя



 

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

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

Так и реализован «Ноутбук руководителя» — в ноутбук установлен miniPCIe-контроллер Аккорд-GXMH, firmware которого по факту отсутствия смарт-карты в считывателе загружает ноутбук штатным образом (ОС с жесткого диска), а в случае наличия смарт-карты в считывателе загружает собственную ОС, в которой загружается приложение доступа к защищенному ЦОДу. Таким порядок действий руководителя для перехода в режим ДСС сводится к привычной в обычной жизни работе со смарт-картой: установил смарт-карту, ввел pin-код и получил доступ к защищенным ресурсам.

 

ИДЕИ ТЕХНИЧЕСКОЙ ЗАЩИТЫ ИНФОРМАЦИИ ДЛЯ НОВИЧКОВ

ЧТО ЗАЩИЩАТЬ?

 

Часто люди боятся компьютера, потому что плохо представляют, чего от него ожидать, ведь как это все в нем работает, в общем, малопонятно. Легче смириться с тем, что самолет летает, хотя крыльями не машет. Однако иногда, когда знаешь, «как это все в нем работает», становится еще страшнее. Именно потому, что стало более понятно, чего от компьютера можно ожидать. Мариэтта Шагинян еще в 50-е годы прошлого века сформулировала проблему максимально остро: «Вычислительные машины могут все. Задача человека заставить их делать только то, что ему нужно». Пока решение этой проблемы (разве нам нужно, чтобы вместо наших программ исполнялись вирусы?) – дается Microsoft (да и другим) нелегко. Хотя нам всегда говорят: «Компьютер – это только инструмент». И это должно успокоить и вселить уверенность. Вселило бы, если бы были основания считать, что это инструмент – ИМЕННО В ВАШИХ РУКАХ.

Эта уверенность – и есть то, за что Вы платите, покупая средства защиты информации (СЗИ). Ставя хороший замок на дверь, мы хотим не дверь защитить. Мы хотим быть уверенными, что в нее не войдет никто, кроме тех, кому мы дали ключ. Защищая «информацию» – мы точно так же защищаем не буквы и цифры, а свой бизнес, который обычно стоит намного дороже собственно компьютера и услуг оператора ввода данных.

Для чего надо защищать компьютер от несанкционированного доступа к нему? Для того что бы включая свой компьютер, Вы были уверены, что это по-прежнему ВАШ инструмент, что в него не добавлено ничего и ничего не изъято, что за время Вашего отсутствия Ваш компьютер не стал инструментом кого-то еще, чьи интересы могут быть далеки от Ваших. Для этого доступ к компьютеру должен быть разрешен только Вам. Это возможно в том случае, если компьютер оборудован средством, которое при включении компьютера проверит его программное обеспечение и аппаратуру на отсутствие несанкционированных изменений и подаст сигнал, если что-то не так. Как известно, наличие замка, который выглядит не взломанным, еще не гарантирует того, что в помещение никто не проник. Вы можете быть уверены в том, что это так, только после того, как убедились, что там не произошло никаких изменений. Мы стараемся пользоваться проверенными программами – именно поэтому покупаем лицензионное ПО. Так же мы стараемся использовать в работе только проверенные данные. Но для того чтобы проверенная программа, использующая проверенные данные, дала правильный результат, проверенной должна быть и среда, в которой исполняется программа. Проверенной должна быть и аппаратура, и операционная система.

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

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

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

Быть уверенным в том, что данные были переданы в неизменном виде, можно в том случае, если данные были зашифрованы (а желательно еще и подписаны ЭП), поскольку среда всегда может оказаться враждебной. Однако, что может дать Вам уверенность в том, что данные не искажены, если шифрование или подписание ЭП происходило внутри ненадежной среды? Абсолютную надежность внешней среды не может гарантированность никто. Это вполне естественно – выезжая на абсолютно проверенной машине, способной развивать скорость в 200 км/ч, мы можем опоздать на встречу, хотя машина будет абсолютно исправна. Просто будет пробка. Или гололед.

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

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

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

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

Итак, объектов защиты в информационной сфере всего 4:

· сам компьютер,

· данные, которые хранятся, обрабатываются и передаются с помощью компьютера,

· технологии обработки этих данных

· и каналы передачи данных.

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

Как именно и почему – рассмотрим ниже.

 

ПАРАДИГМА АППАРАТНОЙ ЗАЩИТЫ

 

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

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

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

Допустим, Вам предоставили программу, в которую встроены программные процедуры идентификации/аутентификации. Для того, чтобы использовать эту программу, её надо запустить. При запуске программа запрашивает Ваш идентификатор (login) и пароль (password). Вы вводите требуемые контрольные данные, они проверяются программой, и если все хорошо – программа начинает работать. Формально требования идентификации/аутентификации выполнены, но обеспечивают ли описанные процедуры сколь-нибудь надежную защиту? Скорее всего – нет. Чтобы в этом убедиться, рассмотрим другой вероятный ход событий.

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

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

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

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

1) установлена на компьютер;

2) запущена на исполнение.

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

Что же делать? Видимо, нужно согласиться с тем, что важно не только наличие и реализация контрольных процедур, но и условия их исполнения. А из нашего примера следует однозначный вывод – защитные механизмы должны активизироваться ДО ЗАГРУЗКИ ОПЕРАЦИОННОЙ СИСТЕМЫ.

Это фундаментальный вывод. Его правильность давно доказана с применением точного математического аппарата, а следует из этого вывода также и то, что должны быть специальные аппаратные средства защиты информации. ОБЕСПЕЧИТЬ НАДЕЖНУЮ ЗАЩИТУ БЕЗ ПРИМЕНЕНИЯ СПЕЦИАЛИЗИРОВАННЫХ АППАРАТНЫХ СРЕДСТВ НЕВОЗМОЖНО!

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

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

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

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

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

Рассмотрим, как нужно правильно выполнять контроль целостности. Как мы уже говорили, нужно выполнить некоторую последовательность действий, как минимум:

1) вычислить контрольную сумму K1 проверяемой программы A;

2) сравнить вычисленную контрольную сумму с эталонной Ke.

 

Если K1 = Ke, то можно предположить, что программа A не изменялась. Если же обнаружится несовпадение, то скорее всего программа была незаконно модифицирована.

Вы обратили внимание на слова «можно предположить»? Не слишком ли неопределено? Почему мы не сказали, например, «можно считать»?

Дело в том, что для того чтобы можно было не предположить, а считать, надо еще быть уверенным в том, что расчет K1 произведен правильно, а также в том, что правильно выполнено сравнение K1 и Ke. Хотелось бы также быть уверенным в том, что значение Ke не изменилось вместе с измененной программой А, и так далее.

Действительно, для того, чтобы контролировать целостность программы «А» мы используем программу «В», но кто нам даст гарантию, что программа «В» осталась неизменной? Значит, нужна программа «С», которая проконтролирует целостность программы «В»! Нужна программа, контролирующая целостность программы, контролирующей целостность программы … и т.д., и т.п. Сказка про белого бычка, дом, который построил Джек, попытка барона Мюнгхаузена вытащить самого себя за волосы из болота – эти сюжеты и схемы развития событий известны нам с детства, и каждый точно знает, что это сказочки, способ надуть прекрасную маркизу, не более. И при этом мы продолжаем верить, что с помощью одной программы можно проверить целостность другой! Это тяжелое техническое заболевание, состоящее в имитации мероприятий по защите без повышения уровня защищенности, получило название «Синдром Мюнгхаузена».

 

Как же быть, как же разорвать порочный круг синдрома Мюнгхаузена в нашей задаче контроля целостности? Чтобы ответить на этот вопрос, заметим, что контролировать целостность программы контроля целостности нам пришлось потому, что оснований верить в ее неизменность у нас не нашлось. Действительно, что может помешать злоумышленнику подменить не только функциональную задачу, но и задачу ее контроля? И то, и другое – только последовательность нулей и единиц, хранящихся на диске компьютера. Изменение намагниченности участка магнитного материала никогда не представляло серьезной проблемы. Более того, вся вычислительная техника сегодня базируется на фундаментальной возможности изменять состояние элементов памяти ЭВМ, и бороться с этим – по крайней мере бесмысленно. Как же быть? Как разорвать порочный круг? Как вытянуть человека из болота?

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

Таким образом, парадигма аппаратной защиты состоит в «материалистическом» ответе на «основной вопрос технической защиты информации»: «Что первично – Hard или soft?». Конечно, для Фон-Неймановской архитектуры ответ очевиден – надежная защита может строиться только на основе специальной аппаратуры.

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

 

КРАТКО О ШИФРОВАНИИ

Перестановки

Детская игра в проговаривание слов от конца к началу – прекрасная иллюстрация шифрования перестановкой. Нетрудно понять, что слово «вирус» при этом будет звучать как «сурив». Конечно, такой шифр легко расшифровать, но все же. Шифрование может быть эффективнее, если усложнить сам механизм перестановки – не просто наоборот, а переставлять буквы в каком-то заранее определенном порядке. Так, узнать наше слово в наборе букв «иувср» уже сложнее, хотя и ненамного. Здесь мы тоже всего лишь переставили буквы, выбрав следующий порядок – (2,4,1,5,3). В данном случае последовательность 24153 является ключем, и для того, чтобы расшифровать сообщение, достаточно первую букву шифртекста поставить на второе место, вторую – на место 4, и так далее.

Замены

 

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

Что заменяем А Б В Г

И так далее …

Э Ю Я
На что заменяем Б В Г Д Ю Я А

Здесь мы каждую букву алфавита заменяем на следующую по порядку, полагая при этом, что за последней буквой снова идет первая, то есть они размещены «в кольце». Ключем здесь можно считать последовательность (1,1,1, …,1), которую можно трактовать как последовательность смещений позиций букв в алфавите. Другими словами, букву с позицией в алфавите n заменяем на букву с позицией в алфавите n+1. С учетом того, что для наших целей мы представляем все 33 буквы алфавита размещенными в кольце, позиция буквы вычисляется как (n+1) mod 33 – читается «по модулю 33».

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

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

Гамма

 

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

Операция сложения «по модулю 2» – это простейшая операция над двоичными числами. Обычно ее обозначают символом Å. Операция выполняется над двоичными числами побитно, а именно:

0 Å 0 = 0

0 Å 1 = 1

1 Å 0 = 1

1 Å 1 = 1

Пусть у нас есть двоичная последовательность, которую мы хотим зашифровать. То же слово «вирус». В кодировке Windows (cp1251) это слово выглядит как «E2 E8 F0 F3 F1», в двоичном виде – как «1110 0010 1110 1000 1111 0000 1111 0011 1111 0001». Длина двоичного кода при этом – 40 двоичных символов. Теперь сгенерируем случайное число такой же длины. Возможно, это будет последовательность «1100 1111 0111 1111 0001 0111 0000 0100 0100 0011». Сложим эти последовательности побитно по модулю 2.

1110 0010 1110 1000 1111 0000 1111 0011 1111 0001

Å   1100 1111 0111 1111 0001 0111 0000 0100 0100 0011

=    0010 1101 1001 0111 1110 0111 1111 0111 1011 0010

или в шестнадцатиричном виде «2D 97 E7 F7 B2». В кодировке Windows получится примерно «- – з ч I», что весьма слабо напоминает исходное слово. Вспоминая Шеннона, отметим, что, не зная примененной нами случайной последовательности (исходим из того, что применили мы ее однократно), расшифровать «- – з ч I» невозможно. Не трудно, а именно невозможно.

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

0010 1101 1001 0111 1110 0111 1111 0111 1011 0010

Å   1100 1111 0111 1111 0001 0111 0000 0100 0100 0011

=    1110 0010 1110 1000 1111 0000 1111 0011 1111 0001,

т.е. исходное слово «вирус»! Все просто, не правда-ли?

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

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

· за­шиф­ро­ван­ное сообщение можно прочесть (расшифровать) толь­ко при наличии клю­ча;

· зна­ние ал­го­рит­ма шиф­ро­ва­ния не долж­но вли­ять на на­деж­ность за­щи­ты;

· не­зна­чи­тель­ное из­ме­не­ние клю­ча долж­но при­во­дить к су­ще­ст­вен­но­му измене­нию ви­да за­шиф­ро­ван­но­го сообщения;

· дли­на шиф­ро­ван­но­го тек­ста долж­на быть рав­ной дли­не ис­ход­но­го тек­ста.

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

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

Конечно, для того, чтобы криптография с публичным ключем получила широкое распространение, совершенно необходимо создать целую инфраструктуру применения таких ключей. Эта инфраструктура называется PKI – public key infrastructure, или, в российской нотации, ИОК – инфраструктура открытых ключей.

Сис­те­мы с от­кры­тым клю­чом

 

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

Для ре­ше­ния про­бле­мы распределения ключей бы­ли пред­ло­же­ны сис­те­мы с от­кры­тым клю­чом.

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

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

Открытый и секретный ключи связаны с помощью не­об­ра­ти­мых или од­но­сто­рон­них функ­ций, ко­то­рые об­ла­да­ют сле­дую­щим свойством: при известном зна­че­нии x легко вы­чис­ляется зна­че­ние f(x), од­на­ко ес­ли известно значение y, то нет про­сто­го пу­ти для вы­чис­ле­ния зна­че­ния x из y = f(x).

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

1. Разложение больших чисел на простые множители.

2. Вычисление логарифма в конечном поле.

3. Вычисление корней алгебраических уравнений.

Алгоритм Диф­фи–Хелл­ма­на

 

Диффи и Хелман пред­ло­жи­ли для соз­да­ния крип­то­гра­фи­че­ских сис­тем с открытым клю­чом функ­цию дис­крет­но­го воз­ве­де­ния в сте­пень.

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

Если y =a x, 1 < x < p -1, где p – фиксированный элемент поля GF(p), то x =lo g a y над GF(p). Имея x, легко вычислить y. Для этого потребуется всего 2 ln (x + y) операций умножения.

Обратная задача – задача вычисления x по известному y, намного сложней. На этом и основана стойкость обсуждаемого алгоритма.

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

y 1 = a x1 mod p

Здесь x 1 выступает в качестве закрытого ключа, а y 1 – в качестве открытого ключа.

Аналогично поступает и второй пользователь – он генерирует x 2, вычисляет y 2 и отправляет его первому пользователю.

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

k = a x1x2 mod p.

При этом первый пользователь поступает следующим образом – он возводит известный ему открытый ключ второго пользователя y 2 в степень x 1 (свой собственный секретный ключ), а именно:

(y2) x1 = ( a x2 mod p) x 1 = a x2x1 mod p = k

Аналогично поступает и второй пользователь – он открытый ключ первого пользователя y1 возводит в степень x2:

(y1) x2 = ( a x1 mod p) x 2 = a x1x2 mod p = k

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

ХЭШ-ФУНКЦИИ

 

Хэш-функциями называют функции, отображающие сообщения произвольной длины в значения фиксированной длины, которые часто называют хэш-кодами. Очевидно, что общее количество (мощность множества) произвольных длинных сообщений больше, чем общее количество произвольных коротких сообщений. Так, в десятичной системе одноразрядных чисел всего 10 (от 0 до 9), а двузначных уже 100 (от 0 до 99). Если отобразить (поставить в соответствие) 100 чисел в 10, то ясно, что некоторые различные числа из ста будут отображаться в одинаковые числа из 10. Возникает ситуация неразличимости – так называемая коллизия, неоднозначность. Таким образом, у всякой хэш-функции h имеется большое количество коллизий, т.е. пар различных значений (x,y) таких, что h(x) = h(y).

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

D = (50, ЭП (h(50)).

Допустим теперь, что имеет место колизия, а именно:

 h(50) = h(50 000),

и, следовательно,

ЭП (h(50) = ЭП (h(50 000).

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

D* = (50 000, ЭЦП (h(50)).

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

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



Поделиться:


Последнее изменение этой страницы: 2021-11-27; просмотров: 30; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

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