Ідея мереж з так званими активними агентами, коли між комп'ютерами передаються не тільки пасивні, але і активні виконувані дані (тобто програми), зрозуміло, не нова. Спочатку мета полягала в тому, щоб зменшити мережевий трафік, виконуючи основну частину обробки там, де розташовуються дані (наближення програм до даних). На практиці це означало переміщення програм на сервери. Класичний приклад реалізації подібного підходу - це процедури, що зберігаються, в реляційних СУБД.
Для Web-серверов аналогом процедур, що зберігаються, є програми, обслуговуючі загальний шлюзовий інтерфейс (Common Gateway Interface - CGI). CGI-процедуры розташовуються на серверах і зазвичай використовуються для динамічного породження HTML-документов. Політика безпеки організації і процедурні заходи повинні визначати, хто має право поміщати на сервер CGI-процедуры. Жорсткий контроль тут необхідний, оскільки виконання сервером некоректної програми може привести до скільки завгодно тяжких наслідків. Розумна міра технічного характеру полягає в мінімізації привілеїв користувача, від імені якого виконується Web-сервер.
|
|
У технології Intranet, якщо піклуватися про якість і виразну силу призначеного для користувача інтерфейсу, виникає потреба в переміщенні програм з Web-серверів на клієнтські комп'ютери - для створення анімації, виконання семантичного контролю при введенні даних і так далі Взагалі, активні агенти - невід'ємна частина технології Intranet.
У якому б напрямі не переміщалися програми по мережі, ці дії представляють підвищену небезпеку, оскільки програма, отримана з ненадійного джерела, може містити ненавмисно внесені помилки або цілеспрямовано створений шкідливий код. Така програма потенційно загрожує всім основним аспектам інформаційної безпеки:
· доступності (програма може поглинути всі наявні ресурси);
· цілісності (програма може видалити або пошкодити дані);
· конфіденційності (програма може прочитати дані і передати їх по мережі).
Проблему ненадійних програм усвідомлювали давно, але, мабуть, тільки в рамках системи програмування Java вперше запропонована цілісна концепція її рішення.
Java пропонує три оборонні рубежі:
· надійність мови;
· контроль при отриманні програм;
· контроль при виконанні програм.
Втім, існує ще одне, дуже важливий засіб забезпечення інформаційної безпеки - безпрецедентна відвертість Java-системи. Початкові тексти Java-компілятора і інтерпретатора доступні для перевірки, тому велика вірогідність, що помилки і недоліки першими виявлятимуть чесні фахівці, а не зловмисники.
У концептуальному плані найбільші труднощі представляє контрольоване виконання програм, завантажених по мережі. Перш за все, необхідно визначити, які дії вважаються для таких програм допустимими. Якщо виходити з того, що Java - це мова для написання клієнтських частин програм, однією з основних вимог до яких є мобільність, завантажена програма може обслуговувати тільки призначений для користувача інтерфейс і здійснювати мережеву взаємодію з сервером. Програма не може працювати з файлами хоч би тому, що на Java-терминалі їх, можливо, не буде. Змістовніші дії повинні проводитися на серверній стороні або здійснюватися програмами, локальними для клієнтської системи.
|
|
Цікавий підхід пропонують фахівці компанії Sun Microsystems для забезпечення безпечного виконання командних файлів. Мова йде про середовище Safe-Tcl (Tool Comman Language, інструментальна командна мова). Sun запропонувала так звану осередкову модель інтерпретації командних файлів. Існує головний інтерпретатор, якому доступні всі можливості мови. Якщо в процесі роботи програми необхідно виконати сумнівний командний файл, породжується підлеглий командний інтерпретатор, що володіє обмеженою функціональністю (наприклад, з нього можуть бути видалені засоби роботи з файлами і мережеві можливості). В результаті потенційні небезпечні програми виявляються поміщеними в осередки, що захищають призначені для користувача системи від ворожих дій. Для виконання дій, які вважаються привілейованими, підлеглий інтерпретатор може поводитися із запитами до головного. Тут, очевидно, є видимою аналогія з розділенням адресних просторів операційної системи і призначених для користувача процесів і використанням останніми системних викликів. Подібна модель вже близько 30 років є стандартною для ОС.