Стратегия обеспечения безопасности корпоративной клиент-серверной части операционной системы

 

Введение


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

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

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

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

Целью настоящей работы является: разработка метода обеспечения безопасности корпоративной клиент-серверной части операционной системы

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

Для достижения выбранной цели были поставлены следующие задачи:

.Анализ существующих языков разметки.

.Анализ существующих уязвимостей современных браузеров.

.Разработка нового языка разметки.



1. Исследование недостатков работы в сети


1.1 История языков разметки


Само слово «разметка» (англ. markup) произошло от английского выражения «marking up», что означает разметку как процесс, действие. Дословный перевод этого выражения - «помечивание, размечивание». Позаимствованного из сложившейся издательской практики разметки страницы специальными условными метками на полях и в самом тексте рукописи перед сдачей её в печать. Так «разметчики» (markup men) устанавливали гарнитуру, стиль и размер шрифта для всех отдельных частей текста. Сейчас разметка текста - дело редакторов, корректоров, графических дизайнеров - и, конечно же, самих авторов исходного текста.

В 1986 году теоретики Международной организации по стандартизации приняли стандарт ISO-8879, посвященный описанию метаязыка SGML. Их основная задумка была в том, чтобы быстро и без больших затрат ресурсов строить системы структурной разметки самых разных типов документов - например, указывать границы и соподчинение их составных частей, выделять заголовки, подписи или математические формулы. Стандарт определял синтаксис записи управляющих элементов и их атрибутов, а также правила определения новых тегов и указания взаимоотношений между ними.

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

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

Примеры языков разметки:

·GenCode

·ФЕЧ

·Scribe, GML и SGML

·HTML

·XML

·XHTML


1.2 Графические и текстовые языки разметки

программирование браузер графический

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

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

К графическим языкам разметки можно отнести HTML начиная с версии 2.0, XML, PDF, DOC и DOCX и т.д.

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


1.3 История развития браузеров


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

Двадцать лет назад создатель самого первого веб-сайта в мире Тим Бернерс-Ли разработал текстовый браузер, носящий название WorldWideWeb.


Рисунок 1 - Браузер WorldWideWeb


В то время обозреватель работал в операционной системе NextStep, которую разрабатывала компания Стива Джобса - Next. Вскоре, у Тима Бернеса-Ли появилось множество последователей, которые тоже начали программировать собственные текстовые браузеры. Но Интернет начал массовое развитие лишь тогда, когда стали производить браузеры с графическим интерфейсом, которые могли отображать графику.Mosaic - это самый первый браузер, имеющий графический интерфейс. Спустя некоторое время развитие данного браузера было остановлено, но его разработчики открыли исходный код приложения, и этот шаг дал возможность разработчикам компаний Microsoft и Netscape разработать собственные браузеры на базе исходного кода Mosaic.


Рисунок 2 - Браузер Mosaic

Первым был выпущен обозреватель Netscape Navigator, в нем были исправлены все ошибки, которые присутствовали в Mosaic.

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

·Windows;

·Unix;

·Mac OS.

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


Рисунок 3 - Netscape Navigator


Успех данной компании заинтересовал Microsoft и вскоре появился новый браузер - Internet Explorer.

Некоторое время между компаниями была здоровая конкуренция, но как только позиции Internet Explorer начали падать, Microsoft решила завоевывать позиции другими методами.

Так, обозреватель Internet Explorer стал встраиваться в операционную систему Windows 95. Но как только вышла данная ОС, в ней не было браузера, его стали включать в обновление ОС - Windows 95 OSR2, браузер на тот момент имел версию 3.0.

Рисунок 4 - Браузер Internet Explorer


Сделав данный шаг, компания Microsoft смогла вновь повысить популярность своего веб-браузера.

В то время уже Netscape Navigator стал терять позиции, по той причине, что пользователи Windows не хотели искать другой браузер, их устраивал тот, что был встроен в ОС.

Тем более, хоть браузер Netscape Navigator был бесплатным, но для корпоративных клиентов он стоил 99 долларов, а IE был бесплатен для всех слоев населения, что сделало его очень популярным.

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

Чуть позже обозреватель IE обрел поддержку фреймов, но разработчики сайтов не торопились менять настройки серверов. Поэтому Internet Explorer стал маскироваться и при заходе на сайт представляться браузером Mozilla.

