Системы криптографической защиты
Категория: Безопасность | Автор: admin | 11-06-2010, 23:00 | Просмотров: 3780

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

Сегодня эти протоколы эксплуатируются в кишащих хакерами и прочей нечистью глобальных сетях, где, по определению, весь трафик открыт для прослушивания. Более того, любой может вмешаться в сетевой диалог. Как удостовериться в личности собеседника?

Криптография — это решение многих проблем. Уже давно существует возможность шифровать сообщения так, чтобы даже в случае перехвата их нельзя было прочитать, но это лишь одно из чудес криптографии. Такие разработки, как шифрование с открытым ключом и защитное хэширование, сделали возможным построение криптосистем, удовлетворяющих самым строгим требованиям.

К сожалению, все эти математические открытия не удалось преобразовать в надежное, полезное программное обеспечение, которое было бы повсеместно распространено и удобно в применении. Разработчиков программных криптографических систем больше интересовало доказательство их правильности и абсолютной безопасности, чем то, представляет ли такая система практический интерес. Почти все современные программы в данной области выглядят слишком заумными, поэтому неудивительно, что пользователи при первой же возможности с радостью избавляются от них. Сегодня практической криптографией занимаются фанатики, параноидальные сторонники теории всемирного заговора, а также те, кому не оставляет другого выбора политика, проводимая руководством их организаций.

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

 

Kerberos: унифицированный подход к сетевой безопасности

 

Система Kerberos, разработанная в Массачусетском технологическом институте, ориентирована на решение задач, связанных с обеспечением безопасности компьютерных сетей. Kerberos — это система аутентификации, предоставляющая "гарантию" того, что пользователи и сервисные программы на самом деле являются теми, за кого себя выдают. Никаких дополнительных проверок и шифрования передаваемых данных не предусмотрено.

Используя алгоритм DES, Kerberos создает вложенные наборы идентификаторов, называемых билетами. Билеты передаются по сети с целью подтверждения личности пользователя и предоставления ему доступа к сетевым службам. В каждой организации, где используется Kerberos, должен выделяться хотя бы один физически защищенный компьютер (называемый сервером аутентификации) для выполнения демона Kerberos. Этот демон выдает билеты пользователям и сервисным программам, требующим аутентификации, на основании предъявляемых ими "удостоверений", таких как пароли. По сути, Kerberos улучшает традиционную систему парольной защиты в UNIX всего двумя способами: пароли никогда не передаются по сети в незашифрованном виде, а пользователи избавляются от необходимости многократно вводить пароли.

Kerberos существует уже долгое время и поддерживается многими поставщиками операционных систем. Такие системы готовы работать с Kerberos при наличии сервера аутентификации. Сам пакет, возможно, потребуется получить из внешних источников (один из них — web.mit.edu/kerberos).

Что касается наших тестовых систем, то Kerberos поддерживается в Solaris и HP-UX, а во FreeBSD этот пакет является частью системы. Определенная поддержка имеется также в маршрутизаторах Cisco, хотя раньше применение пакета часто сопровождалось возникновением ошибок. Компания Microsoft заявила о расширенной поддержке Kerberos в Windows 2000, однако эта реализация обладает целым рядом несовместимостей.

Сообщество пользователей Kerberos может похвастаться одним из самых толковых и приятных документов, посвященных криптосистемам, а именно: "Designing an Authentication System: a Dialogue in Four Scenes" (Проектирование системы аутентификации: диалог в четырех актах), написанным Биллом Брайантом (Bill Bryant). Документ будет интересно прочесть любому, кто интересуется темой криптографии. Документ можно найти по адресу

http://web.mit.edu/kerberos/www/dialogue.html

 

Имеется также хороший FAQ-архив:

http://www.nrl.navy.mil/CCS/people/kenh/kerberos-faq.html

 

Лучше использовать Kerberos, чем полностью отказаться от системы защиты как таковой. К сожалению, Kerberos нельзя назвать вполне безопасной системой, а ее инсталляция и запуск — не самое приятное занятие. В то же время она не заменяет собой ни одну из программ, описанных в данной главе. По нашему мнению, большинство организаций благополучно может обойтись и без нее. Регулярная проверка Kerberos и применение системы шифрования удаленных соединений, скажем SSH или SRP (см. ниже), позволяют обеспечить достаточно приемлемый уровень безопасности пользователей.

 

PGP: высокая конфиденциальность

 

Пакет PGP (Pretty Good Privacy), написанный Филипом Циммерманом (Philip Zimmermann), содержит криптографические утилиты, широко применяемые для обеспечения безопасности систем электронной почты. Посредством PGP можно шифровать данные, генерировать сигнатуры и проверять источники происхождения файлов и сообщений.

