2 страница

Существующие методы и средства защиты информации можно подразделить на четыре основные группы:

• методы и средства организационно-правовой защиты информации;

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

• криптографические методы и средства защиты информации;

• программно-аппаратные методы и средства защиты информации.

1.3 Политика безопасности в компьютерных системах. Оценка

защищенности

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

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

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

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

В этой главе под "системой" мы будем понимать некоторую совокупность субъектов и объектов и их отношений между ними.

Субъект - активный компонент системы, который может явиться причиной потока информации от объекта к объекту или изменения состояния системы.

Объект - пассивный компонент системы, хранящий, принимающий или передающий информацию. Доступ к объекту подразумевает доступ к содержащейся в нем информации.

Основу политики безопасности составляет способ управления доступом, определяющий порядок доступа субъектов системы к объектам системы. Название этого способа, как правило, определяет название политики безопасности.

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

В настоящее время лучше всего изучены два вида политики безопасности: избирательная и полномочная, основанные, соответственно

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

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

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

Определение прав доступа субъектов к объектам и/или информационным потокам (полномочий субъектов и атрибутов объектов, присвоение меток критичности и т.д.) входит в компетенцию администрации системы.

Избирательная политика безопасности

Основой избирательной политики безопасности является

избирательное управление доступом (ИУД, Discretionary Access Control; DAC), которое подразумевает, что:

• все субъекты и объекты системы должны быть

идентифицированы;

• права доступа субъекта к объекту системы определяются на основании некоторого внешнего (по отношению к системе) правила (свойство избирательности).

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

Матрица доступа представляет собой прямоугольную матрицу, в которой объекту системы соответствует строка, а субъекту - столбец. На пересечении столбца и строки матрицы указывается тип (типы) разрешенного доступа субъекта к объекту. Обычно выделяют такие типы доступа субъекта к объекту как "доступ на чтение", "доступ на запись", "доступ на исполнение" и др.

Множество объектов и типов доступа к ним субъекта может изменяться в соответствии с некоторыми правилами, существующими в данной

системе. Определение и изменение этих правил также является задачей ИУД. Например, доступ субъекта к конкретному объекту может быть разрешен только в определенные дни (дата - зависимое условие), часы (время - зависимое условие), в зависимости от других характеристик субъекта (контекстно-зависимое условие) или в зависимости от характера предыдущей работы. Такие условия на доступ к объектам обычно используются в СУБД. Кроме того, субъект с определенными полномочиями может передать их другому субъекту (если это не противоречит правилам политики

безопасности).

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

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

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

Избирательное управление доступом является основой требований к классам C2 и C1.

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

Полномочная политика безопасности

Основу полномочной политики безопасности составляет полномочное управление доступом (Mandatory Access Control; MAC), которое подразумевает что:

• все субъекты и объекты системы должны быть однозначно

• идентифицированы;

• каждому объекту системы присвоена метка критичности,

• определяющая ценность содержащейся в нем информации;

• каждому субъекту системы присвоен уровень прозрачности (security clearance), определяющий максимальное значение метки критичности объектов, к которым субъект имеет доступ.

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

Каждый субъект кроме уровня прозрачности имеет текущее значение уровня безопасности, которое может изменяться от некоторого

минимального значения до значения его уровня прозрачности.

Для моделирования полномочного управления доступом используется модель Белла-Лападула (Bell-LaPadulla model), включающая в себя понятия безопасного (с точки зрения политики) состояния и перехода. Для принятия решения на разрешение доступа производится сравнение метки критичности объекта с уровнем прозрачности и текущим уровнем безопасности субъекта. Результат сравнения определяется двумя правилами: простым условием защиты (simple security condition) и *-свойством (*- property). В упрощенном виде, они определяют, что информация может передаваться только "наверх", то есть субъект может читать содержимое объекта, если его текущий уровень безопасности не ниже метки критичности объекта, и записывать в него, - если не выше (*-свойство).

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

Полномочное управление доступом составляет основу требований к классу B1 , где оно используется совместно с избирательным управлением.

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