Это второстепенное название обозревателя Netscape Navigator, которое значит - Mosaic Killer (убийца Mosaic). Разработчикам это название показалось слишком ярким, потому оно не стало основным. Но позже все-таки они вернулись к нему.


Рисунок 5 - Браузер Mozilla


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

В таком неуклюжем состоянии браузер оставался до выхода новой версии - Internet Explorer 6, который был выпущен буквально накануне выпуска ОС Windows XP.

Корпорация AOL выкупила компанию Netscape и выложила в свободный доступ исходные коды браузера Navigator.

В 2000 году произошел релиз браузера Netscape Navigator 6, который разработали на движке Gecko, который изначально поддерживал все веб-стандарты. Netscape Navigator 6 был основан на разрабатываемом проекте Mozilla Application Suite, представляющий собой комбайн, который кроме браузера содержал в себе календарь, почтовый клиент, средства веб-разработки, редактор HTML и IRC-клиент.Suite стал набирать обороты и становился гораздо популярнее Netscape Navigator и через некоторое время, компания AOL отказалась от разработки веб-браузера. Все исходные коды браузера были переданы новому проекту Mozilla Foundation.

Тогда Mozilla Foundation решила разделить Mozilla Suite на несколько частей. Разработанный браузер стал называться Phoenix, т.е. как птица Феникс, сгорающая и после, возрождающаяся из пепла. Этим создатели хотели показать, что Netscape Navigator сгорел, но переродился в Phoenix. Чуть позже название обозревателя сменили на Firebird, что в переводе означает Жар-Птица, но после изменили его на Firefox, причиной стало то, что предыдущие названия уже были заняты другими производителями.

В 1996 году появился новый браузер, носивший название Opera. В России многие пользователи перешли на него, причина тому - быстрая загрузка страниц и малый вес в отличие от Internet Explorer. Но из-за того, что Opera долгое время поставлялась пользователям, как условно-бесплатная, выражалось это в том, что в верхней части браузера показывалась реклама, и если пользователь хотел ее удалить, то требовалась оплата, а так как были бесплатные альтернативные браузеры, то популярность Opera росла медленно.


Рисунок 6 - Браузер Opera

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

В 2006 появился еще один браузер для Windows: компания Apple разработала для ОС Windows браузер Safari, который также имел версию для Mac OS X и работал на базе движка WebKit.- это свободное программное обеспечение, созданное на базе HTML движка известной графической среды KDE. Apple довольно хорошо усовершенствовали движок и, в соответствии с лицензией, предоставили всем желающим исходники браузера.

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

Через 2 года компания Google вышел на рынок браузеров. Он выпустил браузер, носящий название Chrome. Браузер был кроссплатформенным и имел открытый исходный код. Браузер работал на движке WebKit.


Рисунок 8 - Браузер Google Chrome

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

Сейчас пользователь может подобрать браузер на любой вкус, выбор предоставляется из большого количества обозревателей, но самыми популярными у нас являются 5 веб-браузеров: Opera, Apple Safari, Mozilla Firefox, Google Chrome и Internet Explorer.

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


1.4 Недостатки современных браузеров


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

