Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
билеты по информатике.docx
Скачиваний:
6
Добавлен:
14.04.2019
Размер:
461.01 Кб
Скачать

26) Операторы ввода-вывода и преобразования информации

Оператор INPUT

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

Формат: INPUT ["сообщение";] переменная [, переменная ]

Текст сообщения поясняет, какие данные требуется ввести. При выполнении оператора INPUT на экране появляется ?, и программа ждет ввода данных с клавиатуры. Если после сообщения использовать <,> вместо <;>, то ? не появляется. Вводимые данные разделяются запятыми. Ввод заканчивается при нажатии <Return>. Тип вводимого элемента данных должен соответствовать типу переменной в операторе INPUT. Строки символов могут не заключаться в кавычки, если они не содержат запятых, начальных или конечных пробелов. Если значений переменных введено меньше, чем переменных содержится в операторе INPUT, то оставшиеся переменные полу чают значение 0.

Пример : INPUT "введите А";A

На экране появится введите А ? (после ? ввести значение переменной А и нажать < Return >).

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

Оператор PRINT

Оператор предназначен для вывода данных на экран дисплея.

Форматы: PRINT [ список вывода ]

? [ список вывода ]

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

? используется как сокращенная запись слова PRINT.

Строковые константы в списке должны быть заключены в двойные кавычки.

Элементы списка вывода разделяются запятой <,> или точкой с запятой <;>.

Оператор PRINT без списка вывода выводит пустую строку.

Примеры:

PRINT A - выводит на экран значение переменной А;

PRINT 5 - выводит на экран 5 ;

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

Пример: ? 2,5,-6

на экране: 2 5 -6

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

Пример: ? 2;5;-6

на экране: 2 5 -6

Точка с запятой в конце оператора PRINT отменяет перевод строки.

Пример: PRINT "A";

PRINT "В"

на экране: АВ

Пример: PRINT "А"

PRINT "В"

на экране: А

В

Оператор CLEAR

Предназначен для установки начальных значений переменных. Числовые переменные приравниваются 0 , строки - значению "пустая строка", элементы массивов не определены.

Оператор LET

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

Формат: LET V=E

V - переменная действительного, целого или строкового типа;

Е - арифметическое или строковое выражение, константа или переменная;

LET - необязательное ключевое слово.

Слово LET обычно опускается: А=5+2 вместо LET А=5+2 .

Пример: А=5

В=2

С=А+В^2 : С=С+10

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

Оператор SWAP

Оператор обменивает величины двух переменных.

Формат: SWAP V1,V2

V1 и V2 - переменные действительного, целого или строкового типа.

Тип обеих переменных должен совпадать.

Пример: A=5

B=500

SWAP A,B

PRINT "A=";A,"B=";B

на экране: А= 500 В= 5

Оператор STOP

Оператор используется для приостановки выполнения программы. Формат : STOP.

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

Оператор END

Оператор используется для завершения выполнения программы. Формат : END.

Оператор END является последним оператором в программе. При его отсутствии оператор, выполняемый последним, завершает выполнение программы.

вверх

 

Операторы управления

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

Оператор GOTO

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

Формат: GOTO N

N - номер строки

Оператор передает управление строке, номер которой указан в операторе.

Пример: GOTO 250

Оператор IF

Условные операторы предназначены для изменения порядка выполнения операторов в зависимости от истинности или ложности не которого заданного условия. В языке BASIC допускается использование следующих форм условных операторов:

Формат 1: IF E THEN (GOTO) N

Формат 2: IF E THEN O

Формат 3: IF E THEN O1 ELSE O2

IF, THEN, GOTO, ELSE - ключевые слова;

E - условие, представляющее собой выражение отношения;

N - номер строки;

O - оператор или группа операторов, разделенных символом ":";

O1, O2 - оператор, группа операторов или номер строки.

В первой конструкции используется одно из ключевых слов THEN или GOTO.

При выполнении оператора IF вычисляется значение выражения отношения E. Если оно оказывается истинным, то в случае использования первого формата оператора IF управление будет передано на строку с номером N. При использовании второго формата опера тора IF будет выполнен оператор O (или группа операторов, разделенных двоеточием), записанный после ключевого слова THEN. Далее управление передается на следующую строку программы.

