Передача информации надежно защищена виртуальными частными сетями, почта
передается в зашифрованном виде, доступ к закрытым данным на веб-сервере
компании организован исключительно при помощи https. Все сделано? Нет, не все.
Современный бизнес невозможно представить без современных технологий.
Мобильная связь и электронная почта пришли на смену селекторным совещаниям.
Хорошо в эту группу вписались и средства обмена сообщениями, поддерживающие
различные протоколы AIM, ICQ, Yahoo, MSN, IRC, Jabber, Zephyr и даже такой
малоизвестный, как Gadu-Gadu. Правда, у нас наибольшей популярностью
пользуются ICQ, Jabber и IRC.
Но если сервер, реализующий один из этих
протоколов, стоит внутри контролируемой администратором сети, еще можно
избежать проблем. А вот когда пользователь вынужден общаться с офисом
с чужого компьютера, например из интернет-кафе, в этом случае весь
разговор можно свободно перехватить. Кроме того, известны и атаки, использующие
средства обмена сообщениями [1]. Конечно, некоторые реализации поддерживают
шифрование, и в этом случае можно избежать проблем. Например, Jabber может
быть настроен с поддержкой SSL для обмена между клиентом и сервером, плюс
немало клиентов поддерживают шифрование с помощью GPG внутри протокола. Но при
этом очень часто кодируются только данные, передаваемые в сообщении, и только
в тех сетях, где используется шифрование, оставляя открытой работу в
других сетях. Опускаются аутентификация сообщения и пакета, управление
ключами и другие немаловажные вопросы безопасности. Все это вместе создает
больше иллюзию безопасности. Но если необходимы многопользовательские
конференции, то здесь альтернативы IRC (Internet Relay Chat) практически нет. А
вот при настройке серверов IRC разговор о шифровании, как правило, не
идет [2] по изложенным выше причинам.
Протокол SILC
Основной идеей протокола SILC (Secure Internet Live Conferencing) является
обеспечение безопасностного общения по незащищенным каналам. В общем случае
SILC очень похож в использовании на IRC, вплоть до совпадения основных
характеристик (имена, каналы, частные сообщения, поиск пользователя, блокировка
нежелательных частных и канальных сообщений и прочее). Более того, совпадают
даже основные команды (всего SILC поддерживает около 30 команд). Но на этом все
сходство в принципе и заканчивается. Основное различие между ними – защита
передаваемой информации в SILC. Причем шифрование – это базовая часть
протокола, а не опциональная функциональность, которую можно отключать.
Так сказать, security by default. Особенно отмечу, что SILC основан не на
IRC и они несовместимы между собой.
Идея протокола принадлежит Пека Риконену (Pekka Riikonen),
начало работ датировано 1996 годом. До выхода первой версии, включавшей клиента
и тестовый сервер, поддерживавшие алгоритмы шифрования RSA и 3DES код был
переписан заново три раза. Работало это все из рук вон плохо. Генератор
случайных чисел, взятый с RNG, используемого в SSH, переписывался два раза.
Работа постоянно останавливалась. Но все равно в 1998 году была добавлена
поддержка алгоритма ElGamal, а код был переписан на C++. Хотя в следующем году
код опять переписывается на С, основные части протокола перерабатываются и
спецификация подается в IETF (Internet Engineering Task Force – ). И как результат летом
2000 года протокол представлен общественности. С тех пор была проделана большая
работа как по усовершенствованию протокола, так и по разработке софта, протокол
получил признание. SILC распространяется по лицензии GNU GPL.
Что предлагает SILC?
Учитывая, что SILC появился на десять лет позже IRC, у его разработчиков
была возможность поучиться на чужих ошибках и учесть неудачные решения. Поэтому
SILC обеспечивает более богатый набор характеристик и является самым
удобным протоколом для общения пользователей из используемых в настоящее
время. Но на первом месте у нас безопасность, поэтому с нее и начнем. Хотя
стоит, наверное, отметить, что разработчики не изобретали велосипед и все решения
в общем-то традиционные.
Протокол обеспечивает защищенную передачу и
аутентификацию между клиентом и сервером, сервером и сервером, и между
клиентами в приватной беседе при помощи шифров AES, twofish, CAST, serpent,
rc6 и mars с использованием CBC и CTR. По умолчанию используется
длина ключа 256 бит, опционально можно выставить 192 и 128. Протокол SILC
имеет собственный открытый ключ SILC, но также поддерживает открытые ключи
SSH2, сертификаты OpenPGP, X.509 и SPKI.
В качестве открытого ключа SILC, который, правда,
не сертифицирован и спецификация не определяет общественную ключевую
инфраструктуру, используются ключи RSA или DSS, включающие информацию об имени
узла, имени пользователя, реальном имени и др.
Впрочем, разработчики открыты для общения, и при
необходимости могут быть добавлены другие алгоритмы и шифры.
Шифруются все сообщения, посланные другим
пользователям и каналам, пароли, команды и уведомления. Передача незащищенных
сообщений не предусмотрена. Протокол разрабатывался с четким пониманием
механизмов наиболее распространенных атак, поэтому известные пассивные и
активные атаки (man-in-the-middle, повторение, подмена IP и пр.) будут
неэффективны. Транспортный уровень защищен с гарантией подлинности
закодированных пакетов, использованием кода аутентификации сообщения (Message Authentication
Codes – МАС), с применением алгоритмов hmac-sha1-96, hmac-md5-96, hmac-sha1,
hmac-md5. При этом используется метод Encrypt-Then-MAC, когда сообщение
шифруется и затем вычисляется МАС, включающий и номер последовательности.
Вектор инициализации (IV), использованный в шифровании, по умолчанию не включен
в зашифрованный текст.