Самый распространённый из браузеров на сегодняшний день - IE (Internet Explorer. IE установлен по умолчанию в операционных системах от Microsoft. Например, в таких операционных системах как Windows XP/Vista/7. Internet Explorer - браузер не на редкость проблемный, не частые обновления, хромающая защита и громоздкость делают его малоэффективным. Иногда чтобы обновить Internet Explorer, нужно изрядно потрудиться, настраивая систему должным образом.

Браузер Мазила Фаерфокс от компании Mozilla не разрекламирован как, например «гугл хром», однако ни чем не уступает новинке от Google. Обозреватель не отличается красотой интерфейса, зато к его плюсам можно отнести возможность приостановления загрузок, установку различных плагинов и дополнений, особенно, если вы пользуетесь высокоскоростным интернетом, в ином случае работа с браузером станет невыносимо медленной. Данный браузер редко выдаёт сбои и по функционалу больше подходит для работы в интернете нежели для развлечений как Оpera или Сhrome.

Следующий по списку веб браузер - Opera. Опера отлично подходит для пользователей, чей месячный трафик ограничен или пользователь заинтересован в экономии бюджетных средств. Интерфейс браузера отличается уникальным стилем, наличием огромного числа плагинов и дополнений, а так же встроенного компрессора трафика, который поможет экономить вам честно заработанные деньги по средством отключения графического содержания страниц и использования плагинов, подобных AdBlock, но тем не менее, это не сравнится с использованием облегченного тестового языка разметки. Так же радует скорость загрузки страниц сайтов и возможность временной приостановке загружаемых файлов. Но ложкой дёгтя стали частые ошибки и слабая устойчивость к вирусам, поэтому прежде чем установить этот браузер стоит подумать, что для вас важнее защита или красивая картинка.chrome - самый популярный на сегодняшний день браузер. Запомните один факт, всё, что сильно рекламируется, хорошим быть не может. Дизайн браузера не отличается красотой, всё сведено к минимализму, что бы упростить диалог между пользователем и программой. Именно по этой же причине интерфейс обозревателя сделан вполне интуитивным, что бы ни путать пользователя в лабиринтах своих функций. По скорости загрузки страниц веб сайтов мало чем отличается от уже названных вариантов. Скачать Google chrome не составляет труда. Это можно сделать, зайдя на официальный сайт компании либо набрать в поисковой строке браузера Internet Explorer и скачать со стороннего сайта.

Ниже преведен график популярности использования браузеров среди пользователей России:


Рисунок 9 - График популярности браузеров.


В порядке убывания: Chrome, Firefox, Opera, IE, Safari.


2. Концепция предлагаемого решения


2.1 Языки программирования, предполагаемые для разработки браузера

#

C# - объектно-ориентированный язык программирования. Разработан в 1998-2001 годах группой инженеров под руководством Андерса Хейлсберга в компании Microsoft как язык разработки приложений для платформы Microsoft.NET Framework и впоследствии был стандартизирован как ECMA-334 и ISO/IEC 23270.# относится к семье языков с C-подобным синтаксисом, из них его синтаксис наиболее близок к C++ и Java. Язык имеет статическую типизацию, поддерживает полиморфизм, перегрузку операторов (в том числе операторов явного и неявного приведения типа), делегаты, атрибуты, события, свойства, обобщённые типы и методы, итераторы, анонимные функции с поддержкой замыканий, LINQ, исключения, комментарии в формате XML.

Java

Java - объектно-ориентированный язык программирования, разработанный компанией Sun Microsystems (в последующем приобретённой компанией Oracle). Приложения Java обычно транслируются в специальный байт-код, поэтому они могут работать на любой виртуальной Java-машине вне зависимости от компьютерной архитектуры. Дата официального выпуска - 23 мая 1995 года.

Программы на Java транслируются в байт-код, выполняемый виртуальной машиной Java (JVM) - программой, обрабатывающей байтовый код и передающей инструкции оборудованию как интерпретатор.

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

Pascal

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

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

Тем не менее, первоначально язык имел ряд ограничений: невозможность передачи функциям массивов переменной длины, отсутствие нормальных средств работы с динамической памятью, ограниченная библиотека ввода-вывода, отсутствие средств для подключения функций написанных на других языках, отсутствие средств раздельной компиляции и т.п. Подробный разбор недостатков языка Паскаль того времени был выполнен Брайаном Керниганом в статье «Почему Паскаль не является моим любимым языком программирования» (эта статья вышла в начале 1980-х, когда уже существовал язык Модула-2, потомок Паскаля, избавленный от большинства его пороков, а также более развитые диалекты Паскаля). Некоторые недостатки Паскаля были исправлены в ISO-стандарте 1982 года, в частности, в языке появились открытые массивы, давшие возможность использовать одни и те же процедуры для обработки одномерных массивов различных размеров.

Однако многие недостатки языка не проявляются или даже становятся достоинствами при обучении программированию. Кроме того, по сравнению с основным языком программирования в академической среде 1970-х (которым был Фортран, обладавший гораздо более существенными недостатками), Паскаль представлял собой значительный шаг вперёд. К 1980-м годам Паскаль стал основой для многочисленных учебных программ, в отдельных случаях на его основе были созданы специализированные обучающие языки программирования, так, в начале 1980-х годов в СССР для обучения школьников основам информатики и вычислительной техники Андрей Ершов разработал алголо-паскалеподобный «учебный алгоритмический язык».

Наиболее известной реализацией Паскаля, обеспечившей широкое распространение и развитие языка, является Turbo Pascal фирмы Borland, выросшая затем в объектный Паскаль для DOS (начиная с версии 5.5) и Windows и далее в Delphi, в которой были внедрены значительные расширения языка.

Диалекты Паскаля, применяемые в Turbo Pascal для DOS и Delphi для Windows, стали популярны из-за отсутствия других успешных коммерческих реализаций.

Fortran

Фортра?н (Fortran) - первый язык программирования высокого уровня, имеющий транслятор. Создан в период с 1954 по 1957 год группой программистов под руководством Джона Бэкуса в корпорации IBM (язык Планкалкюль, претендующий на пальму первенства, был изобретён ещё в 1945 году, но не был реализован вплоть до 2000 года). Название Fortran является сокращением от FORmula TRANslator (переводчик формул). Фортран широко используется в первую очередь для научных и инженерных вычислений. Одно из преимуществ современного Фортрана - большое количество написанных на нём программ и библиотек подпрограмм. Среди учёных, например, ходит такая присказка, что любая математическая задача уже имеет решение на Фортране, и, действительно, можно найти среди тысяч фортрановских пакетов и пакет для перемножения матриц, и пакет для решения сложных интегральных уравнений, и многие, многие другие.

Python

Python (МФА: [?p??и(?) n]; в русском языке распространено название пито?н) - высокоуровневый язык программирования общего назначения, ориентированный на повышение производительности разработчика и читаемости кода. Синтаксис ядра Python минималистичен. В то же время стандартная библиотека включает большой объём полезных функций.поддерживает несколько парадигм программирования, в том числе структурное, объектно-ориентированное, функциональное, императивное и аспектно-ориентированное. Основные архитектурные черты - динамическая типизация, автоматическое управление памятью, полная интроспекция, механизм обработки исключений, поддержка многопоточных вычислений и удобные высокоуровневые структуры данных. Код в Питоне организовывается в функции и классы, которые могут объединяться в модули (они в свою очередь могут быть объединены в пакеты).

Эталонной реализацией Python является интерпретатор CPython, поддерживающий большинство активно используемых платформ. Он распространяется под свободной лицензией Python Software Foundation License, позволяющей использовать его без ограничений в любых приложениях, включая проприетарные. Есть реализации интерпретаторов для JVM (с возможностью компиляции), MSIL (с возможностью компиляции), LLVM и других. Проект PyPy предлагает реализацию Питона на самом Питоне, что уменьшает затраты на изменения языка и постановку экспериментов над новыми возможностями.- активно развивающийся язык программирования, новые версии (с добавлением / изменением языковых свойств) выходят примерно раз в два с половиной года. Вследствие этого и некоторых других причин на Python отсутствуют стандарт ANSI, ISO или другие официальные стандарты.

Small Basic

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

Small Basic был выбран для данного проекта в связи с тем, что он обладает максимально оптимальным соотношением простоты языка и функционала.


2.2 Метод Co-Array


Метод Co-Array представляет собой реализацию параллельного программирования на языке фортран. Данный метод был взят за основу в разработке решения проблемы дипломной работы.

За основу этого метода была заимствована модель программирования SPMD (SingleProgramMultipleData). Эту модель можно сравнить с MPI, то суть та же - мы пишем наше приложение, копии которого будут выполняться определенное количество раз параллельно. При этом у каждой копии имеются свои локальные данные. Те данные, к которым необходим доступ из разных копий, описываются с помощью специального синтаксиса, именуемого как Coarray.

Для понимания достаточно привести простой HelloWorld пример:hello(*,*) «Helloworld»program hello

Собственно, самый обычный код. Но скомпилировав его с с ключём - coarray (компилятором Intel), мы увидим «Hello world» из нескольких разных копий программы, или, в терминах Coarray, из разных Imagies (образов). Причём их число можно контролировать, например, через ключ - coarray-num-images=x, или переменную окружения FOR_COARRAY_NUM_IMAGES. Так же существует способ определять, в каком образе происходит выполнение.

Усложним наш пример:hello_image(*,*) «Hello from image», this_image(), «out of», num_images(),» total images «

end program hello_image

После запуска мы увидим следующие строки:

Hello from image 1out of 4 total imagesfrom image 4out of 4 total imagesfrom image 2out of 4 total imagesfrom image 3out of 4 total images

Очевидно, что наше приложение было выполнено 4 раза (4 копии / образа). Имея эти данные о Coarray, мы в принципе, уже способны создавать параллельные приложения.

Но пока они не принесут нам пользы, потому что нет ответа на главный вопрос - как быть с данными? Для этого потребуется простой синтаксис:, codimension[*]: x: y[*]

Квадратные скобки означают, что мы используем Сoarray.

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

Например, написав y[2] программа обратится к значению y в образе 2. Это открывает возможности для «настоящей» параллельной работы с данными.

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

Стоит рассмотреть ещё несколько примеров, считая ранее объявленной переменную x как Сoarray:= 42.0

В данном случае, мы оперируем с локальной для образа переменной х.

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

·x[3] = 42.0! задаёт значение х равное 42 в образе 3

·x = x[1]! присваиваем локальной для текущего образа переменной х значение из образа 1

·x[i] = x[j]! присваиваем переменной х в образе I значение переменной х из образа j

Основной плюс Coarray в том, что в отличие от чистого MPI, нет необходимости заботимся о посылке или приеме сообщений. Кроме того, код будет работать как на системах с распределённой памятью, так и на системах с общей. Достаточно только поменять ключ на coarray=shared или coarray=distributed.

Так как мы имеем данные в разных копиях нашей программы, логично предположить, что должны быть и средства для их синхронизации. Конечно, они имеются. Это, например, конструкция SYNC ALL, синхронизирующая все образы. Есть ещё и SYNC IMAGES(), позволяющая синхронизировать только определенные образы.

Ещё один пример:, codimension[*]: fact: i, factorial= this_image()(this_image() == 1) then= 1= 1, num_images()= factorial * fact[i](*, *) num_images(), 'factorialis', factorial

endif

Данный пример иллюстрирует возможность поиска факториала методом Coarray.

В начале объявляем fact как Сoarray, и далее в каждом образе мы присваиваем значение, равное номеру образа. Перед тем, как мы перемножить все значения, нужно убедиться, что они уже присвоены, поэтому используем SYNC ALL. И в образе с номером 1 вычисляем факториал.

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


2.3 Small Basic


Новый проект Microsoft Small Basic представляет собой очень простой язык программирования и не менее простую среду разработки с интуитивно понятным интерфейсом. Именно за эти качества этот язык был выбран для решения задачи данной дипломной работы.Basic обладает рядом преимуществ:

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

2.Легкий для изучения язык, содержащий лишь 15 основных слов

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

.Возможность расширения компонентов Small Basic для включения дополнительного функционала. А так же написания и подключения собственных библиотек на различных языках, включая объектно-ориентированный язык С#.

Расширяемость Small Basic

Компилятор Small Basic разрешает использовать внешние подключаемые библиотеки, что позволяет получить дополнительные возможности при разработке. Эти библиотеки могут быть собраны с помощью любого.NET-ориентированного языка программирования. Существует несколько правил при разработке библиотеки, выполнив которые, Small Basic определит вашу библиотеку как еще один объект (тип).

Тип должен быть объявлен статическим. Тип должен быть обозначен как SmallBasicTypeAttribute. Свойства должны иметь тип Microsoft. SmallBasic. Library. Primitive. Все методы должны иметь тип Microsoft. SmallBasic. Library. Primitive. Все события должны иметь тип Microsoft. SmallBasic. Library. SmallBasicCallback.

Когда эти условия соблюдены, вы можете скомпилировать вашу библиотеку и положить ее в папку «lib», которая должна располагаться в установочной папке Small Basic. Например, если Small Basic был установлен на диск «C:» и ваша библиотека называется «myextensions», то вы должны поместить myextensions.dll в папку «c:\program files\microsoft\small basic\lib».

Ниже приведен образец расширения, написанный на C#. Пример добавляет объект Settings, с помощью которого можно хранить и восстанавливать пары «имя - значение» для конкретной программы.


using System. Collections. Generic;System.IO;System. Reflection;System. Runtime. Serialization. Formatters;System. Runtime. Serialization. Formatters. Binary;Microsoft. SmallBasic. Library;MyExtensions

{

/// <summary>

/// The Settings library consists of helpers that allow programs to

/// store and retrieve user settings.

/// </summary>

[SmallBasicType]static class Settings

{Primitive _filePath = new Primitive();

/// <summary>

/// Gets the file path for the settings file.

/// </summary>static Primitive FilePath

{

{(string. IsNullOrEmpty(_filePath))

{

_filePath = Path. ChangeExtension (. GetEntryAssembly().Location,

«.settings»);

}_filePath;

}

}

/// <summary>

/// Gets the value for the setting identified by the specified name.

/// </summary>

/// <param name= «name»>

/// The Name of the setting.

/// </param>

/// <returns>

/// The Value of the setting.

/// </returns>static Primitive GetValue (Primitive name)

{(System.IO. File. Exists(FilePath))

{(Stream stream = System.IO. File. Open (FilePath,. Open))

{<string, string> contents = ReadContents(stream);(contents. ContainsKey (name)) {return contents[name];}

}

}«»;

}

/// <summary>

/// Sets a value for a setting identified by the specified name.

/// </summary>

/// <param name= «name»>

/// The Name of the setting.

/// </param>

/// <param name= «value»>

/// The Value of the setting.

/// </param>static void SetValue (Primitive name, Primitive value)

{<string, string> contents = null;(System.IO. File. Exists(FilePath))

{(Stream stream = System.IO. File. Open (FilePath,. Open))

{= ReadContents(stream);

}

}

{= new Dictionary<string, string>();

}[name] = value;(Stream stream = System.IO. File. Open (FilePath,. Create))

{(stream, contents);

}

}Dictionary<string, string> ReadContents (Stream stream)

{formatter = new BinaryFormatter();. AssemblyFormat = FormatterAssemblyStyle. Simple;(Dictionary<string, string>) formatter. Deserialize(stream);

}void WriteContents (Stream stream, Dictionary<string, string> map)

{formatter = new BinaryFormatter();. AssemblyFormat = FormatterAssemblyStyle. Simple;. Serialize (stream, map);

}

}

}


Среда разработки SmallBasic

Так выглядит среда Small Basic, предназначенная для написания и запуска программ на языке Small Basic. Среда разграничена на три точно различимых друг от друга части.


Рисунок 10 - Среда разработки SmallBasic

Редактор, обозначенный [1], предназначен для написания программного кода на языке Small Basic. Если открыть пример программы, или заранее сохраненный исходный код программы, то она будет отображена в данном редакторе. Здесь можно изменить программу, а так же сохранить ее для последующего использования.

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

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

Рабочая область, обозначаемая [3], - это часть, где располагаются все окна редакторов.

Пример написания программы на языке SmallBasic.

Для примера программирования на языке SmallBasic будет использован стандартный пример программы, выводящей на экран строку «Hello, world».


Рисунок 11 - написание программы на SmallBasic


Текст программы:

TextWindow. WriteLine («Hello World»)

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


Рисунок 12 - Итог выполнения программы на SmallBasic


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


Рисунок 13 - Контекстное меню


2.4 Язык разметки


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

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

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

Первыми тегами, используемыми в данном языке, были «%sd» и «%ed», представляющие собой аббревиатуры словосочетаний «start document» и «end document». Они служат для обозначения начала и конца страницы соответственно. Такое обозначение документа было заимствованно из языка HTML.

Следующий тег - «%lnk», обозначающий ссылку. Имеет один параметр, записываемый в скобки сразу поле тега (без пробелов). Этим параметром является прямая ссылка на другую страницу. В документе это будет выглядеть как текст, выделенный подчеркиванием и синим цветом шрифта. Текст - адрес ссылки. Это было сделано для того, чтобы невозможно было ввести пользователя в заблуждение, и в описании ссылки написать другой адрес. Любые пояснения к ссылке можно описать обычным текстом, перед или после ссылки по усмотрению разработчика. (LNK - сокращ. от link, ссылка с англ.)

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

Тег «%dwld» отвечает за скачку файла с сервера. Его работа схожа с работой тега «%dl», описанного выше.

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

Краткое описание языка:

%sd - начало документа

%ed - конец документа

%lnk() - ссылка

%ld() - тег загрузки файла на сервер

%dwld() - тег скачки файла с сервера

формат документа - shml (short markup language)


пример простейшего документа:

%sd

Главная страница:%lnk (#"justify">Расписание занятий 2 го курса:

%dwld (#"justify">%ed


2.5 Байткод


«Байт-код или байтко?д (англ. byte-code), иногда также используется термин псевдоко?д - машинно-независимый код низкого уровня, генерируемыйтранслятором и исполняемый интерпретатором. Большинство инструкций байт-кода эквивалентны одной или нескольким командам ассемблера. Трансляция в байт-код занимает промежуточное положение между компиляцией в машинный код и интерпретацией.» - Wikipedia.com, статья «Байт-код».


Рисунок 14 - Байт-код


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

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

По этой причине многие современные интерпретируемые языки на самом деле транслируют в байт-код и запускают интерпретатор байт-кода. К таким языкам относятся Perl, PHP, Ruby (начиная с версии 1.9) и Python. Компилятор Clipper создает исполняемый файл, в который включен байт-код, транслированный из исходного текста программы, и виртуальная машина, исполняющая этот байт-код.

Программы на Java обычно передаются на целевую машину в виде байт-кода, который перед исполнением транслируется в машинный код «на лету» - с помощью JIT-компиляции. В стандарте открытых загрузчиков Open Firmware фирмы Sun Microsystems байт-код представляет операторы языка Forth.

В то же время возможно создание процессоров, для которых данный байт-код является непосредственно машинным кодом (такие процессоры существуют, например, для Java и Forth).

Также некоторый интерес представляет p-код (p-code), который похож на байт-код, но физически может быть менее лаконичным и сильно варьироваться по длине инструкции. Он работает на очень высоком уровне, например «напечатать строку» или «очистить экран». P-код повсеместно используется в СУБД и некоторых реализациях BASIC и Паскаля.


2.6 Концепция решения проблемы


Описание предлагаемого метода подхода

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

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

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

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

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

·быстроту работы (пользователю не придется тратить время на заполнение полей «логин» и «пароль», а так же подключение к сети).

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

·точное ведение журнала действий пользователей сети.

На каждом их этих пунктов стоит остановится подробнее.

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

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

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

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

Концепция браузера

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

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

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

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

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

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


Заключение


В данной работе дипломной работе были исследованы различные языки разметки, такие как:

·GenCode

·ФЕЧ

·Scribe, GML и SGML

·HTML

·XML

·DOC

·PDF

·XHTML

Были исследованы следующие браузеры:

·IE

·Google Chrome

·Opera

·Mozilla Firefox

·Mosaic

·Netscape

·WorldWideWeb

·Safari

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

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

Была разработана концепция браузера, работающего в клиент-серверной сети на основе программного обеспечения, разработанного Латыповым А.А. в его дипломной работе.

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


Список используемых источников


1.Гончаров А. Самоучитель HTML. С.-Пб: Питер, 2000.

2.Гречихин, А.А. Вузовская учебная книга: Типология, стандартизация, компьютеризация / А.А. Гречихин, Ю.Г. Древс. - М.: Логос, 2000. - 256 с.

.Информатика: Учебник/под ред. Н.В. Макаровой. - М.: Финансы и статистика, 2000. - 768 с.

.Основы современных компьютерных технологий: Учебное пособие / Под. ред. Хомоненко. С.-Пб.: КОРОНА, 2002.

.Хеслоп П. HTML самого начала. С.-Пб: Санкт-Петербург, 2005.

.Шафран Э. Создание Web страниц. С.-Пб: Питер, 2004.

7.Беневольский С.В., Бетанов В.В. Контроль правильности расчета параметров траектории сложных динамических объектов на основе алгоритмической избыточности // Вопросы защиты информации. - 1996. - №2. - С. 66-69.

.Герасименко В.А. Защита информации в АСОД. - М.: Энергоиздат, 1994.

9.Каймин, В.А. Информатика: учеб. пособие / В.А. Каймин. - М.: МФТИ, 2003. - 285 с.

.Веретенникова, Е.Г. Информатика: учеб. пособие / Е.Г. Веретенникова, С.М. Патрушина. - Ростов Н/Д, 2002. - 416 с.

11.Субботин, М.М. Новая информационная технология: Создание и обработка гипертекстов / М.М. Субботин. - М.: Наука, 1992. - 331 с.

.Симонович, С.В. Информатика - базовый курс: учеб. пособие. / С. В Симонович; изд. 2-е, перераб. И доп. - СПб.: 2003. - 640 с.

13.Макарова, Н.В. Информатика: учеб. пособие / Н.В. Макарова; изд. 3-е, перераб. и доп. - М.: 2000. - 768 с.

14.ГОСТ Р 34.10-94. Информационная технология. Криптографическая защита информации. Процедуры выработки и проверки электронной цифровой подписи на базе асимметричного криптографического алгоритма

15.Ахо А., Хопкрофт Дж., Ульман Дж. Построение и анализ вычислительных алгоритмов. - М.: Мир, 1979.

.Варновский Н.П. Криптографические протоколы // В кн. Введение в криптографию/ Под. Общ. Ред. В.В. Ященко М.: МЦНМО, «ЧеРо», 1998.


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

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