Какую сюда картинку?

Надежность и безопасность системы

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

Рассмотрим основные задачи, которые должен решать механизм защиты данных:

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

Защита и возможность аутентификации при сетевой работе обеспечивается использованием стандарта SSL/TLS. SSL (Secure Socket Layer) - протокол защищенных сокетов, TLS (Transport Layer Secutity) - его более новая реализация, протокол защиты транспортного уровня. В настоящее время выбрана бесплатная версия OpenSSL, распространяющаяся в исходных кодах, которая поддерживает версии 2, 3 протокола SSL и версию 1 протокола TLS. Мы принципиально отказались от использования встроенного протокола Windows, что дало нам следующие преимущества:

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

Ниже будет подробнее рассмотрена реализация механизмов защиты данных в платформе Инфо-Бухгалтер 10 и даны некоторые конкретные рекомендации по эффективному применению этих механизмов.

Логические пользователи и шифрование паролей

При входе в платформу пользователь идентифицируется по имени и паролю. Информация о группах, пользователях и их правах хранится в базе данных. При этом уникальным идентификатором пользователя в базе данных является его код (ID), а не имя. При работе с редактором групп и пользователей можно заметить, что имя любого пользователя можно изменить без необходимости заново задавать для него настройки прав доступа. Пароли может изменить пользователь, обладающий соответствующими правами, а также знающий текущие пароли (для задания нового пароля необходимо ввести старый). Соответственно, уязвимым местом являются пароли пользователей, и для защиты данных от несанкционированного доступа применяется шифрование паролей. Вкратце механизм шифрования состоит в следующем. Пароль, введенный пользователем, преобразуется в хэш-код с помощью хэш-функции и в таком виде хранится в базе данных. При идентификации пользователя введенный пользователем пароль тоже преобразуется в хэш-код и сравнивается с записью в базе. Хэш-функция - это функция, которая принимает на входе строку переменной длины (называемую прообразом), и преобразует ее в строку фиксированной, обычно меньшей длины, называемую хэш кодом или профилем сообщения. В основе алгоритма вычиления, используемого хэш-функцией, лежит однонаправленная функция. Однонаправленная функция - это математическая функция, которая сама легко вычисляется, но вычисление обратной по отношению к ней практически невозможно. То есть список хэш-кодов, полученный из базы данных, для злоумышленника бесполезен: нельзя проинвертировать однонаправленную функцию и получить из нее обратно список паролей. Для шифрования используется стандартный алгоритм получения хэш-значений SHA-1. Алгоритм получает на вход сообщение произвольной длины и выдает на выход 160-битовый профиль сообщения. Соответственно, при использовании метода "лобовой" атаки с перебором всех вариантов хэш-кода сложность задачи нахождения сообщения, имеющего заданный профиль, составляет 2160. Для сравнения: число атомов планеты составляет 2170. Компьютеру, перебирающему миллион значений в секунду, для перебора всех вариантов потребуется время, сравнимое с временем жизни вселенной.

Однако вероятнее всего человек, занимающийся взломом программы, тоже прекрасно представляет себе нереальность подобной задачи и даже не попытается последовательно перебрать все хэш-коды. Прежде всего он протестирует очевидные значения паролей. Такую атаку называют атакой по словарю, поскольку в этом случае используется словарь значений, обычно применяемых пользователями. Подобные словари регулярно обновляются и доступны на специальных сайтах хакеров. И если взломщик имеет доступ к алгоритму шифрования - атака по словарю будет довольно эффективной, особенно если направлена на все хранилище ключей. Из этого следует, что даже использование самых стойких криптографических алгоритмов не защитит систему, если пользователи выбирают в качестве паролей имена своих детей или супругов, названия музыкальных групп, и т.п. Наша реализация алгоритма позволяет перебрать примерно 1000 вариантов в секунду на компьютере Pentium 4 1,8 GHz. Примерное количество слов в языке с тысячелетней письменностью - 500 000 (общеупотребительных - около 80 000). Перебор всех вариантов займет несколько минут! Поэтому одной из основных задач администратора должна стать стратегия выбора правильных паролей для пользователей. Хорошим паролем может считаться случайная последовательность символов, сгенерированная каким-нибудь автоматическим процессом. У таких паролей есть единственный недостаток: их слишком сложно запомнить. Поэтому весьма вероятно, что пользователи будут записывать пароль на листок бумаги и хранить на рабочем столе в пределах досягаемости, и его можно будет просто подсмотреть. Как правило, пользователям можно предоставить возможность выбирать пароли самостоятельно, но необходимо обучить их правильной стратегии выбора. Длина любого пароля должна быть не менее 8 символов. Чем короче пароль, тем легче его взломать. Не рекомендуется использовать в качестве паролей:

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

