11.6. Обеспечение защищенности программных средств.
Различают следующие виды защиты ПС от искажения информации:
защита от сбоев аппаратуры;
защита от влияния "чужой" программы;
защита от отказов "своей" программы;
защита от ошибок оператора (пользователя);
защита от несанкционированного доступа;
защита от защиты.
Защита от сбоев аппаратуры в настоящее время является не очень злободневной задачей (с учетом уровня достигнутой надежности компьютеров). Но все же полезно знать ее решение. Это обеспечивается организацией так называемых "двойных-тройных просчетов". Для этого весь процесс обработки данных, определяемый ПС, разбивается по времени на интервалы так называемыми "опорными точками". Длина этого интервала не должна превосходить половины среднего времени безотказной работы компьютера. Копия состояния изменяемой в этом процессе памяти каждой опорной точке записывается во вторичную память с некоторой контрольной суммой (числом, вычисляемым как некоторая функция от этого состояния) в том случае, когда будет считаться, что обработка данных от предыдущей опорной точки до данной (т.е. один "просчет") произведена правильно (без сбоев компьютера). Для того, чтобы это выяснить, производится два таких "просчета". После первого "просчета" вычисляется и запоминается указанная контрольная сумма, а затем восстанавливается состояние памяти для предыдущей опорной точки и делается второй "просчет". После второго "просчета" вычисляется снова указанная контрольная сумма, которая затем сравнивается с контрольной суммой первого "просчета". Если эти две контрольные суммы совпадают, второй просчет считается правильным, в противном случае контрольная сумма второго "просчета" также запоминается и производится третий "просчет" (с предварительным восстановлением состояния памяти для предыдущей опорной точки). Если контрольная сумма третьего "просчета" совпадет с контрольной суммой одного из первых двух "просчетов", то третий просчет считается правильным, в противном случае требуется инженерная проверка компьютера.
Защита от влияния "чужой" программы относится прежде всего к операционным системам или к программам, выполняющим частично их функции. Различают две разновидности этой защиты:
защита от отказов,
защита от злонамеренного влияния "чужой" программы.
При появлении мультипрограммного режима работы компьютера в его памяти может одновременно находится в стадии выполнения несколько программ, попеременно получающих управление в результате возникающих прерываний (так называемое квазипараллельное выполнение программ). Одна из таких программ (обычно: операционная система) занимается обработкой прерываний и управлением мультипрограммным режимом. В каждой из таких программ могут возникать отказы (проявляться ошибки), которые могут повлиять на выполнение функций другими программами. Поэтому управляющая программа (операционная система) должна обеспечить защиту себя и других программ от такого влияния. Для этого аппаратура компьютера должна реализовывать следующие возможности:
защиту памяти,
два режима функционирования компьютера: привилегированный и рабочий (пользовательский),
два вида операций: привилегированные и ординарные,
корректную реализацию прерываний и начального включения компьютера,
временное прерывание.
Защита памяти означает возможность программным путем задавать для каждой программы недоступные для нее участки памяти. В привилегированном режиме могут выполняться любые операции (как ординарные, так и привилегированные), а в рабочем режиме - только ординарные. Попытка выполнить привилегированную операцию, а также обратиться к защищенной памяти в рабочем режиме вызывает соответствующее прерывание. Причем к привилегированным операциям относятся операции изменения защиты памяти и режима функционирования, а также доступа к внешней информационной среде. Начальное включение компьютера и любое прерывание должно автоматически включать привилегированный режим и отмену защиты памяти. В этом случае управляющая программа (операционная система) может полностью защитить себя от влияния других программ, если все точки передачи управления при начальном включении и прерываниях будут принадлежать этой программе, если она никакой другой программе не позволит работать в привилегированном режиме (при передаче управления любой другой программе будет включаться только рабочий режим) и если она полностью защитит свою память (содержащую, в частности, всю ее управляющую информацию, включая так называемые вектора прерываний) от других программ. Тогда никто не помешает ей выполнять любые реализованные в ней функции защиты других программ (в том числе и доступа к внешней информационной среде). Для облегчения решения этой задачи часть такой программы помещается в постоянную память, т.е. неотделима от самого компьютера. Наличие временного прерывания позволяет управляющей программе защититься от зацикливания в других программах (без такого прерывания она могла бы просто лишиться возможности управлять).
Защита от отказов "своей" программы обеспечивается надежностью этой программы, на что ориентирована вся технология программирования, обсуждаемая в настоящем курсе лекций.
Защита от ошибок пользователя (помимо ошибок входных данных, см. обеспечение устойчивости ПС) обеспечивается выдачей предупредительных сообщений о попытках изменить состояние внешней информационной среды с требованием подтверждения этих действий, а также возможностью восстановления состояния отдельных компонент внешней информационной среды. Последнее базируется на осуществлении архивирования изменений состояния внешней информационной среды.
Защита от несанкционированного доступа обеспечивается использованием секретных слов (паролей). В этом случае каждому пользователю предоставляются определенные информационные и процедурные ресурсы (услуги), для использования которых требуется предъявления ПС некоторого пароля, ранее зарегистрированного в ПС этим пользователем. Другими словами, пользователь как бы "вешает замок" на выделенные ему ресурсы, "ключ" от которого имеется только у этого пользователя. Однако, в отдельных случаях могут быть предприняты настойчивые попытки взломать такую защиту, если защищаемые ресурсы представляют для кого-то чрезвычайную ценность. Для такого случая приходится предпринимать дополнительные меры для защиты от взлома защиты.
Защита от взлома защиты связана с использованием в ПС специальных программистских приемов, затрудняющих преодоление защиты от несанкционированного доступа. Использование обычных паролей оказывается недостаточной, когда речь идет о чрезвычайно настойчивом стремлении (например, преступного характера) добиться доступа к ценной информации. Во-первых, потому, что информацию о паролях, которую использует ПС для защиты от несанкционированного доступа, "взломщик" этой защиты относительно легко может достать, если он имеет доступ к самому этому ПС. Во-вторых, используя компьютер, можно осуществлять достаточно большой перебор возможных паролей с целью найти подходящий для доступа к интересующей информации. Защититься от такого взлома можно следующим образом. Секретное слово (пароль) или просто секретное целое число X знает только владелец защищаемой информации, а для проверки прав доступа в компьютере хранится другое число Y=F(X), однозначно вычисляемое ПС при каждой попытке доступа к этой информации при предъявлении секретного слова. При этом функция F может быть хорошо известной всем пользователям ПС, однако она обладает таким свойством, что восстановление слова X по Y практически невозможно: при достаточно большой длине слова X (например, в несколько сотен знаков) для этого требуется астрономическое время. Такое число Y будем называть электронной (компьютерной) подписью владельца секретного слова X (а значит, и защищаемой информации).
Другая разновидность такой защиты связана с защитой сообщений, пересылаемых по компьютерным сетям, преднамеренных (или злонамеренных) искажений. Такое сообщения может перехватываться на "перевалочных" пунктах компьютерной сети и подменяться другим сообщением от автора перехваченного сообщения. Такая ситуация возникает прежде всего при осуществлении банковских операций с использованием компьютерной сети. Путем подмены такого сообщения, являющего распоряжением владельца банковского счета о выполнении некоторой банковской операции деньги с его счета могут быть переведены на счет "взломщика" защиты (своеобразный вид компьютерного ограбления банка). Защиту от такого взлома защиты можно осуществить следующим образом [11.4]. Наряду с функцией F, определяющей компьютерную подпись владельца секретного слова X, которую знает адресат защищаемого сообщения (если только ее владелец является клиентом этого адресата), в ПС определена другая функция Stamp, по которой отправитель сообщения должен вычислить число S=Stamp(X,R), используя секретное слово X и текст передаваемого сообщения R. Функция Stamp также считается хорошо известной всем пользователям ПС и обладает таким свойством, что по S практически невозможно ни восстановить число X, ни подобрать другое сообщение R с соответствующей компьютерной подписью. Само передаваемое сообщение (вместе со своей защитой) должно иметь вид:
R Y S , причем Y (компьютерная подпись) позволяет адресату установить истинность клиента, а S как бы скрепляет защищаемое сообщение Rс компьютерной подписью Y. В связи с этим будем называть число S электронной (компьютерной) печатью. В ПС определена еще одна функция Notary, по которой получатель защищаемого сообщения проверяет истинность передаваемого сообщения:
Notary(R,Y,S).
Эта позволяет однозначно установить, что сообщение R принадлежит владельцу секретного слова X.
Защита от защиты необходима в том случае, когда пользователь забыл (или потерял) свой пароль. Для такого случая должна быть предусмотрена возможность для особого пользователя (администратора ПС), отвечающего за функционирования системы защиты, производить временное снятие защиты от несанкционированного доступа для хозяина забытого пароля с целью дать ему возможность зафиксировать новый пароль.
Yandex.RTB R-A-252273-3- Разработка программных приложений
- Введение
- Лекция 1. Надежное программное средство как продукт технологии программирования. Исторический и социальный контекст программирования
- 1.1. Программа как формализованное описание процесса обработки данных. Программное средство.
- 1.2. Неконструктивность понятия правильной программы.
- 1.3. Надежность программного средства.
- 1.4. Технология программирования как технология разработки надежных программных средств.
- 1.5. Технология программирования и информатизация общества.
- Литература к лекции 1.
- Лекция 2. Источники ошибок в программных средствах
- 2.1. Интеллектуальные возможности человека.
- 2.2. Неправильный перевод как причина ошибок в программных средствах.
- 2.3. Модель перевода.
- 2.4. Основные пути борьбы с ошибками.
- Литература к лекции 2.
- Лекция 3. Общие принципы разработки программных средств
- 3.1. Специфика разработки программных средств.
- 3.2. Жизненный цикл программного средства.
- 3.3. Понятие качества программного средства.
- 3.4. Обеспечение надежности - основной мотив разработки программных средств.
- 3.5. Методы борьбы со сложностью.
- 3.6. Обеспечение точности перевода.
- 3.7. Преодоление барьера между пользователем и разработчиком.
- 3.8. Контроль принимаемых решений.
- Литература к лекции 3.
- Лекция 4. Внешнее описание программного средства
- 4.1. Назначение внешнего описания программного средства и его роль в обеспечении качества программного средства.
- 4.2. Определение требований к программному средству.
- 4.3. Спецификация качества программного средства.
- 4.4. Функциональная спецификация программного средства.
- 4.5. Методы контроля внешнего описания программного средства.
- Литература к лекции 4.
- Лекция 5. Методы спецификации семантики функций
- 5.1. Основные подходы к спецификации семантики функций.
- 5.2. Метод таблиц решений.
- 5.3. Операционная семантика.
- 5.4. Денотационная семантика.
- 5.5. Аксиоматическая семантика.
- 5.6. Языки спецификаций.
- Литература к лекции 5.
- Лекция 6. Архитектура программного средства
- 6.1. Понятие архитектуры программного средства.
- 6.2. Основные классы архитектур программных средств.
- 6.3. Архитектурные функции.
- 6.4. Контроль архитектуры программных средств.
- Литература к лекции 6.
- Лекция 7. Разработка структуры программы и модульное программирование
- 7.1. Цель модульного программирования.
- 7.2. Основные характеристики программного модуля.
- 7.3. Методы разработки структуры программы.
- 7.4. Контроль структуры программы.
- Литература к лекции 7.
- Лекция 8. Разработка программного модуля
- 8.1. Порядок разработки программного модуля.
- 8.2. Структурное программирование.
- 8.3. Пошаговая детализация и понятие о псевдокоде.
- 8.4. Контроль программного модуля.
- Литература к лекции 8.
- Лекция 9. Доказательство свойств программ
- 9.1. Обоснования программ. Формализация свойств программ.
- 9.2. Свойства простых операторов.
- 9.3. Свойства основных конструкций структурного программирования.
- 9.4. Завершимость выполнения программы.
- 9.5. Пример доказательства свойства программы.
- Литература к лекции 9.
- Лекция 10. Тестирование и отладка программного средства
- 10.1. Основные понятия.
- 10.2. Принципы и виды отладки.
- 10.3. Заповеди отладки.
- 10.4. Автономная отладка модуля.
- 10.5. Комплексная отладка программного средства.
- Лекция 11. Обеспечение функциональности и надежности программного средства
- 11.1. Функциональность и надежность как обязательные критерии качества программного средства.
- 11.2. Обеспечение завершенности программного средства.
- 11.3. Обеспечение точности программного средства.
- 11.4. Обеспечение автономности программного средства.
- 11.5. Обеспечение устойчивости программного средства.
- 11.6. Обеспечение защищенности программных средств.
- Литература к лекции 11.
- Лекция 12. Обеспечение качества программного средства
- 12.1. Общая характеристика процесса обеспечения качества программного средства.
- 12.2. Обеспечение легкости применения программного средства.
- 12.3. Обеспечение эффективности программного средства.
- 12.4. Обеспечение сопровождаемости.
- 12.5. Обеспечение мобильности.
- Литература к лекции 12.
- Лекция 13. Документирование программных средств
- 13.1. Документация, создаваемая в процессе разработки программных средств.
- 13.2. Пользовательская документация программных средств.
- 13.3. Документация по сопровождению программных средств.
- Литература к лекции 13.
- Лекция 14. Аттестация программного средства
- 14.1. Назначение аттестации программного средства.
- 14.2. Виды испытаний программного средства.
- 14.3. Методы оценки качества программного средства.
- Литература к лекции 14.
- 15.2. Особенности объектного подхода к разработке внешнего описания программного средства.
- 15.3. Особенности объектного подхода на этапе конструирования программного средства.
- 15.4. Особенности объектного подхода на этапе кодирования программного средства.
- Лекция 16. Компьютерная поддержка разработки и сопровождения программных средств
- 16.1. Инструменты разработки программных средств.
- 16.2. Инструментальные среды разработки и сопровождения программных средств.
- 16.3. Инструментальные среды программирования.
- 16.4. Понятие компьютерной технологии разработки программных средств и ее рабочие места.
- 16.5. Инструментальные системы технологии программирования.
- Литература к лекции 16.
- Рекламные ссылки