Получится даже еще лучше. Можно создать протокол для тайного голосования в Интернете – такой, что только зарегистрированный избиратель сможет проголосовать, никто не сумеет проголосовать дважды, никто не сможет узнать, кто за кого голосовал, и все будут уверены, что выборы честные. Можно даже создать электронную валюту, однако кто-нибудь попытается использовать эти платежные средства дважды…
Честно говоря… если вы захотите, мы сможем сделать и это.
Однако существуют и проблемы, которым посвящено достаточно места в этой книге.
Криптографические протоколы Интернета
Для Интернета криптография относительно нова и появилась она в нем только благодаря коммерциализации сети. Интернет небезопасен; чтобы обеспечить безопасность в сети, необходима криптография. Вот почему на практике криптографические протоколы являются важнейшей составной частью протоколов Интернета. Примеры, приведенные здесь, характерны для 2000 года, со временем их характер, конечно, будет меняться.
Первой областью применения криптографии в Интернете стала электронная почта. В ней работали два соответствующих протокола: S/MIME и OpenPGP. OpenPGP – это протокол в составе PGP и его разновидностей. S/MIME – стандартный интернет-протокол во всех других случаях.
Netscape изобрела SSL (Secure Sockets Layer – протокол, гарантирующий безопасную передачу данных по сети; комбинирует криптографическую систему с открытым ключом и блочным шифрованием данных) на заре существования Веб, когда люди захотели заниматься безопасной электронной торговлей при помощи своих браузеров. SSL существовал в нескольких воплощениях (он был полем боя во время войны браузеров Netscape и Microsoft и в итоге был назван TLS (Transport Layer Security)). Эти протоколы встроены в браузеры и позволяют людям зашифровать секретную информацию, посылаемую на различные веб-сайты.
Более новые криптографические протоколы разработаны для защиты пакетов IP. Среди них Microsoft Point-to-Point Tunneling Protocol (PPTP, у которого есть грубые дефекты), Layer Two Tunneling Protocol (L2TP) и IPsec (он существенно лучше, хотя и слишком сложен). IKE (Internet Key Exchange) – это, как видно из названия, протокол обмена ключами. Сегодня эти протоколы используются преимущественно для того, чтобы обеспечить работу виртуальных частных сетей (VPN). Тем не менее протоколы безопасности Интернета «умеют» намного больше, чем протоколы VPN. У них есть возможность обеспечивать безопасность большей части трафика. Со временем, может быть, эта возможность реализуется.
Существуют также и другие интернет-протоколы. SET – разработанный компаниями Visa и MasterCard для защиты операций с кредитными картами во Всемирной паутине. (Эти протоколы никогда не будут широко применяться.) Протокол SSH (Secure Shell – защитная оболочка) используется для шифрования и идентификации команд для удаленных соединений. Другие протоколы имеют дело с сертификатами открытых ключей и инфраструктурой сертификатов: PKIX, SPKI и им подобные. Microsoft использует свои протоколы для защиты Windows NT.
Большая часть этой работы была проделана под эгидой Проблемной группы проектирования Интернета (Internet Engineering Task Force, IETF – одна из групп IAB, отвечающая за решение инженерных задач Интернета, выпускает большинство RFC, используемых производителями для внедрения стандартов в архитектуру TCP/IP). Процесс нуждается в тщательном согласовании, а это значит, что создание подобных вещей требует длительного времени и в результате они получаются более сложными, чем могли бы быть. Как мы увидим позднее, эта сложность не является хорошим фактором.
Типы атак, направленных на протоколы
Так же как существует много различных атак, мишенью которых служат алгоритмы, множество их направлено и против протоколов. Простейшие из них – это пассивные атаки: вы просто присматриваетесь к протоколу и ищете, что можно понять. Часто в результате простого подслушивания можно узнать очень многое.
Существует множество веб-сайтов электронной почты. Чтобы ими воспользоваться, вы идете на этот сайт, набираете ваше имя и пароль. Как правило, такой протокол уязвим для атаки перехвата. Другая серия протоколов, уязвимых для атаки-перехвата, – протоколы для предупреждения мошенничеств с аналоговыми телефонами. Кто-то, у кого есть сканирующее устройство, может прослушать соединение телефона с базовой станцией, а затем оплачивать свои звонки со счета того телефона. (Это называется телефонным клонированием. Цифровые сотовые телефоны в этом смысле лучше, но ненамного.)
Узким местом атак перехвата является то, что не всегда понятно, какая информация представляет ценность. Можете представить себе зашифрованную телефонную сеть, в которой невозможно (учитывая секретность, обеспечиваемую криптографией) подслушивать телефонные разговоры. Однако информация о подключениях остается доступной. Эта информация часто тоже бывает полезной. В военной обстановке, например, вы можете многое узнать из анализа трафика: кто с кем говорит, когда и как долго.
Более сложные атаки – активные: вставка, удаление и изменение сообщений. Они могут оказаться существенно более действенными.
Рассмотрим систему смарт-карт. Люди кладут деньги на счет и затем используют карточку для оплаты. Эта система будет состоять из множества различных протоколов: для помещения денег на карту, для перевода денег с карты на другое устройство, для запросов информации о карте и других.
Активные атаки способны нанести множество повреждений такой системе. Предположим, вы можете вмешиваться в протокол между банком и картой. Если вам доступно воспроизведение старых сообщений, вы можете добавить на карту побольше денег. Или, например, вы умеете удалять сообщение в протоколе перевода денег с карты при покупке – тогда сумма на карте никогда не будет уменьшаться.
Одна из мощных атак – это атака посредника, «человека посередине» (man-in-the-middle-attack). Алиса хочет тайно поговорить с Бобом, применяя какой-то алгоритм с открытым ключом, чтобы создать свой ключ. Ева перехватывает сообщение Алисы. Она представляется Алисе как Боб, завершая протокол обмена ключами. Затем она связывается с Бобом и представляется как Алиса, выполнив тем самым второй протокол обмена ключами с Бобом. После этого она может прослушивать связь. Когда Алиса посылает Бобу сообщение, Ева его перехватывает, расшифровывает, зашифровывает заново и посылает Бобу. Когда Боб посылает сообщение для Алисы, Ева проделывает аналогичную процедуру. Это очень действенная атака.
Безусловно, грамотные разработчики протоколов принимают во внимание такие атаки и пытаются предотвращать их. Лучшие протоколы связи не допускают атак посредничества и, конечно, не дают возможности перехвата пароля. Лучшие протоколы электронной торговли не допускают, чтобы злонамеренные пользователи произвольно добавляли деньги на смарт-карты. Но людям свойственно ошибаться, и во множестве протоколов есть проблемы.
И, повторим снова, не всегда очевидно, какого рода атаки необходимо предотвращать. Существовал протокол идентификации открытого ключа, который описан в литературе, сконструированный так, что пользователи могли аутентифицировать себя для хостов. Этот протокол защищал от атак пассивного прослушивания и от активных атак вставки или удаления. Но, как оказалось, он не защищал от хостов злоумышленников. Алиса может подтвердить хосту свою подлинность, и ни один перехватчик не сможет выдать себя за Алису. Но хост сможет.
Это – интересная атака. В одних обстоятельствах полагают, что хост достоин доверия и этой проблемы нет. В других случаях проблема налицо. Нам легко представить себе, что злонамеренные хосты во Всемирной паутине есть. Если бы банк, работающий через Интернет, использовал этот протокол (насколько мне известно, такого не было), то преступники смогли бы создать ложный банковский вебсайт, у которого немного отличался бы URL. Не подозревающие ни о чем пользователи аутентифицировали бы себя на этом ложном сайте, а он затем представлялся бы реальному банку пользователем.
Множество подобных вещей формализовано. Существуют автоматические инструменты (сервисные программы) для анализа протоколов: формальные логики, компьютерные программы, которые анализируют детали протоколов, и другие. Эти инструменты полезны, они регулярно обнаруживают проблемы в существующих протоколах, но с их помощью нельзя «доказать» надежность протокола.
Выбор алгоритма или протокола
Выбрать криптографический алгоритм или протокол трудно, поскольку нет абсолютных критериев. Мы не можем сравнивать алгоритмы шифрования по тому же принципу, по которому сравниваем алгоритмы сжатия. Со сжатием все просто: вы можете наглядно доказать, что один алгоритм сжимает лучше другого – быстрее, до меньшего размера, по любым другим параметрам. С безопасностью сложнее: хоть вы и можете показать, что определенный алгоритм ненадежен, нельзя доказать, что один алгоритм, который вы не сумели сломать, безопаснее другого. За неимением абсолютных критериев мы используем то доказательство, которое у нас есть: оценку экспертов.
Эту проблему лучше всего проиллюстрировать примером. Допустим, врач говорит вам: «Я знаю, что есть антибиотик, который хорошо помогает при лечении вашей инфекции; у него нет вредных побочных эффектов и десятилетия исследований говорят в пользу такого лечения. Но я собираюсь назначить вам вместо этого толченые сухари, потому что мне кажется, что они тоже помогут». Вы пошли бы к другому врачу.
Врачебная практика непроста. Представители этой профессии не рвутся применять новые лекарства; проходят годы испытаний, прежде чем будет доказана их действенность, установлена дозировка и составлен список побочных эффектов. Хороший врач не будет лечить бактериальную инфекцию лекарством, которое он только что придумал, если в наличии имеются испытанные антибиотики. А умный пациент захочет те же таблетки, которые помогли его приятелю, а не какие-то там другие.
Криптография также сложна. Она соединяет различные разделы математики и вычислительную технику. Она требует многих лет практики. Даже умные, знающие, опытные люди изобретают плохую криптографию. В криптографическом сообществе создатели даже не слишком расстраиваются, когда их алгоритмы и протоколы ломают. Вот насколько все трудно.
Проблема вот в чем: любой человек, сколь угодно неопытный, может разработать элемент криптографии, который сам взломать не может. Это – существенно. Это значит, что кто угодно может сесть и создать криптографический элемент, попытаться его взломать, потерпеть неудачу, а затем сказать: «Я изобрел безопасный алгоритм, протокол или что-то еще». Реально он говорит этим: «Я не могу его взломать, поэтому он безопасен». Первый вопрос, который надо задать в ответ: «Да кто ты такой?» Или более пространно: «Почему я должен верить в надежность чего-то, если ты не смог это взломать? Чем подтверждается то, что если у тебя это не вышло, то и никто другой не сможет этого сделать?»
Криптографическое сообщество обнаружило, что ни один человек не готов предоставить такие доказательства. (Может быть, и есть кто-нибудь в Агентстве национальной безопасности, но эти люди не болтливы.) Нет никакого способа доказать надежность элемента – можно либо продемонстрировать ненадежность, либо признать попытку неудавшейся. Это называется проверкой гипотезы с нулевым разглашением. Лучшее, что могут сказать люди, занимающиеся безопасностью: «Мы не знаем, как взломать этот алгоритм, протокол или что-то другое, и никто другой тоже не знает». Экспертная оценка программы, длительный период испытаний – вот единственное доказательство безопасности, которое у нас есть.
Более того, нет никакого смысла нанимать группу случайных людей, оценивающих элемент; единственный способ отличить хорошую криптографию от плохой – это получить оценку специалистов. Анализировать криптографию трудно, и немногим по плечу делать это грамотно. Прежде чем элемент можно будет действительно считать безопасным, его должны проверять многие эксперты на протяжении ряда лет.
Вот поэтому шифровальщики предпочитают старое и общедоступное новому и самодельному. Открытая криптография – это то, что шифровальщики изучали, о чем писали статьи. О старых средствах написана масса статей. Если бы там были слабые места, их бы уже обнаружили. Новое же наверняка опаснее, потому что оно новое и не исследовано должным образом специалистами.
Посмотрите на следующие три варианта протоколов безопасности.
• IPsec. Его разработка началась в 1992 году. Разработка велась комиссией «в открытую» и была предметом тщательного публичного изучения с самого начала. Все знали, что это важный протокол, и огромные усилия прилагались для того, чтобы все было правильно. Алгоритмы защиты предлагали, взламывали, а затем модифицировали. Версии классифицировались и анализировались. Первый проект стандарта был выпущен в 1995 году. Обсуждались достоинства безопасности и эффективность, простота исполнения, возможности дальнейшего расширения и применения. В 1998 году комиссия представила окончательный вариант протокола. До сих пор каждый, кто интересуется, может открыто его изучать.
• РРТР. Фирма Microsoft разработала свой собственный Point-to-Point Tunneling Protocol (новая сетевая технология, которая поддерживает многопротокольные виртуальные частные сети, позволяя удаленным пользователям безопасно обращаться к корпоративным сетям с помощью коммутируемого соединения, предоставляемого интернет-провайдером или с помощью прямого соединения с Интернетом), который должен выполнять во многом схожие с IPsec функции. Был создан свой протокол аутентификации, свои хэш-функции и свои алгоритмы генерации ключа. Все эти элементы оказались крайне слабыми. В них использовался известный алгоритм шифрования, но использовался таким образом, что не обеспечивал безопасности. Программисты допустили ошибки в реализации, которые еще больше ослабляли систему. Но поскольку их коды были спрятаны внутри, никто не заметил, что РРТР недостаточно надежен. Microsoft использовала РРТР в Windows NT, 95 и 98, а также в своих продуктах для виртуальных частных сетей. Статьи, описывающие недостатки протокола, не публиковались до 1998 года.
Право собственности.
Некоторые компании объявляют о своих собственных решениях задачи безопасности. Они не вдаются в детали или из-за того, что это право собственности, или из-за неоформленности патента. Вам приходится им доверять. Разработчики могут заявить о новом алгоритме или протоколе, который во многом превосходит имеющиеся сегодня. Они могут кричать о математических прорывах… о чем угодно. Очень немногое из этого оказывается правдой. И даже если к системам предоставляется открытый доступ, их запатентованность и контроль соблюдения авторских прав означают, что немногие шифровальщики будут озадачены анализом заявленных преимуществ. С другой стороны, даже если шифровальщики займутся этой проблемой, компании, конечно, не будут ждать годы, пока исследования подтвердят надежность новинок.
Вы можете выбрать одну из этих трех систем для обеспечения надежности своей виртуальной частной сети. Хотя у любой из них есть слабые места, вы сделаете опасность минимальной. Если вы работаете с IPsec – больше уверенности в надежности алгоритмов и протоколов. Конечно, это не гарантия безопасности – реализация может оказаться слабой (см. главу 13) или кто-то придумает новые способы атаки – но по крайней мере вы знаете, что алгоритмы и протоколы прошли какой-то уровень анализа.
Другой пример: рассмотрим симметричный алгоритм шифрования. Их, безусловно, существуют сотни, но давайте ограничимся пятью.
• Тройной DES, который начиная с середины 70-х был проанализирован практически всем криптографическим сообществом.
• AES, который (прежде чем его выберут) будет подвергнут трехлетнему тестированию, вовлекающему практически все криптографическое сообщество.
• Некий алгоритм X, который был представлен на академической конференции два года назад; пока что вышла одна статья с анализом, судя по которой это – надежный алгоритм.
• Алгоритм Y, который кто-то недавно поместил в Интернете и заверил нас в его надежности.
• Алгоритм Z, который компания сохраняет в секрете до получения патента; возможно, они нанимали несколько шифровальщиков для трехнедельного анализа.
Это – нетрудный выбор. Могут существовать ограничения, которые не позволят вам выбрать тот алгоритм, который вы хотите (AES существует главным образом потому, что тройной DES слишком медлителен для многих сред), но выбор достаточно ясен.
Меня постоянно изумляет, как часто люди не выбирают очевидного решения. Вместо того чтобы использовать общедоступные алгоритмы, компании цифровой сотовой связи решили создать собственный запатентованный алгоритм. За последние несколько лет все алгоритмы стали общедоступными. И став общедоступными, они были взломаны. Каждый из них. То же самое случилось с алгоритмом DVD-шифрования, алгоритмом шифрования Firewire, различными алгоритмами шифрования Microsoft и бесчисленным множеством других. Любой, кто создает собственный образец шифрования, – гений или глупец. С учетом соотношения гениев и глупцов в нашей действительности шансы выжить у образца невелики.
Иногда приводится следующий контраргумент: секретная криптография надежнее, потому что она тайная, а открытая криптография опаснее, поскольку она открытая. Это звучит правдоподобно, но если вы на минуту задумаетесь, несоответствия станут очевидными. Открытые образцы созданы так, чтобы обеспечивать безопасность, несмотря на свою открытость. Таким образом, их не опасно сделать общедоступными. Если элемент обеспечивает безопасность, только оставаясь секретным, то он будет работать до тех пор, пока кто-нибудь не разберется в его устройстве и не опубликует способ взлома. Выпускаемые запатентованные элементы включают все алгоритмы, описанные в предыдущем разделе, различные протоколы смарт-карт для электронной торговли, секретные хэш-функции в картах SecurID и протоколы, защищающие мобильный терминал данных полиции MDC-4800 компании Motorola.
Отсюда не вытекает, что все новое ущербно. Что это на самом деле значит – так то, что все новое подозрительно. Новая криптография появляется в академических статьях, а затем в демонстрационных системах. Если она действительно лучше, то в конце концов шифровальщики начнут ей доверять. И только тогда будет разумно использовать ее в реальных программах. Для алгоритма этот процесс может занять от 5 до 10 лет, для протокола или библиотек исходных кодов – поменьше.
Предпочесть патентованную систему – это то же самое, что обратиться к врачу, у которого нет медицинского образования и который лечит по собственной новой методике (какой – он отказывается объяснить), не поддержанной Американской медицинской ассоциацией. Безусловно, возможно (хотя и крайне маловероятно), что он открыл абсолютно новую область медицины, но хотите ли вы быть подопытной морской свинкой? Лучшие методы безопасности усиливаются коллективными аналитическими способностями криптографического сообщества. Ни одна отдельно взятая компания (за исключением военных) не имеет финансовых ресурсов, необходимых для оценки нового криптографического алгоритма или обнаружения недостатков сложного протокола.
В криптографии безопасность приходит путем следования за широкими массами. Доморощенные алгоритмы невозможно подвергать в течение сотен и тысяч часов криптоанализу, через который прошли DES и RSA. Компания или даже промышленное объединение не могут мобилизовать ресурсы, которые использовались, чтобы противостоять аутентификационному протоколу Kerberos или IPsec. Ни один патентованный почтовый протокол шифрования не в состоянии повторить конфиденциальность, предлагаемую PGP или S/MIME. Следуя в общей струе, вы обеспечиваете уровень криптоаналитической экспертизы всемирного сообщества, а это вам – не несколько недель работы ничем не выдающихся аналитиков.
Довольно трудно обеспечить надежную криптографическую обработку в новой системе; просто безумие использовать новую криптографию, когда существуют жизнеспособные тщательно изученные альтернативы. И все же большинство компаний, занимающихся безопасностью, и даже умные и здравомыслящие во всем остальном люди проявляют острую «неофилию», и их легко ослепляют свежеиспеченные блестящие образчики криптографии.
И остерегайтесь врача, который говорит: «Я изобрел и запатентовал абсолютно новый способ лечения, который состоит в употреблении толченых сухарей. Этот метод еще не испробован, но я уверен, что он великолепен». Помните, что новую криптографию часто называют змеиным ядом.
Глава 8
Компьютерная безопасность
Защита компьютерной информации и криптография – не одно и то же. Криптография часто применяется в целях защиты, но последняя представляет собой намного более общее понятие. В общепринятом понимании компьютерная защита объединяет такие разные вещи, как контроль санкционированного (и несанкционированного) доступа, управление учетными записями и привилегиями пользователя, защиту от копирования, от вирусов и защиту баз данных. В принципе, к защите компьютерной информации также относятся защита от подсоединения других пользователей через сеть, от подбора пароля и от проникновения вирусов, но такого рода вещи мы обсудим в главе, посвященной безопасности сетей. В век Интернета понятия компьютерной безопасности и безопасности сетей практически слились. Но для ясности в этой книге я проведу некую условную границу между понятиями компьютерной и сетевой безопасности по принципу: актуальна эта проблема безопасности для любого компьютера или только для компьютера, подсоединенного к сети. Полная защита компьютерной информации, которую можно определить как предотвращение и (или) выявление недозволенных действий пользователей компьютерной системы, представляется существенно более сложной, чем простая математика криптографии. Так оно и есть.
Суть проблемы состоит в том, что одна математика не может обеспечить полную безопасность. В криптографии математика дает защите огромное преимущество перед злоумышленником. Добавьте один бит к ключу – и вы вдвое усложните работу по взлому алгоритма. Добавьте десять битов – и вы увеличите эту работу примерно в тысячу раз. Когда речь идет о компьютерной безопасности в целом, стороны находятся в равном положении: злоумышленники и защитники могут извлечь из технологии одинаковую выгоду. Это значит, что, если бы вам было достаточно криптографии для обеспечения безопасности, у вас все было бы в порядке. К сожалению, в большинстве случаев это не так.
Большинство ранних исследований по компьютерной безопасности было посвящено проблеме персонального доступа в системах совместного пользования. Как сделать так, чтобы Алиса и Боб могли пользоваться одним и тем же компьютером и одинаковыми компьютерными программами, но чтобы Алиса не могла видеть, что делает Боб, а Боб не знал, что делает Алиса? Или в общем случае: если системой пользуется большая группа людей, у каждого из которых есть определенные права использовать определенные программы и видеть определенные данные, то как мы можем реализовать такие правила контроля доступа? Вообще говоря, это не та задача, которую можно решить с помощью криптографии, хотя в чем-то она могла бы помочь. Это новая задача.
Компьютерная безопасность требует преодоления и многих других новых проблем. Как компании обеспечить правильную работу с большой базой данных, к которой разные люди имеют различный доступ? Эта проблема может быстро стать чрезвычайно сложной. Только несколько человек имеют право видеть информацию о зарплате, еще меньше людей должны видеть всю совокупность данных: среднюю зарплату, статистические данные о здоровье и т. д.
Могут ли пользователи быть уверены в том, что используемые ими компьютерные программы исправны, что они не были модифицированы? Как им удостовериться, что их данные не изменялись? Как компания, производящая программы, может обеспечить выполнение правил лицензирования: нельзя копировать программы с машины на машину, программу можно одновременно запустить только на пяти компьютерах, только десять пользователей одновременно могут работать с этой программой, программа может работать только в течение одной тысячи часов?
Все это – серьезные требования, и задачи компьютерной безопасности имеют сложные решения.
Определения
Попытки определения понятия компьютерной безопасности стоили огромных усилий. Исторически проблема безопасности имеет три аспекта: конфиденциальность, неприкосновенность и доступность.
Конфиденциальность немногим отличается от секретности, о которой мы говорили в главе 5. Изначально компьютерная безопасность понималась как предотвращение несанкционированного доступа к засекреченной информации. Это предубеждение отчасти развеялось с появлением электронной торговли и практики совершения сделок в Интернете – в этой сфере существенно более важна неприкосновенность, – однако оно сохраняется при разработке большинства систем обеспечения компьютерной безопасности. Основная масса исследовательских работ на тему компьютерной безопасности сосредоточена на обеспечении конфиденциальности, главным образом потому, что большая часть ранних исследований финансировалась военными. На практике, как я заметил, понятия «конфиденциальность» и «безопасность» использовались как синонимы.
Понятию неприкосновенности труднее дать строгое определение. Лучшая из известных мне формулировок звучит так: все данные сохраняются в таком виде, в каком они были оставлены последним лицом, правомочным вносить изменения. В контексте компьютерной безопасности «неприкосновенность» означает защиту от записи. Неприкосновенность данных – это гарантия того, что их не удалит и не изменит кто-то, у кого нет на это права. Неприкосновенность программного обеспечения – это гарантия того, что программы не будут изменены по ошибке, по злому умыслу пользователя или вирусом.
Из определения неприкосновенности видно, что эта проблема аналогична проблеме обеспечения конфиденциальности. Если последняя перекрывает несанкционированный доступ к данным (и программам), то первая предотвращает несанкционированную запись. И фактически обе эти задачи решаются при помощи одних и тех же технологий безопасности (криптографических и других).
Доступность традиционно считают третьим «китом» компьютерной безопасности, хотя на самом деле понятие доступности выходит далеко за рамки этой проблемы. В различных стандартах по обеспечению защиты доступность определяется как «свойство системы, состоящее в том, что ее беспрепятственная эксплуатация возможна, когда это необходимо» или как «свойство системы быть готовой и пригодной к работе по требованию законного пользователя». Эти определения всегда поражали меня недостаточной конкретностью. Их смысл сводится к следующему: мы интуитивно знаем, что подразумеваем под доступностью – нам нужно, чтобы компьютер работал, когда мы того хотим, и так, как мы того хотим.
Конечно, бывает, что программы не работают или работают неправильно, но это – проблемы надежности вычислительных систем и качества программных продуктов и… ни одна из них не имеет отношения к безопасности. В контексте безопасности под доступностью можно понимать гарантию того, что злоумышленник не сумеет помешать работе законных пользователей. В частности, в задачу обеспечения доступности входит исключение возможности атак, вызывающих отказ в обслуживании.
Контроль доступа
Совместное обеспечение конфиденциальности, доступности и неприкосновенности сводится к контролю доступа. Суть проблемы состоит в обеспечении законным пользователям возможности делать все то, что им дозволено делать и на что остальные не имеют права.
Проблема контроля доступа в действительности намного шире и связана не только с компьютерами. Как вообще можно ограничить доступ к чему-либо? Как можно контролировать доступ к совместно используемым ресурсам? Как обозначить уровни доступа, различные у разных людей? Эту проблему трудно решить даже для большого здания: для этого ставят замки на входе и на дверях внутренних помещений и доверяют ключи от них надежным людям, выдают всем пропуска, которые проверяются охранниками, и т. д. В случае компьютерной системы контроль доступа – тоже трудная задача.
Кроме того, актуальность этой задачи то возрастает, то убывает с течением времени. Сначала вообще не требовался контроль доступа к компьютерам, поскольку все доверяли друг другу. По мере того как все большее количество людей приобщалось к работе с большими вычислительными машинами, возникала необходимость контролировать доступ – как для соблюдения секретности, так и для получения отчетов об использовании машинного времени. Контроль доступа был прост в мире с пакетной обработкой данных.
С появлением персональных компьютеров отпала нужда в контроле: у каждого был свой собственный компьютер. Если кто-то хотел закрыть для других доступ к файлам, он просто запирал свою дверь. В настоящее время происходит возврат к системам коллективного пользования: общим сетевым ресурсам, удаленным системам и т. п. Контроль доступа представляет проблему практически для всех независимо от того, пользуются ли разные люди общим компьютером или одной учетной записью на веб-сайте.
Перед тем как поговорить о различных типах контроля доступа, нам необходимо ввести два понятия. Речь идет о так называемых субъектах, у которых есть доступ к неким объектам. Часто, хоть и не всегда, субъектом является пользователь, а объектом – компьютерный файл. Субъектом также может быть компьютерная программа или процесс, а объектом – другая компьютерная программа, сопряженная, например. Объектом может быть запись базы данных. Объектом может быть определенный ресурс, возможно, какая-то часть технического оборудования компьютера или принтер, или часть памяти компьютера. В зависимости от обстоятельств одна и та же компьютерная программа бывает субъектом доступа в одном случае и объектом в другом.