Научная статья на тему 'Использование электронных сертификатов для авторизации по доверенности в оС Linux'

Использование электронных сертификатов для авторизации по доверенности в оС Linux Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
334
60
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ЭЛЕКТРОННЫЕ СЕРТИФИКАТЫ / X.509 / LINUX / PAM / OPENSSL / ELECTRONIC CERTIFICATES / AUTHORIZATION BY PROXY

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Рыжков Виктор Игоревич

Предлагается решение для делегирования некоторого набора прав от одного пользователя (доверителя) операционной системы другому (доверенному лицу) на определённый промежуток времени. Для этого предложено использовать «доверенности» объекты, содержащие в себе такие поля, как идентификатор доверителя, идентификатор доверенного лица, время действия доверенности, а также набор прав, делегируемых доверенному лицу доверителем. Доверенность должна содержать также цифровую подпись на закрытом ключе доверителя под всеми вышеперечисленными полями. Предложенное решение реализовано для операционной системы Linux с помощью криптографического инструмента OpenSSL и подключаемых модулей аутентификации (PAM). В качестве доверенностей здесь выступают цифровые сертификаты стандарта X.509 v3, а делегируемые полномочия указываются по определённому формату в поле «Расширения» этих сертификатов. Сам функционал авторизации по доверенности реализован в виде модуля PAM.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Using digital certificates for authorization by proxy in os Linux

In this paper, a solution for delegation of some set of rights from one user (delegator) to another (proxy user) for a fixed time period is proposed. For this goal, it is offered to use "proxies". "Proxy" is an object containing the following fields: delegator's identifier, proxy user's identifier, time period (set by delegator), list of delegated rights, and delegator's digital signature. This solution is implemented for OS Linux using OpenSSL cryptographic toolkit and pluggable authentication modules (PAM). The object "proxy" is designed as X.509 v3 certificate, and the delegated rights are specified at the field of certificate extensions. Authorization by proxy is implemented as PAM module.

Текст научной работы на тему «Использование электронных сертификатов для авторизации по доверенности в оС Linux»

ЛИТЕРАТУРА

1. Schlegel R., Zhang K., Zhou X., et al. Soundcomber: a stealthy and context-aware sound Trojan

for smartphones // Proc. 18th Annual Network and Distributed System Security Symposium

(NDSS ’11), San Diego, CA, February 6-9, 2011. P. 17-33.

УДК 004.94

ИСПОЛЬЗОВАНИЕ ЭЛЕКТРОННЫХ СЕРТИФИКАТОВ ДЛЯ АВТОРИЗАЦИИ ПО ДОВЕРЕННОСТИ В ОС LINUX

В. И. Рыжков

Предлагается решение для делегирования некоторого набора прав от одного пользователя (доверителя) операционной системы другому (доверенному лицу) на определённый промежуток времени. Для этого предложено использовать «доверенности» — объекты, содержащие в себе такие поля, как идентификатор доверителя, идентификатор доверенного лица, время действия доверенности, а также набор прав, делегируемых доверенному лицу доверителем. Доверенность должна содержать также цифровую подпись на закрытом ключе доверителя под всеми вышеперечисленными полями. Предложенное решение реализовано для операционной системы Linux с помощью криптографического инструмента OpenSSL и подключаемых модулей аутентификации (PAM). В качестве доверенностей здесь выступают цифровые сертификаты стандарта X.509 v3, а делегируемые полномочия указываются по определённому формату в поле «Расширения» этих сертификатов. Сам функционал авторизации по доверенности реализован в виде модуля PAM.

Ключевые слова: электронные сертификаты, X.509, Linux, PAM, OpenSSL.

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

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

1) Право переводить пользователя из группы в группу есть, как правило, далеко не у каждого.

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

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

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

1) любой пользователь системы может быть доверителем для любого другого пользователя;

2) пользователь может делегировать только права, принадлежащие ему, и никакие другие;

3) только доверенное лицо может авторизоваться на делегируемые ему права;

4) доверитель может определять промежуток времени, в течение которого доверенное лицо наделяется делегируемыми ему правами.

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

Пусть

— U = {ui,u2,... ,un} — множество пользователей, и каждый пользователь ui Е U имеет пару (xUi ,yUi) —закрытый/открытый ключ. Очевидно, должно выполняться условие хщ = xUj, ущ = yUj для всех i = j;

— G = {gi, g2,..., gk} — множество групп;

— P = {pi,... ,pm} —множество всех возможных прав доступа к объектам;

— T = {0,1, 2,...} —множество целых неотрицательных чисел (время);

— PA : G ^ 2Р — функция, задающая соответствие прав доступа для конкретной группы;