Попытки то отрегулировать, то остановить распространение пакета привели к появлению разнообразных его вариантов. Сегодня он существует в нескольких версиях, включая ряд коммерческих продуктов от компании Network Associates (www.nai.com). В США используется версия PGP, одобренная правительством. Международная его версия с более сильным шифром доступна на Web-узле www.pgpi.org.

PGP — это наиболее популярная криптографическая программа. Правда, работать с ней в UNIX может лишь тот, кто очень хорошо разбирается в криптографии. С другой стороны, к пакету прилагается 88-страничный учебник по криптографии, с которым может ознакомится любой желающий. В целом, пакет PGP может оказаться полезным, но мы не рекомендуем пользователям работать с ним из-за нетривиальности процесса обучения. Гораздо удобнее использовать Windows-версию PGP, чем UNIX-команду pgp с ее 38 различными режимами.

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

 

SSH: безопасный интерпретатор команд

 

Пакет SSH (Secure Shell), написанный Тату Ил, неном (Tatu Ylonen), является безопасной заменой программ rlogin, rcp и telnet. Он использует криптографическую аутентификацию для подтверждения личности пользователя и шифрует любые соединения между двумя компьютерами. Протокол SSH уже хорошо изучен и проходит процесс стандартизации в IETF.

Подобно программе tripwire, пакет SSH трансформировался из бесплатно распространяемой открытой системы (SSH1) в коммерческий продукт (SSH2). И точно так же остается доступной и его бесплатная версия. Тем не менее базовый протокол изменился, поэтому версии стали несовместимыми. В принципе, пакет SSH2 доступен для использования в некоммерческих целях, но условия лицензии достаточно жесткие. Мы советуем работать с пакетом SSH1, который довольно надежен.

Первоначальную версию SSH1 можно найти по адресу ftp.ssh.com/pub/ssh. Но похоже, что активная ее разработка прекращена. Группа OpenBSD взяла в свои руки управление исходным текстом пакета, внеся некоторые изменения в его структуру, но принципы работы пакета и его администрирования не изменились. Данная версия называется OpenSSH и описана на Web-узле www.openssh.com. Она функционирует лучше, чем оригинал, но порядок получения исходных текстов в настоящее время слишком утомителен. Возможно, в будущем ситуация изменится.

В любом случае стоит упомянуть о несколько неопределенном правовом статусе пакета SSH в США, так как он использует запатентованную систему шифрования RSA, а срок действия патента должен был истечь в сентябре 2000 года.

Основными компонентами пакета SSH являются серверный демон sshd и две программы пользовательского уровня: ssh, предназначенная для удаленной регистрации, и scp, предназначенная для копирования файлов. Среди остальных компонентов отметим программу ssh-keygen, генерирующую пары открытых ключей, и несколько утилит, необходимых для поддержки безопасных серверов X Windows.

Демон sshd способен аутентифицировать пользователей различными способами. Выбор остается за администратором.

  • Метод А. Если имя удаленного компьютера, с которого регистрируется пользователь, указано в файле ~/.rhosts, ~/.shosts, /etc/hosts.equiv или /etc/shosts.equiv, то пользователь автоматически получает доступ к системе без проверки пароля. Подобная схема моделирует работу старой программы rlogin и, по нашему мнению, не приемлема для широкого использования.
  • Метод Б. В дополнение к методу А демон sshd может применять шифрование с открытым ключом для проверки подлинности удаленного компьютера. Чтобы это стало возможным, открытый ключ данного компьютера (генерируется при инсталляции пакета) должен находиться в файле /etc/ssh_known_hosts локального узла или в файле ~/.ssh/known_hosts пользователя. Если удаленный компьютер предоставляет соответствующий секретный ключ (обычно он хранится в файле /etc/ssh_host_key, недоступном для чтения рядовым пользователям), пользователю разрешается войти в систему без проверки пароля. Мы полагаем, что данный метод еще недостаточно безопасен. Если удаленный компьютер подвергся взлому, локальный узел также окажется под угрозой.
  • Метод В. Демон sshd может применять шифрование с открытым ключом для идентификации пользователя. На этапе регистрации пользователь должен иметь доступ к файлу своего секретного ключа и предоставить пароль для его дешифрования. Этот метод самый безопасный, но он утомляет пользователей. Он также делает невозможной регистрацию в системе мобильных пользователей (разве что они носят с собой копию файла секретного ключа).
  • Метод Г. Наконец, демон sshd может просто попросить пользователя ввести свой регистрационный пароль. Это делает программу ssh подобной программе telnet, за исключением того, что шифрованию подлежат пароль и весь сеанс. Основной недостаток данного метода заключается в том, что пароли оказываются относительно слабыми (часто их длина ограничена 8 символами), и уже существуют готовые программы (например, crack) для взлома таких паролей. Тем не менее данный метод, как правило, подходит для повседневного использования.