Если значение условия E оказывается ложным, то конструкция, стоящая после ключевого слова THEN игнорируется, и управление передается строке, непосредственно следующей в программе за оператором IF.

Операторы IF или GOTO могут быть использованы для организации разветвлений или циклов.

Пример : Протабулировать функцию

на интервале-1<=x<=1 c шагом 0.3.

10 INPUT "Введите значения X1,X2,X3,B,A";X1,X2,X3,B,A

20 X=X1

30 Y=(B*X^2-A)/(EXP(A*X)-1)

40 PRINT "X=";X;"Y=";Y

50 X=X+X3

60 IF X<=X2 THEN 30

70 END

В третьем формате оператора IF ключевое слово ELSE указывает, как поступить в случае, если проверяемое условие не выполняется. Этот формат оператора IF определяет, какие действия выполняются при истинном и ложном значениях проверяемого условия.

Пример : IF X=45 THEN 50 ELSE PRINT " НЕВЕРНО "

Если X не равен 45, то выводится сообщение " НЕВЕРНО ". Если X равен 45, то управление передается строке 50.

Применение ELSE усложняет программу. Пользоваться этим форматом оператора IF нужно аккуратно.

Пример : Решить квадратное уравнение ax2+bx+c=0

10 INPUT "Введите значения A, B, C"; A, B, C

20 D=B^2-4*A*C

30 IF D>0 THEN X1=(-B-SQR(D))/(2*A): X2=(-B+SQR(D))/(2*A): PRINT"X1="; X1; "X2="; X2 ELSE PRINT "Действительных корней нет"

40 END

В условии E можно указать несколько проверок, соединив их логическими операциями: AND, OR, NOT.

При выполнении оператора : IF X=12 AND Y<0 THEN 100 управление передается строке с номером 100, если одновременно выполнены условия X=12 и Y<0.

Оператор : IF X=12 OR Y<0 THEN 100 передает управление строке с номером 100, если верно хотя бы одно из этих соотношений.

Пример : Найти значение функции

10 INPUT "Введите значения A, B, C, X"; A, B, C, X

20 IF X<A THEN Y=EXP(-A*X)*COS(B*X)

30 IF X>=A AND X<=B THEN Y=TAN(C*X)

40 IF X>B AND X<C THEN Y=EXP(-B*X)*SIN(C*X) ELSE PRINT "Решения нет": GOTO 60

50 PRINT "Y="; Y

60 END

 

вверх

 

Операторы цикла

Операторы FOR и NEXT

Операторы FOR и NEXT предназначены для организации циклического вычислительного процесса.

Формат: FOR V=E1 TO E2 STEP E3

. . .

NEXT V

V- переменная, используемая в качестве счетчика цикла;

E1, E2, E3 - арифметические выражения, задающие соответственно начальное, конечное значение и шаг изменения переменной V.

Операторы FOR и NEXT могут использоваться только попарно, т.е. в программе каждому оператору FOR должен соответствовать свой оператор NEXT. FOR определяет начало, а NEXT - конец цикла. Если шаг изменения V равен 1, то конструкцию STEP E3 можно опускать.

При работе цикла происходят следующие операции:

1. Вычисляются значения E1, E2, E3, если они являются арифметическими выражениями.

2. Переменной V присваивается в качестве начального значения значение E1.

3. Полученное значение V сравнивается со значением выражения E2. При этом, если E3 > 0, то проверяется условие V <= E2, если E3 < 0, то проверяется условие V >= E2.

4. Если проверяемое условие истинно, то выполняется группа операторов, расположенных между FOR и NEXT.

5. Оператор NEXT изменяет текущее значение переменной V на шаг E3 (V=V+E3 ) и передает управление в начало цикла. Для нового значения V опять проверяется одно из условий пункта 3. При истинности условия еще раз выполняется группа операторов между FOR и NEXT. Весь процесс выполняется до тех пор, пока проверяемое условие не примет значение "ложно". В этом случае выполнение цикла заканчивается и управление передается оператору, следующему в программе непосредственно после оператора NEXT.

Пример: Найти сумму натурального ряда чисел от 1 до N.

10 INPUT N

20 S=0

30 FOR I=1 TO N

40 S=S+I

50 NEXT I

