Апаратні засоби захисту інформаційних систем

Апаратні засоби захисту інформаційних систем — засоби захисту інформації та інформаційних систем, реалізованих на апаратному рівні. Дані засоби є необхідною частиною безпеки інформаційної системи, хоча розробники апаратури зазвичай залишають вирішення проблеми інформаційної безпеки програмістам.

Інформаційна безпека
Критерії оцінки інформаційної безпеки

Цілісність · Доступність · Конфіденційність · Спостережність· Невідмовність

Нормативні документи

COBIT · ITIL · ISO/IEC 17799:2005 · ISO/IEC 27001:2013 ·

Забезпечення

Політика · СУІБ · КСЗІ · СЗІ

Захист інформації

Технічний захист інформації · Інженерний захист інформації · Криптографічний захист інформації · Організаційний захист інформації

Ця проблема привернула увагу багатьох фірм, у тому числі і таких як Intel. У 80-х роках була розроблена система 432. Але проект спіткала невдача. Можливо, саме після невдачі «гранда» інші фірми відмовилися від цієї ідеї.

Завдання апаратного захисту обчислень було вирішено радянськими розробниками створенням обчислювального комплексу Ельбрус 1. В основі — лежить ідея контролю типів на всіх рівнях системи, в тому числі і на апаратному. Й основна заслуга розробників в планомірній її реалізації[1].

Загальна модель захищеної системи ред.

Розробниками Ельбруса була запропонована наступна модель захищеної інформаційної системи [2].

Інформаційну систему в загальному випадку можна представити, як інформаційний простір та обслуговуюче його й обробляючий пристрій. Обчислення розбиваються на окремі обчислювальні модулі, розташовані в інформаційному просторі. Схему реалізації обчислень можна представити наступним чином:  пристрій, який обробляється, під керівництвом програми може звертатися до цього простору, читаючи й редагуючи його.

Для опису системи введемо поняття

  • вузол
  • посилання
  • контекст програми

Вузол — осередок даних довільного обсягу разом з посиланням на неї з обробного пристрою.

Посилання не тільки описує дані, але і містить усі права доступу до них. Система повинна забезпечувати контроль над тим, щоб в операціях, які використовують посилання, не були використані дані інших типів, а в операціях з аргументами інших типів — посилання не могли бути модифіковані[1].

Контекст програми — безліч всіх доступних даних для обчислень в конкретному модулі.

Базова функціональність моделі захищеної інформаційної системи ред.

Створення сайту довільного об'єму для зберігання даних

Після появи новий вузол повинен бути

  • порожній
  • доступний тільки даному пристрою, який обробляє, і тільки через дане посилання

Видалення вузла.

  • спроба використання посилань на віддалені вузли повинна призводити до системних переривань

Зміна контексту або зміна процедури, яка виконується  пристроєм для обробки.

Новий контекст складається з трьох частин:

  • глобальні змінні, передані по посиланню зі старого контексту
  • частина, передана копіюванням значення (параметри)
  • локальні дані, створені в новому модулі[1].

Загальні методи та вимоги до перемикання контексту:

  • Ідентифікація нового контексту (наприклад, особливе посилання на нього, що дозволяє лише перемикатися між контекстами)
  • Безпосередньо перемикання контексту (виконання старого коду після перемикання контексту заборонено, виходячи з принципів захищеності)
  • Операції формування посилання або іншої структури для ідентифікації та перемикання контексту

Реалізації можуть бути різними (в тому числі і без особливих посилань), але повинні бути витримані основні принципи:

  • точки входу в контекст формуються всередині самого цього контексту
  • ця інформація робиться доступною для інших контекстів
  • код і контекст перемикаються одночасно

Аналіз моделі ред.

  1. Захищеність системи базується на наступних принципах:
    • доступ до сайту має тільки модуль, який створив його, якщо тільки він добровільно не передасть посилання ще кому-небудь
    • безліч даних, доступних модулю, в будь-який момент часу строго контролюється контекстом
  2. В результаті захист гранично суворий, але він не обмежує можливості програміста. Різні модулі, що не перетинаються, можуть працювати в одній програмі, викликаючи один одного і обмінюючись даними. Для цього досить, щоб кожен з них містив особливе посилання для перемикання контексту на інший.
  3. Побудована система значно спрощує пошук і виправлення помилок завдяки суворому контролю типів. Наприклад, спроба змінити посилання відразу призведе до апаратного переривання в місці помилки. Після чого її легко можна відстежити й виправити.
  4. Забезпечується модульність програмування. Неправильна робота програми ніяк не вплине на інші. «Зіпсований» модуль може лише видати невірні результати.
  5. Для використання системи від програміста не потрібно додаткових зусиль. Крім того, при написанні програми під таку модель вже немає необхідності додатково обумовлювати права доступу, способи їх передачі і т. д[1].