Изначально полномочная политика безопасности была разработана в интересах МО США для обработки информации с различными грифами секретности. Ее применение в коммерческом секторе сдерживается следующими основными причинами:

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

• аналогичной государственной классификации (грифы секретности сведений);

• высокой стоимостью реализации и большими накладными расходами.

Управление информационными потоками

Помимо управления доступом субъектов к объектам системы проблема защиты информации имеет еще один аспект.

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

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

Для этого необходимо построить модель системы, которая может описывать такие потоки. Такая модель разработана Гогеном и Мисгаером

(Goguen Meseguer model) и называется потоковой. Модель описывает условия и свойства взаимного влияния (интерференции) субъектов, а также количество информации, полученной субъектом в результате интерференции.

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

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

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

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

Достоверная вычислительная база

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

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

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

Достоверная вычислительная база (ДВБ; Trusted Computing Base; TCB) - это абстрактное понятие, обозначающее полностью защищенный механизм вычислительной системы (включая аппаратные и программные средства), отвечающий за поддержку реализации политики безопасности.

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

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

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

Рисунок 1.1 - Структура компонентов системы

Для поддержки политики безопасности и собственной защиты ДВБ должна обеспечить защиту субъектов (процессов) системы и защиту объектов системы в оперативной памяти и на внешних носителях.

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

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

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

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

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

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

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

1. Каждый компонент должен выполнять строго определенную функцию;

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

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

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

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

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

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

Доступ к информации на внешних носителях осуществляется с помощью подсистемы ввода-вывода; программы этой подсистемы являются

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

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

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

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

1.5 Механизмы защиты

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

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

Основой ДВБ является ядро безопасности (security kernel) - элементы аппаратного и программного обеспечения, защищенные от модификации и проверенные на корректность, которые разделяют все попытки доступа субъектов к объектам.

Ядро безопасности является реализацией концепции монитора ссылок (reference monitor) - абстрактной концепции механизма защиты.

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

ввода-вывода и др. программно-аппаратные средства, а также системные наборы данных.

Под монитором ссылок понимают концепцию контроля доступа субъектов к объектам в абстрактной машине. Схематически монитор ссылок изображен на рис. 1.2.

Рисунок 1.2 - Монитор ссылок

 

Под базой данных защиты (security database) понимают базу данных, хранящую информацию о правах доступа субъектов системы к объектам. Основу базы данных защиты составляет матрица доступа или ее представления, которая служит основой избирательной политики

безопасности.

Любая операционная система, поддерживающая ИУД, использует

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

Рассмотрим эти способы более подробно:

1. Профиль (profile).

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

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

2. Список контроля доступа (access control list).

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

3. Мандат или билет (capability или ticket).

Это элемент МД, определяющий тип доступа определенного субъекта к определенному объекту (т.е. субъект имеет "билет" на доступ к объекту). Каждый раз билет выдается субъекту динамически - при запросе доступа, и так же динамически билет может быть изъят у субъекта. Поскольку распространение билетов происходит очень динамично, и они могут размещаться непосредственно внутри объектов, то вследствие этого контроль за ним очень затруднен. В чистом виде билетный механизм хранения и передачи привилегий используется редко. Однако реализация других механизмов присвоения привилегий (например с использованием СКД) часто осуществляется с помощью билетов.

При реализации полномочной политики безопасности база данных защиты также содержит метки критичности всех объектов и уровни прозрачности субъектов системы.

Монитор ссылок должен выполнять следующие функции:

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

2. При необходимости регистрировать факт доступа и его параметры в системном журнале.

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

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

• иметь защиту от модификации, подделки, навязывания;

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

• иметь небольшой размер и компактную структуру.

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

1. Идентификация, аутентификация и авторизация субъектов и объектов системы.

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

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

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

Авторизация - предоставление субъекту прав на доступ к объекту.

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

2. Контроль входа пользователя в систему и управление паролями.

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

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








Дата добавления: 2016-02-16; просмотров: 1867;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.037 сек.