60 PRINT "S=";S

70 END

При организации циклов с использованием операторов FOR-NEXT необходимо учитывать следующее:

1. Проверка истинности условия V <= E2 (V >= E2) осуществляется перед очередным выполнением цикла. Следовательно, если это условие не выполняется перед первым выполнением цикла, то цикл не будет выполняться ни разу.

Например, FOR I=15 TO 5

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

Например,30 FOR I=1 TO 11

40 A=I^2

50 I=I+A

60 NEXT I

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

Например,40 GO TO 100

50 FOR K=10 TO 50 STEP 2

........................

100 PRINT K

110 NEXT K

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

FOR I1

FOR I2

FOR I3

(NEXT I1 нельзя !)

NEXT I3

NEXT I2

NEXT I1

5. Можно использовать оператор NEXT без переменной, что ускорит выполнение цикла .

Например, 110 NEXT вместо 110 NEXT K

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

Например, 200 NEXT I3,I2,I1 вместо 200 NEXT I3

210 NEXT I2

220 NEXT I1

 

вверх

 

Оператор DIM

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

Формат: DIM a1(m1), a2(m2),..., aN (mN)

ai - имя массива;

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

Пример: DIM A(4), B(5,8), A1$(5), B1$(3,4)

Оператор DIM описывает числовые массивы A и B, символьные массивы A1$ и B1$. Массив A одномерный и содержит 5 элементов A(0), A(1), A(2), A(3), A(4). Двумерный числовой массив B содержит 6 строк и 9 столбцов. Символьный одномерный массив A1$ состоит из 6 элементов. Символьный двумерный массив B1$ состоит из 20 элементов (4 строки, 5 столбцов).

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

Если в одномерном массиве не более 11 элементов, а в двумерном не более 11 строк и 11 столбцов, то такие массивы можно не описывать.

В качестве максимальных индексов можно использовать имена переменных. Но значения переменным должны быть присвоены до оператора DIM.

Пример 1: Пример 2:

10 INPUT N,K 10 INPUT N,М

20 DIM A(N),B(K,N) 20 DIM A(N+1,М)

Пример 3: Даны одномерные массивы A и B, содержащие по N элементов. Сформировать новый массив D, каждый элемент которого определяется по формуле: D(i)=A(i)+B(i)+C(i), i=1,2,.....,N

10 INPUT "Введите размерность массивов" ;N

20 DIM A(N),B(N),C(N),D(N)

30 FOR I=1 TO N

40 INPUT A(I),B(I),C(I)

50 NEXT I

60 FOR I=1 TO N

70 D(I)=A(I)+B(I)+C(I)

80 PRINT "D(";I;")=";D(I);

90 NEXT I

100 END

 

вверх

 

Блоки данных

Оператор DATA

Оператор DATA предназначен для создания блока данных.

Формат : DATA A

DATA - ключевое слово ;

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

Оператор DATA создает в оперативной памяти ЭВМ блок данных. Информация в блок данных записывается в том порядке, в котором она располагается в списке. Если в программе используется не сколько операторов DATA, то формируется блок данных путем последовательного сцепления значений из списков в порядке появления операторов.

Пример: 20 DATA 2, 5.6, программа

........................

50 DATA 8, пример, 37.6, 5

В блоке данных будет 7 элементов: 2, 5.6, программа, 8, пример, 37.6, 5 .

Оператор READ

Для чтения информации из блока данных предназначен оператор READ.

Формат: READ V

READ - ключевое слово;

V - список имен одной или более переменных, разделенных запятыми .

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

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

Пример: 30 READ A, B

90 READ C$, D

100 READ E$, F, G

A = 2 B = 5.6 C = "программа"

D = 8 E = "пример" F = 37.6 G = 5

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

Только оператор READ определяет, когда и какие данные должны быть считаны.

Оператор RESTORE

Для возврата указателя в начало блока данных служит опера тор RESTORE.

Формат: RESTORE или RESTORE N

N - номер строки, содержащей оператор DATA.

Использование этого оператора позволяет многократно считывать одни и те же данные различными операторами DATA и присваивать их в качестве значений разным переменным.

Пример:

10 READ A,A1,A2

20 RESTORE

30 READ B,B1

40 DATA 2, 4, 8, 3, -6, 4