— UA : U ^ 2g — функция, задающая множество групп, на которые может быть авторизован пользователь;

— PROXY — множество доверенностей, объектов вида

proxyUj (g, ¿start, tend) — (B,SigXui (B)^ где В — (ui,uj , g, ¿start, tend); ui,uj Е U;

g С UA(ui); tstart,tend Е T; SigXu, (В) —цифровая подпись В на закрытом ключе пользователя ui. Другими словами, это сертификат, который подтверждает факт делегирования на промежуток времени [tstart, tend] некоторого набора групп g от пользователя щ, который изначально им обладает, пользователю uj, который им изначально может и не обладать.

Определим условия корректности доверенности proxyUj (g, tstart, tend) Е PROXY для пользователя uk Е U, предъявляющего данную доверенность, в момент времени ¿current-

1) ¿current Е [tstart, tend] —условие актуальности доверенности;

2) g С UA(u) —условие обладания доверителя делегируемыми правами;

3) k = j — условие предъявления доверенности доверенным лицом;

4) V(proxyUj (g, tstart, tend)) = true — условие корректности подписи.

Здесь V : PROXY ^ {true, false} — функция проверки цифровой подписи.

Доверенность, удовлетворяющую условиям 1-4, далее будем называть корректной, в противном случае — некорректной.

Используем следующее обозначение: пусть A — некоторое непустое множество, тогда A0 = A U {0}.

Определим функцию assign : U х PROXY0 х T ^ (2G) , которая осуществляет авторизацию на делегированные группы при предъявлении корректной доверенности:

I 0, если z = 0 или z некорректная;

assign(uj , z, ¿current) Л Uj , Ч

l^g, если z = proxyvj (g, ¿start, tend) и z корректная.

Функция groups : U х PROXY0 х T ^ (2G) осуществляет авторизацию пользователей в системе. Определим её следующим образом:

groups(uj, z, ¿current) = UA(uj) U assign(uj,z, ¿current).

Таким образом, если пользователь авторизуется без доверенности или авторизуется с некорректной доверенностью, то он получает ровно те права, которые дают ему группы, в которых он изначально состоит (посредством функции UA). Однако при предъявлении корректной доверенности он может авторизоваться на некий набор групп, которым он изначально не обладал, но который делегировал ему пользователь-доверитель. Требования 1-4 выполняются благодаря использованию доверенностей, в которых явно указаны доверенное лицо, доверитель, определён срок действия, и все эти поля подписаны на закрытом ключе доверителя.

В реализации данного решения для операционной системы Linux в качестве доверенностей используются сертификаты X.509 версии 3 [1]. Сертификаты данного стандарта содержат следующие ключевые поля:

— имя эмитента (кто выдал сертификат);

— имя субъекта (кому выдан сертификат);

— период действия;

— расширения;

— подпись сертификата (с указанием алгоритма хэширования и подписи).

Поле «Расширения» представляет собой набор троек (OID, criticalityFlag, Value), где OID (Object Identifier) используется для именования расширения; criticalityFlag — флаг критичности; Value — значение расширения. Расширения предоставляют возможность внедрения в сертификат произвольной информации до его создания.

Таким образом, сертификаты стандарта X.509 v3 могут использоваться в качестве доверенностей. Для этого в поле «Имя эмитента» необходимо указать имя пользователя-доверителя, в поле «Имя субъекта» — имя доверенного лица, в поле «Расширения» —набор делегируемых прав в системе. Доверителю необходимо также указать период действия доверенности в поле «Период действия» и подписать сертификат на своём закрытом ключе.

Создание доверенностей осуществляется при помощи криптографического инструмента OpenSSL [2]. Функция assign, авторизующая пользователя на делегированные группы (при предъявлении корректной доверенности), реализована в виде модуля PAM [3] — элемента ядра Linux.

ЛИТЕРАТУРА

1. https://www.ietf.org/rfc/rfc5280.txt — RFC 5280: Internet X.509 Public Key

Infrastructure Certificate and Certificate Revocation List (CRL) Profile.

2. http://www.openssl.org/ — OpenSSL: The Open Source toolkit for SSL/TLS.

3. http://www.linux-pam.org/ — A Linux-PAM page.

УДК 004.94

ФОРМИРОВАНИЕ ВЕКТОРОВ ПОКАЗАТЕЛЕЙ ДЛЯ ОБУЧЕНИЯ НЕЙРОННЫХ СЕТЕЙ ПРИ ОБНАРУЖЕНИИ АТАК НА WEB-ПРИЛОЖЕНИЯ

С. Н. Сорокин

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

i Надоели баннеры? Вы всегда можете отключить рекламу.