Правила аутентификации задаются в файле /etc/sshd_config. Этот файл уже заполнен разного рода конфигурационным "мусором", большую часть из которого можно спокойно проигнорировать. Параметры, касающиеся аутентификации, перечислены в табл. 21.1.

Таблица 21.1. Параметры аутентификации, задаваемые в файле /etc/sshd_config

Параметр

Метод1

По умолчанию

Назначение, когда включен

RhostsAuthentication

A

no

Разрешает регистрацию через файлы ~/.shosts, /etc/shosts.equiv и др.

RhostsRSAAuthentication

Б

yes

Разрешает регистрацию через файл ~/.shosts и его эквиваленты, но также требует от компьютера предоставления ключа

IgnoreRhosts

A, Б

no

Задает игнорирование файлов ~/.rhosts и hosts.equiv2

IgnoreRootRhosts

A, Б

no3

Предотвращает аутентификацию пользователя root через файлы .rhosts и .shosts

RSAAuthentication

В

yes

Разрешает аутентификацию пользователей по методу шифрования с открытым ключом

PasswordAuthentication

Г

Yes

Разрешает использование обычных регистрационных паролей

1   Методы аутентификации, к которым относится данный параметр.

2   Файлы ~/.shosts и shosts.equiv продолжают использоваться.

3   По умолчанию равен значению параметра IgnoreRhosts.

 

Рекомендуемая нами конфигурация, в которой разрешаются методы В и Г, но не А и Б, такова:

 

RhostsAuthentication nо

RhostsRSAAuthentication nо

RSAAuthentication yes

PasswordAuthentication yes

 

 

SRP: безопасные удаленные пароли

 

Протокол SRP (Secure Remote Password), разработанный Томасом By (Thomas Wu) из Стэнфордского университета, реализует простой, быстрый, беспатентный и высоконадежный способ проверки паролей в общедоступных сетях. Этот протокол пока что менее распространен, чем SSH, но он кажется нам более элегантным. Его программное обеспечение проще с точки зрения администрирования, а сам протокол легче адаптировать к существующим сервисам. Вместо того чтобы переключаться на новый набор команд, как того требует SSH, пользователи могут продолжать работать с программами telnet и ftp. Единственное отличие заключается в том, что все сетевые соединения будут незаметно шифроваться. Если говорить конкретно о программах telnet и ftp, то клиенты и серверы SRP будут обратно совместимы со своими стандартными аналогами. Аутентификация и шифрование используются только тогда, когда они поддерживаются обеими сторонами.

К сожалению, применяемый в UNIX стандартный алгоритм шифрования DES математически неприемлем для протокола SRP, поэтому пароли SRP должны храниться вне файла /etc/passwd. Существующая версия пакета SRP (доступна на Web-узле srp.stanford.edu) создает нечто вроде файла теневых паролей (/etc/tpasswd), в котором содержатся SRP-версии паролей всех пользователей. Имеется замена стандартной команды passwd, позволяющая синхронизировать пароли в обоих файлах.

 

OPIE: универсальные одноразовые пароли

 

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

Стандарт OTP (One-Time Password — одноразовый пароль), определенный в документе RFC1938, реализует несколько иной подход к безопасности паролей: вместо того чтобы их шифровать, он убеждается, что они используются однократно. В таком случае обычные текстовые пароли можно свободно передавать по сети, не беспокоясь о том, что их кто-нибудь перехватит. Пользователи обычно распечатывают группу паролей и носят этот список с собой. В отличие от обычных паролей, одноразовые пароли генерируются от имени пользователя, их не приходится выбирать самостоятельно.

В настоящее время наиболее распространенной OTP-системой является OPIE (One-time Passwords In Everything — универсальные одноразовые пароли). Она представляет собой модификацию более ранней системы S/Key компании Bellcore (теперь Telcordia Technologies), усовершенствованной в научно-исследовательских лабораториях военно-морского флота США. Основными элементами OPIE являются OTP-совместимые версии демонов telnetd и ftpd, а также утилиты для генерирования списков паролей и управления ими. Пакет OPIE доступен по адресу www.inner.net/pub/opie.

Необходимо отметить, что OTP-системы решают только проблемы, связанные с кражей паролей. Они не шифруют сами данные, передаваемые через сетевое соединение. Любой, кто тайно подключится к сеансу telnet, даже не сумев получить пароля, наверняка сможет многое узнать о пользователе. Каждый пароль, набранный после входа в систему (в программе sudo, например), окажется совершенно незащищенным.

С учетом растущей популярности систем наподобие SSH, остается все меньше и меньше причин применять пакет OPIE. Если нет крайней необходимости, не используйте данный пакет: его неудобно инсталлировать и сопровождать, да и порядок работы с ним не совсем привычен для пользователей.



 (голосов: 0)
Версия для печати | Комментариев: 0
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии в данной новости.


 
Логин
Пароль
 

 
Locations of visitors to this page