A = 2, A1 = 4, A2 = 8, указатель на числе 3, но RESTORE возвращает его на первое число, таким образом B = 2, B1 = 4 .

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

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

Правила работы с операторами READ, DATA и RESTORE

1. Типы переменных в операторе READ должны соответствовать типам присваиваемых значений.

2. Операторы READ могут появляться в разных местах программы. Необязательно сразу читать все данные.

3. В программе может быть несколько операторов DATA. Даже если они отдалены друг от друга, ЭВМ воспринимает все значения как элементы общего длинного списка.

4. Операторы DATA могут находиться в любом месте программы. Как правило, их пишут в самом начале или в самом конце, чтобы отделить данные от текста программы.

5. В операторе DATA строковые константы могут не заключаться в кавычки.

6. Числа в операторах DATA должны быть константами, но не арифметическими выражениями.

7. Оператор RESTORE возвращает указатель к началу списка данных. Первый оператор READ, следующий за RESTORE, работает с первым значением, указанным в операторе DATA.

 

вверх

 

Подпрограммы языка BASIC

Операторы GOSUB и RETURN

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

В языке BASIC обращение к подпрограмме осуществляется оператором GOSUB.

Формат: GOSUB N

GOSUB - ключевое слово;

N - номер первой строки, с которой должно начаться выполнение подпрограммы (точка входа в подпрограмму).

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

Работа операторов GOSUB и RETURN происходит следующим образом. Интерпретатор языка BASIC формирует стек возврата. Когда в программе встречается оператор GOSUB, интерпретатор заносит в стек возврата адрес (номер строки) оператора, следующего непосредственно за GOSUB. Затем управление передается на точку входа, заданную номером строки в операторе GOSUB, и начинают выполняться операторы подпрограммы. Если в подпрограмме встречается оператор RETURN, то из вершины стека извлекается текущий адрес возврата, и интерпретатор передает управление в вызывающую программу на оператор, непосредственно следующий за оператором GO SUB.

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

10 REM основная программа

20 DIM A (100)

30 PRINT "Введите количество хозяйств"

40 INPUT M

50 FOR I=1 TO M

60 PRINT "Введите посевную площадь в хозяйстве" ;I

70 INPUT A(I)

80 NEXT I

90 PRINT "Введите нижнюю границу посевной площади" 100 INPUT D

110 GOSUB 200

120 PRINT "Количество хозяйств с посевной площадью >"; D;"=" ; K

130 STOP

200 REM Подпрограмма

210 K=0

220 FOR I=1 TO M

230 IF A(I)>D THEN K=K+1

240 NEXT I

250 RETURN

Основные правила написания подпрограмм

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

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

3. Вход в подпрограмму должен осуществляться только через оператор GOSUB, иначе при выполнении оператора RETURN интерпретатор не найдет точку возврата в вызывающую программу.

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

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

 

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

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

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

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

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

 