Передача данных по сети

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

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

Защита потока данных, передаваемых по сети, строится по протоколу SSL/TLS. Протокол SSL/TLS призван обеспечить возможность надежной защиты сквозной передачи данных с использованием протокола TCP. Средства обеспечения безопасности размещаются сразу над протоколом TCP:

Передаваемые данные
SSL/TLS
TCP
IP

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

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

Протокол SSL включает в себя несколько протоколов, и самым сложным в стеке протоколов является протокол квитирования (Handshake Protocol). Этот протокол позволяет серверу и клиенту выполнить взаимную аутентификацию, а также согласовать параметры защиты данных. Механизм аутентификации сторон заключается в обмене сертификатами. Сертификат - это своего рода "паспорт" стороны, отправляющей пакет. Каждый файл сертификата должен храниться локально на том компьютере, которому он соответствует. Файлы сертификатов хранятся в зашифрованном виде, для их шифрования используется секретный ключ длиной от 512 бит до 4Кбит (длина ключа задается при генерации сертификата). Секретный ключ шифрования сертификатов хранится в файле, который тоже в свою очередь зашифрован алгоритмом с использованием специального ключа. Этот ключ является паролем и должен быть известен пользователю. Чтобы обеспечить подлинность и целостность сертификатов, получаемых от другой стороны, используется специальный подписывающий сертификат - certificate authority (далее - CA). Подлинность самих файлов CA является узким местом всей системы безопасности и должна обеспечиваться административными мерами! Не рекомендуется хранить файлы CA локально на рабочих местах. Наиболее целесообразно хранить их на специально выделенном сервере или в отдельной директории, доступной только для чтения.

Итак, для функционирования механизма шифрования передаваемых данных в настройках каждой стороны задаются следующие параметры:

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

Уровень защитыРеализацияОценка возможности взлома
0Траффик не шифруется.Поток данных не защищен. Взломать систему может любой человек, обладающий достаточным уровнем квалификации
1Сервер имеет собственный сертификат и CA для подписи сертификатов клиентов. Клиенты не обязаны иметь сертификаты, но могут иметь CA для подтверждения подлинности сервера. То есть подтверждение подлинности клиента происходит на уровне его имени и пароля, а подлинность сервера подтверждается CA.Взломать систему может специализированная профессиональная фирма, обладающая специальным оборудованием.
2Клиент и сервер используют полный набор подписываемых сертификатов.Взломать систему может государственная структура, использующая специальное оборудование и мощные компьютеры.
3Многократный обмен сертификатами. Процедура обмена сертификатами производится не только в начале установки сеанса связи, но может быть вызвана и для других событий в процессе сеанса.Возможность взлома протокола маловероятна.

Уровень защиты клиентов (клиентских приложений платформы или прокси-серверов) с сервером устанавливается в диалоге настройки параметров сервера. Для программы Radmin задается отдельный уровень защиты администрирования в диалоге настройки службы администрирования. Установленные уровни защиты не вступают в действие в текущем сеансе связи, для их применения необходимо перезапустить сервер!

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

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

Работа с удаленными клиентами в глобальной сети

Для системы, работающей в глобальной сети через прокси-сервера, актуальны те же самые проблем защиты данных, что и для локальной. Защита потока данных в глобальной сети также строится по протоколу SSL/TLS. Но помимо этого, возникает дополнительная проблема: защищенность прокси-серверов. Помимо атак на передаваемые по сети данные могут осуществляться попытки многократных подключений, чтобы "забить" сервер, максимально снизить его производительность.

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

Указанные настройки задаются в файле конфигурации прокси-сервера.

Защита базы данных

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


См. также: