Компьютерные науки : Курсовая работа: Политика безопасности баз данных
Курсовая работа: Политика безопасности баз данных
Аннотация
Целью данного курсового проекта
является закрепление, систематизация, углубление и развитие теоретических и
практических знаний, полученных студентами в процессе изучения дисциплины
"Надёжность и безопасность программного обеспечения". Курсовая работа
посвященна проблемам политики безопастности баз данных, гарантированности и
средств подотчётности. Основная цель курсового проектирования состоит в
изучении и анализе вопросов, связанных со специальными аспектами надёжности и
безопасности программного обеспечения.
Содержание
Введение
Индивидуальное задание
1. Проектирование таблиц
2. Управление родями
2.1 Регистрация субъектов безопасности
2.1.1 Регистрация субъектов
2.1.2 Наследование ролей
2.2 Избирательное управление доступом
2.2.1 Описание привилегий доступа для клиентов
2.2.2 Описание привилегий доступа для директоров
2.2.3 Описание привилегий доступа
для операционистов
2.2.4 Описание привилегий доступа для работников филиала
2.3 Создание представления субъекта об объекте
2.3.1 Создание схемы для директоров
2.3.2 Создание схемы для клиентов
2.3.3 Создание схемы для операционистов
2.3.4 Создание схемы для работников филиала
3. Реализация требований стандарта по критерию
"Политика безопасности"
3.1 Создания механизма по управлению метками в СУБД.
3.1.1 Таблица с информацией о клиентах
3.1.2 Таблица с информацией о директорах.
3.1.3 Таблица с информацией об операционистах
3.1.4 Таблица с информацией о работниках филиала
3.2 Реализация принудительного управления доступом в СУБД
3.2.1 Реализация принудительного управления доступом в
таблице "КЛИЕНТЫ"
3.2.2 Реализация принудительного управления доступом в
таблице "ОПЕРАЦИОНИСТЫ"
4. Реализация требований
стандарта по критерию "подотчётность"
4.1 Обеспечение идентификации и аутентификации
4.2 Построим таблицу для пользователей нашей БД
4.3 Обеспечение надежного пути
4.3.1 Способы обеспечения надежного пути
4.3.2 Общие подходы использования сертификатов в
web-технологиях
4.3.3 Создание сертификата,
подписанного доверенным центром сертификации
4.3.4 Создание самоподписанного сертификата (сертификата
местного центра сертификации)
4.3.5 Подписание сертификатов с
использованием сертификата центра сертификации
4.3.6 Аннулирование сертификатов
4.3.7 Создание клиентского сертификата
Список литературы
Знание критериев оценки
информационной безопасности способно помочь при выборе и комплектовании
аппаратно-программной конфигурации. Кроме того, в своей повседневной работе
администратор безопасности вынужден хотя бы до некоторой степени повторять
действия сертифицирующих органов, поскольку обслуживаемая система, скорее
всего, время от времени претерпевает изменения и нужно, во-первых, оценивать
целесообразность модификаций и их последствия, а, во-вторых, соответствующим
образом корректировать повседневную практику пользования и администрирования. Если
знать, на что обращают внимание при сертификации, можно сконцентрироваться на
анализе критически важных аспектов, экономя время и силы и повышая качество
защиты.
Одним из первых стандартов
сертификации систем защиты стал стандарт Национального комитета компьютерной
безопасности (National Committee of Computer Security, NСSC)"Критерии
оценки доверенных компьютерных систем" (Trusted Computer System Evaliation
Criteria, TCSEC) или "Orange Book" ("Оранжевая книга").
По стандарту "Оранжевая
книга" критериями оценки надежной компьютерной системы являются:
политика безопасности;
гарантированность;
подотчетность (протоколирование);
документация.
Политика безопасности должна
включать в себя по крайней мере следующие элементы:
произвольное управление доступом;
безопасность повторного
использования объектов;
метки безопасности;
принудительное управление
доступом.
Гарантированность:
операционная;
технологическая.
Средства подотчетности делятся
на три категории:
идентификация и аутентификация;
предоставление надежного пути;
анализ регистрационной
информации.
Документация
руководство пользователя по
средствам безопасности;
руководство администратора по
средствам безопасности;
тестовая документация;
описание архитектуры.
Цель работы - научиться включать
элементы безопасности в информационные системы (ИС) на основе существующих
стандартов проверки качества системы безопасности. Из национального стандарта
США "Оранжевая книга" выбраны критерии оценки качества создания
надежности, которые реализуются средствами системы управления базами данных на
примере СУБД PostgreSQL.
Банк.
Інформаційна система банку.
Скорочений опис концептуально
схеми БД.
13. Інформація про операц
філій, що не пройшли контроль (prohibitions):
порядковий номер заборони, назва
філії, номер операції перекладу платежів для даної філії, код заборони,
повідомлення про причину відхилення
14. Довідник з інформацією про
об'єкти контролю (control_objects): тип об`єкту контролю. Типи об'єктів
контролю: сума платежу операції, сума залишку по рахунках, сума обороту по рахунках.
15. Довідник з інформацією про
час дії контролю (control_time): час дії. Типи часу дії контролю: постійний,
щомісячний, тимчасовий.
Таблица 1. Prohibitions.
Информация про операции филиала,
которые не прошли контроль.
Порядковый номер запрета |
Целое |
Название филиала |
Строка |
Номер операции перевода платежей для даного филиала |
Целое |
Код запрета |
Целое |
Сообщение о причине отказа |
Строка |
Create table “Prohibitions”
(“Порядковый номер запрета"
integer,
“Название филиала", char (50)“Номер
операции перевода платежей для даного филиала" integer,
“Код запрета" integer,
“Сообщение о причине отказа” char
(100));
Таблица 2. Control_objects.
Справочник с информацией про
обьекты контроля.
Сумма платежа |
Денежный |
Сумма остатка на счету |
Денежный |
Сумма оборота на счету |
Денежный |
Create table “Control_objects"
(“ Сумма платежа ” double,
"Сумма остатка на счету
double,
"Сумма оборота на счету
double);
Таблица 2. Control_time.
Справочник с информацией о
времени действия контроля.
Постоянный |
Boolean |
Ежемесячный |
Boolean |
Временный |
Boolean |
Create table “Control_time”
( “ Постоянный ” Boolean,
“ Ежемесячный ” Boolean,
“ Временный ” Boolean );
В версиях СУБД PostgreSQL
меньших 8.1 при управлении субъектами использовались понятия "пользователь"
и "группа" и соответствующие команды создания CREATE USER, CREATE
GROUP. Для изменения параметров пользователя или группы ипользовались команды
ALER USER и ALTER GROUP, соответственно. В версиях СУБД PostgreSQL начиная с 8.1
появился более гибкий механизм - роли.
Информационная система банка.
Групповые субъекты: клиенты,
операционисты, директор филиала, работники филиала.
Индивидуальные субъекты: клиент
"ABC", клиент “IBM”, клиент Иванов А.А., клиент Петров П.П., клиент
Сидоров В. Г, операционист Джавров В.Г., операционист Салмин Ю.Л., операционист
Киричук А.Г., директор Корниенко В.А., работник Манько А.А., работник Яновский
Г.Х.
Регистрация индивидуальных
субъектов:
Alter Role ABC
login;
Alter Role IBM
login;
Alter Role
Ivanov login;
Alter Role
Petrov login;
Alter Role
Sidorov login;
Alter Role
Djavr login;
Alter Role
Salmin login;
Alter Role
Kirich login;
Alter Role
Kornienko login;
Alter Role
Manko login;
Alter Role Yanovskiy login;
Регистрация групповых субъектов:
Alter Role
Klient nologin;
Alter Role
Director_Filii nologin;
Alter Role
Worker_Filii nologin;
Alter Role Oper
nologin;
Группировка индивидуальных
субъектов безопасности.
Grant Klient To ABC;
Grant Klient To
IBM;
Grant Klient To
Ivanov;
Grant Klient To
Petrov;
Grant Klient To
Sidorov;
Grant
Director_Filii To Kornienko;
Grant Oper To
Djavr;
Grant Oper To
Salmin;
Grant Oper To
Kirich;
Grant
Worker_Filii To Manko;
Grant
Worker_Filii To Yanovskiy;
Механизм представлений языка SQL
позволяет различными способами разделить базу данных на части таким образом,
чтобы очень важная информация была скрыта от несанкционированных пользователей.
Create Table Klients
(Klient_ID, - -идентификатор
клиента
Name_Klient, - -имя клиента
Data_BD - -дата рождения клиента)
Without oids;
Alter table
Klients owner to Klient;
Comment on
table Klient IS ’Информация о клиентах
Comment on
column Klient. Klient_ID IS ‘Идентификатор клиента
Comment on
column Klient. Name IS ‘Имя клиента
Comment on
column Klient. Data_BD IS ‘Дата рождения клиента
Для установки привиллегий
доступа используется команда:
GRANT список_привиллегий ON
таблица TO роль
Grant select,
insert ON Klients TO Klient
Create Table Dirs
(Dir_ID, - -идентификатор
Name_Dir, - -имя
Data_BD - -дата
рождения) Without oids;
Alter table
Dirs owner to Director_Filii;
Comment on
table Dirs IS ’Информация о директорах
Comment on
column Dirs. Dir_ID IS ‘Идентификатор
Comment on
column Dirs. Name_Dir IS ‘Имя
Comment on
column Dirs. Data_BD IS ‘Дата рождения
Для установки привиллегий
доступа используется команда:
GRANT список_привиллегий ON
таблица TO роль
Grant select,
insert, update, delete ON Dirs TO Director_Filii
Create Table Opers
(Oper_ID, - -идентификатор
Name_Oper, - -имя
Data_BD - -дата
рождения) Without oids;
Alter table
Opers owner to Oper;
Comment on
table Opers IS ’Информация о операционистах
Comment on
column Opers. Oper_ID IS ‘Идентификатор
Comment on
column Opers. Name_Oper IS ‘Имя
Comment on
column Opers. Data_BD IS ‘Дата рождения
Для установки привиллегий
доступа используется команда:
GRANT список_привиллегий ON
таблица TO роль
Grant select,
insert, update, ON Opers TO Oper
Create Table
Workers
(Worker_ID, - -идентификатор
Name_Worker, - -имя
Data_BD - -дата
рождения) Without oids;
Alter table
Workers owner to Worker_Filii;
Comment on
table Workers IS ’Информация о работниках филии
Comment on
column Workers. Worker_ID IS ‘Идентификатор
Comment on
column Workers. Name_Worker IS ‘Имя
Comment on
column Workers. Data_BD IS ‘Дата рождения
Для установки привиллегий
доступа используется команда:
GRANT список_привиллегий ON
таблица TO роль
Grant select ON
Workers TO Worker_Filii
В действующем стандарте языка
SQL предусматривается поддержка только избирательного управления доступом. Она
основана на двух более или менее независимых частях SQL. Одна из них называется
механизмом представлений, который может быть использован для скрытия очень
важных данных от несанкционированных пользователей. Другая называется
подсистемой полномочий и наделяет одних пользователей правом избирательно и
динамично задавать различные полномочия другим пользователям, а также отбирать
такие полномочия в случае необходимости.
CREATE SCHEMA DIRECTOR;
‘Для включения пользователя в
схему используется команда:
ALTER SCHEMA
DIRECTOR OWNER TO KORNIENKO;
‘выполнении запросов к схеме:
SELECT FROM DIRECTOR. KORNIENKO;
‘установления порядка доступа к
схемe
SET
SEARCH_PATH TO public;
SET
SEARCH_PATH TO director, public;
CREATE SCHEMA KLIENT;
‘Для включения пользователя в
схему используется команда:
ALTER SCHEMA
KLIENT OWNER TO ABC;
ALTER SCHEMA
KLIENT OWNER TO IBM;
ALTER SCHEMA
KLIENT OWNER TO IVANOV;
ALTER SCHEMA
KLIENT OWNER TO PETROV;
ALTER SCHEMA
KLIENT OWNER TO SIDOROV;
‘выполнении запросов к схеме:
SELECT FROM KLIENT. ABC;
SELECT FROM
KLIENT. IBM;
SELECT FROM
KLIENT. IVANOV;
SELECT FROM
KLIENT. PETROV;
SELECT FROM
KLIENT. SIDOROV;
‘установления
порядка доступа к схемe
SET
SEARCH_PATH TO public;
SET
SEARCH_PATH TO klient, public;
CREATE SCHEMA OPER;
‘Для включения пользователя в
схему используется команда:
ALTER SCHEMA
OPER OWNER TO SALMIN;
ALTER SCHEMA
OPER OWNER TO DJAVR;
ALTER SCHEMA
OPER OWNER TO KIRICH;
‘выполнении запросов к схеме:
SELECT FROM OPER. SALMIN;
SELECT FROM
OPER. DJAVR;
SELECT FROM OPER. KIRICH;
‘установления порядка доступа к
схемe
SET
SEARCH_PATH TO public;
SET
SEARCH_PATH TO oper, public;
CREATE SCHEMA WORKER;
‘Для включения пользователя в
схему используется команда:
ALTER SCHEMA
WORKER OWNER TO MANKO;
ALTER SCHEMA
WORKER OWNER TOYANOVSKIY;
‘выполнении запросов к схеме:
SELECT FROM WORKER. MANKO;
SELECT FROM
WORKER. YANOVSKIY;
‘установления
порядка доступа к схемe
SET
SEARCH_PATH TO public;
SET
SEARCH_PATH TO worker, public;
Политика безопасности - набор
законов, правил и норм поведения, определяющих, как организация обрабатывает,
защищает и распространяет информацию.
Политика безопасности должна
включать в себя по крайней мере следующие элементы: произвольное управление
доступом, безопасность повторного использования объектов, метки безопасности,
принудительное управление доступом.
С точки зрения работы СУБД
рассмотрим три элемента:
произвольное управление доступом;
метки безопасности;
принудительное управление
доступом.
Описание концепции использования
меток безопасности
Полномочное (принудительное) управление
доступом в промышленных СУБД не реализовано на уровне ядра управления. Но в
СУБД присутствуют программные средства для программирования такого управления.
Для реализации полномочного
управления доступом с субъектами и объектами ассоциируются метки безопасности. Метка
субъекта описывает его благонадежность, метка объекта - степень закрытости
содержащейся в нем информации.
Метки безопасности состоят из
двух частей - уровня секретности и списка категорий. Уровни секретности,
поддерживаемые системой, образуют упорядоченное множество, которое может
выглядеть, например, так: совершенно секретно, секретно, конфиденциально,
несекретно.
Категории образуют
неупорядоченный набор. Их назначение - описать предметную область, к которой
относятся данные. В военном окружении каждая категория может соответствовать,
например, определенному виду вооружений.
Главная проблема, которую
необходимо решать в связи с метками, это обеспечение их целостности:
не должно быть непомеченных
субъектов и объектов, иначе в меточной безопасности появятся легко используемые
бреши;
при любых операциях с данными
метки должны оставаться правильными.
Управление метками безопасности
в СУБД
Для реализации полномочного
управления доступом необходимо разрабатывать
дополнительный механизм,
включающий:
дополнительные структуры данных,
хранящие значение меток конфиденциальности обьектов БД (записей таблиц или их
отдельных атрибутов);
дополнительные структуры данных,
хранящие значение уровней доступа субьектов БД (пользователей или их групп);
В СУБД PostgreSQL вышеописанные
пункты механизма можно создать через:
добавление поля таблицы,
содержащего значения метки конфиденциальности
создание таблицы уровней доступа
с двумя полями: имя группы или пользователя, уровень доступа.
CREATE SEQUENCE KLIENTS_ID;
CREATE TABLE
KLIENTS (KLIENTS_ID INTEGER NOT NULL PRIMARY KEY DEFAULT NEXTVAL ('KLIENTS_ID'),
NAME VARCHAR (30),
SEX CHAR (1),
BIRTHDAY DATE,
CONSTRAINT
VALID_SEX CHECK (SEX IN ('Ж','М',’ФИРМА’)));
COMMENT ON
TABLE PERSONS IS
'ТАБЛИЦА
ИНФОРМАЦИИ О КЛИЕНТАХ;
Для создания механизма
управления метками при доступе пользователей и групп пользователей к таблице
persons выполним следующую последовательность шагов.
Шаг 1. Создать справочник
уровней доступа с помощью команды, пример которой представлен ниже.
CREATE TABLE
ACCESS_LEVELS (ACCESS_LEVEL_ID INTEGER PRIMARY KEY,
ACCESS_LEVELVARCHAR
UNIQUE) ;
INSERT INTO
ACCESS_LEVELS VALUES (1,'для общего доступа');
INSERT INTO
ACCESS_LEVELS VALUES (2,'для внутреннего использования');
INSERT INTO
ACCESS_LEVELS VALUES (3,'секретно');
INSERT INTO
ACCESS_LEVELS VALUES (4,'совершенно секретно');
Шаг 2. Создать таблицу,
содержащую матрицу уровней доступа групп пользователей, пример которой
представлен ниже.
DROP TABLE
GROUPS_ACCESS_LEVEL;
CREATE TABLE
GROUPS_ACCESS_LEVEL (GROUP_NAME VARCHAR PRIMARY KEY,
ACCESS_LEVEL
INTEGER REFERENCES
ACCESS_LEVELS
(ACCESS_LEVEL_ID));
Шаг 3. Разграничить права на
таблицу groups_access_level:
REVOKE ALL
ON GROUPS_ACCESS_LEVEL FROM GROUP USERS;
GRANT SELECT
ON GROUPS_ACCESS_LEVEL TO GROUP USERS;
Шаг 4. Присвоить группе users
необходимый уровень доступа
INSERT INTO
GROUPS_ACCESS_LEVEL VALUES ('users',2);
Шаг 5. Добавить в таблицу БД
Klients поле с описанием меток конфиденциальности записей spot_conf:
ALTER TABLE
KLIENTS ADD COLUMN SPOT_CONF INTEGER DEFAULT 1
REFERENCES
ACCESS_LEVELS (ACCESS_LEVEL_ID);
CREATE SEQUENCE
DIRS_ID;
CREATE TABLE
DIRS (DIRS_ID INTEGER NOT NULL PRIMARY KEY DEFAULT NEXTVAL ('KLIENTS_ID'),
NAME VARCHAR (30),
SEX CHAR (1),
BIRTHDAY DATE,
CONSTRAINT
VALID_SEX CHECK (SEX IN ('Ж','М
)));
COMMENT ON TABLE PERSONS IS
'ТАБЛИЦА ИНФОРМАЦИИ О ДИРЕКТОРАХ;
Для создания механизма
управления метками при доступе пользователей и групп пользователей к таблице
persons выполним следующую последовательность шагов.
Шаг 1. Создать справочник
уровней доступа с помощью команды, пример которой представлен ниже.
CREATE TABLE
ACCESS_LEVELS (ACCESS_LEVEL_ID INTEGER PRIMARY KEY,
ACCESS_LEVELVARCHAR
UNIQUE) ;
INSERT INTO
ACCESS_LEVELS VALUES (1,'для общего доступа');
INSERT INTO
ACCESS_LEVELS VALUES (2,'для внутреннего использования');
INSERT INTO
ACCESS_LEVELS VALUES (3,'секретно');
INSERT INTO
ACCESS_LEVELS VALUES (4,'совершенно секретно');
Шаг 2. Создать таблицу,
содержащую матрицу уровней доступа групп пользователей, пример которой
представлен ниже.
DROP TABLE
GROUPS_ACCESS_LEVEL;
CREATE TABLE
GROUPS_ACCESS_LEVEL (GROUP_NAME VARCHAR PRIMARY KEY,
ACCESS_LEVEL
INTEGER REFERENCES
ACCESS_LEVELS
(ACCESS_LEVEL_ID));
Шаг 3. Разграничить права на
таблицу groups_access_level:
REVOKE ALL
ON GROUPS_ACCESS_LEVEL FROM GROUP USERS;
GRANT SELECT
ON GROUPS_ACCESS_LEVEL TO GROUP USERS;
Шаг 4. Присвоить группе users
необходимый уровень доступа
INSERT INTO
GROUPS_ACCESS_LEVEL VALUES ('users',2);
Шаг 5. Добавить в таблицу БД
Klients поле с описанием меток конфиденциальности записей spot_conf:
ALTER TABLE
DIRS ADD COLUMN SPOT_CONF INTEGER DEFAULT 1
REFERENCES
ACCESS_LEVELS (ACCESS_LEVEL_ID);
CREATE SEQUENCE OPERS_ID;
CREATE TABLE
OPERS (OPERS_ID INTEGER NOT NULL PRIMARY KEY DEFAULT NEXTVAL ('KLIENTS_ID'),
NAME VARCHAR (30),
SEX CHAR (1),
BIRTHDAY DATE,
CONSTRAINT
VALID_SEX CHECK (SEX IN ('Ж','М
)));
COMMENT ON TABLE PERSONS IS
'ТАБЛИЦА ИНФОРМАЦИИ ОБ
ОПЕРАЦИОНИСТАХ;
Для создания механизма
управления метками при доступе пользователей и групп пользователей к таблице
persons выполним следующую последовательность шагов.
Шаг 1. Создать справочник
уровней доступа с помощью команды, пример которой представлен ниже.
CREATE TABLE
ACCESS_LEVELS (ACCESS_LEVEL_ID INTEGER PRIMARY KEY,
ACCESS_LEVELVARCHAR
UNIQUE) ;
INSERT INTO
ACCESS_LEVELS VALUES (1,'для общего доступа');
INSERT INTO
ACCESS_LEVELS VALUES (2,'для внутреннего использования');
INSERT INTO
ACCESS_LEVELS VALUES (3,'секретно');
INSERT INTO
ACCESS_LEVELS VALUES (4,'совершенно секретно');
Шаг 2. Создать таблицу,
содержащую матрицу уровней доступа групп пользователей, пример которой
представлен ниже.
DROP TABLE
GROUPS_ACCESS_LEVEL;
CREATE TABLE
GROUPS_ACCESS_LEVEL (GROUP_NAME VARCHAR PRIMARY KEY,
ACCESS_LEVEL
INTEGER REFERENCES
ACCESS_LEVELS
(ACCESS_LEVEL_ID));
Шаг 3. Разграничить права на
таблицу groups_access_level:
REVOKE ALL
ON GROUPS_ACCESS_LEVEL FROM GROUP USERS;
GRANT SELECT
ON GROUPS_ACCESS_LEVEL TO GROUP USERS;
Шаг 4. Присвоить группе users
необходимый уровень доступа
INSERT INTO
GROUPS_ACCESS_LEVEL VALUES ('users',2);
Шаг 5. Добавить в таблицу БД
Klients поле с описанием меток конфиденциальности записей spot_conf:
ALTER TABLE
OPERS ADD COLUMN SPOT_CONF INTEGER DEFAULT 1
REFERENCES
ACCESS_LEVELS (ACCESS_LEVEL_ID);
CREATE SEQUENCE
WORKERS_ID;
CREATE TABLE
WORKERS (WORKERS_ID INTEGER NOT NULL PRIMARY KEY DEFAULT NEXTVAL ('KLIENTS_ID'),
NAME VARCHAR (30),
SEX CHAR (1),
BIRTHDAY DATE,
CONSTRAINT
VALID_SEX CHECK (SEX IN ('Ж','М
)));
COMMENT ON TABLE PERSONS IS
'ТАБЛИЦА ИНФОРМАЦИИ О РАБОТНИКАХ
ФИЛИАЛА;
Для создания механизма
управления метками при доступе пользователей и групп пользователей к таблице
persons выполним следующую последовательность шагов.
Шаг 1. Создать справочник
уровней доступа с помощью команды, пример которой представлен ниже.
CREATE TABLE
ACCESS_LEVELS (ACCESS_LEVEL_ID INTEGER PRIMARY KEY,
ACCESS_LEVELVARCHAR
UNIQUE) ;
INSERT INTO
ACCESS_LEVELS VALUES (1,'для общего доступа');
INSERT INTO
ACCESS_LEVELS VALUES (2,'для внутреннего использования');
INSERT INTO
ACCESS_LEVELS VALUES (3,'секретно');
INSERT INTO
ACCESS_LEVELS VALUES (4,'совершенно секретно');
Шаг 2. Создать таблицу,
содержащую матрицу уровней доступа групп пользователей, пример которой
представлен ниже.
DROP TABLE
GROUPS_ACCESS_LEVEL;
CREATE TABLE
GROUPS_ACCESS_LEVEL (GROUP_NAME VARCHAR PRIMARY KEY,
ACCESS_LEVEL
INTEGER REFERENCES
ACCESS_LEVELS
(ACCESS_LEVEL_ID));
Шаг 3. Разграничить права на
таблицу groups_access_level:
REVOKE ALL
ON GROUPS_ACCESS_LEVEL FROM GROUP USERS;
GRANT SELECT
ON GROUPS_ACCESS_LEVEL TO GROUP USERS;
Шаг 4. Присвоить группе users
необходимый уровень доступа
INSERT INTO
GROUPS_ACCESS_LEVEL VALUES ('users',2);
Шаг 5. Добавить в таблицу БД
Klients поле с описанием меток конфиденциальности записей spot_conf:
ALTER TABLE
WORKERS ADD COLUMN SPOT_CONF INTEGER DEFAULT 1
REFERENCES
ACCESS_LEVELS (ACCESS_LEVEL_ID);
Принудительное управление
доступом основано на сопоставлении меток безопасности субъекта и объекта. Способ
управления доступом называется принудительным, поскольку он не зависит от воли
субъектов (даже системных администраторов). После того, как зафиксированы метки
безопасности субъектов и объектов, оказываются зафиксированными и права доступа.
Правила использования меток:
субъект может читать информацию из
объекта, если уровень секретности субъекта не ниже, чем у объекта, а все
категории, перечисленные в метке безопасности объекта, присутствуют в метке
субъекта;
субъект может записывать
информацию в объект, если метка безопасности объекта совпадает (или доминирует)
с меткой субъекта.
Реализация принудительного
управления доступом в СУБД
Для реализации полномочного
управления доступом необходимо разрабатывать
дополнительный механизм,
включающий:
механизмы ограничения доступа по
чтению субьектами данных таблиц с учетом имен правил управления доступом по
чтению данных;
механизмы ограничения доступа по
модификации субьектами данных таблиц (внесение, изменение, удаление) с учетом
имен правил управления доступом по модификации данных.
В СУБД PostgreSQL вышеописанные
пункты механизма можно создать через:
создание виртуальной таблицы (view),
учитывающей таблицу БД, таблицу уровней доступа и имя текущего пользователя,
работающего с БД;
создание правил (rules),
перехватывающих операции внесения, изменения и удаления, выполняемых
пользователями над таблиц БД
Для реализации принудительного
управления доступом к таблице KLIENTS со стороны пользователей и групп
пользователей СУБД необходимо выполнить следующие шаги.
Шаг 1. Создать виртуальную
таблицу (view), учитывающую таблицу KLIENTS, таблицу уровней доступа, имя
текущего пользователя, работающего с БД, позволяющую в дальнейшем разграничить
доступ пользователей к отдельным записям таблицы KLIENTS.
CREATE OR
REPLACE VIEW KLIENTS_LIST AS
SELECT
PERSON_ID, NAME, SEX, BIRTHDAY
FROM PG_GROUP
G, PG_USER U, KLIENTS P,
GROUPS_ACCESS_LEVEL
L
WHERE
USENAME =
CURRENT_USER AND
U. USESYSID =
ANY (G. GROLIST) AND
L. GROUP_NAME =
G. GRONAME AND
P. SPOT_CONF
<= L. ACCESS_LEVEL;
При создании таблицы
используется:
функция CURRENT_USER, возвращающая
имя текущего пользователя.
функция ANY (G. GROLIST) возвращающая
любое из значений массива G. GROLIST
Шаг 2. Для того, чтобы
пользователи могли работать только с виртуальной таблицей,
необходимо снять права доступа с
реальной таблицы БД и установить права на чтение на виртуальную.
Снять права доступа к реальной
таблицы:
REVOKE ALL ON
KLIENTS FROM GROUP USERS;
Установить права доступа на
виртуальную таблицу:
GRANT SELECT ON
KLIENTS_LIST TO GROUP USERS;
Шаг 3. Проверить работу
механизма
Заполнить таблицу persons
тестовыми данными:
INSERT INTO
KLIENTS_LIST VALUES (1,'ABC','ФИРМА','12-11-1980');
UPDATE KLIENTS
SET SPOT_CONF = 1;
INSERT INTO
KLIENTS _LIST VALUES (1,'IBM','ФИРМА','30-12-1988');
UPDATE KLIENTS
SET SPOT_CONF = 1;
INSERT INTO
KLIENTS_LIST VALUES (1,'IVANOV','М','11-10-1965');
UPDATE KLIENTS
SET SPOT_CONF = 1;
INSERT INTO
KLIENTS_LIST VALUES (1,'PETROV','М','17-02-1989');
UPDATE KLIENTS
SET SPOT_CONF = 1;
INSERT INTO
KLIENTS_LIST VALUES (1,'SIDOROV','М','23-05-1975');
UPDATE KLIENTS
SET SPOT_CONF = 1;
Для проверки работы механизма
необходимо соединиться с БД, используя имя пользователя ABC.
Выполнить пользователем director
два запроса для проверки работы механизма:
SELECT FROM
KLIENTS;
SELECT FROM
KLIENTS_LIST;
Изменить метку
конфиденциальности отдельных записей пользователем-администратором:
UPDATE KLIENTS
SET SPOT_CONF = 3 WHERE KLIENTS_ID = 2;
Повторно проверить работу
механизма пользователем ABC:
SELECT FROM
KLIENTS_LIST;
Шаг 4. Создать
правила (rules), перехватывающие операции внесения, изменения и
удаления, выполняемые
пользователями над таблиц KLIENTS
Создать правило на операции
внесения, пример которого представлен ниже:
DROP RULE
KLIENTS_LIST_INSERT ON KLIENTS_LIST;
CREATE RULE
KLIENTS_LIST_INSERT AS ON INSERT TO
KLIENTS _LIST
DO INSTEAD
INSERT INTO
KLIENTS
SELECT CASE
WHEN NEW. KLIENTS _ID IS NULL
THEN NEXTVAL ('
KLIENTS _ID') ELSE NEW. KLIENTS _ID END,
NEW. NAME, NEW.
SEX, NEW. BIRTHDAY, L. ACCESS_LEVEL
FROM PG_GROUP
G, PG_USER U, GROUPS_ACCESS_LEVEL L
WHERE
U. USENAME =
CURRENT_USER AND
U. USESYSID =
ANY (G. GROLIST) AND
L. GROUP_NAME =
G. GRONAME;
Предоставить права на внесение
записей в виртуальной таблице:
GRANT INSERT ON
KLIENTS _LIST TO GROUP USERS;
GRANT
SELECT,UPDATE ON KLIENTS _ID TO GROUP USERS;
Проверить работу механизма:
INSERT INTO
KLIENTS _LIST VALUES (21,'IVANOV','М','10-10-1980');
Создать правило на операции
изменения, пример которого представлен ниже:
DROP RULE
KLIENTS _LIST_UPDATE ON KLIENTS _LIST;
CREATE RULE
KLIENTS _LIST_UPDATE AS ON UPDATE
TO KLIENTS
_LIST
DO INSTEAD
UPDATE KLIENTS
SET KLIENTS _ID = NEW. KLIENTS _ID,
NAME = NEW. NAME,
SEX = NEW. SEX, BIRTHDAY = NEW. BIRTHDAY,
SPOT_CONF = L. ACCESS_LEVEL
FROM PG_GROUP
G, PG_USER U, GROUPS_ACCESS_LEVEL L
WHERE
KLIENTS _ID =
OLD. KLIENTS _ID AND
SPOT_CONF = L. ACCESS_LEVEL
AND
U. USENAME =
CURRENT_USER AND
U. USESYSID =
ANY (G. GROLIST) AND
L. GROUP_NAME =
G. GRONAME;
Предоставить права на изменение
записей в виртуальной таблице:
GRANT UPDATE ON
KLIENTS _LIST TO GROUP USERS;
Проверить работу правила:
UPDATE KLIENTS
_LIST SET NAME = 'IVANOV' WHERE KLIENTS _ID = 21;
Создание правил на операции
удаления, пример которого представлен ниже:
DROP RULE
KLIENTS _LIST_DELETE ON KLIENTS _LIST;
CREATE RULE
KLIENTS _LIST_DELETE AS ON DELETE TO
KLIENTS _LIST
DO INSTEAD
DELETE FROM
KLIENTS WHERE
KLIENTS _ID =
OLD. PERSON_ID AND
SPOT_CONF =
GROUPS_ACCESS_LEVEL. ACCESS_LEVEL AND
PG_USER. USENAME
= CURRENT_USER AND
PG_USER. USESYSID
= ANY (PG_GROUP. GROLIST) AND
GROUPS_ACCESS_LEVEL.
GROUP_NAME = PG_GROUP. GRONAME;
Предоставить права на удаление
записей в виртуальной таблице:
GRANT DELETE ON
KLIENTS_LIST TO GROUP USERS;
Проверить работу механизма:
DELETE FROM
KLIENTS_LIST WHERE KLIENTS_ID = 2;
Для реализации принудительного
управления доступом к таблице OPERS со стороны пользователей и групп
пользователей СУБД необходимо выполнить следующие шаги.
Шаг 1. Создать виртуальную
таблицу (view), учитывающую таблицу OPERS, таблицу уровней доступа, имя
текущего пользователя, работающего с БД, позволяющую в дальнейшем разграничить
доступ пользователей к отдельным записям таблицы OPERS.
CREATE OR
REPLACE VIEW OPERS_LIST AS
SELECT
OPERS_ID, NAME, SEX, BIRTHDAY
FROM PG_GROUP
G, PG_USER U, KLIENTS P,
GROUPS_ACCESS_LEVEL
L
WHERE
USENAME =
CURRENT_USER AND
U. USESYSID =
ANY (G. GROLIST) AND
L. GROUP_NAME =
G. GRONAME AND
P. SPOT_CONF
<= L. ACCESS_LEVEL;
При создании таблицы
используется:
функция CURRENT_USER, возвращающая
имя текущего пользователя.
функция ANY (G. GROLIST) возвращающая
любое из значений массива G. GROLIST
Шаг 2. Для того, чтобы
пользователи могли работать только с виртуальной таблицей,
необходимо снять права доступа с
реальной таблицы БД и установить права на чтение на виртуальную.
Снять права доступа к реальной
таблицы:
REVOKE ALL ON
OPERS FROM GROUP USERS;
Установить права доступа на
виртуальную таблицу:
GRANT SELECT ON
OPERS_LIST TO GROUP USERS;
Шаг 3. Проверить работу
механизма
Заполнить таблицу persons
тестовыми данными:
INSERT INTO
OPERS_LIST VALUES (1,'SALMIN','M','15-10-1988');
UPDATE OPERS
SET SPOT_CONF = 1;
INSERT INTO
OPERS_LIST VALUES (1,KIRICHUK','M','30-12-1988');
UPDATE OPERS
SET SPOT_CONF = 1;
Для проверки работы механизма
необходимо соединиться с БД, используя имя пользователя ABC.
Выполнить пользователем director
два запроса для проверки работы механизма:
SELECT FROM
OPERS;
SELECT FROM
OPERS_LIST;
Изменить метку
конфиденциальности отдельных записей пользователем-администратором:
UPDATE OPERS
SET SPOT_CONF = 3 WHERE OPERS_ID = 2;
Повторно проверить работу
механизма пользователем ABC:
SELECT FROM
OPERS_LIST;
Шаг 4. Создать
правила (rules), перехватывающие операции внесения, изменения и
удаления, выполняемые
пользователями над таблиц OPERS
Создать правило на операции
внесения, пример которого представлен ниже:
DROP RULE
OPERS_LIST_INSERT ON OPERS_LIST;
CREATE RULE
OPERS_LIST_INSERT AS ON INSERT TO
OPERS_LIST
DO INSTEAD
INSERT INTO
OPERS
SELECT CASE
WHEN NEW. OPERS _ID IS NULL
THEN NEXTVAL (
OPERS _ID') ELSE NEW. OPERS_ID END,
NEW. NAME, NEW.
SEX, NEW. BIRTHDAY, L. ACCESS_LEVEL
FROM PG_GROUP
G, PG_USER U, GROUPS_ACCESS_LEVEL L
WHERE
U. USENAME =
CURRENT_USER AND
U. USESYSID =
ANY (G. GROLIST) AND
L. GROUP_NAME =
G. GRONAME;
Предоставить права на внесение
записей в виртуальной таблице:
GRANT INSERT ON
OPERS_LIST TO GROUP USERS;
GRANT
SELECT,UPDATE ON OPERS_ID TO GROUP USERS;
Проверить работу механизма:
INSERT INTO
KLIENTS _LIST VALUES (21,'IVANOV','М','10-10-1980');
Создать правило на операции
изменения, пример которого представлен ниже:
DROP RULE
OPERS_LIST_UPDATE ON OPERS_LIST;
CREATE RULE
OPERS_LIST_UPDATE AS ON UPDATE
TO OPERS_LIST
DO INSTEAD
UPDATE OPERS
SET OPERS_ID = NEW. OPERS_ID,
NAME = NEW. NAME,
SEX = NEW. SEX, BIRTHDAY = NEW. BIRTHDAY,
SPOT_CONF = L. ACCESS_LEVEL
FROM PG_GROUP
G, PG_USER U, GROUPS_ACCESS_LEVEL L
WHERE
OPERS_ID = OLD.
OPERS_ID AND
SPOT_CONF = L. ACCESS_LEVEL
AND
U. USENAME =
CURRENT_USER AND
U. USESYSID =
ANY (G. GROLIST) AND
L. GROUP_NAME =
G. GRONAME;
Предоставить права на изменение
записей в виртуальной таблице:
GRANT UPDATE ON
OPERS_LIST TO GROUP USERS;
Проверить работу правила:
UPDATE
OPERS_LIST SET NAME = 'SALMIN' WHERE OPERS_ID =1;
Создание правил на операции
удаления, пример которого представлен ниже:
DROP RULE
OPERS_LIST_DELETE ON OPERS_LIST;
CREATE RULE
OPERS_LIST_DELETE AS ON DELETE TO
OPERS_LIST
DO INSTEAD
DELETE FROM
OPERS WHERE
OPERS_ID = OLD.
OPERS_ID AND
SPOT_CONF =
GROUPS_ACCESS_LEVEL. ACCESS_LEVEL AND
PG_USER. USENAME
= CURRENT_USER AND
PG_USER. USESYSID
= ANY (PG_GROUP. GROLIST) AND
GROUPS_ACCESS_LEVEL.
GROUP_NAME = PG_GROUP. GRONAME;
Предоставить права на удаление записей
в виртуальной таблице:
GRANT DELETE ON
OPERS_LIST TO GROUP USERS;
Проверить работу механизма:
DELETE FROM
OPERS_LIST WHERE OPERS_ID = 2;
Записи в файле могут иметь
следующие формы:
local имя_БД имя_пользователя метод_доступа
host имя_БД имя_пользователя IP-адрес
метод_доступа
hostssl имя_БД имя_пользователя IP-адрес
метод_доступа
Первое поле записи - тип
соединения:
local - Unix-сокет соединение
без использования протокола TCP/IP,
host - соединение с
использованием протокола TCP/IP
hostssl - соединение с
использованием протокола TCP/IP SSL-протокола
Второе поле - имя БД, может
принимаит значения:
all - разрешен доступ ко всем БД
СУБД
sameuser - разрешен доступ к БД,
имя которой совпадает с именем пользователя
имя БД или список имен,
разделенных запятой
Третье поле - имя пользователя
или список имен, разделенных запятой
Четвертое поле - IP-адрес
компьютера, которому разрешен доступ или маска адреса.
Пятое поле - метод доступа:
trust - доступ без пароля
reject - доступ запрещен
password - доступ по
нешифруемому паролю
crypt - доступ по шифруемому
паролю алгоритмом crypt
md5 - доступ по шифруемому
паролю алгоритмом md5
Тип соединения |
Имя БД |
Имя пользователя |
IP: |
Тип аути/и: |
host |
Банк |
АВС |
183.22.12.1 |
md5 |
host |
Банк |
IBM |
183.22.12.2 |
md5 |
hostssl |
Банк |
Иванов А.А. |
183.22.12.3 |
md5 |
hostssl |
Банк |
Петров П.П. |
183.22.12.4 |
md5 |
hostssl |
Банк |
Сидоров В.Г. |
183.22.12.5 |
md5 |
hostssl |
Банк |
Джавров В.Г. |
183.22.12.6 |
md5 |
hostssl |
Банк |
Салмин Ю.Л. |
184.22.12.1 |
md5 |
hostssl |
Банк |
Киричук А.Г. |
184.22.12.2 |
md5 |
hostssl |
Банк |
Корниенко В.А. |
127.0.0.1 |
trust |
local |
Банк |
Манько А.А. |
183.22.12.2 |
md5 |
local |
Банк |
Яновский Г.Х. |
184.22.12.3 |
md5 |
Преимущество криптосистемы с
открытым ключом - простота обмена ключами. В то же время при использовании
глобальных компьютерных сетей у пользователей должна быть уверенность в том,
что открытые ключи, которые они получают от других пользователей принадлежат
именно им.
Для обеспечения такой
уверенности необходимо реализовать механизмы безопасного распределения ключами.
Распределение может
осуществляться двумя способами:
1. Путем создания центра
генерации и распределения ключей;
2. Путем прямого обмена ключами
между абонентами, которые хотят обмениваться подписанными сообщениями.
Недостатки первого подхода:
центр владеет полной информацией
о том, кто и какой ключ использует.
компрометация центра
распределения приводит к компрометации всей передаваемой между абонентами этого
центра информации.
знание секретных ключей
абонентов позволяет нечистым на руку сотрудникам центра фальсифицировать
определенные документы, которые передаются в системе обмена информацией.
Недостаток второго подхода в
распределении - необходимость подтверждения достоверности каждого абонента из
тех, что принимают участие в обмене.
Подтверждение достоверности
абонентов может осуществляться таким образом:
1. Непосредственно между
абонентами.
2. С использованием посредника (арбитра).
3. С использованием двух и более
посредников.
Непосредственный обмен между
абонентами применяется в том случае, если абонентов всего двое. Для обмена
ключами в данном случае может быть использован алгоритм распределения ключей
Дифи-Хелмана. Однако такой способ имеет следующими недостатками:
в распределенных сетях, которые
насчитывают не один десяток абонентов такой обмен осложняется;
возможна атаки "человек
посередине".
Пользователи А и В обмениваются
своими открытыми ключами с целью выполнения передачи по открытому каналу связи
шифртекста. Противник П перехватывает их открытые ключи, создает два своих
подкрытых ключа (ОПА, ОПВ) и передает их пользователям вместо реальных. Пользователи
допускают, что владеют реальными открытыми ключами друг друга, поскольку в них
нет способа проверить их достоверность, поэтому они могут шифровать свои
сообщения, используя открытые ключи друг друга. В дальнейшем, если противник
перехватит шифр-текст, передаваемый между пользователями, он сможет его
расшифровывать. Для того, чтобы пользователи не догадались о перехвате,
противник повторно шифрует расшифрованное сообщение с помощью реального
открытого ключа пользователя, какой он хранит у себя.
Использование посредника может
применяться в корпоративных сетях, в которых существует так называемый центр
верификации или сертификации ключей. Данный центр удостоверяет открытые ключи
пользователей. Подтверждение достоверности ключей может реализовываться либо
путем формирования справочника открытых ключей, либо путем выдачи сертификатов,
которые передаются вместе с сообщением. Данным сертификатом является ключ для
проверки подписи и некоторую информацию о пользователе. В данном случае
достаточно проверить подпись Центра в сертификате, чтобы удостовериться в
достоверности ключа абонента.
Использование двух и более
посредников может применяться в том случае, когда необходимо обеспечить обмен
подписанными сообщениями между несколькими корпоративными сетями, в каждой из
которых существует свой центр сертификации.
Эффективность использования
сертификатов оказалась при создании web-технологий доступа клиентов, которые
используют web-навигатор, к ресурсам, которые предоставляются web-сервером. Для
того, чтобы навигатор смог успешно аутентифікувати web-сервер, необходимо
создавать правильный сертификат web-сервера, который будет содержать:
открытый ключ web-сервера;
даты достоверности (начала и
окончания);
поддерживаемые алгоритмы
шифровки
уникальное имя (Distinguish Name
- DN), которое должно содержать полностью определенное доменное имя
web-сервера, званое общим именем (Common Name - CN). Опционально DN может
содержать и некоторые другие атрибуты, например, страну (Country - С), штат (State
- S), Расположение (Location - L), назову организации (Organization's name - ON),
назову службы организации (Organization Unit's name - OU), и другие.
серийный номер сертификата;
атрибуты X.509v3, которые будут
сообщать web-навигатору о типе и употреблении
имя и подпись доверенного
источника сертификатов (Certification Authority - CA)создание сертификатов
можно использовать утилиту ореnssl, которая включает много сервисов по
криптографическим алгоритмам.
Существует три типа сертификатов,
которые можно использовать в web-технологиях:
1. Самоподписанный сертификат.
2. Сертификат, подписанный
доверенным центром сертификации (CA).
3. Сертификат, подписанный
местным CA.
Алгоритм создания сертификата
имеет следующие шаги:
Шаг 1. Создание пара
закрытого/открытого ключа (файл server. key) и запроса сертификата (файл
request. pem):
ореnssl req - new
- sha1 - newkey rsa: 1024 - nodes - keyout server. key - out request. pem \
subj '/O=BANK
/OU=KARAMANOV. BANK /CN=www.karamanov. bank. od.ua'


Сертификат также может быть
подписан алгоритмами: md5, sha1, md2, mdc2.
Для проверки подписи запроса на
сертификат, расположенного в файле request. pem, и просмотр содержания запроса
в текстовом виде использовать команды: ореnssl req - іn request. pem - text - verify
noout

Параметр "-text" позволяет
вывести содержание сертификата в текстовом виде, параметр "verify" проверяет
подпись запроса, созданную по алгоритму SHA1.
Шаг 2. Отсылка запроса на
получение сертификата (request. pem) в СА и ожидание, пока он будет подписан и
отослан назад в виде сертификата.
Шаг 3. По получении сертификата
от доверенного СА необходимо удостовериться в том, что он закодирован в формате
PEM, а не TXT или DER. Если же полученный сертификат не отвечает формату РЕМ,
то необходимо конвертировать его в каком бы формате он не пришел. Команда для
конвертации формата TXT + PEM в РЕМ:
ореnssl x509 -іn server. pem - out
server. Crt

Шаг 4. Верификация и
тестирование сертификата
Необходимо убедиться в том, что
сертификат отвечает раньше созданному закрытому ключу, на основании выполненных
команд (результаты выполнения обоих команд должны быть одинаковыми):
ореnssl x509 - noout
- modulus - іn server. Crt

В вышеописанных командах
параметр - modulus позволяет получить из сертификата файла
server. crt или закрытого
/відкритого ключа файла server. keyвідкритий ключ. Используя конвеер данных
результаты команд пропускаются через хеш-функцию. Если результаты работы двух
функций одинаковые, полученный сертификат отвечает раньше созданному закрытому
ключу.
Этот метод может быть
использован в интрасетях или в организациях, которые используют или планируют
использовать собственный центр сертификации (СА - Certificate Agency). В этом
случае местный сертификат СА должен быть установлен на все веб-навигаторы,
которые будут соединяться с безопасным web-сервером.
Для использования этого способа
необходимо создать:
локальный закритий/відктритий
ключ СА;
сертификат СА;
репозиторий СА для новых ключей.
Для обеспечения надежности всей
системы сертификации необходимо выполнить
следующие условия:
локальный СА должен быть создан
на отдельном сервере, который не имеет соединения
с сетью;
операционная система должна
давать доступ только авторизованному персоналу;
сервер СА должен быть под
охраной.
Частный СА ключ - самый важный
элемент всей системы - если он будет компрометируемый, то все другие
сертификаты, подписанные этим СА также будут
компрометируемые.
Алгоритм создания сертификата содержит
следующие шаги.
Шаг 1. Подготовить структуру
каталога для нового СА:
set SSLDIR=c: \ca
mkdir%SSLDIR%
mkdir%SSLDIR%\certs
mkdir%SSLDIR%\crl
mkdir%SSLDIR%\newcerts
mkdir%SSLDIR%\private
mkdir%SSLDIR%\requests
Создать текстовый файл,
например, index. txt, который будет содержать информацию о
созданных сертификатах.
Создать текстовый файл,
например, serial, который содержит следующее значение
идентификатору сертификата в
hex-формате:
echo 01 >%SSLDIR%\serial

можно создать *. bat файл с
данными командами и запустить его.

Шаг 2. Создать основной файл
настроек центра сертификации
Название файла, например,
openssl. cnf. Пример содержания файла (оптимизировано для
использования с SSL
веб-серверами):
#
=================================================
# OpenSSL
configuration file
#
=================================================
RANDFILE = $ENV::
SSLDIR/. rnd
[ca]
default_ca =
CA_default
[CA_default]
# Название каталога CA
dir = c: \ca
# Название каталога с
сертификатами
сеrts = $dir/certs
# Название каталога с новыми
сертификатами, название файла в виде ідентифікатор. pem
(01. pem, 02. pem)new_certs_dir
= $dir/newcerts
# Название каталога с
CRL-файлами (Certificate Revocation List - Список Аннулированных
Сертификатов)crl_dir = $dir/crl
# Название текстового файла,
который будет содержать информацию о созданных
сертификатах
database = $dir/index. txt
# Название текстового файла с
секретным ключом CA
private_key =
$dir/private/ca. key
# Название текстового файла с
сертификатом CA
сеrtificate = $dir/ca. crt
# Название текстового файла,
который содержит следующее значение идентификатору
сертификата в
hex-формате
serial =
$dir/serial
crl = $dir/crl.
pem
RANDFILE =
$dir/private/. rand
# Период
действия сертификата
default_days =
365
# Период
обновления CRL-файлов
default_crl_days
= 30
# Тип хеш-функции, что
используется при установлении подписи
default_md = sha1
# Тип поведения системы при
определении значений DN-атрибутов сертификата
preserve = no
# название секции с
характеристиками переменных, которые входят к DN-атрибутам
сертификата
policy =
policy_anything
name_opt =
ca_default
cert_opt = ca_default
# Секция содержит значение
переменных, которые входят к DN-атрибутам сертификата менно значение, что и
атрибут CA - сертификата. Если значение переменной = 'supplied', то атрибут
должен содержаться в сертификате. Если значение переменной = 'optional', то
атрибут может содержаться в сертификате. Атрибуты, которые не представлены в
секции, будут удалены, если значение переменной preserve = on или опция - preserveDN
отсутствует в командной строке.
[policy_anything]
countryName =
Karamanov. Bank
stateOrProvinceName
= Alexey Karaamnov
localityName =
kaa
organizationName
= bank
organizationalUnitName
= xxx
commonName =
xxxx
emailAddress = onpu@i.ua

Шаг 3. Создать пару СА
закрытый/открытый ключ и самоподписанный сертификат СА:
ореnssl req \
config
$SSLDIR$/openssl. cnf - new - x509 - nodes - days 3652 - sha1 - newkey rsa: 1024
\
keyout
$SSLDIR$/private/ca. key - out $SSLDIR$/ca. crt \
subj
'/C=UA/ST=OdessaRegion/L=Odessa/O=Karamanov.
Bank /OU=bank /CN=www.karamanov. bank. od.ua'

Команда создает новый (-new) самоподписанный
root-сертификат (-x509), который будет
подписан с использованием
алгоритма SHA1 (-sha1). Закрытый (частный) ключ RSA будет иметь длину 1024 бит
(-newkey rsa: 1024), не будет защищен парольной фразой (-nodes). Запрос на
сертификат, что включает открытый ключ, будет содержаться в файле request. pem,
а закрытый ключ будет создан в файле "server. key". Параметр "-subj"
говорит о том, что сертификат создан для компании, которая расположена в
Украине (C=UA), в одесском регионе (ST=OdessaRegion), название компании "ONPU"
(O=ONPU), название службы "kaf_SPO" (OU=kaf_SPO), и полностью
определенное доменное имя "www.spo. ospu. odessa.ua" #@:. Сертификат
может использоваться 10 лет #@;
После выполнения команды будут
созданы файлы:
файл ca. key с закрытым ключом
центра сертификации;
файл ca. crt с сертификатом.
создали закрытый ключ:

создали сертификат:

Для создания сертификата
необходимо выполнить следующие шаги:
Шаг 1. Создать пар закрытый/открытый
ключ веб-сервера (файл web_server. key), и запрос на сертификат (файл
web_request. pem), используя команды:
ореnssl req - new
- sha1 - newkey rsa: 1024 - nodes - keyout web_server. key - out web_request. pem
\
subj
'/O=karamanov. bank /OU=web-server/CN= www.karamanov. bank. od.ua'

Шаг 2. Скопировать запрос на
сертификат (файл web_request. pem) в директорию $SSLDIR/requests на узле центра
сертификации.

Шаг 3. Подписать запрос на
сертификат:
ореnssl ca - cert%SSLDIR%/server.
crt - keyfile%SSLDIR%/server. key \
config%SSLDIR%/openssl.
cnf - policy policy_anything \
noemailDN - out%SSLDIR%/requests/signed.
pem \
infiles%SSLDIR%/requests/web
request. Pem


В результате выполнения этих
команд будет подписан сертификат (файл signed. pem), который будет находится в
каталоге $SSLDIR/newcerts, и в файле $SSLDIR/signed. pem.
Для местных СА в случае
компрометации сертификата строго рекомендуется аннулировать сертификат и
информировать пользователей о том, что сертификат больше не действительный. Для
аннулирования сертификата необходимо отыскать его серийный номер в файле
$SSLDIR/index. txt.
V 031237770121C
01 unknown /O=alexey. karamanov/OU=web_server/CN=karamanov. bank. od.ua’


Видно, что каждая запись
описывает сертификат. Серийный номер содержится в третьих полатях записи. Выбрав
нужный серийный номер, например 01, выполняем следующие команды:
ореnssl ca - config
$SSLDIR/openssl. cnf - revoke $SSLDIR/newcerts/01. pem
Для создания CRL-файла (Certificate
Revocation List - Список Аннулированных Сертификатов), необходимо выполнить
команды:
ореnssl ca - config
$SSLDIR/openssl. cnf - gencrl - crlexts crl_ext - md sha1 - out $SSLDIR/crl. Pem

Этот файл должен быть
опубликован на сайте центра сертификации. В процессе распространения CRL-файлов
также рекомендуется использовать Online Certificate Status Protocol (OCSP).
Создание личного клиентского
сертификата очень похоже на создание сертификата web - сервера. Единственное
отличие заключается в том, что используются другие расширения X.509v3 (секция
"ssl_client" с openssl. cnf), а формат хранения закрытого ключа и
сертификата - PKCS#12
(также называется PFX). Действия,
которые необходимо выполнить для создания клиентского сертификата:
Шаг 1. Создать предназначенный
для пользователя пар закрытый/открытый ключ вместе с запросом на сертификат. Если
выделенный сервер не используется для обслуживания сертификата, то на машине
пользователя необходимо выполнить следующие команды:
ореnssl req - new
- sha1 - newkey rsa: 1024 - nodes - keyout client. key \
out request. pem
- subj '/O=bank /OU=karamanov. bank/CN=director



Шаг 2. Послать запрос на
сертификат (request. pem) в сервер местного центра СА для подписи.
Шаг 3. Задача местного СА -
проверить или правильно пользователь заполнил поля в запросе на сертификат.
Шаг 4. После верификации запрос
на сертификат (request. pem) скопировать в каталог $SSLDIR/requests на сервере
СА.
Шаг 5. Местный СА должен
подписать сертификат, используя команды:
ореnssl ca \
plain-config
$SSLDIR/openssl. cnf - policy policy_anything - еxtensions
ssl_client \
plain-out
$SSLDIR/requests/signed. pem - іnfiles
$SSLDIR/requests/request. pem
Шаг 6. Отослать пользователю
подписанный сертификат (signed. pem).
Шаг 7. По получении подписанного
сертификата пользователю необходимо сберечь закрытый ключ вместе с сертификатом
в формате PKCS#12, используя команды:
ореnssl pkcs12
- еxport - clcerts - іn signed.
pem - іnkey client. key - out client. p12

1. Бабаш А.В., Гольев Ю.И., Ларин Д.А.,
Шанкин Г.П. О развитии криптографии в XIX веке // Защита информации. Конфидент.
5, 2003, с.90-96. (http://www.agentura.ru)2. Гольев Ю.И., Ларин Д.А., Тришин А.Е.,
Шанкин Г.П. Криптографическая деятельность в США XVIII-XIX веков. // Защита
информации. Конфидент. №6, 2004, с.68-74.
3. Тейер Т., Липов М., Нельсон Э. Надежность
программного обеспечения. - Пер. с англ. - М.: Мир, 1981.
4. Липаев В.В. Надежность
программных средств. - М.: Синтег, 1998.
5. Кузнецов И.Н. Научные работы: методика
подготовки и оформления. - Минск, 2000.
6. Понимание SQL. Мартин Грубер,
Вильямс, 2003.
|