Основные составляющие информационной безопасности Информационная безопасность – многогранная, можно даже сказать, многомерная область деятельности, в которой успех может принести только систематический, комплексный подход. Спектр интересов субъектов, связанных с использованием информационных систем, можно разделить на следующие категории: обеспечение доступности, целостности и конфиденциальности информационных ресурсов и поддерживающей инфраструктуры. Иногда в число основных составляющих ИБ включают защиту от несанкционированного копирования информации, но, на наш взгляд, это слишком специфический аспект с сомнительными шансами на успех, поэтому мы не станем его выделять. Поясним понятия доступности, целостности и конфиденциальности. Доступность – это возможность за приемлемое время получить требуемую информационную услугу. Под целостностью подразумевается актуальность и непротиворечивость информации, ее защищенность от разрушения и несанкционированного изменения. Наконец, конфиденциальность – это защита от несанкционированного доступа к информации. Информационные системы создаются (приобретаются) для получения определенных информационных услуг. Если по тем или иным причинам предоставить эти услуги пользователям становится невозможно, это, очевидно, наносит ущерб всем субъектам информационных отношений. Поэтому, не противопоставляя доступность остальным аспектам, мы выделяем ее как важнейший элемент информационной безопасности. Особенно ярко ведущая роль доступности проявляется в разного рода системах управления – производством, транспортом и т.п. Внешне менее драматичные, но также весьма неприятные последствия – и материальные, и моральные – может иметь длительная недоступность информационных услуг, которыми пользуется большое количество людей (продажа железнодорожных и авиабилетов, банковские услуги и т.п.). Целостность можно подразделить на статическую (понимаемую как неизменность информационных объектов) и динамическую (относящуюся к корректному выполнению сложных действий (транзакций)). Средства контроля динамической целостности применяются, в частности, при анализе потока финансовых сообщений с целью выявления кражи, переупорядочения или дублирования отдельных сообщений. Целостность оказывается важнейшим аспектом ИБ в тех случаях, когда информация служит "руководством к действию". Рецептура лекарств, предписанные медицинские процедуры, набор и характеристики комплектующих изделий, ход технологического процесса – все это примеры информации, нарушение целостности которой может оказаться в буквальном смысле смертельным. Неприятно и искажение официальной информации, будь то текст закона или страница Web-сервера какой-либо правительственной организации. Конфиденциальность – самый проработанный у нас в стране аспект информационной безопасности. К сожалению, практическая реализация мер по обеспечению конфиденциальности современных информационных систем наталкивается в России на серьезные трудности. Во-первых, сведения о технических каналах утечки информации являются закрытыми, так что большинство пользователей лишено возможности составить представление о потенциальных рисках. Во-вторых, на пути пользовательской криптографии как основного средства обеспечения конфиденциальности стоят многочисленные законодательные препоны и технические проблемы. Если вернуться к анализу интересов различных категорий субъектов информационных отношений, то почти для всех, кто реально использует ИС, на первом месте стоит доступность. Практически не уступает ей по важности целостность – какой смысл в информационной услуге, если она содержит искаженные сведения? Наконец, конфиденциальные моменты есть также у многих организаций (даже в упоминавшихся выше учебных институтах стараются не разглашать сведения о зарплате сотрудников) и отдельных пользователей (например, пароли). Важность и сложность проблемы информационной безопасности Информационная безопасность является одним из важнейших аспектов интегральной безопасности, на каком бы уровне мы ни рассматривали последнюю – национальном, отраслевом, корпоративном или персональном. Для иллюстрации этого положения ограничимся несколькими примерами.

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

  • По распоряжению президента США Клинтона (от 15 июля 1996 года, номер 13010) была создана Комиссия по защите критически важной инфраструктуры как от физических нападений, так и от атак, предпринятых с помощью информационного оружия. В начале октября 1997 года при подготовке доклада президенту глава вышеупомянутой комиссии Роберт Марш заявил, что в настоящее время ни правительство, ни частный сектор не располагают средствами защиты от компьютерных атак, способных вывести из строя коммуникационные сети и сети энергоснабжения.

  • Американский ракетный крейсер "Йорктаун" был вынужден вернуться в порт из-за многочисленных проблем с программным обеспечением, функционировавшим на платформе Windows NT 4.0 (Government Computer News, июль 1998). Таким оказался побочный эффект программы ВМФ США по максимально широкому использованию коммерческого программного обеспечения с целью снижения стоимости военной техники.

  •  

  • Заместитель начальника управления по экономическим преступлениям Министерства внутренних дел России сообщил, что российские хакеры с 1994 по 1996 год предприняли почти 500 попыток проникновения в компьютерную сеть Центрального банка России. В 1995 году ими было похищено 250 миллиардов рублей (ИТАР-ТАСС, AP, 17 сентября 1996 года).

  • Как сообщил журнал Internet Week от 23 марта 1998 года, потери крупнейших компаний, вызванные компьютерными вторжениями, продолжают увеличиваться, несмотря на рост затрат на средства обеспечения безопасности. Согласно результатам совместного исследования Института информационной безопасности и ФБР, в 1997 году ущерб от компьютерных преступлений достиг 136 миллионов долларов, что на 36% больше, чем в 1996 году. Каждое компьютерное преступление наносит ущерб примерно в 200 тысяч долларов.

  • В середине июля 1996 года корпорация General Motors отозвала 292860 автомобилей марки Pontiac, Oldsmobile и Buick моделей 1996 и 1997 годов, поскольку ошибка в программном обеспечении двигателя могла привести к пожару.

  • В феврале 2001 года двое бывших сотрудников компании Commerce One, воспользовавшись паролем администратора, удалили с сервера файлы, составлявшие крупный (на несколько миллионов долларов) проект для иностранного заказчика. К счастью, имелась резервная копия проекта, так что реальные потери ограничились расходами на следствие и средства защиты от подобных инцидентов в будущем. В августе 2002 года преступники предстали перед судом.

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