Архітектура Ельбрус ред.

В архітектурі Ельбрус для розмежування типів даних разом з кожним словом у пам'яті зберігається його тег. По тегу можна визначити, чи є дане слово посиланням або належить до якого-небудь спеціального типу даних.

Посилання та робота з ними ред.

У посиланні міститься опис галузі (дескриптор) на яку вона посилається, і права доступу. Дескриптор обов'язково містить базова адреса й розмір даних.

Можливі наступні формати дескриптора:

  • дескриптор об'єкта
  • дескриптор масиву

Дескриптор об'єкта служить для підтримки об'єктно-орієнтованого програмування та додатково містить опис приватної й публічної областей. Звернення в публічну область стандартно (додавання базової адреси та індексу разом з подальшим контролем розміру). Якщо в командах звернення до пам'яті стоїть ознака приватних даних, то для дозволу звернення перевіряється спеціальний регістр в процесорі, який зберігає тип об'єкта, коли працюють програми обробки даного типу. Таким чином, всередині програми стають доступними приватні дані об'єктів цього типу.

При доступі до комірки пам'яті перевіряється коректність посилання.

Важливі операції для роботи з посиланнями:

  • індексація (вироблення посилання на елемент масиву)
  • операція CAST для дескрипторів об'єкта (перетворення до базового класу)
  • компактність (знищує посилання на віддалену пам'ять і щільно компактує зайняту пам'ять)

Контексти та методи роботи з ними ред.

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

Перемикання контексту — це, по суті, виклик процедури або повернення з неї. При запуску процедури повний контекст вихідного модуля зберігається, а нового — створюється. При виході з процедури її контекст знищується.

Реалізація захищеного стека ред.

При реалізації процедурного механізму в Ельбрусі, для підвищення ефективності виділення пам'яті для локальних даних використовується механізм стека.

Стековські дані поділяються на три групи за своїм функціональними характеристиками й рівнем доступності для користувача:

  • параметри, локальні дані та проміжні значення процедури, розміщені в оперативних регістрах (стек процедур);
  • параметри та локальні процедури, розміщені в пам'яті (стек користувача);
  • «єднальна інформація», що описує попередню (запущену) процедуру в стеку процедур (стек сполучної інформації);

Стек процедур призначений для даних, винесених на оперативні регістри. Кожна процедура працює тільки в своєму вікні, яке може перетинатися із попереднім вікном областю параметрів (вона ж є областю значень). Звернення за даними (для користувача) можливо тільки в поточне вікно, завжди розташоване на оперативних регістрах.

Стек користувача призначений для даних, які користувач вважає за потрібне розмістити у пам'яті.

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

Оскільки в стеку віртуальна пам'ять перевантажена, постає проблема захисту даних. Вона має два аспекти:

  • пере вантаження пам'яті (виділення простору, який звільнили раніше). У цій пам'яті можуть, наприклад, виявитися посилання, недоступні модулю при правильній роботі
  • «зависші» покажчики (посилання старого власника на перевантажену пам'ять)

Перша проблема вирішується автоматичною чисткою перевантаженої пам'яті. Принцип вирішення другої проблеми наступний. Покажчики на поточний фрейм процедури можна зберігати тільки в поточному фреймі, або передавати в якості параметра в викликану процедуру (передавати вгору по стеку). Відповідно, покажчик не може бути записаний у глобальні дані, ні переданий в якості значення, що повертається, ні записаний в глибину стека[1].

Примітки ред.

  1. а б в г д Захищені інформаційні системи. Б. А. Бабаян, 2003 (PDF). Архів оригіналу (PDF) за 15 жовтня 2006. Процитовано 24 квітня 2018.
  2. Защищенное исполнение программ на базе аппаратной и системной поддержки архитектуры «Эльбрус» (PDF). Архів оригіналу (PDF) за 15 жовтня 2006. Процитовано 24 квітня 2018.

Посилання ред.