/Materials Вт, 25.07.2017, 05:40

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


Главная страница, Контакты, RSS
 
> Меню сайта

> Разделы новостей
Семинар [37]
Семинар по системному и прикладному программированию
Etc [14]
Разное
Конференция [16]
Открытая конференция исследовательских и проектных работ

> Архив новостей

> Партнеры

> Поиск

> Статистика

Главная » 2009 » Апрель » 17 » Семинар по криптографии и информационной безопасности
Семинар по криптографии и информационной безопасности
д. т. н., проф. С. П. Расторгуев
Институт проблем информационной безопасности (ИПИБ) МГУ


Тема 1. Защита программного обеспечения
от несанкционированного копирования и изучения


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

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

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

1. Шифрование. Модификация и шифрование программного кода. Аналогия в социальном мире - смена внешности.

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

3. Скрытый переход. Например. Вместо команды безусловного перехода (JMP) используется возврат из подпрограммы (RET). Предварительно в стек записывается адрес перехода, который в процессе работы программы модифицируется непосредственно в стеке. Аналогия в социальном мире – использование «черного» хода для выхода из помещения.

4. Определить стек в области исполняемых команд, что приводит к затиранию команд при работе со стеком. Таким же способом можно генерировать исполняемые команды впереди вычислительного процесса. Аналогия в социальном мире – «сжигание за собой мостов».

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

6. Изменение начала защищаемой программы таким образом, чтобы стандартный дизассемблер не смог ее правильно дизассемблировать. Аналогия в социальном мире – смена даты рождения.

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

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

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

10. Постоянное чередование команд разрешения и запрещения прерывания, что затрудняет установку отладчиком контрольных точек. Аналогия в социальном мире – резкие смены планов.

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

Задачи по этой теме:

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

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


Тема 2. Разработка программного обеспечения
с механизмом самообучения


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

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

Предположим, что наши исходные элементы (для красоты их можно назвать атомами или формальными нейронами) способны к следующим элементарным действиям (ЭД): сложить ('+'), вычесть по модулю ('–'), умножить ('*'), разделить ('/'), ничего не делать (' '). Можно допустить и операции логарифмирования и возведения в степень — это позволит расширить возможности системы по обучению. Нас же сейчас интересует сам подход, поэтому мы ограничимся только пятью названными операциями. Далее, выделим участок «пустого» пространства, на который будет оказываться воздействие по двум входам и одному выходу.

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

Предположим, что элементов должно появиться ровно столько (не меньше и не больше), сколько достаточно для компенсации напряжения.

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

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

Например, пусть на первый вход подан сигнал силой три условные единицы (x = 3), на второй — 5 (y = 5), требуемый результат — 20 (z = 20).

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

x, y — входные значения;
z — выходное значение;
d — элементарное действие из множества [+, *, –, /, ' '].

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

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

(zd (x, y)) 2

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

min (z – (d1 (x, y, А1)) 2

или

min ((zd2 (d1 (x, y), А1)) 2,(zd2 (d1 (x, А1), y)) 2, (zd2 (d1 1, y), x))) 2.

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

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

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

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

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

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

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

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

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

Для компьютерной программы в качестве ЭД могут выступать операции: «писать», «читать» и т.д.

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

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

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

1. Элемент системы является простейшей неделимой частицей — формальным нейроном.

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

3.На начальном этапе система представляет собой множество нейронов с ЭД «ничего не делать», на каждый из которых может оказываться воздействие со стороны нескольких входов и одного выхода. Разницу между получаемым выходным значением и требуемым выходным значением назовем напряжением;

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

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

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

Задачи по этой теме:

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

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



[1] В общем виде авторский пример Лавлока описан в работе Ф. Капра «Паутина жизни». – М.: София. 2003. А в приложении к самообучающимся алгоритмам – в моей работе «Информационная война. Проблемы и модели». – С. Р.

Категория: Семинар | Просмотров: 2209 | Добавил: ded32
> Инструменты

Orphus


> О рекламе на сайте

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


> Загрузить

> Основные материалы

> Примеры проектов



Copyright (c) И.Р. Дединский, 2006-2017
Никакая часть материалов данного сайта или его подразделов не может быть прямо или косвенно процитирована или упомянута без действующей активной ссылки на данный сайт
...

Хостинг от uCoz

MasterHost Orphus