Материал: Информационная безопасность и защита информации. учебное пособие. Паринов А.В., Федорков Е.Д

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

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

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

4.3. Основные положения по разработке по

Общие рекомендации по написанию устойчиво работающих алгоритмов (необходимое, но не достаточное условие их информационной безопасности):

  • не используйте экзотические и недокументированные возможности языка программирования : Вы не уверены в том, как они реализуются на самом деле;

  • оформляйте исходный текст ясно и четко, используйте необходимые комментарии;

  • используйте скобки для явного указания порядка операций : компилятор может оптимизировать выполнение выражений и начать, скажем, сложение F(1)+F(2)+F(3) со второго знака "+", тем самым вызвав сначала функцию F от 2, затем от 3, а только затем от 1 – если в функции изменяются какие-либо глобальные переменные это может привести к непредсказумым последствиям;

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

  • используйте структурное программирование : разбивайте сложные блоки кода на процедуры с ясной структурой и легко контролируемым набором параметров;

  • никогда не программируйте недокументированные возможнности : технология "reverse engineering" – дизассемблирование и обратная компиляция" – на сегодняшний день достигла огромных результатов, особенно в отношении высокоуровневых языков программирования;

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

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

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

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

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

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

  • очень тщательно разрабатывайте схему синхронизации паралелльно работающих с одними и теми же данными процессов;

  • тщательно проверяйте алгоритмы на синдром "мертвой петли" – это ситуация, когда процесс A, начав изменять объект 1 и заблокировав его в связи с этим, ожидает снятия блокирования с объекта 2, в то время как процесс B, в то же самое время начавший изменять объект 2 и заблокировав его, ожидает снятия блокировки с объекта 1 – подобная проблема при такой схеме синхронизации теоретически неразрешима, единственный выход из нее – рассматривать объекты 1 и 2 как единое целое с возможностью только совместной блокировки;

  • аккуратно выделяйте и очищайте объекты в динамической памяти;

  • при необходимости используйте криптографию;

  • никогда не передавайте пароль открытым текстом;

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

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

  • всегда проверяйте длины строк и массивов перед началом работы с ними;

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

  • тщательно тестируйте Ваши приложения, в том числе на больших и неправильных входных данных.

5. Комплексная система безопасности

5.1. Классификация информационных объектов

5.1.1. Классификация по требуемой степени безотказности

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

Параметр

класс 0

класс 1

класс 2

класс 3

Максимально возможное непрерывное время отказа

1 неделя

1 сутки

1 час

1 час

В какое время отказа не может превышать указанное выше ?

в рабочее

в рабочее

в рабочее

24 часа в сутки

Средняя вероятность доступности данных в произвольный момент времени

80%

95%

99.5%

99.9%

Среднее максимальное время отказа

1 день в неделю

2 часа в неделю

20 минут в неделю

12 минут в месяц

5.1.2. Классификация по уровню конфиденциальности

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

Класс

Тип информации

Описание

Примеры

0

открытая информация

общедоступная информация

информационные брошюры, сведения публикававшиеся в СМИ

1

внутренняя информация

информация, недоступная в открытом виде, но не несущая никакой опасности при ее раскрытии

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

2

конфиденциальная информация

раскрытие информации ведет к значительным потерям на рынке

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

3

секретная информация

раскрытие информации приведет к финансовой гибели компании

(зависит от ситуации)

5.1.3. Требования по работе с конфиденциальной информацией

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

  • осведомление сотрудников о закрытости данной информации;

  • общее ознакомление сотрудников с основными возможными методами атак на информацию;

  • ограничение физического доступа;

  • полный набор документации по правилам выполнения операций с данной информацией.

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

  • расчет рисков атак на информацию;

  • поддержание списка лиц, имеющих доступ к данной информации;

  • по возможности выдача подробной информации под расписку (в т.ч. электронную);

  • автоматическая система проверки целостности системы и ее средств безопасности;

  • надежные схемы физической транспортировки;

  • обязательное шифрование при передаче по линиям связи

  • схема бесперебойного питания ЭВМ.

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

  • детальный план спасения либо надежного уничтожения информации в аварийных ситуациях (пожар, наводнение, взрыв);

  • защита ЭВМ либо носителей информации от повреждения водой и высокой температурой;

  • криптографическая проверка целостности информации.

Источник: https://studfile.net/preview/16566494/