Понятно, что подобных примеров множество, можно вспомнить и другие случаи – недостатка в нарушениях ИБ нет и не предвидится. Чего стоит одна только "Проблема 2000" – стыд и позор программистского сообщества! При анализе проблематики, связанной с информационной безопасностью, необходимо учитывать специфику данного аспекта безопасности, состоящую в том, что информационная безопасность есть составная часть информационных технологий – области, развивающейся беспрецедентно высокими темпами. Здесь важны не столько отдельные решения (законы, учебные курсы, программно-технические изделия), находящиеся на современном уровне, сколько механизмы генерации новых решений, позволяющие жить в темпе технического прогресса. К сожалению, современная технология программирования не позволяет создавать безошибочные программы, что не способствует быстрому развитию средств обеспечения ИБ. Следует исходить из того, что необходимо конструировать надежные системы (информационной безопасности) с привлечением ненадежных компонентов (программ). В принципе, это возможно, но требует соблюдения определенных архитектурных принципов и контроля состояния защищенности на всем протяжении жизненного цикла ИС. Приведем еще несколько цифр. В марте 1999 года был опубликован очередной, четвертый по счету, годовой отчет "Компьютерная преступность и безопасность-1999: проблемы и тенденции" (Issues and Trends: 1999 CSI/FBI Computer Crime and Security Survey). В отчете отмечается резкий рост числа обращений в правоохранительные органы по поводу компьютерных преступлений (32% из числа опрошенных); 30% респондентов сообщили о том, что их информационные системы были взломаны внешними злоумышленниками; атакам через Internet подвергались 57% опрошенных; в 55% случаях отмечались нарушения со стороны собственных сотрудников. Примечательно, что 33% респондентов на вопрос "были ли взломаны ваши Web-серверы и системы электронной коммерции за последние 12 месяцев?" ответили "не знаю". В аналогичном отчете, опубликованном в апреле 2002 года, цифры изменились, но тенденция осталась прежней: 90% респондентов (преимущественно из крупных компаний и правительственных структур) сообщили, что за последние 12 месяцев в их организациях имели место нарушения информационной безопасности; 80% констатировали финансовые потери от этих нарушений; 44% (223 респондента) смогли и/или захотели оценить потери количественно, общая сумма составила более 455 млн. долларов. Наибольший ущерб нанесли кражи и подлоги (более 170 и 115 млн. долларов соответственно). Столь же тревожные результаты содержатся в обзоре InformationWeek, опубликованном 12 июля 1999 года. Лишь 22% респондентов заявили об отсутствии нарушений информационной безопасности. Наряду с распространением вирусов отмечается резкий рост числа внешних атак. Увеличение числа атак – еще не самая большая неприятность. Хуже то, что постоянно обнаруживаются новые уязвимые места в программном обеспечении (выше мы указывали на ограниченность современной технологии программирования) и, как следствие, появляются новые виды атак. Так, в информационном письме Национального центра защиты инфраструктуры США (National Infrastructure Protection Center, NIPC) от 21 июля 1999 года сообщается, что за период с 3 по 16 июля 1999 года выявлено девять проблем с ПО, риск использования которых оценивается как средний или высокий (общее число обнаруженных уязвимых мест равно 17). Среди "пострадавших" операционных платформ – почти все разновидности ОС Unix, Windows, MacOS, так что никто не может чувствовать себя спокойно, поскольку новые ошибки тут же начинают активно использоваться злоумышленниками. В таких условиях системы информационной безопасности должны уметь противостоять разнообразным атакам, как внешним, так и внутренним, атакам автоматизированным и скоординированным. Иногда нападение длится доли секунды; порой прощупывание уязвимых мест ведется медленно и растягивается на часы, так что подозрительная активность практически незаметна. Целью злоумышленников может быть нарушение всех составляющих ИБ – доступности, целостности или конфиденциальности.